Live data from Hacker News

Ooh Ooh My Turn Why Lisp? (2008)

smuglispweeny.blogspot.com

1–10 of 160 posts

Re: Ooh Ooh My Turn Why Lisp? (2008)

#4
It's a nice perspective. Very practical and down to earth. There is another side though, and that is that learning to think of code as data is extremely empowering and translates well when working with a fairly large set of other languages (Perl, Python, Ruby, and now even Java). Learning Lisp turns you into a better programmer.

Re: Ooh Ooh My Turn Why Lisp? (2008)

#5

> object identity for everything but numbers and characters Since when is this supposed to be a selling point? Not having compound values (not the same thing as compound objects!) is a pain.

You seem to be very confused. This is referring to #'eq (which is why #'eql exists). What lack of compound values are you lamenting? Lisp has built in classes, structs, arrays, lists, and maps. What is missing?

> An implementation is permitted to make ``copies'' of characters and numbers at any time. The effect is that Common Lisp makes no guarantee that eq is true even when both its arguments are ``the same thing'' if that thing is a character or number.

http://www.lispworks.com/documentation/HyperSpec/Body/f_eq.h...

Re: Ooh Ooh My Turn Why Lisp? (2008)

#6
post #5

> object identity for everything but numbers and characters Since when is this supposed to be a selling point? Not having compound values (not the same thing as compound objects!) is a pain.

You seem to be very confused. This is referring to #'eq (which is why #'eql exists). What lack of compound values are you lamenting? Lisp has built in classes, structs, arrays, lists, and maps. What is missing? > An implementation is permitted to make ``copies'' of characters and numbers at any time. The effect is that Common Lisp makes no guarantee that eq is true even when both its arguments are ``the same thing''…

> Lisp has built in classes

Objects aren't compound values. Objects are compound, well, objects. And pointers to objects are primitive, indivisible values - not compound!

> lists

Racket and ML have lists. Lisp has mutable linked data structures, built out of `cons` cells, whose value at any given point in time may be a list. But the value itself isn't first-class, because you can only bind the identity of the cons cell to a variable.

Re: Ooh Ooh My Turn Why Lisp? (2008)

#7
post #5

Earlier quoted context omitted.

You seem to be very confused. This is referring to #'eq (which is why #'eql exists). What lack of compound values are you lamenting? Lisp has built in classes, structs, arrays, lists, and maps. What is missing? > An implementation is permitted to make ``copies'' of characters and numbers at any time. The effect is that Common Lisp makes no guarantee that eq is true even when both its arguments are ``the same thing''…

> Lisp has built in classes Objects aren't compound values. Objects are compound, well, objects . And pointers to objects are primitive, indivisible values - not compound! > lists Racket and ML have lists. Lisp has mutable linked data structures, built out of `cons` cells, whose value at any given point in time may be a list. But the value itself isn't first-class, because you can only bind the identity of the cons c…

Contiguous memory structs: http://www.lispworks.com/documentation/HyperSpec/Body/m_defs...

Contiguous memory vectors (multi-dimensional arrays, too!): http://www.lispworks.com/documentation/HyperSpec/Body/t_smp_...

Native hash tables: http://www.lispworks.com/documentation/HyperSpec/Body/f_mk_h...

Re: Ooh Ooh My Turn Why Lisp? (2008)

#8
post #7

Earlier quoted context omitted.

> Lisp has built in classes Objects aren't compound values. Objects are compound, well, objects . And pointers to objects are primitive, indivisible values - not compound! > lists Racket and ML have lists. Lisp has mutable linked data structures, built out of `cons` cells, whose value at any given point in time may be a list. But the value itself isn't first-class, because you can only bind the identity of the cons c…

Contiguous memory structs: http://www.lispworks.com/documentation/HyperSpec/Body/m_defs... Contiguous memory vectors (multi-dimensional arrays, too!): http://www.lispworks.com/documentation/HyperSpec/Body/t_smp_... Native hash tables: http://www.lispworks.com/documentation/HyperSpec/Body/f_mk_h...

> Contiguous memory

I wasn't talking about the memory representation of anything. A first-class value is something that a variable may denote. In ML, if the variable `xs` denotes the list `[1,2,3]` within a given environment, it will always do so. In Lisp, I can mutate the cons cells out of which `(list 1 2 3)` is built, so what is actually bound to the variable is the object identity of the first `cons` cell. Not a list value!

Re: Ooh Ooh My Turn Why Lisp? (2008)

#10
post #7

Earlier quoted context omitted.

Contiguous memory structs: http://www.lispworks.com/documentation/HyperSpec/Body/m_defs... Contiguous memory vectors (multi-dimensional arrays, too!): http://www.lispworks.com/documentation/HyperSpec/Body/t_smp_... Native hash tables: http://www.lispworks.com/documentation/HyperSpec/Body/f_mk_h...

> Contiguous memory I wasn't talking about the memory representation of anything. A first-class value is something that a variable may denote. In ML, if the variable `xs` denotes the list `[1,2,3]` within a given environment, it will always do so. In Lisp, I can mutate the cons cells out of which `(list 1 2 3)` is built, so what is actually bound to the variable is the object identity of the first `cons` cell. Not a…

Oh. You have a strange way of phrasing your critiques, but you're right, it's all in IO/IORef.
Post reply on HN