第4回 スタートHaskell 感想
今回は8章, 9章が対象。
本を読んでいてわかりにくくなってくるのがここから。でも Haskell として楽しくなってくるのはここから(@ruicc さん曰く)。
パーサー
型
パーサの型は関数。Int とか Char のように値ではなく関数。
type Parser a = String -> [(a, String)]
連結
これが本を読んでいていまいち理解できていなかった部分。
(>>=) :: Parser a -> (a -> Parser b) -> Parser b p >>= f = \inp -> case parse parse p inp of [] -> [] [(v, out)] -> parse (f v) out
この f がよく理解できていなかったんだけど、f は
p1 >>= \v1 -> p2 >>= \v2 -> ... pn >>= \vn -> return (f v1 v2 ... vn)
の
\v1 -> p2 >>= \v2 -> ... pn >>= \vn -> return (f v1 v2 ... vn)
の部分。だよね。
よくコードを読めばわかったハズだけど ...。