我有以下代码在命令行上运行良好:
ghci> [let square x = x * x in (square 5, square 3, square 2)]
[(25,9,4)]
Run Code Online (Sandbox Code Playgroud)
但是当我把它放在一个文件中并编译它时,它不起作用我得到一个错误:
[1 of 1] Compiling Main ( baby.hs, interpreted )
baby.hs:62:1:
Parse error: naked expression at top level
Perhaps you intended to use TemplateHaskell
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)
REPL GHCi接受Haskell表达式.与Python不同,Haskell模块必须由声明组成.
例如,表达式可能是,1+1但即使从人类的角度来看,作为源文件的顶层也没有意义 - 没有声明变量并且没有执行任何操作.在顶层,您可以声明一个值,例如:
val = [let square x = x * x in (square 5, square 3, square 2)]
Run Code Online (Sandbox Code Playgroud)
或者在REPL中你也可以这样做,但是let:
let val = [let square x = x * x in (square 5, square 3, square 2)]
Run Code Online (Sandbox Code Playgroud)