2016-10-10 7 views
0

私は自分自身の型の配列を[( 'letter'、occurance)、()、...]の形式で作成しようとしていますletterCount。 2つのパラメータを取るタイプの出力を作成するにはどうしたらいいですか?ここに私のコードは次のとおりです。Haskell - 2つのパラメータをとる型を出力します

type LetterCount = (Char,Int) 

letterOccur :: Char->[Char] -> Int 
letterOccur c [] = 0 
letterOccur c (x:xs) = if (c == x) then ((letterOccur c xs) + 1) 
          else letterOccur c xs 

letterStats :: [Char] -> [LetterCount] 
letterStats :: [] = [] 
letterStats (x:xs) = [x,(letterOccur x (x:xs))] ++ letterStats xs 
+6

'map(head &&& length)。グループ。 sort' – karakfa

+1

@karakfa矢印は初心者に投げるのがベストコンセプトではないかもしれません。 –

+1

OK、 '\ x - >(head x、length x)'に置き換えてください。 – karakfa

答えて

0

私はあなたがこのような何かをしようとしている推測している:

letterStats :: [Char] -> [LetterCount] 
letterStats :: [] = [] 
letterStats (x:xs) = (x, (+1) $ letterOccur x xs) : letterStats xs 

をあなたがしたいすべてがあなたがカウントされていないとして1を追加ですxすべてのx出現についてxsをチェックするとき、xあなたもこれを行うことができますが、また何をしたいことはタプルないリストであるletterCountタイプのリストを返すことですので、私は

(x, (+1) $ letterOccur x xs) : letterStats xs 

[x, letterOccur x xs] ++ letterStats xs 

を変更しました:

[(x, (+1) $ letterOccur x xs)] ++ letterStats xs 

しかし、これは不要です。

関連する問題