Clojure のバックグラウンドを持つ私は、Clojure の事前/事後条件が契約による設計の基礎として提供される可能性を感じています。
;; sqr.clj
(defn sqr [n]
{:pre [(not= 0 n) (number? n)]
:post [(pos? %) (number? %)]}
(* n n))
(sqr 10)
;=> 100
(sqr 0)
; Assertion error
Common Lisp に同様の事前/事後機能や、実際に利用可能なより包括的な Design by Contract ライブラリはありますか?
ありがとうございました