隨着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