解析错误

问题描述:

这是一个简单的函数:解析错误

len [] = 0  
len (x:xs) = 1 + len xs 

和我一直在使用:l在加载它GHCI,但我跳投输入=得到这个错误解析错误。

我在另一台电脑上运行它,然后就可以了。我的电脑是Mac。我的Haskell有什么问题吗?

+1

它在我的电脑上运行,使用Ubuntu 12.04和GHC 7.4.1。我复制粘贴你的代码片段,它工作得很好。 – 2013-04-20 16:50:42

您需要在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对您平台上的换行符构成了一致意见。

+1

哦,我的文件中有一个新行,不起作用。网站上的格式错误。 – user2299776 2013-04-20 07:11:25

+0

正如我所说的,确保它是GHC期待的那种换行符,因为你得到的错误正是如果换行符丢失会得到的错误。它是回车,换行还是两者? – 2013-04-21 22:00:17

+0

问题解决了,谢谢。这是我的IDE导致的问题。 – user2299776 2013-04-24 02:31:50