【发布时间】:2010-09-24 14:22:29
【问题描述】:
来自 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 中是否有类似的 pre/post 功能和/或更全面的 Design by Contract 库?
谢谢
【问题讨论】:
标签: clojure lisp common-lisp design-by-contract