2014-06-28 14 views
21

Sadece Clojure'de yazdığım bir şeyi cljx'e dönüştürerek başlayan ClojureScript'i deniyorum. Online bazı eğik referanslar buluyorumKullanmak mümkün mü: refer: all in ClojureScript: gerektirir?

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

ama hiçbir yerde ben bir ClojureScript programında bir :refer :all kullanabilecektir gerekmediğini dile nereye: Ben derlemeye çalıştığınızda

alıyorum.

Bunu yapamazsam, bu kısıtlamanın nedeni nedir?

+1

@dsm Bu ClojureScript ve Clojure arasındaki farkları hakkında bir sorudur. Bu sadece bir Clojure soru gibi görünüyor. – interstar

+0

Yeterince adil. Yakın çekimi geri çektim – dsm

cevap

29

Hayır, kasıtlı olarak mümkün değildir. Son zamanlarda :refer :all ile ilgili ClojureScript posta listesinde bir conversation vardı ve asla desteklenmeyecek gibi görünüyor.

bu iş parçacığı David Nolen alıntı yapacak:

Sadece kötü tarzı ve bildiğim kadarıyla sadece Clojure değişmedi etmesinin sebebi olduğunu biliyoruz çekirdek takımı geriye koruyarak konuda çok sert olduğu için Mümkün olduğunda uyumluluk. Çıplak: göze çarpan eksiklik: ClojureScript'te kullanım kasıtlıdır.

+0

Birisi neden kötü bir stil olacağını açıklayabilir mi? Daha düşük seviyeli fonksiyonlar ile daha yüksek seviyeli dışa aktarılan fonksiyonlar arasında doğal bir bölünme görebilmeniz bile iki yerine bir büyük isim alanının olması tercih edilir mi? – user1011471

+2

Çıplak bir başka sorun: use veya 'refer: all', statik bir faz ayırması başlatmasıdır. Eğer yaparsanız (ns my-ns (: foo.bar başvurusu yapın: all)) şimdi, sonra foo.bar/baz'ı ekleyin, daha sonra my-ns içinde tanımlanmış bir baz ile çakışabilirsiniz. "All" kelimesinin kullanılması, isim alanındaki deklarasyonların kapalı listesini listeleyebilmeniz veya şaşırtıcı derecede karmaşık etkileşimli ve kısmi yeniden hesaplama davranışını riske atmanız anlamına gelir. Makrolarınız varsa bu özellikle sorunludur. –

İlgili konular