gpt4 book ai didi

clojure - Lisp 家族 : Different evaluation of a symbol call and symbol as argument

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

在 lisp 家族(编辑:lisp-1)语言中是否有一种方法可以根据其作为函数或参数的位置来区分符号求值(即在求值时重写该符号的求值) ?
作为一个例子(我不需要这个功能,这是一个例子),我想在一组对象上实现某种中缀操作,它可以被一个对象本身调用

(my-obj some-operator arg1 ...)  

实际上会将函数 some-operator 应用于 my-obj 和参数。
但是当此对象在代码中的其他任何地方用作参数时,例如:

(some-function my-obj &args...) 

它将评估为 my-obj 的值。
谢谢。

最佳答案

在 Racket 中,可以本着这种精神做几件事:

  1. 你可以定义一个struct并给它一个prop:procedure .当在应用程序中提供 struct 的实例时,将调用该过程。

  2. 您可以覆盖默认值 #%app使用您自己的功能,重新定义应用程序,并包括不是 struct 的内容。例如,你可以模仿 Clojure 的 (key map) 语法,这样 ('symbol dict) 实际上就是 (hash-ref dict 'symbol).

关于clojure - Lisp 家族 : Different evaluation of a symbol call and symbol as argument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34285428/

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