Thursday, November 25, 2010

amb evaluator of SICP

It is necessary to implement the amb evaluator in order to keep up with
the text and the evaluator does not make sense if it can not handle logical
AND/OR.
Here is the analayze-and in my evaluator which took me some time to work out
continuation part.

为了更好地理解内容,有必要实现amb evaluator。而不能处理逻辑与或的evaluator是没有
什么实际意义的。因为至今对continuation也不是很理解,费了好大劲儿才实现了。
下面是逻辑或的主要部分。

テキストを良く理解するために、amb evaluatorを実装しなければなりません。テキストに
は主な部分がありますが、論理AND、ORの部分がありませんでした。しかし、これがない限り、
amb evaluatorとしてあまり意味がないので、試しに実装してみました。何とか動き出しましたが、
いまだに継続についてあまり理解できていません。
以下は論理ANDのメイン部分になります。

(define (analyze-and exp)
  (define (iter first rest env succ fl)
    (if (null? rest)
    ((analyze first) env
     (lambda (v fl1)
       (succ v fl1))
     fl)
      ((analyze first) env
         (lambda (v fl2)
           (if (true? v)
           (iter (car rest) (cdr rest) env succ fl2)
         (succ false fl2)))
         fl)))
  (let ((f (cadr exp))
    (r (cddr exp)))
    (lambda (env succeed fail)
      (iter f r env succeed fail))))

No comments:

Post a Comment