私はclojureで遊んでいて、mapcatとlistを組み合わせてこの動作をエミュレートする高階関数を作成することにしました。
Clojure> (mapcat list '(1 2 3 4) '(5 6 7 8))
(1 5 2 6 3 7 4 8)
私の最初の試みは、mapcatListを次のように定義することでした。
Clojure> (defn mapcatList[& more](mapcat list more))
#'sandbox99/mapcatList
Clojure> (mapcatList '(1 2 3 4) '(5 6 7 8))
((1 2 3 4) (5 6 7 8))
明らかに、関数は私が望むように動作しません。これは、2つのリストが1つのリストに入れられ、2つではなく1つの引数として渡されるためだと思います。私は次のようにして状況を改善することができました、
Clojure> (defn mapcatList[x y & more](mapcat list x y))
#'sandbox99/mapcatList
Clojure> (mapcatList '(1 2 3 4) '(5 6 7 8))
(1 5 2 6 3 7 4 8)
このソリューションは2つのリストでうまく機能しますが、関数が可変数の引数で機能するようにしたいと思います。
私の質問:可変数の引数を関数に渡してから、それらを分解して、個々の引数として一緒に「mapcatリスト」に渡されるようにするにはどうすればよいですか?