入力の上でmapcat
オペレーションを繰り返し実行したいですか?例:mapcat lazilyを反復する方法
(->> input
(mapcat my-fn)
(mapcat my-fn)
(mapcat my-fn)
(...))
これを遅延させる方法はありますか?
私は
(->> input
(iterate #(mapcat my-fn %)))
を試してみましたしかし、それはフラットな構造を保持しません。
入力の上でmapcat
オペレーションを繰り返し実行したいですか?例:mapcat lazilyを反復する方法
(->> input
(mapcat my-fn)
(mapcat my-fn)
(mapcat my-fn)
(...))
これを遅延させる方法はありますか?
私は
(->> input
(iterate #(mapcat my-fn %)))
を試してみましたしかし、それはフラットな構造を保持しません。
私たちは数字のリストのリストを逆にして、単一のリストを生成するためにそれらにいくつかの数学をやりたい不自然な例作られた:reduce関数は、リストの最初のリストから始まる
user> (def my-funs [reverse #(map inc %)])
#'user/my-funs
user> (reduce (fn [answer-so-far next-function]
(mapcat next-function answer-so-far))
[[[1 1 1] [2 2 2] [3 3 3]]
[[2 2 2] [3 3 3] [4 4 4]]]
my-funs)
(4 4 4 3 3 3 2 2 2 5 5 5 4 4 4 3 3 3)
をそのリストのリストに最初の関数を適用してこれまでの回答を生成した後、2番目の関数を取り、これを回答に適用して次の回答を生成します。より多くの機能について考えるなら、これを何度でもやり直すことができます。
私は、コードを見るほうがはるかに魅力的ではないと考えています。
希望の入力/出力の例を示していることはできますか? –
@AlanThompson作業後にサンプル入力を作成します。ありがとう。 –