1
我想为常用的lisp(clisp准确地)设置别名,用于大量使用的命令,比如“defun”和“lambda”等,是否可以这样做?通用lisp函数/宏别名
这实际上是这个question样的副本,但我不能评论和解决方案并不在这两个SBCL为defun函数或lambda工作,CLISP
我想为常用的lisp(clisp准确地)设置别名,用于大量使用的命令,比如“defun”和“lambda”等,是否可以这样做?通用lisp函数/宏别名
这实际上是这个question样的副本,但我不能评论和解决方案并不在这两个SBCL为defun函数或lambda工作,CLISP
宏:
CL-USER 5 > (setf (macro-function 'dm) (macro-function 'defmethod))
#<Function DEFMETHOD 410009A014>
CL-USER 6 > (dm m1+ ((v vector)) (map 'vector #'1+ v))
#<STANDARD-METHOD M1+ NIL (VECTOR) 4130003913>
CL-USER 7 > (m1+ #(1 2 3 4))
#(2 3 4 5)
整点由宏是提供源重写服务。因此我想给你这一点,你就可以说出来的:
(defmacro df (name (&rest arguments) &body body)
`(defun ,name ,arguments ,@body))
(df test (x) (+ x x))
(test 5) ; ==> 10
刚才我们缩短了名字..让我们再拍一次:
(defmacro df1 (name &body body)
`(defun ,name (_) ,@body))
(df1 test (+ _ _))
(test 5) ; ==> 10
个
等等...
使用的':'单独被(http://www.lispworks.com/documentation/HyperSpec/ [根据标准未定义]车身/ 02_ce.htm)。看来ABCL,CLisp和ECL接受它作为''“''的名称的符号; ACL,CCL,LW和SBCL不接受该语法。 – acelent
@acelent有意义的是':'在CL中是特殊的。我选择了别的东西。 – Sylwester
这比我想要的要复杂一些,因为我仍然需要了解一般的术语和宏。任何想法将如何转化为(方言)方案? – DiiP