gpt4 book ai didi

lisp - 关于 OnLisp 中的延续

转载 作者:太空宇宙 更新时间:2023-11-03 19:00:37 24 4
gpt4 key购买 nike

我仍然对已经回答的问题感兴趣。

continuation in common lisp by macros — regarding an implemetation in OnLisp

如果 Paul Graham 的假设是正确的,尤其是当从 (A 5) 变为 (B 1) 时,会发生什么情况?什么是 cont 绑定(bind)到这里?

当文字说的时候,还有一个困惑

=bind, is intended to be used in the same way as multiple-value-bind. It takes a list of parameters, an expression, and a body of code: the parameters are bound to the values returned by the expression, and the code body is evaluated with those bindings.

我无法直接从 =bind 的宏定义中看到绑定(bind)

 (defmacro =bind (parms expr &body body)
`(let ((*cont* #'(lambda ,parms ,@body))) ,expr))

绑定(bind)是否仅在 =values 稍后出现时发生?

最佳答案

宏设置延续,*cont* , 成为一个将所有变量作为参数的 lambda,然后计算表达式 expr .该表达式应以其最终值调用延续,这可以通过调用 =values 间接完成。功能,或直接使用 funcall .与使用任何表达式的返回值隐式调用延续的 Scheme 不同,您必须通过调用 *cont* 以延续传递样式显式编写代码。或使用 =values而不是从任何函数返回。

关于lisp - 关于 OnLisp 中的延续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29329568/

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