2015-08-15 8 views

cevap

3

core.typed inanılmaz official website görebileceğiniz gibi, "Clojure için isteğe bağlı bir sistem" tanıttı. Özellikle

sen kendi defprotocol makro (from core.typed wiki) kullanmak isteyebilirsiniz:

Protokol tanımları kullanmalıdır clojure.core.typed/defprotocol olan sözdizimi defprotocol anımsatır ve daktilo fn:

(defprotocol IUnifyWithLVar 
    (unify-with-lvar [v u :- LVar s :- ISubstitutions] :- (U ISubstitutions Fail))) 

polimorfik protokol desteklenir:

(defprotocol [a b] Lens 
    (-fetch [l x :- a] :- b) 
    (-putback [l x :- a v :- b] :- a)) 

installed bir kez, ile leiningen üzerinden çalıştırın. Açıktaki olumsuz yön, kodunuza açıklama eklemeniz gerektiğidir. Statik tip kontrolü kullanarak kodunuzun güvenliğini artırmak için ödeme maliyeti budur.

satisfies? ve instance? işlevleriyle de ilgilenebilirsiniz.

+0

Bazı arabirimlerin veya protokollerin tam olarak uygulandığını doğrulayabilir mi? Sadece core.typed ile birlikte mi? – noisesmith

+0

Bunlar tamamen ayrı şeylerdir. 'core.typed' bir tip denetleyicidir, diğer ikisi de işlev görür ve çalışma zamanında çağrılmalıdır ('tatmin eder?' protokoller için yararlıdır, anı değil, ama tam olarak dahil ettim). Yine tamamen bağımsızlar. – nha

+0

Tamam, sormamın nedeni, bildiğim kadarıyla bu işlevlerin hiçbirinin belirli bir arabirim veya protokol yöntemi uygulayıp uygulamadığını size söylememektir. – noisesmith

İlgili konular