Agreed - there are always tradeoffs. Another common example is that pretty well any language that uses IEEE floating point is also breaking referential transparency in the interest of pragmatism:
user=> (= 0.3 (+ 0.1 0.2)) false user=> (= (bigdec 0.3) (+ (bigdec 0.1) (bigdec 0.2))) true - Korny On 9 Feb 2014 01:00, "John Mastro" <john.b.mas...@gmail.com> wrote: > To add just one more thing to this: Referential transparency is clearly > valuable, but it's not the *only* valuable property a function or system > might > have. There are always tradeoffs to be made. Clojure has made different > tradeoffs than you expected, or would yourself have made, but that doesn't > /a priori/ mean they're wrong. > > - John > > John Mastro <john.b.mas...@gmail.com> wrote: > > Hi Andy, > > > > Andy C <andy.coolw...@gmail.com> wrote: > >> > >> > >>> user> (= s1 s2) > >>> true > >>> user> (= (seq s1) (seq s2)) > >>> false > >> > >> > >> Thx. If a=b then f(a) must = f(b). Something is broken here. > > > > If a seq is a sequential view of a thing, and a set is an unordered > thing, then > > it does not seem shocking to me that multiple sequential views of a > given set, > > with different orderings, are possible. > > > > This may not be the only way to do things; and it may not be the way > other > > languages do it; and it may not match your preference. But I think it's > clearly > > wrong to say that it's internally inconsistent or "broken". > > > > It's perhaps hard to say this without sounding condescending, but rather > than > > seeking to identify all the ways in which Clojure isn't Haskell, it > might be > > more useful to pursue an understanding of Clojure (including its > > definitely-not-nonexistent flaws!) on its own terms. > > > > - John > > -- > 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/groups/opt_out. > -- 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/groups/opt_out.