2012-04-16 16 views
-1

このハスケルコードを実行すると、実際にこの迷惑なエラーが発生します。イムは、このエラーを取得して、なぜそれが拳ラインdelLast :: (Ord a) => [a] -> [a]入力 '='の解析エラー - Haskell

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

が好きではありませんいくつかの理由について誰もが知っているDoest?ありがとう。

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

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

より良い場合についてコンパイラ出力? – Attila

+0

出力エラー – cclerville

+3

を追加しました投稿したコードにエラーはありません。 –

答えて

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 `=' 
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