プログラミング言語を使うことで,膨大な量の詳細に飲み込まれないで済んでいる. Lispがよいプログラミング言語なのは,それ自身が多くの詳細を扱ってくれて, プログラマが耐えられる複雑さの限界を有効に使わせてくれている. この章ではマクロでLispにさらに別の種類の詳細を扱わせる方法を示す. 非決定的なアルゴリズムを決定的なものに変換することの詳細だ. この章は5つの部分に分けられる. まず,非決定性とは何かを説明する. 次に,非決定的なchooseとfailを継続を使ってSchemeで実装する. 3番目では,第20章の継続渡しマクロを基礎にCommon Lispで実装したchooseとfailを示す. 4番目では,オペレータcutをPrologとは独立に理解する方法を示す. 最後に,非決定的オペレータの改良について考察する. この章で定義される非決定的な選択オペレータは, 第23章のATN