ghc

    7热度

    2回答

    GHC在将总和类型传递给函数时是否解包过?例如,让我们说,我们有以下类型: data Foo = Foo1 {-# UNPACK #-} !Int {-# UNPACK #-} !Word | Foo2 {-# UNPACK #-} !Int | Foo3 {-# UNPACK #-} !Word 然后我定义一个函数,在其Foo参数严格: consumeFoo :

    2热度

    1回答

    我有一个项目,它是用堆栈构建的,需要GHC 8。考虑到它需要GHC 8,可以在我的项目中使用Liquid Haskell吗?如果是这样,我应该如何去安装和执行Liquid Haskell? 谢谢!

    0热度

    1回答

    我想编译一个哈斯克尔源包作为动态库与OCaml代码一起使用。我试着在源文件的.cabal文件上使用--enable-shared选项,cabal install,我得到了一个Perhaps you haven't installed the "dyn" libraries for package 'zeromq4-haskell-0.6.5'错误。经过一番Google搜索之后,我意识到依赖项也必须

    10热度

    1回答

    我有以下代码: {-# LANGUAGE DefaultSignatures#-} import Control.Monad.Trans.Class import Control.Monad.Trans.Maybe class Monad m => MonadMaybe m where liftMaybe :: Maybe a -> m a default liftM

    7热度

    1回答

    我刚刚写了一个在井字游动的功能。我想推动模式匹配。所以我写了9 makeAMove条款。每个都有一个Tic-Tac-Toe板,由空符号指定不同的空间。它看起来像这样。 makeAMove [[E, m12, m13], [m21, m22, m23], [m31, m32, m33]] X 1 1 = ... 本条款将X放在董事会的左上角。 X,O和E被定义为标记。

    4热度

    1回答

    我有一个Haskell库有几个可执行文件(测试,基准等),共约六个。当我在库中进行一些重构时,通常需要对每个可执行文件进行一些小改动。 在我目前的工作流程中,我分别编译每个可执行文件(比如GHCi)并修复每个可执行文件。这很乏味,因为我必须输入每个可执行文件的路径,而且必须重新加载所有(非常大)的库,即使使用GHCi也需要一些时间。 我首先想到解决这个问题是创建一个导入可执行“Main”模块的虚拟

    1热度

    2回答

    只是一个随机琢磨看着我无数length调用,它发生,我认为肯定是编译器可以告诉任何列表感谢的长度不变性和引用透明(甚至当新的列表是concat从现有已知的名单/ -ed代码路径)。那么它可能会取代所有length l“调用”与实际 int在常数低级代码生成过程中的某个阶段,对吧? 想知道它是否的确如此,或者我在初学者的直觉中错过了某些关于纯函数式语言/编译器的东西。

    4热度

    2回答

    我对Haskell比较新,我想了解HList的定义之一。 data instance HList '[] = HNil newtype instance HList (x ': xs) = HCons1 (x, HList xs) pattern HCons x xs = HCons1 (x, xs) 我有几个具体的问题: 什么是'[]和(x ': xs)语法我看到?它几乎看起来像是在可变

    0热度

    1回答

    Haskell新手提出的一个关于使并行性有效工作的问题。 Advent of Code Day 14挑战包括创建一个整数序列的MD5哈希值,查找让哈希值满足某些属性的前n个整数。我主要通过创建哈希来过滤它们来做到这一点。 我认为这将是一个很好的事情,尝试与并行,使用几个核心生成哈希。 哈希创建的非平行版本是这样的: md5sequenceS :: [String] md5sequenceS =

    0热度

    1回答

    以前我用ghc版本< 8在Linux上,当我在一个文件中的脚本,说file.hs,像 let x = "hello" putStrLn x double x=2*x print $ double 2 double 3 则是可能的运行和运行脚本(而不是模块)通过做 ghc -e ':script file.hs' 现在我使用Windows ghc 8.0.1获得在终端输出,这不工作了