Xuất thân từ một nền tảng về Clojure, tôi chụp với tiềm năng mà trước/sau điều kiện của nó cung cấp là cơ sở để thiết kế theo hợp đồng:Thiết kế theo (các) hợp đồng liên kết cho Lisp thông thường?
;; sqr.clj
(defn sqr [n]
{:pre [(not= 0 n) (number? n)]
:post [(pos? %) (number? %)]}
(* n n))
(sqr 10)
;=> 100
(sqr 0)
; Assertion error
Có một khả năng tương tự trước/sau trong Common Lisp và/hoặc một thiết kế toàn diện hơn bởi Thư viện hợp đồng có sẵn trong tự nhiên?
Cảm ơn bạn
Đây chính là thư viện mà tôi đang tìm kiếm. Cảm ơn bạn. – fogus