使用clojure函数,我可以定义:
(defn f [x & xs] (apply some-function x xs))
Run Code Online (Sandbox Code Playgroud)
我试图用协议做同样的事情,例如
(defprotocol foo
(bar [f])
(baz [f & gs]))
Run Code Online (Sandbox Code Playgroud)
这编译(至少在REPL中),但任何实现类型似乎都失败了(变量,baz)方法.官方不支持这个吗?我咨询过的消息来源是沉默的.
我想使用(max)带有list数字的预定义函数(R5RS),其长度不同.不幸的是,(max)接受这样的输入:
(max 2 43 5 6)
=> 43
Run Code Online (Sandbox Code Playgroud)
我试图像这样使用它:
(define lst '(3 5 53 4 53 54 32))
(max lst)
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误.
max: expects argument of type <real number>; given (3 5 53 4 53 54 32)
Run Code Online (Sandbox Code Playgroud)
我如何将这个列表分解为我需要的各个参数,因为我将它们传递给了(max)?