我有一个函数可以查看其中两个对象,执行一些神秘的逻辑,然后返回其中一个或两个(作为序列)。
我有这些对象的序列[o1 o2 o3 o4 ...]
,我想返回处理它的结果,如下所示:
- 在 o1 和 o2 上调用神秘函数
- 保留
butlast
你目前所拥有的 - 取
last
上一个神秘函数的结果,并在其上调用神秘函数,然后 o3 - 保留
butlast
你目前所拥有的 - 取
last
上一个神秘函数的结果,并在其上调用神秘函数,o4 - 保留
butlast
你目前所拥有的 - 取
last
上一个神秘函数的结果,并在其上调用神秘函数,然后 oN - ……
这是我到目前为止所得到的:
; the % here is the input sequence
#(reduce update-algorithm [(first %)] (rest %))
(defn update-algorithm
[input-vector o2]
(apply conj (pop input-vector)
(mystery-function (peek input-vector) o2)))
写这个的惯用方式是什么?我不喜欢这看起来的样子。我认为这apply conj
有点难以阅读,[(first %)] (rest %)
第一行也是如此。