Haskell 为什么可以';我不能以交互方式运行main吗?

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]

程序(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]
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