相当于Scheme中的defsetf
Common Lisp 的 defsetf
方案中是否有等效项?
Is there an equivalent in Scheme of Common Lisp's defsetf
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
Common Lisp 的 defsetf
方案中是否有等效项?
Is there an equivalent in Scheme of Common Lisp's defsetf
?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
我很确定标准(RnRS)方案中没有等效项,但是 SRFI 17 受某些Scheme 实现的支持,允许您为通用位置定义setter。
I'm pretty sure that there isn't an equivalent in standard (RnRS) Scheme, but SRFI 17, which is supported by some Scheme implementations, allows you to define setters for generalized places.
我认为不存在。 我认为 defsetf 允许你在 Lisp 中做类似 (setf (car x) 5) 的事情,即使用看似函数的结果作为左值。 但在Scheme中,他们必须定义单独的变异函数,例如
set-car!
和set-cdr!
,才能完成相同的任务; 上面的例子是(set-car! x 5)
。I don't think there is. I think
defsetf
allows you to do things in Lisp like(setf (car x) 5)
i.e. use what appears to be the result of a function as an l-value. But in Scheme, they have to define separate mutating functions, likeset-car!
andset-cdr!
, to accomplish the same task; the above example would be(set-car! x 5)
.