15/04/13 07:16:38.90 WAzsEDwP.net
Haskell 初心者です。分からない事があるのですが、すごいHaskell本のp93の
import Data.List
wordNums :: String -> [(String,Int)]
wordNums = map (\ ws -> (head ws, length ws)) . group . sort . words
このwordNums関数がよく分かりません、wordNums関数を使う場合、何故String(=[Char]?)を渡してwords関数がちゃんと適用されるのでしょうか?
mapの定義は
map :: (a -> b) -> [a] -> [b]
map f xs = foldr (\ x acc -> f x : acc) [] xs
こんな感じだと思っているのですが、
それだとStringの一文字毎にfが適用されていく事になり全く意味が無いと思ってしまいます…(実際はちゃんと文字列に対するwordsになっているのですが)
日本語が分かりにくくて申し訳無いのですが、分かった方はどなたか解説して頂けたら頂けたら嬉しいです…