Common lisp 处理,;公共lisp中的rest参数
我想定义一个接受Common lisp 处理,;公共lisp中的rest参数,common-lisp,Common Lisp,我想定义一个接受&rest参数并将其委托给另一个函数的函数 (html "blah" "foo" baz) => "<html>blahfoobaz</html>" (html“blah”“foo”baz)=>“blahfoobaz” 我没有找到比这更好的方法: (defun html (&rest values) (concatenate 'string "<html>"
&rest
参数并将其委托给另一个函数的函数
(html "blah" "foo" baz) => "<html>blahfoobaz</html>"
(html“blah”“foo”baz)=>“blahfoobaz”
我没有找到比这更好的方法:
(defun html (&rest values)
(concatenate 'string
"<html>"
(reduce #'(lambda (a b)
(concatenate 'string a b))
values :initial-value "")
"</html>"))
(定义html(&rest值)
(连接“字符串”
""
(减少#’)(λ(a b)
(连接“字符串a和b”)
值:初始值“”)
""))
但这在我看来有点令人沮丧,因为第4行只不过是连接了&rest参数“值”。我尝试了(连接“string”“(值列表值)”)
,但这似乎不起作用(SBCL)。有人能给我一个建议吗
原则上,它不会变得更好,除非您使用,但您可以使用库,它允许您使用Lisp编写HTML:
(defun html (&rest values)
(apply #'concatenate 'string values))
(defun hello-page ()
(with-html-output-to-string (string)
(:html (:head (:title "Hello, world!"))
(:body (:h3 "Hello, World!")
(:a :href "http://weitz.de/cl-who/"
"The CL-WHO library")))))
请注意,在我给出这个答案后,问题发生了变化。 (defun html (&rest values) (format nil "<html>~{~a~}</html>" values))