我一直在读我的教科书,这里有些困扰我的事情: 其中一个页面显示了这样的代码:
-- file: ch02/add.hs
add a b = a + b
然后将其加载到ghci中。但是,当我输入第一行ghci时,它什么也没做,然后第二行触发了错误。
我想这两行意味着我应该创建一个文件并将其放入,然后加载它。但ghci告诉我它无法识别“ - ”,尽管第二行表现良好。所以我很困惑:不应该“ - ”意思是“//”?我误解了教科书吗?
谢谢。
答案 0 :(得分:12)
首先,加载文件不与在ghci中键入行相同。 ghci的作用类似于某个do
动作的IO
块(因此您需要编写let add a b = a + b
),而Haskell文件只包含顶级声明。
FWIW,你可以简单地省略第一行。正如你所注意到的那,这只是一个评论。您文件中的问题是您不已写
-- file: ch02/add.hs
但
— file: ch02/add.hs
(你可能正在使用一个文本编辑器,它将两个连字符合并到一个em-dash)。并且em-dash不被认为是Haskell中的特殊符号。实际上,它可以像任何其他中缀一样使用:
(—) :: Int -> Int -> Int
a — b = a - b
使用正确的纯文本编辑器或IDE,对于建议see here,您不应该遇到此类问题。