I believe your guess is right - this is a hack to work with older versions 
(pre 1.3) of Clojure where the reader didn't support ' as a constituent 
character in symbols.


On Friday, August 5, 2016 at 12:28:08 PM UTC-5, Shannon Severance wrote:
>
> Lines 57--62 of 
> https://github.com/clojure/math.numeric-tower/blob/master/src/main/clojure/clojure/math/numeric_tower.clj
>  
>
>
> ;; so this code works with both 1.2.x and 1.3.0:
> (def ^{:private true} minus (first [-' -]))
> (def ^{:private true} mult (first [*' *]))
> (def ^{:private true} plus (first [+' +]))
> (def ^{:private true} dec* (first [dec' dec]))
> (def ^{:private true} inc* (first [inc' inc]))
>
>
> I was wondering why (first [*' *]) is used instead of just *.
>
> My guess, but I do not know how to verify:
>
>    1. IIRC early versions of Clojure defaulted to auto-promotion 
>    arithmetic operators.
>    2. My guess the default was changed to not permote between 1.2.x and 
>    1.3.0.
>    3. Total guess, the 1.2.x reader treat the ' at the end of a symbol as 
>    being it's own thing and change to (quote ..)
>    4. So that in 1.2.x [*' *] would become [* (quote *)], and first would 
>    get *, and * auto promoted in 1.2.x. In 1.3.0 first gets the 
> auto-promotion 
>    version *'.
>
> But that a total guess. Why is this construction used?
>

-- 
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.

Reply via email to