0
は、私が持っていることができcore.spec次:私が持っているしたいのですが、サブの仕様を外部化することにより、冗長性を除去するものであるシーケンススペックをネストする方法は? Clojureの持つ
(s/conform (s/cat :a even? :b (s/* odd?) :a2 even? :b2 (s/* odd?)) [2 3 5 12 13 15])
=> {:a 2, :b [3 5], :a2 12, :b2 [13 15]}
:
(s/def ::even-followed-by-odds
(s/cat :a even? :b (s/* odd?)))
しかし
(s/conform (s/tuple ::even-followed-by-odds ::even-followed-by-odds) [2 3 5 12 13 15])
=> :clojure.spec/invalid
これは動作します:
(s/conform (s/tuple ::even-followed-by-odds ::even-followed-by-odds) [[2 3 5] [12 13 15]])
=> [{:a 2, :b [3 5]} {:a 12, :b [13 15]}]
それでは、私が探していることは関数やマクロである(アンネスト例えば)それを動作させることになる。
(s/conform (s/tuple (unnest ::even-followed-by-odds) (unnest ::even-followed-by-odds)) [2 3 5 12 13 15])
=> [{:a 2, :b [3 5]} {:a 12, :b [13 15]}]
は、どのように私はそれを得ることができますか?
大きな感謝。 – Lambder