- 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
48 :デフォルトの名無しさん[]:2015/04/13(月) 13:56:46.50 ID:H7xRrVnS - >>45
そこんところに適用されていく様子が書いてあるでしょ。 wordNums "wa wa wee wa"なら words "wa wa wee wa" → ["wa", "wa", "wee", "wa"] sort ["wa", "wa", "wee", "wa"] → ["wa", "wa", "wa", "wee"] group ["wa", "wa", "wa", "wee"] → [ ["wa","wa","wa"], ["wee"] ] map (¥ws->(head ws, length ws)) [ ["wa","wa","wa"], ["wee"] ] → [("wa",3),("wee",1)] で、一目瞭然だと思うんだけどなにが分かんないの? ポイントフリーだから混乱してるとかそういう話? wordNums xs = map (¥ ws -> (head ws, length ws)) $ group $ sort $ words xs 敢えて最後に引数補ってこう書いてあればわかったりするのかしら。
| - 関数型プログラミング言語Haskell Part28 [転載禁止]©2ch.net
50 :デフォルトの名無しさん[]:2015/04/13(月) 18:51:08.84 ID:H7xRrVnS - >>49
こんなんで辞職に追い込まれないだろw で、>>45の疑問がわかった気がする。wordsNumの定義を (f = ¥ ws -> (head ws, length ws) として) map (f . group . sort . words) だと思ってるんだな。 String(=[Char])に対して、合成された関数をmapしてるかのように読んでるんだろう。 正しい構文解析はそうではなくて (map f) . group . sort . words だというだけの話だ(関数適用の結合は関数合成演算子より強いのでそうなる)。
|
|