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 clojurescript@googlegroups.com.
> Visit this group at http://groups.google.com/group/clojurescript.
>

-- 
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 clojurescript@googlegroups.com.
Visit this group at http://groups.google.com/group/clojurescript.

Reply via email to