相关疑难解决方法(0)

Clojure的协议功能可以像普通函数一样可变吗?

使用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)方法.官方不支持这个吗?我咨询过的消息来源是沉默的.

protocols clojure

11
推荐指数
2
解决办法
1589
查看次数

如何将Scheme列表分解为要传递给过程的args?

我想使用(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)

scheme max list-manipulation r5rs

4
推荐指数
1
解决办法
2585
查看次数

标签 统计

clojure ×1

list-manipulation ×1

max ×1

protocols ×1

r5rs ×1

scheme ×1