Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有与Common Lisp'等价的语言;什么是推拍?_Lisp_Common Lisp_Racket - Fatal编程技术网

是否有与Common Lisp'等价的语言;什么是推拍?

是否有与Common Lisp'等价的语言;什么是推拍?,lisp,common-lisp,racket,Lisp,Common Lisp,Racket,在Commons Lisp中有命令“push”: 例如,它允许您将元素放在列表的第一位 球拍里有这样的东西吗 我试图在文档中搜索,但找不到它 我唯一发现的是名为Forth的包中的一个命令,buildforstack-based计算。push是一个宏。表达式(push 10*var*)扩展为(setf*var*(cons 10*var*))。您可以在racket/scheme中创建类似的宏: (定义语法推送) (语法规则() ((expr var) (set!var(cons expr var((

在Commons Lisp中有命令“push”:

例如,它允许您将元素放在列表的第一位

球拍里有这样的东西吗

我试图在文档中搜索,但找不到它


我唯一发现的是名为Forth的包中的一个命令,buildforstack-based计算。

push
是一个宏。表达式
(push 10*var*)
扩展为
(setf*var*(cons 10*var*))
。您可以在racket/scheme中创建类似的宏:

(定义语法推送)
(语法规则()
((expr var)
(set!var(cons expr var(()())))
(定义x’())
(按10次)
(按20次)
x;==>(20 10)
如果将列表存储在一个框中,则还可以将其作为一个函数:

(定义(按下e框)
(设置框!框(cons e(取消框)))
(定义x(框'()))
(按10次)
(按20次)
x;==>#&(20 10)

push
是一个宏。表达式
(push 10*var*)
扩展为
(setf*var*(cons 10*var*))
。您可以在racket/scheme中创建类似的宏:

(定义语法推送)
(语法规则()
((expr var)
(set!var(cons expr var(()())))
(定义x’())
(按10次)
(按20次)
x;==>(20 10)
如果将列表存储在一个框中,则还可以将其作为一个函数:

(定义(按下e框)
(设置框!框(cons e(取消框)))
(定义x(框'()))
(按10次)
(按20次)
x;==>#&(20 10)

值得注意的是,这可能并不适用于common lisp的所有地方。例如,你能
(按3(汽车列表))
将3添加到列表的第一个列表中吗?@JoshuaTaylor。虽然此宏仅适用于绑定,但CL版本将适用于定义了
setf
扩展器的所有对象。天空是CL的极限:-)值得注意的是,这可能不会在common lisp的所有地方都起作用。例如,你能
(按3(汽车列表))
将3添加到列表的第一个列表中吗?@JoshuaTaylor。虽然此宏仅适用于绑定,但CL版本将适用于定义了
setf
扩展器的所有对象。天空是CL的极限:-)
(define (push x a-list)
  (set-box! a-list (cons x (unbox a-list))))