多くの場合、再帰関数でリストを作成したいのですが、正しい方法を見つけることができません。
たとえば(役に立たないが、私が見つけることができる最短)リストから要素を1つずつ取得し、最初のリストと同じ新しいリストを作成したい。
(defn f [x] (list
(first x)
(if (not= (rest x) '())
(f (rest x))
'()
)))
(f '(1 2 3))
私は手に入れたい
(1 2 3)
しかし、私は得る
(1 (2 (3 ())))
flattenは使いたくない。たとえば、この入力
(f '([1 1] [2 2] [3 3]))
flatten によって破壊されます。