tworzy obiekt typu bare-bones, który implementuje protokół.
defrecord
tworzy niezmienną mapę trwałą, która implementuje protokół.
Który użyć zależy od tego, co chcesz. Czy chcesz mieć pełną strukturę danych ClojureScript? Następnie użyj rekordu. Czy chcesz po prostu czegoś, co nie ma nic wspólnego z protokołem? Następnie użyj typu.
Dwa fragmenty dokumentacji, do których odwołujesz się, są używane, ponieważ próbują zilustrować protokoły na najbardziej podstawowym poziomie, a typy mają mniej "akcji" niż zapisy, że tak powiem.
Jednak większość rzeczywistych zastosowań obiektów podobnych do obiektów w Clojure/ClojureScript musi przechowywać pola danych wraz z obiektem, i do tego należy zdecydowanie używać rekordu, z tego samego powodu należy użyć dowolnego z Niezmienne kolekcje Clojure.