任意にネストされたデータ構造をトラバースするメカニズムが必要です。次に、すべてのノードに fn を適用し、各ポイントで fn が true を返したかどうかを確認します。
フラットな構造でこれを行うのは簡単です -
(walk (complement string?) #(every? true? %) [ 1 2 3 4])
ただし、ウォークはネストされたものでは機能しません-
(walk (complement string?) #(every? true? %) [ 1 2 3 [ "a" ]])
フォームの 1 つとしてマップを使用し、マップ内の各値にも fn を適用する必要があるため、flatten のみを使用しても機能しません。これが私が持つ構造です -
[ ["2012" [{:a 2} {:b 3}]] ["2013" [{:a 2} {:b 3}]] ]
上記をトラバースするだけの fn を簡単に記述して、各 val に fn を適用できます。しかし、トラバースのための一般的なメカニズムを書く方法はありますか?