2012-03-11 6 views
4

リストのアイテムを数値化し、数字のついたタプルのリストを返す関数を書こうとしています。私は 'zip'関数でそれを行うことができますが、タスクは再帰を使って書くことができます。 get "は無限の型を構築できません:a = [a] numerize ''の型を一般化するとき、私は間違っていますか?なぜhaskellはこのエラーをスローするのです

+3

する必要があります! – is7s

+0

私はコンパイラエラーのために "投"という用語を使用しません。エラーを「スローする」とは通常、実行時の例外を指します。 –

答えて

8
[x:xs] 

overwriter

numerize' :: [a] -> Int -> [(a, Int)] 
numerize' [] _ = [] 
numerize' [x] n = [(x, n)] 
numerize' [x:xs] n = (x, n) : numerize' xs (n + 1) 

おかげで、すべてのベストは、あなたがシングルトンの場合は必要ありません

(x:xs) 
+0

ああ!おかげで愚かな間違い:) – overwriter

+1

+1の "ブラブラ"、簡単な答えは時には最高です – Kru