0
私は自分のプロジェクトでfemtolispを使用していますが、doループはサポートしていません。どのようにしてfemtolispにループ機能を追加するか、共通のlispでdoループのマクロ。doループをfemtolispに追加するかdoループマクロを定義する一般的なlisp
私は自分のプロジェクトでfemtolispを使用していますが、doループはサポートしていません。どのようにしてfemtolispにループ機能を追加するか、共通のlispでdoループのマクロ。doループをfemtolispに追加するかdoループマクロを定義する一般的なlisp
フェムトールは、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))))
うん、しかし、私は実装をしていないその小さなレポを使用しています –
なぜこのタグが付けられていますか? –