随着GHC 8.0.2版下面的程序: import Debug.Trace
f=trace("f was called")$(+1)
main = do
print $ f 1
print $ f 2
输出: f was called
2
3
它是预期的行为?如果是,为什么?我预计字符串f was called要打印两次,一次在2之前,一次在3之前打印一次。
我已经使用stack构建工具安装了ghc。它编译我的项目。但是,当我进入nix-shell项目目录中,并希望从nix-shell编译项目中,我看到的错误是这样的: No compiler found, expected minor version match with ghc-8.0.2
这可以通过运行stack setup命令是固定的。但我担心这会再次安装ghc在我的机器上耗费更多空间等等。
我想要一个'通用'地图数据结构,它可以通过提供自定义实例来高效地进行专门化,就像在the GHC manual section on type families中一样。 {-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE UndecidableInstances #-}
module
我在Haskell播放the guessing game described in The Rust Programming Language book写了一个简单的程序: 下面是它的工作原理:该程序会产生一个随机整数1到100之间。然后会提示玩家进入一个猜测。输入猜测后,它会指示猜测是否过低或过高。如果猜测是正确的,游戏将打印祝贺并退出。 这里是我写的: import Control.Monad