【问题标题】:Parse error on input '=' something wrong with my Haskell输入“=”时解析错误我的 Haskell 有问题
【发布时间】:2013-04-20 02:22:02
【问题描述】:

这是一个简单的函数:

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

我已经使用 :l 将它加载到 GHCi,但我在输入 = 时收到此错误解析错误。

我在另一台电脑上运行这个,就可以了。我的电脑是Mac。我的 Haskell 有问题吗?

【问题讨论】:

  • 它在我的电脑上运行,Ubuntu 12.04 和 GHC 7.4.1。我复制粘贴了你的代码 sn-p,它工作得很好。

标签: haskell


【解决方案1】:

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 就您平台上的换行符的构成达成一致。

【讨论】:

  • 哦,我的文件中有一个新行,无法正常工作。网站格式错误。
  • 正如我所说,确保它是 GHC 所期望的那种换行符,因为你得到的错误正是缺少换行符时你会得到的错误。是回车、换行还是两者兼而有之?
猜你喜欢
  • 1970-01-01
  • 2016-01-11
  • 2018-05-02
  • 1970-01-01
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多