解析错误
这是一个简单的函数:解析错误
len [] = 0
len (x:xs) = 1 + len xs
和我一直在使用:l
在加载它GHCI,但我跳投输入=
得到这个错误解析错误。
我在另一台电脑上运行它,然后就可以了。我的电脑是Mac。我的Haskell有什么问题吗?
您需要在len
函数的两个模式之间换行。然后,它工作得很好:
$ cat len.hs
len [] = 0
len (x:xs) = 1 + len xs
$ ghci
GHCi, version 7.4.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> :l len.hs
[1 of 1] Compiling Main (len.hs, interpreted)
Ok, modules loaded: Main.
*Main> len []
0
*Main> len [1]
1
*Main> len [1,2,3]
3
*Main>
既然你提到,它是一台Mac,也许你有一个换行符约定不兼容。确保您的文本编辑器和GHCi对您平台上的换行符构成了一致意见。
哦,我的文件中有一个新行,不起作用。网站上的格式错误。 – user2299776 2013-04-20 07:11:25
正如我所说的,确保它是GHC期待的那种换行符,因为你得到的错误正是如果换行符丢失会得到的错误。它是回车,换行还是两者? – 2013-04-21 22:00:17
问题解决了,谢谢。这是我的IDE导致的问题。 – user2299776 2013-04-24 02:31:50
它在我的电脑上运行,使用Ubuntu 12.04和GHC 7.4.1。我复制粘贴你的代码片段,它工作得很好。 – 2013-04-20 16:50:42