On Wed, Jul 18, 2018, 2:40 PM Gregg Reynolds <d...@mobileink.com> wrote:
> > > On Wed, Jul 18, 2018, 2:25 PM Robert Levy <r.p.l...@gmail.com> wrote: > >> > Of course you have to "evaluate" to know that, but you also have to >> evaluate "2" in the same way to know what it means. >> >> I think you're missing the point. >> > > I think maybe we're talking about different things. > > 2 is literal because you read it, eval it, print it, and 2 (the result of >> evaluation) as printed is the same as the original input. A function is >> read, eval'd, printed and is *not* the same as what was read in. E.g {:a >> +} => {:a #function[clojure.core/+]} >> > > Same meaning? > I.e. alpha conversion. Just a rewrite, not an eval? > >> Literals can be persisted to strings and read back in with no problem, >> whereas non-literals can't. >> > > That's a different definition of "literal", no? James talked about > evaluation, not printed form. Value != Print representation? > >> >> On Wed, Jul 18, 2018 at 12:19 PM Gregg Reynolds <d...@mobileink.com> >> wrote: >> >>> >>> >>> On Wed, Jul 18, 2018, 1:55 PM James Reeves <ja...@booleanknot.com> >>> wrote: >>> >>>> On Wed, 18 Jul 2018 at 19:38, Gregg Reynolds <d...@mobileink.com> wrote: >>>> >>>>> >>>>> On Tue, Jul 17, 2018, 4:11 PM James Reeves <ja...@booleanknot.com> >>>>> wrote: >>>>> >>>>>> >>>>>> A data literal evaluates to itself. So for example, `2` is a >>>>>> literal, because we only need to read it to know its value, whereas `(+ >>>>>> 1 1)` isn't a literal, because we also need to evaluate it to work >>>>>> out the value. >>>>>> >>>>> >>>>> Fair enough. But by that definition function expressions are also >>>>> literals. >>>>> >>>> >>>> Not at all: >>>> >>>> user=> (defn literal? [s] (let [e (read-string s)] (= e (eval e)))) >>>> #'user/literal? >>>> user=> (literal? "2") >>>> true >>>> user=> (literal? "(fn [x] x)") >>>> false >>>> user=> (literal? "#(%)") >>>> false >>>> user=> (literal? "+") >>>> false >>>> >>>> Function expressions don't evaluate to themselves. >>>> >>> >>> To me that means either the definition is wrong or your literal? is >>> rigged. Probably the latter; "literal" is meta, it can't be in the language. >>> >>> Look at it this way: the meaning ("value") of "lambda x.x+1" is just the >>> function that increments its arg. Of course you have to "evaluate" to know >>> that, but you also have to evaluate "2" in the same way to know what it >>> means. Meaning "reduce", and neither form can be further reduced. >>> >>> Anyway my point is that clojure, like lisp, is a form of the lambda >>> calculus, where everything is a function, even the Nats like 2. To me at >>> least that is one of the most important lessons of functional programming. >>> Ymmv. >>> >>> -- >>> 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. >>> >> -- >> 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. >> > -- 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.