Ah-hah! Clojure is a Lisp

173 views
Skip to first unread message

Tim Daly

unread,
Dec 19, 2010, 2:33:00 PM12/19/10
to clo...@googlegroups.com
There have been discussions, here and elsewhere, about
whether Clojure is a "Lisp". Lots of discussion centers
around facts like homoiconicity, or the REPL, or the
debate of Rich's redefinition of lisp primitives, etc.
These are arguments about the paint on the palace.

I have struggled with this question and I believe I found
the answer that satisfies me that Clojure is a Lisp. The
answer is that "getting Clojure" involves an "ah-hah!"
moment.

The most fundamental thing about "Lisp" is that there is
this universal but personal event when you suddenly
"get it". This does not seem to happen with other languages.
There is a distinct "before vs after" when you suddenly
internalize the language and IT changes YOU.

I recently felt that moment with Clojure.
Did anyone else experience the "ah-hah!"?

Tim Daly

Sean Corfield

unread,
Dec 19, 2010, 3:30:11 PM12/19/10
to clo...@googlegroups.com
On Sun, Dec 19, 2010 at 11:33 AM, Tim Daly <da...@axiom-developer.org> wrote:
> The most fundamental thing about "Lisp" is that there is
> this universal but personal event when you suddenly
> "get it". This does not seem to happen with other languages.

I think it's true to some extent with most languages - particularly
those that aren't mainstream (I'm working through Seven Languages
right now and I think Io and Prolog fit right into the category you
describe, and of course Clojure and Haskell because of their
functional nature). But I will say that "Lisp" languages seem to
'stick' more than other languages: once someone "gets it", they seem
to become a devoted "Lisper" for life... even if they use other
languages for their day job.

> I recently felt that moment with Clojure.
> Did anyone else experience the "ah-hah!"?

Not with Clojure, but probably with Lisp itself back in the early- /
mid-80's which is when I first started using it seriously. I found the
same with Prolog tho' (around the same time)...
--
Sean A Corfield -- (904) 302-SEAN
Railo Technologies, Inc. -- http://getrailo.com/
An Architect's View -- http://corfield.org/

"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood

javajosh

unread,
Dec 19, 2010, 6:41:46 PM12/19/10
to Clojure
Can you articulate it any better than "ah hah!"?

gaz jones

unread,
Dec 19, 2010, 6:47:49 PM12/19/10
to clo...@googlegroups.com
"sha-wing"? :D

> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@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+u...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en

Vagif Verdi

unread,
Dec 19, 2010, 7:31:47 PM12/19/10
to Clojure
Haskell has aha moments too. And it is not lisp.

The definition of "lisp" i accept is much simpler and much more
obvious: source code of the program is a valid data structure in that
language.

On Dec 19, 11:33 am, Tim Daly <d...@axiom-developer.org> wrote:

Raoul Duke

unread,
Dec 19, 2010, 7:35:33 PM12/19/10
to clo...@googlegroups.com
On Sun, Dec 19, 2010 at 4:31 PM, Vagif Verdi <vagif...@gmail.com> wrote:
> Haskell has aha moments too. And it is not lisp.

er, yeah, 2nd'd. totally. i mean, same for plenty of programming
languages. and certainly not the same thing for everybody. ah-hahs are
subjective. if i "get" lisp but never had an ah hah because it just
always made sense, or whatever, then is it not a lisp?

weird. :)

Ken Wesson

unread,
Dec 19, 2010, 7:47:36 PM12/19/10
to clo...@googlegroups.com
On Sun, Dec 19, 2010 at 7:31 PM, Vagif Verdi <vagif...@gmail.com> wrote:
> Haskell has aha moments too. And it is not lisp.
>
> The definition of "lisp" i accept is much simpler and much more
> obvious: source code of the program is a valid data  structure in that
> language.

Access to the parse tree. C source code is a valid string data
structure in C, but you can't really do that much with it without a
lot of parsing first.

Tim Daly

unread,
Dec 19, 2010, 7:52:21 PM12/19/10
to clo...@googlegroups.com

On 12/19/2010 6:41 PM, javajosh wrote:
> Can you articulate it any better than "ah hah!"?

The proper response is "moo".

But I think there is a point where you "get" concepts
like the distinction between values and identity which
are fundamental. Whatever the event, it feels like
whatever I write is best done in Clojure, which is the
"after-the-event" internal change. It no longer feels
like a struggle to learn the language but a thirst to
learn more, deeper, and better. A soulful addiction.

Unlike the dozens of other languages I have worked in
over my career, Lisp has been the one language that
truly changed the way I understood programming. Many
people have mentioned the "ah hah!" moment when
speaking about Lisp.

Tim Daly

Tim Daly

unread,
Dec 19, 2010, 8:02:42 PM12/19/10
to clo...@googlegroups.com

On 12/19/2010 7:31 PM, Vagif Verdi wrote:
> Haskell has aha moments too. And it is not lisp.
>
> The definition of "lisp" i accept is much simpler and much more
> obvious: source code of the program is a valid data structure in that
> language.

I agree that you can't BE a lisp without homoiconicity. However,
I was struggling with Clojure because it lacks nil-punning which
I consider fundamental. I have self-debated a lot of the choices
that Rich made. Now that I'm in "thirst for the language" mode
I understand that nil-punning conflicts with lazy so I can accept
the choice.

Haskell has neat ideas but I've seen them before in lisp-based
systems. I work in a language which is strongly typed, allows
currying, is functional, etc., implemented in Common Lisp. I have
not found the "ah-hah!" in Haskell.

In fact, until the "ah-hah!" moment occurred I didn't know that
it was my working definition of Lisp.

Tim Daly
"Your enlightment may vary" :-)

Tim Daly

unread,
Dec 19, 2010, 8:18:09 PM12/19/10
to clo...@googlegroups.com
I didn't mean to imply that other people
don't have the "ah-hah!" experience with
other languages. However, I have only had
the (before lisp)|(after lisp) experience
with lisp.

Your enlightenment might vary.

Rich gave his "Whitehead" talk and brought
up the fact that OO languages get several
things wrong. I watched that with a Java
programmer and he was not able to understand
the points Rich was making. He just saw it
in terms of "value" objects, "function" objects,
"identity" objects, and "state" objects. Sort of,
"I've got an object hammer so everything is an
object nail" approach.

Tim Daly

Ken Wesson

unread,
Dec 19, 2010, 8:20:26 PM12/19/10
to clo...@googlegroups.com
On Sun, Dec 19, 2010 at 8:18 PM, Tim Daly <da...@axiom-developer.org> wrote:
>  I didn't mean to imply that other people
> don't have the "ah-hah!" experience with
> other languages. However, I have only had
> the (before lisp)|(after lisp) experience
> with lisp.
>
> Your enlightenment might vary.
>
> Rich gave his "Whitehead" talk and brought
> up the fact that OO languages get several
> things wrong.

Out of curiosity, which "several things" were these?

Tim Daly

unread,
Dec 19, 2010, 8:25:46 PM12/19/10
to clo...@googlegroups.com

Eric Schulte

unread,
Dec 19, 2010, 8:33:05 PM12/19/10
to clo...@googlegroups.com
Tim Daly <da...@axiom-developer.org> writes:

>
> Haskell has neat ideas but I've seen them before in lisp-based
> systems. I work in a language which is strongly typed, allows
> currying, is functional, etc., implemented in Common Lisp. I have
> not found the "ah-hah!" in Haskell.
>

Sounds interesting, could you share a pointer to this language, or is it
not open?

Tim Daly

unread,
Dec 19, 2010, 9:09:07 PM12/19/10
to clo...@googlegroups.com

It is the algebra language in the Axiom project called Spad.
http://axiom-developer.org
It is open source

Ken Wesson

unread,
Dec 19, 2010, 9:24:42 PM12/19/10
to clo...@googlegroups.com

"Please install Flash Player".

Has everyone on this list developed a sudden allergy to plain text and
HTML? First I get pointed to a 34-minute video, and now this. A simple
bulleted list with a brief precis about each item would have sufficed;
a multi-megabyte install of an executable and who knows how much
futzing around, overkill.

Sean Corfield

unread,
Dec 19, 2010, 9:35:20 PM12/19/10
to clo...@googlegroups.com
On Sun, Dec 19, 2010 at 6:24 PM, Ken Wesson <kwes...@gmail.com> wrote:
> Has everyone on this list developed a sudden allergy to plain text and
> HTML? First I get pointed to a 34-minute video, and now this. A simple
> bulleted list with a brief precis about each item would have sufficed;
> a multi-megabyte install of an executable and who knows how much
> futzing around, overkill.

I don't think people normally create a precis of other people's talks
- they just watch them. And this presentation is really good.
Definitely worth your effort...

Tim Daly

unread,
Dec 19, 2010, 9:42:52 PM12/19/10
to clo...@googlegroups.com

The points made by Rich in the video require context.
Besides, the only way I could make a bullet list would
be to listen to the video again. My memory is hopelessly
lossy.

Tim Daly

Ken Wesson

unread,
Dec 19, 2010, 10:21:06 PM12/19/10
to clo...@googlegroups.com

Exactly why text is preferable to video for stuff that can be
expressed in text. Your memory wouldn't matter -- you could link to
the text. And Google could search inside it.

Tim Daly

unread,
Dec 19, 2010, 10:33:37 PM12/19/10
to clo...@googlegroups.com

This video is not just a list of broken things. It goes to the
very philosophy behind the difference between values, identity,
and state. The bullet point you seek is:

* OO programs conflate value, state, and identity.

That is the essence but I'm not sure you'll understand it
without the video.

Tim Daly

Ken Wesson

unread,
Dec 19, 2010, 10:53:31 PM12/19/10
to clo...@googlegroups.com

Ah. So, like the confused situations you get with Java's mutable
collections. Two lists are equal if they have the same contents in the
same order -- but then you use one as a key in a hashmap, and then add
an item to it, and boom! Clojure separates this stuff out because the
Clojure vector's immutability makes its value stable given its
identity. Refs and atoms and agents can encapsulate mutable state, but
their identity (as defined by = and hash) is fixed rather than
changing with its state. And some objects (keywords and symbols) exist
to be almost pure identity, used to label other things.

Something like that?

Mike Meyer

unread,
Dec 19, 2010, 11:29:46 PM12/19/10
to clo...@googlegroups.com

Let me second that - especially since flash isn't available for my
normal mail platform, so the kludges required to run it make it even
flakier than what Jobs objects to, and tends to hose performance there
no end.

Yes, somethings may best be presented on video, but all to often
people try pass videos off as documentation (*). Even when video is
actually the best choice, the least you could do is post something in
an actual video format, and not as an executable for a poorly
documented, proprietary VM that has had more than one security issue
in the past.

<mike

* A video isn't documentation. I can leave documentation open to the
relevant page, and search it for the relevant phrases. A video may be
educational, but that doesn't make it documentation.
--
Mike Meyer <m...@mired.org> http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.

O< ascii ribbon campaign - stop html mail - www.asciiribbon.org

Tim Daly

unread,
Dec 20, 2010, 12:26:03 AM12/20/10
to clo...@googlegroups.com

> Ah. So, like the confused situations you get with Java's mutable
> collections. Two lists are equal if they have the same contents in the
> same order -- but then you use one as a key in a hashmap, and then add
> an item to it, and boom! Clojure separates this stuff out because the
> Clojure vector's immutability makes its value stable given its
> identity. Refs and atoms and agents can encapsulate mutable state, but
> their identity (as defined by = and hash) is fixed rather than
> changing with its state. And some objects (keywords and symbols) exist
> to be almost pure identity, used to label other things.
>
> Something like that?
>

Ummm. no. You're approaching the question in an OO mindset.
There is no path from that starting point to Rich's insight.

Rich spent the better part of an hour trying to explain the
insights that he got from what must certainly be months of
reading and thinking. I'm part way through the Whitehead
book he mentioned (and the other book is on-order). That's
some heavy reading he's been doing. I also downloaded the
primary paper on Multiversion Concurrency Control.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.103.5778&rep=rep1&type=pdf

And, no, I don't plan to summarize Whitehead or the MVCC paper :-)

@mike, Yes, a video isn't "documentation". But the MVCC paper
certainly is. Open source software doesn't seem to "do" documentation
(which annoys me also since I'm a literate programming fanatic).


Tim Daly

Laurent PETIT

unread,
Dec 20, 2010, 1:58:07 AM12/20/10
to clo...@googlegroups.com


2010/12/20 Tim Daly <da...@axiom-developer.org>

I disagree, it /is/ "something like that" :

in clojure parlance :

  * a value is an immutable object (and beyond that, also a /persistent/ datastructure for performance reasons). Clojure datastructures are the classical building blocks for creating values.
  * an identity is represented by a "ref" in clojure : an ref, an atom, an agent. An identity is an object representing "something" which can have different values at different points in time.
  * a "state" is a pair "identity/value" at some point in time.

Refs and atoms and agents can also be considered as values, and can be embedded in other refs. But then, the "value" you must consider is just their "identity", not their "changing over time" flux of values.

All of this is pretty much the same as for relational databases. Once you get the technical id of a table row, you've a stable pointer for the identity of a concept. The values of the concept may change over time, though.

And yes, languages which allow uncontrolled mutation of class instances fields generally will "conflate" those notions of identity and state, making it more difficult, for example, to write correct concurrent programs because it's much harder to work on a "consistent set" of the values of an object.

Anyway, Ken, this video really is worth watching when you have the time to.


 

Rich spent the better part of an hour trying to explain the
insights that he got from what must certainly be months of
reading and thinking. I'm part way through the Whitehead
book he mentioned (and the other book is on-order). That's
some heavy reading he's been doing. I also downloaded the
primary paper on Multiversion Concurrency Control.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.103.5778&rep=rep1&type=pdf

And, no, I don't plan to summarize Whitehead or the MVCC paper :-)

@mike, Yes, a video isn't "documentation". But the MVCC paper
certainly is. Open source software doesn't seem to "do" documentation
(which annoys me also since I'm a literate programming fanatic).


Tim Daly

Alex Osborne

unread,
Dec 20, 2010, 2:49:14 AM12/20/10
to clo...@googlegroups.com
Ken Wesson <kwes...@gmail.com> writes:

> Ah. So, like the confused situations you get with Java's mutable
> collections. Two lists are equal if they have the same contents in the
> same order -- but then you use one as a key in a hashmap, and then add
> an item to it, and boom! Clojure separates this stuff out because the
> Clojure vector's immutability makes its value stable given its
> identity. Refs and atoms and agents can encapsulate mutable state, but
> their identity (as defined by = and hash) is fixed rather than
> changing with its state.

Sort of. Identity (in the Clojure model) is not the same concept as
equality. Nor is it reference equality ("identical?"). The overloading
of terminology is somewhat unfortunate.

"By identity I mean a stable logical entity associated with a series
of different values over time." -- clojure.org/state

As Laurent mentioned the usual identities in Clojure are reference
objects: vars, atoms, refs and so on.

> And some objects (keywords and symbols) exist
> to be almost pure identity, used to label other things.

Symbols and keywords (and database IDs) aren't identities, they're
identifiers (names).

"Note that by identities I don't mean names (I call my mother Mom,
but you wouldn't)." -- clojure.org/state

An identifier can be resolved in some sort of context to obtain an
identity, but it is not itself that identity.

If you wrote a program with a data model like this:

(def people {"Alice" (ref {:age 25}), "Bob" (ref {:age 17})})

Then the various objects would be:

name: a string like "Alice"
context: the people map
identity: a ref
value: the {:age XX} maps

In the vars and global environment model we have:

name: a symbol
context: a namespace
identity: a var
value: a number, list, vector, fn, string etc

Meikel Brandmeyer

unread,
Dec 20, 2010, 3:46:26 AM12/20/10
to clo...@googlegroups.com
> Can you articulate it any better than "ah hah!"?

Heureka!

Alex Osborne

unread,
Dec 20, 2010, 4:10:56 AM12/20/10
to clo...@googlegroups.com
Ken Wesson <kwes...@gmail.com> writes:

>> * OO programs conflate value, state, and identity.
>

> Ah. So, like the confused situations you get with Java's mutable
> collections.

I just thought of a non programming language example which might help
explain what "state and identity conflation" means. The web (as
traditionally implemented) conflates state and identity.

For instance, suppose I give you this URL:

"http://www.infoq.com/about"

When you resolve that, you instantly get back a value: a particular
string of HTML. I can't give you a reference to a particular state of
that page. By the time you look at it, it could be completely different
to what I saw.

This flaw in the model of the web is one of the driving forces behind
projects like Memento [1] and WebCite [2].

Wikis on the other hand, typically separate state and identity. With a
wiki there's a distinction between an identity:

http://en.wikipedia.org/wiki/Clojure

and a state:

http://en.wikipedia.org/wiki/Clojure?oldid=396404196

I can give you a reference to each independently.

Unfortunately while wikis solve the problem, they do it in ad-hoc way.
There's no standard mechanism in the HTTP protocol to "deref" a wiki
page and get back the URL of its current state.

"OO typically unifies identity and state, i.e. an object (identity)
is a pointer to the memory that contains the value of its
state. There is no way to obtain the state independent of the
identity other than copying it." -- clojure.org/state

--
[1] http://www.mementoweb.org/about/
[2] http://www.webcitation.org/

Alex Baranosky

unread,
Dec 20, 2010, 8:35:24 AM12/20/10
to clo...@googlegroups.com
"You can't step into the same river twice."

In this quote the river is the identity. At any snapshot in time the river is a specific value.

Ken Wesson

unread,
Dec 20, 2010, 12:47:56 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 12:26 AM, Tim Daly <da...@axiom-developer.org> wrote:
> On 12/19/2010 10:53 PM, Ken Wesson wrote:
>> Ah. So, like the confused situations you get with Java's mutable
>> collections. Two lists are equal if they have the same contents in the
>> same order -- but then you use one as a key in a hashmap, and then add
>> an item to it, and boom! Clojure separates this stuff out because the
>> Clojure vector's immutability makes its value stable given its
>> identity. Refs and atoms and agents can encapsulate mutable state, but
>> their identity (as defined by = and hash) is fixed rather than
>> changing with its state. And some objects (keywords and symbols) exist
>> to be almost pure identity, used to label other things.
>>
>> Something like that?
>
> Ummm. no. You're approaching the question in an OO mindset.

Excuse me? How rude. In the future if you'd like to offer a criticism
of my mindset you can do it off-list!

> Rich spent the better part of an hour trying to explain the
> insights that he got from what must certainly be months of
> reading and thinking.

I don't have the better part of an hour, let alone months. If you'd
like to effectively convey what you have been trying to convey to
various people in this thread, please find some way to condense it. If
a single bullet point doesn't suffice to convey it that is hardly my
fault. You may have erred too far the other way, condensing it too
much. Surely there is a middle ground?

> @mike, Yes, a video isn't "documentation". But the MVCC paper
> certainly is. Open source software doesn't seem to "do" documentation
> (which annoys me also since I'm a literate programming fanatic).

For the most part this project's documentation has been pretty good --
the api page, the other clojure.org and clojure.github.com pages, etc.

But some of this underlying-philosophy stuff still seems to be locked
up in videos and presentations in disparate places, invisible to
Google's search and not even all linked from one place (the closest to
"one place" being scattered posts to this list). And apparently these
are generally quite long. Videos have several disadvantages over text:

* Google can't see inside of them.
* You cannot search inside of them.
* Tools for bookmarking specific places inside of them are primitive.
* You can't read at your own pace, nor skim at all.
* Videos tend to mix the meaty information in with jokes, anecdotes,
people moving around, and other filler that takes up not only space
but time. Much of this wouldn't exist in text and what remained
could easily be skimmed or scrolled past by people in a hurry.
* Video is bandwidth-intensive. In particular, a talk on video is
a staggeringly inefficient use of bandwidth: the textual content,
besides being effectively hidden from google and control-F search,
takes the form of an audio track of several tens of megabytes in
which it is inevitably mixed with some amount of extraneous noise,
rather than being a few tens of KB of HTML or a few KB of plain
text; what could be a handful of few-KB-each jpegs (e.g. slides
presented) embedded in the text via <img> tags bloats up into a
multi-gigabyte video stream where each slide is partly obscured
by a talking head. Or perhaps only a couple of hundred megabytes,
accompanied by massive quality degradation. Line art slides become
blurs at those compression levels. Compare a jerky, stuttery,
expensive-if-you're-on-mobile, blurry image of mostly a talking
head with somewhat-indistinct and somewhat-noisy audio to a clean
page design with text and inline still images that conveys the
same information. And can be searched for text, etc.
* If animation is really necessary to convey some point, animated
gifs and, if you really must resort to it, Flash can be employed.

I'm not saying there isn't a place for videos, but they are not
*substitutes* for text and if they convey anything we should be
referring to commonly (and especially if we should sometimes be
referring to a small subset of the information in one, rather than the
whole thing at one time) there should be an HTML presentation (text
with perhaps inline images, perhaps some of them animated) of the core
content as well somewhere.

Right now the Clojure documentation-cloud seems to contain several of
these indigestible lumps masquerading as proper documentation. That
seems like it should be addressed; and the sooner the better. The
longer, the more of these non-text resources will accumulate and,
worse, the more users will be expected to be familiar with some
growing subset of their contents. In the worst case, it would require
the equivalent of a week-long training seminar to brush up on it all.
Right now Clojure has the great property that with a bit of
familiarity with Java and at least one Java IDE you can get started
hacking in it within minutes, and even do something useful within
hours. I'd hate to see that change or get bogged down in hundreds of
minutes and tens of gigabytes of video downloads. :)

Ken Wesson

unread,
Dec 20, 2010, 12:56:56 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 2:49 AM, Alex Osborne <a...@meshy.org> wrote:
> Ken Wesson <kwes...@gmail.com> writes:
>
>> Ah. So, like the confused situations you get with Java's mutable
>> collections. Two lists are equal if they have the same contents in the
>> same order -- but then you use one as a key in a hashmap, and then add
>> an item to it, and boom! Clojure separates this stuff out because the
>> Clojure vector's immutability makes its value stable given its
>> identity. Refs and atoms and agents can encapsulate mutable state, but
>> their identity (as defined by = and hash) is fixed rather than
>> changing with its state.
>
> Sort of.  Identity (in the Clojure model) is not the same concept as
> equality.  Nor is it reference equality ("identical?").  The overloading
> of terminology is somewhat unfortunate.
>
>    "By identity I mean a stable logical entity associated with a series
>     of different values over time." -- clojure.org/state
>
> As Laurent mentioned the usual identities in Clojure are reference
> objects: vars, atoms, refs and so on.
>
>> And some objects (keywords and symbols) exist
>> to be almost pure identity, used to label other things.
>
> Symbols and keywords (and database IDs) aren't identities, they're
> identifiers (names).

It seems you're using "identity" a little bit oddly here. In ordinary
usage, "identity" would indeed be close to synonymous with
"identifier"; the way you're using it here is actually closer to the
usual comp-sci concept of a "variable": a holder of mutable state,
which can be pointed to a succession of different individual states.

So part of this is a confusion arising from slightly odd or
idiosyncratic terminology.

Meikel Brandmeyer

unread,
Dec 20, 2010, 1:26:49 PM12/20/10
to clo...@googlegroups.com
Hi,

if you prefer text over talk:

http://clojure.googlegroups.com/web/AreWeThereYet.pdf

Sincerely
Meikel

Alyssa Kwan

unread,
Dec 20, 2010, 1:30:13 PM12/20/10
to Clojure
No, identifiers are names. Identity transcends names. For example,
in a distributed shared object system, multiple machines on the same
network will have different identifiers for the same identity.

"Ordinary usage" isn't good enough for metaphysical discussions.
There is a metaphysical discussion of identity which applies to this
situation, and Rich Hickey has taken a particular position. His
position is rigorous, internally consistent, and applicable to how
most people in our culture model the world, e.g. it can be used to
accomplish work by most of us. Most philosophical discussions of
identity really mean equality, at least in Hickey nomenclature.
> idiosyncratic terminology.- Hide quoted text -
>
> - Show quoted text -

Ken Wesson

unread,
Dec 20, 2010, 1:39:53 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 1:26 PM, Meikel Brandmeyer <m...@kotka.de> wrote:
> Hi,
>
> if you prefer text over talk:
>
> http://clojure.googlegroups.com/web/AreWeThereYet.pdf

*giggle*

It figures.

I ask for text instead of video so, naturally, I get a PDF link.

*falls over laughing*

Ken Wesson

unread,
Dec 20, 2010, 1:41:10 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 1:30 PM, Alyssa Kwan <alyssa...@gmail.com> wrote:
> No, identifiers are names.  Identity transcends names.  For example,
> in a distributed shared object system, multiple machines on the same
> network will have different identifiers for the same identity.
>
> "Ordinary usage" isn't good enough for metaphysical discussions.
> There is a metaphysical discussion of identity which applies to this
> situation, and Rich Hickey has taken a particular position.  His
> position is rigorous, internally consistent, and applicable to how
> most people in our culture model the world, e.g. it can be used to
> accomplish work by most of us.  Most philosophical discussions of
> identity really mean equality, at least in Hickey nomenclature.

Thanks for making my point for me: "identity" normally means something
other than what it means in "Hickey nomenclature". :)

Aaron Bedra

unread,
Dec 20, 2010, 1:42:34 PM12/20/10
to clo...@googlegroups.com
You have asked others not to reply to you in the same tone you are
taking here. This was a sincere effort to help. Please show a little
bit more respect.

Aaron
--
Clojure/core
http://clojure.com

Tim Robinson

unread,
Dec 20, 2010, 1:42:51 PM12/20/10
to Clojure
I think too many posters here are equating Clojure with Lisp.
Clojure is a LISP, but it is not LISP itself.

* Mutability is not a given in all LISP implementations, only some of
them.
* STM transactions (i.e. state and time management upon non-mutable
objects) is a Clojure concept, that no other LISP's have.

So I will suggest the OP is not having a LISP ah-ha moment, but rather
a Clojure ah-ha moment. Lisp does have it's ah-ha moments in other
regards as I am sure is the case with any other language when you move
from being able use the language for general programming to being able
to use the language abstractions & ideology to change how you approach
programs. It's not like programmers didn't have this when everyone
moved to OO languages in the first place - they too had an ah-ha I get
OO now.


On Dec 19, 6:25 pm, Tim Daly <d...@axiom-developer.org> wrote:

Ken Wesson

unread,
Dec 20, 2010, 1:47:47 PM12/20/10
to clo...@googlegroups.com

I'm sorry, but it's just hilarious the lengths some people apparently
go to to avoid plain text/html that you don't need a special browser
plugin and a multimegabyte download to view. All those video links and
then, when someone finally points to a textual summary for one of
them, it's a pdf! It's tragicomic. :)

Meikel Brandmeyer

unread,
Dec 20, 2010, 1:48:09 PM12/20/10
to clo...@googlegroups.com
Hi,

How rude. Searching in the PDF (yes, that works), one finds with ease the definition of all discussed terms like value, identity and state. All on one sheet. How much shorter do you want it? And gone is all ambiguity in the discussion.

Sincerely
Meikel

Ken Wesson

unread,
Dec 20, 2010, 1:50:05 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 1:48 PM, Meikel Brandmeyer <m...@kotka.de> wrote:
>>> http://clojure.googlegroups.com/web/AreWeThereYet.pdf
>>
>> *giggle*
>>
>> It figures.
>>
>> I ask for text instead of video so, naturally, I get a PDF link.
>>
>> *falls over laughing*
>
> How rude. Searching in the PDF (yes, that works), one finds with ease the definition of all discussed terms like value, identity and state. All on one sheet. How much shorter do you want it?

I'd like it to fit in under 10KB if at all possible. :) I sometimes
browse with mobile devices.

Aaron Bedra

unread,
Dec 20, 2010, 1:53:28 PM12/20/10
to clo...@googlegroups.com
If you think it is funny that's absolutely your opinion to keep. It has
no place or constructive worth on this mailing list. Please keep this
kind of response off the list.

Aaron

Alyssa Kwan

unread,
Dec 20, 2010, 1:57:05 PM12/20/10
to Clojure
What things "normally mean" has no place in computer science. You
have to embrace the jargon to be able to think rationally in the
space. This in no way detracts from this discussion.

When I say "Hickey nomenclature", I mean vis a vis classical
philosophy or Hegel. Lay nomenclature only muddies the water.

On Dec 20, 1:41 pm, Ken Wesson <kwess...@gmail.com> wrote:

Tim Robinson

unread,
Dec 20, 2010, 2:10:20 PM12/20/10
to Clojure
Hi Ken,

I'd like to nominate you on behalf of the Clojure community to convert
all non-text resources into text only resources. You officially have
my vote. I think your passion makes you the perfect candidate to do
this work. In the mean time I'd like to extend a thanks to all the
folks having taken the time producing these resources - they have
helped immensely.

Tim Daly

unread,
Dec 20, 2010, 2:55:07 PM12/20/10
to clo...@googlegroups.com

I am amazed that you find a link to a scholarly article inappropriate.
It is copyrighted material and cannot be converted to ascii for your use.
Don't read the pdf, print it.

It takes time to watch the videos and it takes time to read the papers.
It takes time to read Whitehead's book and the Spikes book. It takes
time to read the source code. There is no need to summarize these sources
in order to understand them since I have invested considerable time already.
The posted links to my primary source materials are for your convenience.

This is an open source project and, as such, it suggests that
"Advocacy is volunteering". If you advocate better documentation and
well-written summaries then.... volunteer to do it.

Tim Daly

Mike Meyer

unread,
Dec 20, 2010, 3:00:43 PM12/20/10
to clo...@googlegroups.com
On Mon, 20 Dec 2010 19:26:49 +0100
Meikel Brandmeyer <m...@kotka.de> wrote:

> Hi,
>
> if you prefer text over talk:
>
> http://clojure.googlegroups.com/web/AreWeThereYet.pdf

Thanks for the link.

To bad it made Tufte kill a kitten. I had forgotten there was a
textual representation with a lower information density per bit than
video.

But it does get the ideas across. It seems a lot of this could have
come from other applications I'm using these days, like mercurial
(with an immutable history) or zfs (with an immutable file system).

Thanks again,
<mike

Tim Daly

unread,
Dec 20, 2010, 3:10:33 PM12/20/10
to clo...@googlegroups.com

On 12/20/2010 1:42 PM, Tim Robinson wrote:
> I think too many posters here are equating Clojure with Lisp.
> Clojure is a LISP, but it is not LISP itself.

Since I've worked in a dozen "Lisps" (golden common, VMLisp, Lisp370,
Zetalisp, MacLisp, Lisp 1.5, Orien Lisp, etc.) I don't think I would
equate Clojure with Lisp. The question I was wrestling with was whether
Clojure IS a Lisp, as opposed to a domain-specific language for using
immutable Seq data structures over Java.

> * Mutability is not a given in all LISP implementations, only some of
> them.
> * STM transactions (i.e. state and time management upon non-mutable
> objects) is a Clojure concept, that no other LISP's have.
>
> So I will suggest the OP is not having a LISP ah-ha moment, but rather
> a Clojure ah-ha moment. Lisp does have it's ah-ha moments in other
> regards as I am sure is the case with any other language when you move
> from being able use the language for general programming to being able

> to use the language abstractions& ideology to change how you approach


> programs. It's not like programmers didn't have this when everyone
> moved to OO languages in the first place - they too had an ah-ha I get
> OO now.
>

You may be right that other people have the "ah-hah!" moment for
their particular language or concepts. My comment was that this
event is associated with Lisp and that it is different from "getting
the OO mindset" or "getting rule-based programming", etc. I was
"getting the STM and immutability concepts" but those were not
sufficient to establish (for me) "Lisp". Your enlightenment may vary.

Tim Daly


Laurent PETIT

unread,
Dec 20, 2010, 4:06:12 PM12/20/10
to clo...@googlegroups.com
I generally find it easier to get the "bigger picture" of something when I'm stepping a little bit back.
With programming languages, sometimes it can involve discovering language n+1 to give some new perspective on language n, and getting the "ah ah" moment with language n.

For example, it's hard to find books about the "philosophy" of object-oriented programming in Java. Books generally go to the details.
I had to go get some knowledge in Bertrand Meyer's books as well as see prototype-based object oriented programming in javascript (as opposed to class-based object oriented programming in java). Smalltak serves the purpose as well, putting the focus more on the object than the "class".

With lisp flavors, maybe it's because lisp is homoiconic you can "get" the language without going "outside it" ;-)

2010/12/20 Tim Daly <da...@axiom-developer.org>

Laurent PETIT

unread,
Dec 20, 2010, 4:10:04 PM12/20/10
to clo...@googlegroups.com


2010/12/20 Ken Wesson <kwes...@gmail.com>

On Mon, Dec 20, 2010 at 12:26 AM, Tim Daly <da...@axiom-developer.org> wrote:
> On 12/19/2010 10:53 PM, Ken Wesson wrote:
>> Ah. So, like the confused situations you get with Java's mutable
>> collections. Two lists are equal if they have the same contents in the
>> same order -- but then you use one as a key in a hashmap, and then add
>> an item to it, and boom! Clojure separates this stuff out because the
>> Clojure vector's immutability makes its value stable given its
>> identity. Refs and atoms and agents can encapsulate mutable state, but
>> their identity (as defined by = and hash) is fixed rather than
>> changing with its state. And some objects (keywords and symbols) exist
>> to be almost pure identity, used to label other things.
>>
>> Something like that?
>
> Ummm. no. You're approaching the question in an OO mindset.

Excuse me? How rude. In the future if you'd like to offer a criticism
of my mindset you can do it off-list!

> Rich spent the better part of an hour trying to explain the
> insights that he got from what must certainly be months of
> reading and thinking.

I don't have the better part of an hour, let alone months.

Ken, with all the respect which is due to you, if you're out of ideas to find some time reading the linked material, you could probably re-focus *some* of the time you spend sometimes debating (arguing) at lengths (lots of brower pages in my 1024x768 laptop) in this list to see/read/watch the material you're critical about.

And if you don't like videos or pdfs, you can certainly find a way to say so without being rude to the people which (still) take the time to answer you.

Cheers,

--
Laurent
 

Ken Wesson

unread,
Dec 20, 2010, 4:17:39 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 1:57 PM, Alyssa Kwan <alyssa...@gmail.com> wrote:
> What things "normally mean" has no place in computer science.  You
> have to embrace the jargon to be able to think rationally in the
> space.  This in no way detracts from this discussion.

I meant what things "normally mean" in computer science. :)

Maybe it's good if Hickey is able to rewrite the books on computer
science; but in the meantime we are left with some terminological
impedance mismatches between "Hickey nomenclature" and more typical
comp sci nomenclature. That's not a value judgment; it's just a
statement of fact.

Ken Wesson

unread,
Dec 20, 2010, 4:18:37 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 2:10 PM, Tim Robinson <tim.bl...@gmail.com> wrote:
> Hi Ken,
>
> I'd like to nominate you on behalf of the Clojure community to convert
> all non-text resources into text only resources.

Sorry, but I must decline; I simply don't have the time to do so. As I
already mentioned I don't even have the time to browse those non-text
resources right now.

Ken Wesson

unread,
Dec 20, 2010, 4:20:45 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 2:55 PM, Tim Daly <da...@axiom-developer.org> wrote:
> I am amazed that you find a link to a scholarly article inappropriate.

I didn't find the link inappropriate. No doubt the content is just peachy.

I did find the format problematic. I much prefer stuff I can simply
browse in my web browser as normal, without involving special plugins
or external applications and without the files themselves being
enormous, as videos and pdfs are wont to be.

Raoul Duke

unread,
Dec 20, 2010, 4:23:56 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 1:20 PM, Ken Wesson <kwes...@gmail.com> wrote:
> I did find the format problematic. I much prefer stuff I can simply
> browse in my web browser as normal, without involving special plugins
> or external applications and without the files themselves being
> enormous, as videos and pdfs are wont to be.

$0.02 for the most part i'm quite +N with Mr. Wesson. in case he's
feeling lonely.

Ken Wesson

unread,
Dec 20, 2010, 4:27:11 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 3:00 PM, Mike Meyer
<mwm-keyword-goo...@mired.org> wrote:
> On Mon, 20 Dec 2010 19:26:49 +0100
> Meikel Brandmeyer <m...@kotka.de> wrote:
>> http://clojure.googlegroups.com/web/AreWeThereYet.pdf
>
> Thanks for the link.
>
> To bad it made Tufte kill a kitten. I had forgotten there was a
> textual representation with a lower information density per bit than
> video.

Did you mean a higher information density per bit? The key concepts
can no doubt be conveyed in a few tens of KB of html and still images
-- under a megabyte, certainly. Compare that to the larger size of a
pdf, and the still larger size of video of any decent quality and
resolution. The information density is higher for the more compact
representation of the same key information; the rest is, in effect,
anti-compressed. It may add some side channel information that was
otherwise lack

Ken Wesson

unread,
Dec 20, 2010, 4:29:08 PM12/20/10
to clo...@googlegroups.com

Sorry, things are a little hectic around here right now.

> And if you don't like videos or pdfs, you can certainly find a way to say so
> without being rude to the people which (still) take the time to answer you.

I'm not trying to be rude. I just thought it hilarious that after I
specifically objected to videos partly on bandwidth grounds, partly on
have-to-use-a-proprietary-browser-plugin grounds, and etc., someone
suggested a pdf as a substitute. You have to admit that that IS kind
of funny. :)

Mike Meyer

unread,
Dec 20, 2010, 4:49:49 PM12/20/10
to clo...@googlegroups.com
On Mon, 20 Dec 2010 16:27:11 -0500
Ken Wesson <kwes...@gmail.com> wrote:

> On Mon, Dec 20, 2010 at 3:00 PM, Mike Meyer
> <mwm-keyword-goo...@mired.org> wrote:
> > On Mon, 20 Dec 2010 19:26:49 +0100
> > Meikel Brandmeyer <m...@kotka.de> wrote:
> >> http://clojure.googlegroups.com/web/AreWeThereYet.pdf
> >
> > Thanks for the link.
> >
> > To bad it made Tufte kill a kitten. I had forgotten there was a
> > textual representation with a lower information density per bit than
> > video.
>
> Did you mean a higher information density per bit?

No, I meant lower.

Message has been deleted

Ken Wesson

unread,
Dec 20, 2010, 8:23:59 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 4:49 PM, Mike Meyer

<mwm-keyword-goo...@mired.org> wrote:
> On Mon, 20 Dec 2010 16:27:11 -0500
> Ken Wesson <kwes...@gmail.com> wrote:
>
>> On Mon, Dec 20, 2010 at 3:00 PM, Mike Meyer
>> <mwm-keyword-goo...@mired.org> wrote:
>> > On Mon, 20 Dec 2010 19:26:49 +0100
>> > Meikel Brandmeyer <m...@kotka.de> wrote:
>> >> http://clojure.googlegroups.com/web/AreWeThereYet.pdf
>> >
>> > Thanks for the link.
>> >
>> > To bad it made Tufte kill a kitten. I had forgotten there was a
>> > textual representation with a lower information density per bit than
>> > video.
>>
>> Did you mean a higher information density per bit?
>
> No, I meant lower.

But I just explained how a bloated presentation of the same
information has a lower (useful) information density per bit than does
a textual one.

> O< ascii ribbon campaign - stop html mail - www.asciiribbon.org

This is a bit ironic in context. You appear to champion big clunky
video and pdf files in place of html+inline images documentation on
the web, but for email, the lighter the better? That seems a little
bit inconsistent to me. :)

Ken Wesson

unread,
Dec 20, 2010, 8:24:20 PM12/20/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 5:18 PM, Steve <stephen....@gmail.com> wrote:

> On Tuesday, December 21, 2010 4:47:56 AM UTC+11, Ken Wesson wrote:
>>
>> But some of this underlying-philosophy stuff still seems to be locked
>> up in videos and presentations in disparate places, invisible to
>> Google's search and not even all linked from one place (the closest to
>> "one place" being scattered posts to this list). And apparently these
>
> The short version is here: http://clojure.org/state

Thanks; I'll check it out.

javajosh

unread,
Dec 20, 2010, 10:39:07 PM12/20/10
to Clojure


On Dec 20, 10:53 am, Aaron Bedra <aaron.be...@gmail.com> wrote:
> On 12/20/10 1:47 PM, Ken Wesson wrote:
>
Agreed.

Ken Wesson

unread,
Dec 20, 2010, 11:23:38 PM12/20/10
to clo...@googlegroups.com

But that would leave people with the misleading impression that a pdf
file is an adequate choice, even when I'm on my mobile ...

Sean Corfield

unread,
Dec 21, 2010, 12:16:28 AM12/21/10
to clo...@googlegroups.com
On Mon, Dec 20, 2010 at 8:23 PM, Ken Wesson <kwes...@gmail.com> wrote:
> But that would leave people with the misleading impression that a pdf
> file is an adequate choice, even when I'm on my mobile ...

It's a perfectly adequate choice on my mobile... I read PDFs all the
time on my phone.

(sorry, I've been trying really hard not to respond to Ken's posts but
in the end I just couldn't help myself!)
--
Sean A Corfield -- (904) 302-SEAN
Railo Technologies, Inc. -- http://getrailo.com/
An Architect's View -- http://corfield.org/

"If you're not annoying somebody, you're not really alive."
-- Margaret Atwood

Ken Wesson

unread,
Dec 21, 2010, 12:31:51 AM12/21/10
to clo...@googlegroups.com
On Tue, Dec 21, 2010 at 12:16 AM, Sean Corfield <seanco...@gmail.com> wrote:
> On Mon, Dec 20, 2010 at 8:23 PM, Ken Wesson <kwes...@gmail.com> wrote:
>> But that would leave people with the misleading impression that a pdf
>> file is an adequate choice, even when I'm on my mobile ...
>
> It's a perfectly adequate choice on my mobile... I read PDFs all the
> time on my phone.

Well, that's interesting. But not all of us either have mobiles that
have pdf readers or have a mobile plan that won't have us in the
poorhouse if we download a multi-megabyte file on it. Not to mention,
some of us will be sitting there staring at a download progress that
crawls slowly over hours with files that size on our mobiles. And some
of us have just the kind of luck that would see the battery run out
just before the download would have finished. :)

Marko Koci?

unread,
Dec 21, 2010, 7:27:05 AM12/21/10
to clo...@googlegroups.com
You can use http://docs.google.com/viewer?url=http://url_to_pdf_or_doc_or_xls_or_something to see those documents converted to html. Works ok in most of the cases, even on my phone.

Sandeep

unread,
Dec 21, 2010, 6:31:05 AM12/21/10
to Clojure


On Dec 20, 7:09 am, Tim Daly <d...@axiom-developer.org> wrote:
> It is the algebra language in the Axiom project called Spad.http://axiom-developer.org
> It is open source

There is also Qi (http://www.lambdassociates.org/qilisp.htm). It is
now morphing into Shen (http://www.lambdassociates.org/Shen/
appeal.htm) with Clojure as a possible VM target - Javascript being
the #1 target VM.
Reply all
Reply to author
Forward
0 new messages