0

これは単純な関数です:

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

を使用してGHCiにロードしましたが、入力:l時にこのエラー解析エラーが発生しました=

これを別のコンピューターで実行すると、問題ありません。私のパソコンはマックです。私のHaskellに何か問題がありますか?

4

1 に答える 1

6

関数の 2 つのパターンの間に改行が必要です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 が、プラットフォーム上で何が改行を構成するかについて合意していることを確認してください。

于 2013-04-20T02:30:38.830 に答える