2010-01-12 5 views
19

Gestern zog Rich den 'neuen' Zweig von Clojure in Meister. Wir nehmen jetzt die Schönheit an, die Deftype und Defrotocol ist. Natürlich bin ich, von Haskell kommend, sehr versucht, Typen zu definieren, wie ich es in Haskell tun würde, was eigentlich alles wäre, was einem Wegwerf-Tupel entsprach, aber ich glaube nicht, dass es in Clojure so funktioniert;). Im Common Mistakes-Thread für Clojure erwähnte ein Typ, dass das Überstrapazieren von Strukturen ein Fehler war, den er gemacht hatte, als er angefangen hatte und von OOP kam. Da Deftypen structs ähnlich zu sein scheinen, habe ich mich gefragt, ob das Gleiche hier gilt.Wann sollte ich den Deftype in Clojure verwenden?

Also, meine Frage ist: Wann ist es eine gute Zeit, DefType zu verwenden?

Antwort

13

Ein Bereich deftype glänzt ist die Leistung. Methoden von Protokollen sind sehr schnell auf einem Deftype. Auch deftype kann primitive Felder haben, also kein Boxen mehr, wenn Zahlen gequält werden ...

Ein weiterer Bereich könnte Java-Interoperation sein, da deftype Schnittstellen implementieren kann (und wenn AOT kompiliert wird) eine benannte Klasse.

Im Allgemeinen ist die Grundidee, Abstraktionen mit Protokollen zu definieren und diese mit deftype zu implementieren.

reiche Details seine Motivation hier: http://www.assembla.com/wiki/show/clojure/Datatypes

+0

So wäre es eine Art, wie Haskell sein, dass Protokolle wie typeclasses und Datentypen sind wie ... gut Datentypen. : p – Rayne

Verwandte Themen