amb評価器:断念

楽しみにしていた「4.3.3 amb評価器の実装」の節ですが、想像以上に難しく、5-6回読み返して、ああだこうだと試行錯誤しましたが、自分の中で完全に腑に落ちるまで理解を深めることはできませんでした。自分の無能さに直面して、若干気持ちが落ち込み気味ですが、あまり時間をかけても仕方がないという想いが強くなってきたので、今回はここで区切ってしまうことにしました。
この節の個々の実装については、何度か読んでいるうちに頭の中で処理の流れが見えてきました。特に、代入の部分は、代入する前の値を覚えておいて、失敗した時のために、元に戻すための手続きを失敗継続として構成しておく、みたいな流れをぼんやりと追うことができました。しかし、全体としてどう動くのか、例えば、これまでの問題に出てきた「論理パズル」や「自然言語構文解析」がどのように動くのか、ということをイメージすることができていません。一番ひっかかっている点が、どのような時に「失敗」という判断がされて、どのようにバックトラックされていき、どのタイミングで再試行処理がなされるのかという、一連の流れです。requireやan-element-ofの中のambがどのような順序で影響を与えているのかという、肝心なところがわかっていないようです。
そのため、問題50〜54は飛ばしました。問題文を読んだ限り、何となく解けそうな気もしましたが、上記の通り、根本的な点への理解を深められなかったので、深追いをしないことにしました。グチばっかりになってしまいましたが、わからなかったことも書き記しておくことも重要だと自分に言い聞かせながら、先を読み進めていこうと思っています。