山本さんコメントありがとうございます。

なるほど、最後にちょっと違うよってかいてありますね。コードを試しながら読んでいたので途中で躓いてその先にまで目を通していませんでした。

結局この章はまだ理解できず結局前の章に戻って何度も読み直しているのですがまだまだですね。たとえば、P77の最後にある例で一番目と三番目の文字でパースする実装が、

p = do x <- item
           item
           y <- item
           return (x,y)

で、結果が

>parse p "abcdef"
[(('a','c'),"def")]

になっているのですが、xにバインドされた値は[('a',"bcdef")]でyのバインド値は[('c',"def")]でなぜreturn(x,y)が[(('a','c'),"def")]になるのかまだ理解できません。xとyがそれぞれ'a','c'ってならわかるんですが...

まだ、勉強はじめて正味二ヶ月くらいですが道のりは長く遠いです。

返信