我想写一个函数,就像这样
double :: Int -> Int
double x = x + x
Run Code Online (Sandbox Code Playgroud)
问题是我写完第一行后:
Prelude> double :: Int -> Int
Run Code Online (Sandbox Code Playgroud)
我尝试按下回车键进入下一行,但是当我这样做时,我得到:
<interactive>:84:1: Not in scope: `double'
Prelude>
Run Code Online (Sandbox Code Playgroud)
似乎程序执行第一行,但我不想要那个,我希望程序让我写第二行然后才编译并执行
那么,我怎样才能进入Haskell的下一行(我在Mac OS上使用终端)?
luq*_*qui 21
在ghci中,您必须将定义放在一行上,并从中开始let.它与源文件不同:
ghci> let double :: Int -> Int; double x = x + x
Run Code Online (Sandbox Code Playgroud)
您还可以使用:{和:}执行多行定义:
ghci> :{
Prelude| let double :: Int -> Int
Prelude| double x = x + x
Prelude| :}
ghci> double 21
42
Run Code Online (Sandbox Code Playgroud)
确保缩进第二个double与第一个对齐 - 缩进很重要.
我建议您在文本编辑器中完成大部分工作,然后将文件加载到ghci(:load在命令行中使用或提供它作为参数)并使用它.在实际编写代码时,我发现ghci非常令人愉快 - 它更好地处理已编写的代码.无论何时修改文本文件,:reload(或只是:r)在ghci中.
| 归档时间: |
|
| 查看次数: |
3743 次 |
| 最近记录: |