回答編集履歴
1
文章修正
answer
CHANGED
@@ -52,7 +52,7 @@
|
|
52
52
|
|
53
53
|
特殊形式[```catch```](https://www.lispworks.com/documentation/HyperSpec/Body/s_catch.htm)と[```throw```](https://www.lispworks.com/documentation/HyperSpec/Body/s_throw.htm)は脱出の為の構文だ。もうちょっと言うとジャンプ構文で、```throw```で「投げた」計算結果を```catch```が受け取る。文字通りだ。
|
54
54
|
今、```'(this is a simple lisp function)```と言うリストに対してリスト```'(am is are was were)```の先頭要素から順繰りにそれが与えられたリストの要素に含まれているかどうかを調べていってるわけだ。
|
55
|
-
```'am```は含まれてないんで棄却だが2番目の```'is```は含まれている。そして、2番目の```'is```が含まれている、と分かった時点で、残りの```'(are was were)```は調べなくても良い、って事が決定する
|
55
|
+
```'am```は含まれてないんで棄却だが2番目の```'is```は含まれている。そして、2番目の```'is```が含まれている、と分かった時点で、残りの```'(are was were)```は調べなくても良い、って事が決定する。
|
56
56
|
すなわち、```'is```を持って```reduce```を止めて脱出したい。
|
57
57
|
それが故に```throw```で```'is```を投げてその外側で```catch```し、それをそのまま```let```で変数```be```に束縛する。
|
58
58
|
結果、変数```be```の内容は```'is```となる。
|