シンプルなコードを抽象化してループ/マップ/構造体にする方法がわかりません。clojure:ループを使ってものをベクトルに正しく渡しますか?
(let
[recipe [1 1 2]
voicing [0 2 4]
counts (range (count voicing))
scale C]
(map vector
(make-scale recipe voicing scale 0)
(make-scale recipe voicing scale 1)
(make-scale recipe voicing scale 2)
)
出力は次のとおりです:私は基本的に「(マップのベクトルARG1のARG2を使用してい
([:C :E :G] [:D :F :B] [:E :A :C] [:G :B :D] [:A :C :F] [:B :E :G] [:D :F :A])
私はそれが私が欲しいの出力を与えるという意味で、動作する次のコードを持っています...) "3 seqsをインターリーブするための呼び出し。
明らかに、make-scaleへの重複呼び出しを削除する最後のステップを行う必要があります。問題は、私は必要、次のとおりです。
(map vector arg1 arg2 arg2)
と私は私の配列のループの結果を出すループを使用する方法を知っているすべての方法:
(map vector (arg1 arg2 arg3))
intialをリファクタリングするための最良の方法です何私はmake-scaleへの単一の関数呼び出ししか持たないようにします。
が、これは、私が行方不明になったまさにです、どうもありがとうございました:これは
concat
は、リストの無限のリストに適用されているにもかかわらず、正常に動作します。 –@PaulSanwald待って、ちょうど始まった!私はClojureの 'apply'をlooove :) –
ええ、答えは今でも良いです:)。私が理解していなかった別のことは、あなたが議論を前に置くことができるということでした。 –