第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)

の部分。だよね。
よくコードを読めばわかったハズだけど ...。