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.
Bazı arabirimlerin veya protokollerin tam olarak uygulandığını doğrulayabilir mi? Sadece core.typed ile birlikte mi? – noisesmith
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
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