Haskell 为什么可以';我不能以交互方式运行main吗?
程序(Main.hs,在SO上找到)如下所示Haskell 为什么可以';我不能以交互方式运行main吗?,haskell,Haskell,程序(Main.hs,在SO上找到)如下所示 import Control.Monad.Random main :: IO () main = do gen <- getStdGen let values = evalRand diceSums gen print . take 10 $ values -- Generate sums from rolling two dice diceSums :: RandomGen g => Rand g [Int]
import Control.Monad.Random
main :: IO ()
main = do
gen <- getStdGen
let values = evalRand diceSums gen
print . take 10 $ values
-- Generate sums from rolling two dice
diceSums :: RandomGen g => Rand g [Int]
diceSums = do
xs <- dieRolls
ys <- dieRolls
return $ zipWith (+) xs ys
-- Single die roll function.
dieRolls :: RandomGen g => Rand g [Int]
dieRolls = getRandomRs (1, 6)
我做错了什么?不确定为什么
main
不起作用,但从GHCi运行main函数的正确方法是:main
。通过这种方式,您可以向程序传递参数。可能是stack
坚持要您在模块顶部添加模块声明
module Main where
(似乎相关,尽管根据它,没有声明,
main
应该仍然可用——尽管dielolls
确实不应该如此。)可能是stack
坚持要您在模块顶部添加module
声明,module main在哪里
?似乎相关,但根据它的说法,如果没有声明,main
应该仍然可用(尽管dieRolls
确实不应该)。或者你只是从一个错误的目录加载了一个错误的文件?谢谢@WillNess添加模块声明在ghci中运行了它。好的,我添加了它作为一个答案。这很奇怪,根据链接,main
无论如何都应该是可用的。
ghc Main.hs
[1 of 1] Compiling Main ( Main.hs, Main.o )
Main.hs:1:1: error:
The IO action `main' is not defined in module `Main'
module Main where