この問題にはさまざまな形があります。たとえば、入力 '(1 2 3 4 5 6) が与えられた場合、偶数ペアと奇数ペアの間で値を交換したい場合があります。出力は '(2 1 4 3 6 5) になります。
Haskell では、これはかなり簡単です。
helper [] = []
helper [x] = [x]
helper (x : y : ys) = y : x : helper ys
同じタスクを達成するためにいくつかの Clojure コードを書きましたが、おそらくもっとクリーンな方法があると思います。これを改善する方法について何か提案はありますか?
(defn helper [[x y & ys]]
(cond
(nil? x) (list)
(nil? y) (list x)
:else (lazy-seq (cons y (cons x (helper ys))))))
理想的には、リストは遅延して消費および生成されます。ありがとう。