私はこれ(not (some #(= (:length %1) 0) %))
を事後条件として持っています。このように書くとかなり明確ですが、この条件が満たされない場合は次のようになります。
Assert failed: (not (some (fn* [p1__17852#] (= (:length p1__17852#) 0)) %))
これはあまり読めません。事後条件または前提条件のメッセージを定義する方法はありますか?
編集1:
noahlz と noisesmiths の提案に従います (ただし、外部の名前付き関数を使用します):
(defn not-zero-length
[evseq]
(not (some (fn [item] (= (:length item) 0)) evseq)))
(defn my-func
[evseq]
{:post [(not-zero-length %)]}
evseq)
(my-func '({:length 3}{:length 0}))
与えます:
AssertionError Assert failed: (not-zero-length %)
どちらがはるかに明確です。