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