これらのオブジェクトのうちの 2 つを見て、いくつかのミステリー ロジックを実行し、それらのいずれかまたは両方を (シーケンスとして) 返す関数があります。
これらのオブジェクトのシーケンスがあり、次の[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 %)
。最初の行も同様です。