" - 文件:"在Haskell中

use*_*256 1 haskell ghci

我一直在读我的教科书,这里有些困扰我:其中一个页面显示了这样的代码:

-- file: ch02/add.hs
add a b = a + b
Run Code Online (Sandbox Code Playgroud)

然后将其加载到ghci中.但是,当我输入第一行ghci时,它什么也没做,然后第二行触发了一个错误.

我想这两行意味着我应该创建一个文件并将其放入,然后加载它.但ghci告诉我它无法识别" - ",尽管第二行表现良好.所以我很困惑:不应该" - "意思是"//"?我误解了教科书了吗?

谢谢.

lef*_*out 12

首先,加载文件是一样ghci中输入线.ghci在do某个IO动作的块中起作用(因此你需要编写let add a b = a + b),而Haskell文件只包含顶级声明.

FWIW,你可以简单地省略第一行.正如你所注意到的那,这只是一个评论.您的文件中的问题是您没有

-- file: ch02/add.hs
Run Code Online (Sandbox Code Playgroud)

— file: ch02/add.hs
Run Code Online (Sandbox Code Playgroud)

(你可能正在使用一个文本编辑器,它将两个连字符合并到一个em-dash).并且em-dash不被认为是Haskell中的特殊符号.实际上,它可以像任何其他中缀一样使用:

(—) :: Int -> Int -> Int
a — b = a - b
Run Code Online (Sandbox Code Playgroud)

使用正确的纯文本编辑器或IDE,你不应该有这样的问题,建议见这里.