-1

このHaskellコードを実行すると、この本当に厄介なエラーが発生します。どういうわけかそれは最初のラインが好きではありませんdelLast :: (Ord a) => [a] -> [a]

delLast :: (Ord a) => [a] -> [a]
delLast [] = []
delLast (x:[]) = []
delLast (x:xs) = [x] ++ delLast xs

なぜ私がこのエラーを受け取るのか誰かが知っていますか?ありがとう。

これは私が得るエラーです:

parse error on input `='
Failed, modules loaded: none.
4

2 に答える 2

12

その行の直前に未終了の定義はありますか?

x = do

delLast :: (Ord a) => [a] -> [a]
delLast [] = []
delLast (x:[]) = []
delLast (x:xs) = [x] ++ delLast xs

それをコンパイルすると:

test.hs:5:12: parse error on input `='
于 2012-04-16T06:26:12.970 に答える
1

どうですか

delLast [] = []
delLast xs = init xs

またはあなたがそれをあなたのやり方でやりたいがより良いなら

delLast :: (Ord a) => [a] -> [a]
delLast [] = []  
delLast [x] = []                  -- Looks better IMO
delLast (x:xs) = x : delLast xs   -- : instead of ++ gives a performance boost
于 2012-08-07T09:29:32.677 に答える