2016/01/13
SICP 問題 4.47
(define (parse-verb-phrase)
(amb (parse-word verbs)
(list 'verb-phrase
(parse-verb-phrase)
(parse-prepositional-phrase))))
(parse '(the student with the cat sleeps in the class))
これを例に考える.
verbが問題なのでsleeps in the classだけに絞る.
これは
(verb-phrase
(verb sleeps)
(prep-phrase (prep in)
(simple-noun-phrase
(article the) (noun class))))
となってほしい.
まず(parse-word verbs)が評価されunparsedはcdrがset!されて(list verb sleeps)が返る.
unparsedはまだ残っているので(parse input)の(require (null? unparsed))で失敗して次にいく.
次はparse-verb-phraseなのでまた(parse-word verbs)を評価する.
しかし,unparsedに入っているのはinなので失敗する.
そうするとambの次の要素にいくのでまたparse-verb-phraseを評価する.
同じく失敗する.このまま無限ループに入って終了しない.
;; (parse input)
(define (parse input)
(set! *unparsed* input)
(let ((sent (parse-sentence)))
(require (null? *unparsed*))
sent))
- 作者: ハロルドエイブルソン,ジュリーサスマン,ジェラルド・ジェイサスマン,Harold Abelson,Julie Sussman,Gerald Jay Sussman,和田英一
- 出版社/メーカー: 翔泳社
- 発売日: 2014/05/17
- メディア: 大型本
- この商品を含むブログ (2件) を見る