This question already has answers here:
How to define a function in ghci across multiple lines?
(7个答案)
Multi-line commands in GHCi
(5个答案)
7年前关闭。
我想写一个函数,像这样
问题是在我写第一行之后:
我尝试按Enter键转到下一行,但是当我得到时:
似乎程序执行了第一行,但我不希望那样,我希望程序让我写第二行,然后才编译并执行
那么,如何转到Haskell的下一行(我在Mac OS上使用Terminal)?
您还可以使用
确保缩进第二个
我建议您在文本编辑器中完成大部分工作,然后将文件加载到ghci中(使用
(7个答案)
Multi-line commands in GHCi
(5个答案)
7年前关闭。
我想写一个函数,像这样
double :: Int -> Int
double x = x + x
问题是在我写第一行之后:
Prelude> double :: Int -> Int
我尝试按Enter键转到下一行,但是当我得到时:
<interactive>:84:1: Not in scope: `double'
Prelude>
似乎程序执行了第一行,但我不希望那样,我希望程序让我写第二行,然后才编译并执行
那么,如何转到Haskell的下一行(我在Mac OS上使用Terminal)?
最佳答案
在ghci中,您必须将定义放在一行上,并以let
开头。它与源文件中的不同:
ghci> let double :: Int -> Int; double x = x + x
您还可以使用
:{
和:}
进行多行定义:ghci> :{
Prelude| let double :: Int -> Int
Prelude| double x = x + x
Prelude| :}
ghci> double 21
42
确保缩进第二个
double
与第一个:load
对齐-缩进很重要。我建议您在文本编辑器中完成大部分工作,然后将文件加载到ghci中(使用
:reload
或在命令行上作为参数提供)并进行播放。在实际编写代码时,我觉得ghci并不是一件令人愉快的工作-更好地处理已经编写的代码。每当您修改ghci中的文本文件:r
(或只是ojit_code)时。关于haskell - 如何在GHCi中换行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18469063/
10-12 23:16