Just noticed that I sent my previous email to clojure-dev only – reposting to all groups involved:
On 13 April 2015 at 16:25, Michał Marczyk <michal.marc...@gmail.com> wrote: > On 13 April 2015 at 15:48, Alex Miller <a...@puredanger.com> wrote: > To get the effect you want in this, using #_ *inside* the reader conditional would work: > > #?(:cljs #_(def unrelated-1 nil)) > > Actually this doesn't work because of the cond-like structure of #? conditionals: > > user=> (read-string {:read-cond :allow} "#?(:clj #_foo) bar") > RuntimeException read-cond requires an even number of forms. clojure.lang.Util.runtimeException (Util.java:221) To this I would add that it is possible to say Clojure 1.7.0-beta1 user=> (read-string {:read-cond :allow} "#?(#_#_:clj foo) bar") bar taking advantage of the nice "stacking" property of #_ (which follows from the recursive nature of the reader in the same way that the original surprising case does). Cheers, Michał On 13 April 2015 at 21:38, whodidthis <ton...@gmail.com> wrote: > > > On Monday, April 13, 2015 at 4:48:28 PM UTC+3, Alex Miller wrote: >> >> I think what you're seeing here makes sense. >> >> On Sunday, April 12, 2015 at 3:39:15 PM UTC-5, whodidthis wrote: >>> >>> Are there any thoughts on code like this: >>> >>> #_ >>> >> >> This says to ignore the next read form.... >> >> >>> #?(:cljs (def unrelated-1 nil)) >>> >> >> This evaluates to *nothing*, ie nothing is read, so it is not ignored by >> the #_. >> >> >>> #?(:cljs (def unrelated-2 nil)) >>> #?(:cljs (def unrelated-3 nil)) >>> >> >> These also read as *nothing*. >> >> >>> #?(:clj (def n 10)) >>> >> >> This *is* read, but ignored per the prior #_ >> >> #?(:clj (defn num [] n)) >>> ; compile on clj =>RuntimeException: Unable to resolve symbol: n >>> >> >> And then this makes sense. >> >> >>> >>> I guess it's fine if it continues to work that way but I can imagine it >>> being a little surprising from time to time heh >>> >> >> Conditional reading is definitely something to be careful about - I think >> in this case you are combining two types of conditional reading so be >> doubly careful. :) >> >> To get the effect you want in this, using #_ *inside* the reader >> conditional would work: >> >> #?(:cljs #_(def unrelated-1 nil)) >> > > Sorry, back to this stuff again. I tried using discard inside but > > #?(:clj #_'whatever) > > just throws > > CompilerException java.lang.RuntimeException: read-cond starting on line > 32 requires an even number of forms" > > when compiling on clojure. > > Would be nice to have a way to ignore reader conditional forms or the > thingie things inside but there does not seem to be an easy way. > > -- > Note that posts from new members are moderated - please be patient with > your first post. > --- > You received this message because you are subscribed to the Google Groups > "ClojureScript" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojurescript+unsubscr...@googlegroups.com. > To post to this group, send email to clojurescr...@googlegroups.com. > Visit this group at http://groups.google.com/group/clojurescript. > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.