gpt4 book ai didi

scheme - 在 femtolisp 中添加 Do Loop 或定义一个 do 循环宏 common lisp

转载 作者:太空宇宙 更新时间:2023-11-03 18:56:14 28 4
gpt4 key购买 nike

我在我的项目中使用 femtolisp,但它不支持 do 循环。任何人都可以指导我如何在 femtolisp 中添加 do 循环功能,或者我可以在普通 lisp 中为 do 循环定义一个宏。

最佳答案

Femtolisp 确实提供了一个 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))))

关于scheme - 在 femtolisp 中添加 Do Loop 或定义一个 do 循环宏 common lisp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38369025/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com