2016-07-14 2 views

答えて

6

フェムトールは、do macroを提供する。参考までに、実装は次のとおりです。

(define-macro (do vars test-spec . commands) 
    (let ((loop (gensym)) 
     (test-expr (car test-spec)) 
     (vars (map car vars)) 
     (inits (map cadr vars)) 
     (steps (map (lambda (x) 
         (if (pair? (cddr x)) 
          (caddr x) 
          (car x))) 
        vars))) 
    `(letrec ((,loop (lambda ,vars 
         (if ,test-expr 
          (begin 
          ,@(cdr test-spec)) 
          (begin 
          ,@commands 
          (,loop ,.steps)))))) 
     (,loop ,.inits)))) 
+0

うん、しかし、私は実装をしていないその小さなレポを使用しています –

関連する問題