天道酬勤,学无止境

ghc

cross-compiling haskell code through ghc and mingw tools

问题 回答1

2022-05-12 21:24:20    分类:技术分享    haskell   mingw   ghc

cross-compile ghc failed missing iconv

问题 成功运行 ./configure --target=arm-linux-androideabi --with-gcc=arm-linux-androideabi-gcc 然后使失败。 checking value of ENOTSUP... 95 checking value of SIGINT... 2 checking value of O_BINARY... 0 checking for library containing iconv... no configure: error: iconv is required on non-Windows platforms make[1]: *** [libraries/base/dist-install/package-data.mk] Error 1 make: *** [all] Error 2 尝试安装 libiconv,并确保 dt-ubt@dt-ubt:~/workspace/ghc$ ls /usr/local/lib/ charset.alias libiconv.la libsodium.la python2.7 libcharset.a libiconv.so libsodium.so python3.4 libcharset.la libiconv.so.2 libsodium.so.13 site

2022-05-12 09:50:18    分类:技术分享    haskell   ghc

What is the FlexibleContexts extension good for? Could you please explain it using a simple example?

问题 我试图通过搜索可以向普通人(例如,像我一样读过 LYHFGG 的人)解释它的网页来了解 FlexibleContexts 扩展在做什么,但我没有找到任何这样的资源。 因此我问这个话题的专家:你能解释一下这个扩展是做什么的,它为什么存在,并给出一两个简单的例子,如何以及为什么应该使用它? 此外,如果我正在阅读使用此扩展的其他人的代码,那么为了理解使用此扩展编写的代码,我应该了解该扩展的哪些内容? 回答1 如果没有FlexibleContexts ,函数定义上的所有类型类约束都必须具有类型变量。 例如: add :: Num a => a -> a -> a add = (+) 其中a是类型变量。 启用FlexibleContexts后,您可以在类型类中拥有任何类型。 intAdd :: Num Int => Int -> Int -> Int intAdd = (+) 这个例子很做作,但它是我能想到的最简单的。 FlexibleContexts通常只与MultiParamTypeClasses一起使用。 这是一个例子: class Shower a b where myShow :: a -> b doSomething :: Shower a String => a -> String doSomething = myShow 在这里你可以看到我们说我们只想要一个Shower

2022-05-11 12:05:22    分类:技术分享    haskell   ghc

How can I load optimized code in GHCI?

问题 我正在编写一个依赖于优化的模块。 我想在 ghci 中测试这个模块。 但是在--interactive模式下启动 ghc 会自动禁用优化; 如果我使用-O编译模块,然后尝试在交互式会话中加载它, ghc坚持以解释模式加载它。 对于区分优化和未优化模块的简单测试用例,下面的isOptimized在优化开启时评估为True ,但在优化关闭时评估为False : isOptimized :: Bool isOptimized = g g :: Bool g = False {-# NOINLINE g #-} {-# RULES "g/True" g = True #-} 回答1 使用ghci -fobject-code -O Test.hs或cabal repl --ghc-options="-fobject-code -O" 。 更详细地说: 必须使用 -fobject-code 标志调用 ghci。 优化标志必须在命令行上的-fobject-code之后给出,或者在模块顶部的 OPTIONS_GHC pragma 中给出。 尝试ghc --interactive -O -fobject-code会产生警告“-O 与 --interactive 冲突;-O 被忽略”。 这可能是一个错误。 如果您正在处理 cabalized 项目并使用cabal repl ,则需要在命令行

2022-05-09 23:49:04    分类:技术分享    haskell   ghc   compiler-optimization   read-eval-print-loop   ghci

Data Promotion Syntax

问题 我最近发现了单身人士的Data.Promotion一半。 它有大量的类型族,基本上允许在类型级别进行任意计算。 我有几个关于使用的问题: ($)、(%$)、($$) 之间有什么区别,它们是否与:++$ 、 :.$等有关? 这些实际上是中缀运算符吗? 我的印象是所有中缀类型的构造函数都必须以:开头。 我正在尝试将构造函数映射到列表上: {-# LANGUAGE DataKinds, TypeOperators, PolyKinds #-} import Data.Promotion.Prelude data Foo ab type MyList = '[Int, Double, Float] -- expects one more argument to `Foo` type FooList1 b = Map ((Flip Foo) $ b) MyList -- parse error on the second `b` type FooList2 b = Map (($ b) :. Foo) MyList 但我在使用多参数类型构造函数时遇到了麻烦。 想法? 我能够用Data.Promotion中的等效函数替换我编写的所有类型函数,除了这个: type family ListToConstraint (xs :: [Constraint]) :: Constraint type

2022-05-08 05:13:04    分类:技术分享    haskell   ghc   type-promotion

Universal type tranformer in Haskell

问题 从逻辑上讲,可以定义通用转换函数,可以从任何类型转换为任何类型。 可能的方法是: {-#LANGUAGE MultiParamTypeClasses #-} {-#LANGUAGE FlexibleInstances #-} class FromTo a b where fromTo:: a->b instance FromTo a a where fromTo = id instance FromTo Int Double where fromTo = fromIntegral instance FromTo Int Float where fromTo = fromIntegral instance FromTo Integer Double where fromTo = fromIntegral instance FromTo Integer Float where fromTo = fromIntegral instance FromTo Double Int where fromTo = round instance FromTo Double Integer where fromTo = round instance FromTo Float Int where fromTo = round instance FromTo Float Integer where

2022-05-06 19:31:07    分类:技术分享    haskell   ghc

Is it possible to produce stand alone haskell executable

问题 假设架构相似,是否有任何方法可以生成独立的 haskell 可执行文件以在不同的 linux 机器上运行? 对不起,我应该更清楚。 其他机器上可能没有安装 ghc - 有点像 python 的 pyinstaller 是我正在寻找的? 回答1 回答2 是的,有可能。 就像 gcc 生成的二进制文件一样,假设动态库和平台匹配,您可以在系统之间复制它们。 实际上,这比 GCC 二进制文件略高,因为默认情况下 GHC 将动态链接更多库(例如:libgmp,除非您使用 integer-simple 构建 GHC)。

2022-05-05 12:58:04    分类:技术分享    linux   haskell   executable   ghc

Bytestring linking in ghc

问题 考虑以下简单代码: import Crypto.Hash.SHA1 (hashlazy) import qualified Data.ByteString as BS main = return () 我安装了cabal install --global bytestring然后我获得(在使用 ghc 7.4.1 的新安装的 Ubuntu 12.04 机器上): GHCi runtime linker: fatal error: I found a duplicate definition for symbol fps_minimum whilst processing object file /usr/local/lib/bytestring-0.10.0.1/ghc-7.4.1/HSbytestring-0.10.0.1.o This could be caused by: * Loading two different object files which export the same symbol * Specifying the same object file twice on the GHCi command line * An incorrect `package.conf' entry, causing some object to be loaded

2022-05-04 12:49:27    分类:技术分享    haskell   ghc   static-linking   bytestring

How do I determine my GHC version?

问题 回答1 为了找到我的stack使用的版本,我跑了 $ stack ghc -- --version 并得到 $ stack ghc -- --version The Glorious Glasgow Haskell Compilation System, version 8.0.2 回答2 ghc --version在 Ubuntu 上成功了,感谢 Karolis! 编辑:也适用于 mac(macOS Sierra 10.12.6) 回答3 根据您的安装方法和体系结构,某些命令可能会有所不同。 有些人可能安装了多个版本。 以下是一些可能有用的信息: 堆栈版本 ❯ stack --version Version 2.1.3, Git revision 0fa51b9925decd937e4a993ad90cb686f88fa282 (7739 commits) x86_64 hpack-0.31.2 ghc 版本(如@mherzl 所述) ❯ stack ghc -- --version The Glorious Glasgow Haskell Compilation System, version 8.6.5 标准 ghc 版本命令 ❯ ghc --version The Glorious Glasgow Haskell Compilation System, version

2022-05-04 11:13:03    分类:技术分享    haskell   version   ghc

cross-compile ghc failed missing iconv

successfully run ./configure --target=arm-linux-androideabi --with-gcc=arm-linux-androideabi-gcc then make failed. checking value of ENOTSUP... 95 checking value of SIGINT... 2 checking value of O_BINARY... 0 checking for library containing iconv... no configure: error: iconv is required on non-Windows platforms make[1]: *** [libraries/base/dist-install/package-data.mk] Error 1 make: *** [all] Error 2 Try installing libiconv,and assure that dt-ubt@dt-ubt:~/workspace/ghc$ ls /usr/local/lib/ charset.alias libiconv.la libsodium.la python2.7 libcharset.a libiconv.so libsodium.so python3.4

2022-04-30 22:39:01    分类:问答    haskell   ghc