2014-06-28 12 views
21

Sto solo provando ClojureScript, iniziando convertendo qualcosa in Cljx che ho scritto in Clojure.È possibile utilizzare: consultare: tutto in un ClojureScript: richiede?

Quando provo a compilare ottengo:

clojure.lang.ExceptionInfo: :refer must be followed by a sequence of symbols in :require 

mi sto trovando alcuni riferimenti obliqui on-line, ma in nessun luogo dove è precisato se dovrei essere in grado di utilizzare un :refer :all in un programma ClojureScript.

Se non riesco a farlo, qual è il motivo di questa restrizione?

+1

@dsm Questa è una domanda su ClojureScript e le sue differenze rispetto a Clojure. Sembra solo una domanda Clojure. – interstar

+0

Abbastanza giusto. Ho ritirato il mio voto ravvicinato – dsm

risposta

29

No, non è intenzionalmente possibile. C'era un conversation sulla mailing list ClojureScript recentemente correlata a :refer :all e sembra che non sarà mai supportato.

Per citare David Nolen da quel filo:

E 'solo un cattivo stile e per quanto so che l'unica ragione per cui non è cambiato in Clojure è perché il core team è molto risoluto circa preservare all'indietro compatibilità quando possibile. La vistosa mancanza di di naked: l'uso in ClojureScript è stato intenzionale.

+0

Qualcuno può spiegare perché sarebbe uno stile negativo? È preferibile avere un grande spazio per i nomi anziché due, anche se è possibile vedere una divisione naturale tra le funzioni di livello inferiore e le funzioni esportate di livello superiore? – user1011471

+2

Un altro problema con naked: use or 'refer: all' è che introduce una separazione di fase statica. Se fai '(ns my-ns (: require foo.bar refer: all))" ora, quindi aggiungi foo.bar/baz in seguito, potresti entrare in conflitto con un baz già definito in my-ns. Usare "tutti" significa che devi essere in grado di enumerare l'elenco chiuso di dichiarazioni nello spazio dei nomi o rischiare comportamenti di ricompilazione interattivi e parziali estremamente confusionari. Questo è particolarmente problematico se hai macro. –

Problemi correlati