land of lisp

On Oct 28, 12:59 am, Lawrence D'Oliveiro wrote:
> In message
> <3fe80ac4-b595-4bcb-96b9-9138b1ec5...@l17g2000yqe.googlegroups.com>,
> TheFlyingDutchman wrote:
> > On Oct 27, 4:55 pm, Lawrence D'Oliveiro
> > wrote:
> >> Would it be right to say that the only Lisp still in common use is the
> >> Elisp built into Emacs?
> > There is a new version of Lisp called Clojure that runs on the Java
> > Virtual Machine (JVM) that is on the upswing.
> Now is not exactly a good time to build new systems crucially dependent on
> the continuing good health of Java though, is it?

java's been receiving shit in recent years... Sun went belly up, Apple bans it, Oracle sues... but one thing to note that it is currently the most popular lang, or top 3, among C, C++. And java is certainly better than these 2. Sad to know, but java, along with its jvm, is likely to be with us for a while.

btw, interesting to know that the landoflisp site mentioned Common Lisp, Scheme lisp, clojure, arc lisp, and emacs lisp in the vid too, but didn't newLisp or Qi lisp.

here's my fav part of the comics

Conrad is certainly a fervent lisp lover. ( as is Peter Seibel http://www.gigamonkeys.com/book/ ) Conrad is also a comics artist. The landoflisp is going all over on twitter yesterday and apparantly many already ordered it. Hope he does very well.




apple and google are monopoly

On Oct 25, 9:23 am, Raffael Cavallaro wrote:
> On 2010-10-25 11:51:28 -0400, Tamas K Papp said:
> > what the regulators
> > look at is not whether you have market power, but whether you are
> > abusing it, and you don't need to be a monopoly for that.  So if Apple
> > gets nasty, the mere existence of other alternatives may not be enough
> > for them to get away with it.
> There is some speculation that this has already happened; Adobe filed a
> complaint with both the US DOJ and the European Competition Commission,
> and once these bodies began investigations, Apple relented and allowed
> non-apple developer tools and languages for the iOS. We don't know if
> this was direct cause and effect, but it is quite possible that the
> ongoing investigations into abuses of market power caused Apple to
> change its behavior.

this quip been going around later: «Welcome to 2010: Java is a restricted platform; Google is evil; Apple is a monopoly; and Microsoft is the underdog.» (who first said it?)

to recap:

in the 1970s: Unix is the monopoly.

in the 1980s: IBM is the monopoly.

in the 1990s: Microsoft is the monopoly.

in the 2000s: Google is the monopoly.

in the 2010s: Apple is the monopoly.

i lol.

• 〈The Microsoft Hatred FAQ〉



what's a good js/dom reference?

what's a good js/dom reference?

i know ms one
but that's jscript specific.

the gecko one
seems to me a wiki limbo.

the other is w3school

are there better ones?



Apple is deprecating Java!


On Oct 21, 2:17 pm, Arne Vajhøj wrote:
> > possibly is goes to being more like Windows:
> > people use the Sun/Oracle implementation, rather than a native version
> > provided by the OS vendor.
> Could be.
> If Oracle wants to.
> Technically it would not be a big problem given that OpenJDK
> BSD port builds on MacOS X!
> But that does not guarantee that the business case will be
> good.
> > MS essentially killed off their own Java implementation as well, and no one
> > noticed.
> A lot of people noticed when applets stopped working
> on a newly installed Windows.
> And it was not voluntarily.
> So not that good an analogy.

and remember when java started, Sun pitches it to be the revolution of
the web, where, every webpage will be dynamic with java applet. So in
late 1990s, huge amount of toy applets showed up, but since dot com bubble,
these just waned, Flash and js took over. Sun did a bunch of idiotic
things like started to have some java web start, a bunch of scripting
langs in java like groovy n beenshell stuff , javaFX (another jargon
shit), but tooo little tooo late. n what's that java markup lang? ah
JSP. I used it in 2000. incredibly idiotic.

Java pretty much moved very early to server market. Originally it is intended to be a lang for embedded devices... is it much used there?

actually am too out of touch here. The only thing i know is that Google use it heavily for their entire web apps. Who uses java besides Google? and for what? I can just remember Steve Jobs saying “Nobody uses Java anymore”. and That was in 2007.

Xah ∑ http://xahlee.org/ ☄


my comp lang experiences

On Oct 20, 5:30 am, Marc Mientki wrote:
> Am 20.10.2010 14:07, schrieb Xah Lee:
> > On Oct 20, 4:52 am, Marc Mientki  wrote:
> >> Am 20.10.2010 13:14, schrieb Xah Lee:
> >>> See also:
> >>> • 〈The Importance of Terminology's Quality In Computer Languages〉
> >>> http://xahlee.org/UnixResource_dir/writ/naming_functions.html
> >>> where i gave some examples of the naming.
> >>     "I'd like to introduce a blog post by Stephen Wolfram, on the design
> >> process of Mathematica. In particular, he touches on the importance of
> >> naming of functions."
> >>     "The functions in Mathematica, are usually very well-named, in
> >> contrast to most other computing languages."
> >>     "Let me give a few example. [...]"
> > thanks for your post. didn' t know you also use Mathematica.
> Not anymore, unfortunately. New job = no Mathematica. I tried with
> Maxima, but it is considered syntactically Middle Ages. Terribly
> confused (vectors, arrays, matrix, lists, sets - maxima does not know
> the motto of "list for everything").
> >> It is much easier to improve something good than to invent from scratch.
> >> When Lisp was born, Stephen Wolfram was still wearing diapers.
> >> For your information: Mathematica was my first Lisp-like language. I
> >> used it about 10 years almost every day and I love it because of the
> >> beauty of the concept. But Mathematica has two serious problems: first,
> >> there is only one implementation and it is commercial, and secondly,
> >> Mathematica is very, very slowly and does not generate executable code
> >> that can be used without Mathematica itself. Thus, comparisons to other
> >> languages, such as Lisp are not fair.
> > you are right... thought these aspects don't have much to do with
> > function naming.
> Yes. I have it written because I see that you like to call Mathematica
> as a counter-example, in many cases.
> > i tend to think that Mathematica is that way due to a unique mind,
> > Stephen Wolfram. And if i may say, i share much mindset with him with
> > respect to many lang design issues.
> Yes, me too, alone but for performance reasons, Mathematica in the area
> where I work (image processing) is not suitable. I mean - not research
> or rapid prototyping, but industrial image processing.
> > (or rather, Mathematica was my
> > first lang for about 6 years too)
> Mathematica = first language at all? No FORTRAN/BASIC/Pascal/C?

yeah. actually the first lang is HP-28s calculator.

• 〈HP-28S Advanced Scientific Calculator〉

• 〈Xah Lee's Computing Experience Bio〉

in short summary, counting only real serious involvement, say, few hours a day:

• 1991 to 1994, HP-28s.
• ~1992 to 1998. Mathematica
• 1996 to now. html (and later years related css, xml )
• 1998 to 2004. Perl, sql, apache, bash, whole unix admin shebang.
• 2001, 2005. Java.
• 2005 to 2006 Python.
• 2005 to 2007 PHP (css and some javascript).
• 2006 to now. emacs lisp.

what's your experiences?

Xah ∑ http://xahlee.org/ ☄

mathematica function naming

On Oct 20, 4:52 am, Marc Mientki wrote:
> Am 20.10.2010 13:14, schrieb Xah Lee:
> > See also:
> > • 〈The Importance of Terminology's Quality In Computer Languages〉
> > http://xahlee.org/UnixResource_dir/writ/naming_functions.html
> > where i gave some examples of the naming.
>    "I'd like to introduce a blog post by Stephen Wolfram, on the design
> process of Mathematica. In particular, he touches on the importance of
> naming of functions."
>    "The functions in Mathematica, are usually very well-named, in
> contrast to most other computing languages."
>    "Let me give a few example. [...]"

thanks for your post. didn' t know you also use Mathematica.

on the aspect of function naming, i think Mathematica is rather unique in its philosophy. Am not aware any other lang old or new follows a similar philosophy... possibly except javascript.

> It is much easier to improve something good than to invent from scratch.
> When Lisp was born, Stephen Wolfram was still wearing diapers.
> For your information: Mathematica was my first Lisp-like language. I
> used it about 10 years almost every day and I love it because of the
> beauty of the concept. But Mathematica has two serious problems: first,
> there is only one implementation and it is commercial, and secondly,
> Mathematica is very, very slowly and does not generate executable code
> that can be used without Mathematica itself. Thus, comparisons to other
> languages, such as Lisp are not fair.

you are right... thought these aspects don't have much to do with function naming.

i tend to think that Mathematica is that way due to a unique mind, Stephen Wolfram. And if i may say, i share much mindset with him with respect to many lang design issues. (or rather, Mathematica was my first lang for about 6 years too) But i think rather, Mathematica's lang design philosophy more has to do with certain pure mathematician mindset. This is somewhat similar to how haskell is a lang designed such that it is much independent of any concept of hardware. Same here with Mathematica, but on the naming aspect, Mathematica's function names is designed without even much relation to comp sci lingoes, but rather, the essense of ideas captured in a mathematical way.

Xah ∑ http://xahlee.org/ ☄


the use of honorific second person pronoun in chinese (nin 您)

the use of honorific second person pronoun in chinese (nin 您)


when i went back to taiwan in 2004, while in the airplane, the chinese guy on the seat besides me (a very well educated young man, prob aged around 20, and seems to be in taiwan airforce to be a jet fighter pilot or something, affluent), addressed me as nin. And it is the first time i got addressed that in my life (but i haven't been in taiwan since i left in 1982 or so at age 14) I was rather pissed. I'm now old! (was only 36 at the time)

also, in my 14 years in taiwan, nobody calls taiwan “baodao”, except we are taught the propaganda that foreigners (the dutchs) appreciate and find taiwan so beeeutiful that they give it the name baodao. Also, it is used in travel brochures for foreigners. We just called it taiwan. (and at the time, while KMT was ruling, we are taught that when in international mail, we should use R.O.C. (Republic of China) instead (because for like 50 years, the big China continent is supposed to not exist, according to USAers and KMT and even UN). (but now the taiwan politics changed and the issue is more fucked up; nobody knows what we “should” call taiwan anymore))

Victor wrote: «During the classless decades after the founding of the PRC, nin2 was discouraged, perhaps even outlawed»

lol. the “perhaps even outlawed” should perhaps be dropped. What a propaganda.

i agree that i don't like nin, or any sort of honorific title. But y'know? it's part of the asian culture. you bow down to elders and ancestors. I think it's worse in Japan and their language. One negative perspective of this outcome is one bag of superficial shit and fakeness.


unicode, quotation issues

On Oct 18, 3:03 am, Marc Mientki wrote:
> Am 18.10.2010 11:59, schrieb Xah Lee:
> > On Oct 18, 2:34 am, Marc Mientki  wrote:
> >> One question: why contain your pages always this junk? (red marked):
> >>    http://img256.imageshack.us/img256/7618/xahleehtmljunk.jpg
> >> regards
> >> Marc
> > ug. what browser + OS are you using?
> Firefox 3.6.10 on windows XP + SP3.
> > those are unicode 「」
> Is there need for unicode for such trivial things like {[]}?

short story is no but am a unicode geek :)

long story is... i need a way to quote code... the corner bracket was choosen because it's standard chinese punctuation thus almost all computer today bought in the past 5 years can display it, and because it's different than ascii so it avoids ambiguity and complications. e.g. when the quoted text also contains the char that you use for quoting....

thanks for your info. I'll think about removing them...

the other thing is that those markers are very useful when you think about info processing and automation. e.g. in the future i can trivially write a script list all inline code i have on my site, or to htmlize/css all quoted code. e.g.

• 〈Unix Shell Text Processing Tutorial (grep, cat, awk, sort, uniq)〉

in that page, does the char show up correctly? The chars are not in the html text, but is added by CSS due to markup. And the code are all colored red.

PS: the most popular example of studious use of quoting in a tech doc is emacs manual or any manual from FSF. e.g.

• 〈Constant-Variables〉

but however, they use ascii hack of the 1970s, e.g. like `this' and ``this''.

Xah ∑ http://xahlee.org/ ☄

emacs irc client

Kenneth Tilton writes:
> Plus a question: best IRC Client for Ubuntu?

Pascal J. Bourguignon wrote:
> Of course, it all depends on the definition of 'best', but for a
> lisp programmer, which on a newsgroup like cll, it is the assumed
> context, only an emacs irc client can be the best, since it allows you
> to interact on irc with the lowest overhead and context switch cost.

actually, emacs rcirc consumes more resource than a dedicate GUI
one the Colloquy. This was my experienc from about 2005 to 2008 on mac os x
10.4. But also, emacs rcirc just flatly lost out on so many features when compared to Colloquy.

i haven't used irc for like 3 years, but here's what i recall:

• emacs one doesn't auto connect when there's network disruption (very common with wireless)

• emacs rcirc does not notify you if someone mentions your name. (you have to install some external mac growler extra, but even still, it sucks.)

some of these can be fixed but that usually means you spend few hours to dig lisp code and result is usually not satisfactory. There's also erc...

... quite few others. The only thing i like is that it's integrated. That i can easily swicch to any buffer and do copy/paste or call any lisp function such as insert date, link, or use my existing abbrevs and unicode insertion etc.

Xah ∑ http://xahlee.org/ ☄


list comprehension considered harmful


On Sep 28, 12:07 pm, namekuseijin wrote:
> On 28 set, 14:56, Xah Lee wrote:
> > ultimately, all lang gets transformed at the compiler level to become
> > machine instructions, which is imperative programing in the ultimate
> > sense.
> > You say that “do” is merely macro and ultimately function application.
> > But to what level should we go down this chain on how the language
> > actually works when evaluating a function in source code?
> > any functional lang, quickly becomes imperative when compiled to some
> > intermediate code or interpreted. In a sense, it can't be any other
> > way. Functions are abstract mathematical ideas, while “do” loop or any
> > instruction are actual steps of algorithms.
> That is true as of Mathematica too.  Difference being that do in
> scheme is pretty-much user-level syntax.  If you look in most (good)
> implementations sources, do and let are defined in scheme itself, not
> C or lower-level:  C code only deals with transforming lambda
> application and tail calls into proper gotos.
> So, as far as we're talking about scheme, haskell or Mathematica code,
> it's all functional in its abstraction context.
> do syntax does allow for imperative commands to be issued in scheme,
> just like let.  It does not mean it was used in said examples nor that
> do is automatically inherently imperative just because of choice of
> name.  imperative do -> (do (steppers ...) (final-condition? result)
> malign-imperative-code-here ...)
> so, now that we got it clear why do in scheme is not (inherently)
> imperative why were you bashing useful (at times) functional syntax in
> the form of list comprehensions again?

le's get precise. The argument i want to make, is this:

• “list comprehension” is a very bad jargon; thus harmful to functional programing or programing in general. Being a bad jargon, it encourage mis-communication, mis-understanding.

• “list comprehension” is a redundant concept in programing. The concept is of historical interest. e.g. when people talk about the history of computer languages. The LC can simply be filter(map(func, list), predicate).

• The special syntax of “list comprehension” as it exists in many langs, are not necessary. It can simply be a plain function, e.g LC(function, list, filter).

I gave a stand-alone explanation of these points at:

Do you disagree or agree with the above?

This is the point _I_ want to argue about, but you don't seem to admit any part of it, but you seems to want to discuss about “do” in Scheme lisp being functional.

So, perhaps we can now focus on this subject:

The “do” in Scheme lisp is not imperative, or, it can be considered as functional.

Alright. To be honest, i haven't had enough experience to comment on, but in general, i understand the example you've given, and i disagree.

Full report on your argument on this is given at:

Now, in your message (quoted above), you made further argument on this. I think the main point is this, quote:

«do syntax does allow for imperative commands to be issued in scheme,
just like let. It does not mean it was used in said examples nor that
do is automatically inherently imperative just because of choice of
name. imperative do -> (do (steppers ...) (final-condition? result)
malign-imperative-code-here ...)»

i don't think your argument is forceful enough.

It appears that by this argument you even say that “let” is not functional.

Here, the issue verges on what is functional? What is a function? If a function in lisp is defined as macro, does it ceases to be considered as a function? Likewise, if a lisp's has “for” loop that is defined as a macro, is that “for” now considered a function?

this is getting quite iffy. What level or aspect are we considering? In each lang, usually they define certain terms specifically to the lang, and to various degree of precision. For eample, the term “object” means very different things in a technical way in different langs. Same for the word “function”, “keyword”, “command”, “module”, “package” ...

So, overall, i consider your argument for “do” in Scheme lisp being functional is weak, or trivial. It seems to be a pet peeve. You got annoyed because i seem to have ignored it entirely. But i got annoyed by you because you don't get the point about what i consider more significant opinion on “list comprehension”, which you totally ignored and kept at hacking the “do” in Scheme lisp.

Xah ∑ xahlee.org ☄

list comprehension the jargon

On Sep 29, 11:02 am, namekuseijin wrote:
> On 28 set, 19:38, Xah Lee wrote:
> > • “list comprehension” is a very bad jargon; thus harmful to
> > functional programing or programing in general. Being a bad jargon, it
> > encourage mis-communication, mis-understanding.
> I disagree:  it is a quite intuitive term to describe what the
> expression does.

what's your basis in saying that “list comprehension” is intuitive?

any statics, survery, research, references you have to cite?

to put this in context, are you saying that lambda, is also intuitive? “let” is intuitive? “for” is intuitive? “when” is intuitive? I mean, give your evaluation of some common computer language termilogies, and tell us which you think are good and which are bad, so we have some context to judge your claim.

For example, let us know, in your view, how good are terms: currying, lisp1 lisp2, tail recursion, closure, subroutine, command, object. Or, perhaps expound on the comparative merits and meaning on the terms module vs package vs add-on vs library. I would like to see your view on this with at least few paragraphs of analysis on each. If you, say, write a essay that's at least 1k words on this topic, then we all can make some judgement of your familiarity and understanding in this area.

Also, “being intuitive” is not the only aspect to consider whether a term is good or bad. For example, emacs's uses the term “frame”. It's quite intuitive, because frame is a common english word, everyone understands. You know, door frame, window frame, picture frame, are all analogous to emacs's “frame” on a computer. However, by some turn of history, in computer software we call such as “window” now, and by happance the term “window” also has a technical meaning in emacs, what we call “split window” or “pane” today. So, in emacs, the term “frame” and “window” is confusing, because emacs's “frame” is what we call “window”, while emacs's “window” is what me might call a pane of a split window. So here, is a example, that even when a term is intuitive, it can still be bad.

as another example, common understanding by the target group the term is to be used is also a important aspect. For example, the term “lambda”, which is a name of greek char, does not convey well what we use it for. The word's meaning by itself has no connection to the concept of function. The char happens to be used by a logician as a shorthand notation in his study of what's called “lambda calculus” (the “calculus” part is basically 1700's terminology for a systematic science, especially related to mechanical reasoning). However, the term “lambda” used in this way in computer science and programing has been long and wide, around 50 years in recent history (and more back if we trace origins). So, because of established use, here it may decrease the level of what we might think of it as a bad jargon, by the fact that it already become a standard usage or understanding. Even still, note that just because a term has establish use, if the term itself is very bad in many other aspects, it may still warrant a need for change. For one example of a reason, the argon will be a learning curve problem for all new generations.

You see, when you judge a terminology, you have to consider many aspects. It is quite involved. When judging a jargon, some question you might ask are:

• does the jargon convey its meaning by the word itself? (i.e. whether the jargon as a word is effective in communication)

• how long has been the jargon in use?

• do people in the community understand the jargon? (e.g. what percentage)

each of these sample questions can get quite involved. For example, it calls for expertise in linguistics (many sub-fields are relevant: pragmatics, history of language, etymology), practical experience in the field (programing or computer science), educational expertise (e.g. educators, professors, programing book authors/teachers), scientific survey, social science of communication...

also, you may not know, there are bodies of professional scientists who work on terminologies for publication. It is not something like “O think it's good, becus it is intuitive to me.”.

I wrote about 14 essays on various jargons in past decade. You can find them on my site.

i removed your arguments on other parts about “list comprehension”, because i didn't find them valuable. (barely read them) However, i appreciate your inputs on the “do” in Scheme lisp has a functional usage, and some other misc chat info from the beginning of this thread on comp.lang.lisp.

Xah ∑ xahlee.org ☄

list comprehension


On Sep 24, 12:44 pm, namekuseijin wrote:
> On 22 set, 18:57, Xah Lee wrote:
> > gossip, Guy Steel, Lojban, Racket
> We know the man is made of steel, but it's actually "Steele"... :)
> > ----------
> > A classic piece of mockery of Guido by Schemers
> > • 〈The Fate of Lambda in Python 3000 and Scheme v300〉http://xahlee.org/comp/the_fate_of_lambda.html
> This is really old news, but in the case of Krishnamurthi's april
> fool's reply in the form of mockery of the alleged mockery by Guido:
> "We think dropping FILTER and MAP is pretty uncontroversial; (filter P
> S) is almost always written clearer as a DO loop (plus the LAMBDA is
> slower than the loop). Even more so for (map F S). In all cases,
> writing the equivalent imperative program is clearly beneficial."
> it just doesn't follow even as mockery, because of 3 things:
> 1) it assumes list comprehensions in python are imperative programming
> 2) it assumes do loops in scheme are imperative programming
> 3) it assumes do in scheme is the equivalent of list comprehensions in
> python

remember, a mockery does not mean it has to mirror every sentence with some consistent logic.

of course your are trolling, but your list above is questionable to me.

> 1) it assumes list comprehensions in python are imperative programming

i'd go as far to say that “list comprehension” in every lang is imperative programing.

for some explanation of “list comprehension” and several examples in different langs, see:

the python example is given as:

S = [2*x for x in range(101) if x**2 > 3]

(see also:
• 〈Perl-Python Tutorial: List Comprehension〉

you see, one characteristic of functional programing lang is that the lang has lots of single-purpose functions, and the user is supposed to sequence or combine them for max power and flexibility.

lisp comprehension is a fucking anomaly in this regards.
i dunno which fucking idiot invented it. (those expert with its history, please post)

from looking at the Wikipedia examples, you can see that typically it invents a new syntax. A better way and more in sync with functional lang spirit, is simply have this instead:

listGenFunction(1, 20),

or in Mathematica:

Select[Range@20, # > 3 &]^2

in Mathematica FullForm notation, the above is:

Greater[ Slot[1],3] ]

(formatted in a way so lispers can understand)

in my style of coding, the above is typically written like this:

(#*2 &) @ (Select[#,# > 3 &]&) @ Range@20

See also: • 〈A Example of Mathematica Notation and List Processing〉

> 2) it assumes do loops in scheme are imperative programming

Of course it is. Look at the big picture. “Do loop” in any lang is arguably imperative.

> Schemers are a pretty desunited group.  Many in the Racket group don't
> go along with other implementors, like the guy who proposed for a
> previous RNRS the DO macro as a shortcut for a named let.  DO is no
> more of a imperative artifact than a named LET because it is a named
> let, which in turn is just a function call with more conveniently
> placed bindings.  But thanks to lame politics, it's got bad rap.
> Plus, Guido wasn't mocking, he was being pragmatic and many of his
> points were valid points, like the fact that tail-recursion makes for
> lame debugging.

From a few articles i read of Guido, it's pretty clear to everyone he does not have sufficient experience in functional programing to criticize it.

basically, his article on wanting to chop lambda pretty much just says “i don't grok functional notations, i prefer syntax that contain hints telling me what it does”.

> Lisp guys should hear most complaints and fix whatever perceived bad
> lisp lisp got.  Reducing parenthesis usage

yes but not by special case syntaxes. Either stick with the existing 99% regular paren syntax, or create a sysematic M-expression transformation, such as Mathematica.

> and reducing long abstract
> names of functions like "call-with-current-continuation" or "sqlite-
> query/effect-set" would be a beginning (and renaming such aberrations
> in an import was a welcome addition of R6RS), as would be providing
> automatic function dispatch on type of arguments so we could get far
> shorter function names thanks to function overloading -- make-
> datatypefoo, length-datatypefoo, read-datatypefoo is not really
> acceptable anymore in this day and age... why not simply (length foo),
> (read foo) etc?
> Also, something C headers just beats all languages out there:
> function prototypes.  You read them, you know what types get in and
> what types get out.  You open a Scheme R6RS lib and you see a name in
> the export list, then you need to dig for it in the source to figure
> out the parameters and try to guess what it does by peeking at the
> code... java is another stinker which decided to get rid of function
> prototypes, but at least it provides plenty of automatic IDE tools to
> do the digging for you and report the prototypes right in your nose...

Scheme lisp disappointed me very much. I don't think i'll have anything to do with Scheme again in my life, and i don't think it'll go anywhere by a iota. Maybe the Racket with the name change will go somewhere, but i think in a blink of eye i'd hop onto Clojure, newLISP, OCaml, F#, Ruby, Q/Pure, Erlang, Haskell, then i'd touch Scheme again. Currently, the ones i really want to have some serious working knowledge is OCaml/F#, for my math, theorem proving, geometry visualization, related tasks...

• 〈Language, Purity, Cult, and Deception〉

plain text version follows.
Language, Purity, Cult, and Deception

Xah Lee, 2009-01-24

[this essay is roughly a 10 years personal retrospect of some languages, in particular Scheme and Haskell.]

I learned far more Ocaml in the past 2 days than the fucking 2 months i tried to learn Haskell, with 10 years of “I WANT TO BELIEVE” in haskell.

The Haskell's problem is similar to Scheme lisp, being academic and of little industrial involvement. About 10 years ago, during the dot com era around 1999, where scripting war was going on (Perl, tcl, Applescript, Userland Frontier, with in the corner Python, Ruby, Icon, Scheme, in the air of Java, HTML 3, CSS, CGI, javascript), i was sold a lie by Scheme lisp. Scheme, has a aura of elegance and minimalism that's one hundred miles in radius. I have always been a advocate of functional programing, with a heart for formal methods. Scheme, being a academic functional lang, has such a association. At the time, Open Source and Linux have just arrived on the scene in uproars, along with Apache & Perl. The Larry Wall scumbag and Eric Raymond fuckface and Linus T moron and Richard Stallman often appear in interviews in mainstream media. Richard Stallman's FSF with its GNU, is quick to make sure he's not forgotten, by a campaign on naming of Linux to GNU/Linux. FSF announced that Scheme is its chosen scripting lang for GNU system. Plans and visions of Guile — the new Scheme implementation, is that due to Scheme Lisp's power will have lang conversion abilities on the fly so programers can code in any lang anywhere in the GNU OS — like today's Microsoft “.NET”. Around that time, i also wholeheartedly subscribed to some A Brave Gnu World bulletin of FSF with high expectations.

Now, it's 2009. Ten years have passed. Guile disappeared into oblivion. Scheme is tail recursing in some unknown desert. PHP, one of the ugly kludge pidgin, practically and quietly surpassed the huckstered Perl in early 2000s to become the top 5 languages. (remember? Larry Wall scumbag said P is for “Practical”. PHP's got two “P”s.) Python has surfaced to became a mainstream. Ruby is the new hipster on the block. Where is Scheme? O, you can still hear these idiots continuationing tail recursions among themselves in newsgroups. Tail recursion! Tail recursion! And their standard the R6RS in 2007, by their own consensus, is one fucked up shit.

In 2000, i was a fair expert of unix technologies. Sys admin to several data center's solaris boxes each costing 40 grands. Master of Mathematica and Perl but don't know much about any other lang or langs in general. Today, i am a expert of about 5 languages and working experience with tens or so diverse ones. There is nothing in Scheme i'd consider elegant, not remotely, even if we only consider R4RS.

Scheme, like other langs with a cult, sold me a lie that lasted 10 years. Similarly, Haskell fucked me with a lure of “no assignment”. You can try to learn the lang for years and all you'll learn is that there's something called currying and monad.

In 2005, i spent a year to learn Python. Perl is known for its intentional egregious lies, lead by the demagogue Larry Wall. It fell apart unable to sustain its “post-modernistic” sophistry. To me, Python have always seemed a antidote to Perl, until you walked in. You learned that the community is also culty, and is into certain grand visions on beauty & elegance with its increasingly complex syntax soup with backward incompatible python 3.0. The python fuckheads sport the air of “computer science R us”, but their intelligence is about the same level of Perl monger idiots. (Schemers and Haskell book authors at least know what they are talking about. They are just ignorant outside of academia.)

I think my story can teach tech geekers something. In my experience, the langs that are truely a joy to learn and use, are those sans a cult. Mathematica, javascript, PHP, are all extremely a joy to use. Anything you want to do or learn how to do, in so far that the lang is suitable, can be done quickly. Their docs are to the point. And today i have to include Ocaml. It's not about whether the lang is functional, or whether the lang is elegant, or what theoretical advantage it has. Also, lang of strong academic background such as Scheme and Haskell are likely to stay forever there, regardless what is the technical nature of the lang. The background of the community, makes half what the language is.

The above is not a terrible insight, but i suppose it should be useful for some application. Today, there's huge number of languages, each screaming ME! To name a few that are bubbled up by tech geekers: Arc, Clojure, Scalar, F#, Erlang, Ruby, Groovy, Python 3, Perl6. (for a big list, see: Proliferation of Computing Languages) So, if i want to learn another lang down the road, and wish it to be a joy to use, usable docs, large number of usable libraries, well supported, a community that is not looping eternally around estheticalities, then which one should i buy? I think Erlang, OCaml/F#, would be safe choices, while langs like Qi, Oz, Arc, Perl6, would be most questionable.

Disclaimer: All mentions of real persons are opinion only.Related:

Xah ∑ xahlee.org ☄

Mark Tarver, Qi lang, Marketing


On Sep 24, 1:18 am, p...@informatimago.com (Pascal J. Bourguignon) wrote:
> Isaiah Gilliland writes:
> > Lisp definitely needs a badass logo. It's not really marketing it's
> > like a flag. Something visual that everybody can bond together over
> > and paste on forums/get tattooed. A cool logo helps newcomers too,
> > because seeing the code doesn't lol. I remember first looking at CL
> > code when I was just interested, got some vertigo and had to stop haha.
> It has.  http://www.lisperati.com/logo.html

my fav is this classic

• 〈LISP Logo〉

another is:

• 〈Qi Language Logo〉

but i think Mark (Tarver) is really a bad marketer. Qi could be great but it's barely heard.

Mark started to use the logo in their online forum about a couple years ago:

but it really needs to go onto its home page:

(btw, the home page is badly designed. Just compare it to

the few times i chatted to Mark (hi Mark), i recall the impression i got from him is “i don't know where to use the logo”. About a year later he used it on the Qi forum and told me about it, which is fantastic and am very happy. But the most obvious place is the home page, and any publication associated with the lang. I mean, that's what logo is for.

i couldn't understand it. At first i thought maybe he doesn't really want to associate Qi with logo from a “troll”. But apparantly he does like it and would use it on the forum.

a few times in the past couple years i had the pleasure to browser some of his essays.


look at that war time photo, and a bunch of quite personal essays such as “why i'm not a professor”, linked directly from the front page. That really puts a dent on public image.

That needs to go. Perhaps to his personal site with a different domain. Or, actually, Qi should have its own domain, qilang.org or qilisp.org.

By the few essays i've read, he designed Qi because he wanted to revive lisp, and bring it head to head to modern functional langs such as ML/Haskell, and wish it wide-spread. By his analysis, he thought the first step in in academia. So, in that respect he is not like some other lang creators who take the attitude of “i did it purely for myself and couldn't careless anyone else uses it”.

I think Qi could be a great fix or improvement to Common Lisp. You know, other new lisps (Clojure, newLISP, Arc, Racket) are all not Common Lisp, and they are all doing good jobs in bringing wide awareness of lisp (Clojure being concurrency & JVM, newLISP for good scripting, Arc by Paul's fame (focusing on web app i think), Racket by PLT Scheme's established community and now a new name). Only Qi, takes lisp to a new level in a CL compatible way, only if the marketing could be improved a bit and if CL people would be more supportive.

Xah ∑ xahlee.org ☄


who's expert in what?


On Oct 13, 4:04 pm, Mark Tarver wrote:
> On 11 Oct, 22:13, Don Geddis wrote:
> > Mark Tarver wrote on Mon, 11 Oct 2010:
> > > a.  Graham repeats he does not understand philosophy.
> > That's not what your quotes show.
> Sorry; that is exactly what he says.  He tried Berkeley, 26 years
> later he does not understand Berkeley, he just has the books. Oh wow.
> "Esse et percipi aut percipere" passed him by. He took logic but did
> not get much from it - so that's most of Russell, Quine, Davidson,
> Tarski out of his reach.  Without really getting that background, how
> can you make a judgement?  That's a good chunk of C20 philosophical
> logic. Realism, constructivism, semantic paradoxes - philosophy of
> maths.  Semantic theory of truth.  Verificationist theories of
> meaning.  Possible world semantics, Kripke models, counterfactual
> conditionals? Forget it.
> The guy doesn't know the subject.  And you cannot pass a worthwhile
> judgement on anything unless until you have taken it to a certain
> depth.   It is not worth reading PG's amateur extemporisation on
> philosophy and almost not worth commenting on it except that somebody
> *might* be influenced and lose out on the chance to read something
> really worthwhile from any of the people I just mentioned.  That's the
> only reason why it is worth making any comment at all.
> And that's it from me.  I'm not taking this further because the
> internet will always generate more junk than any one person can deal
> with.  Replying to junk seems to generate more.  This is not the place
> to discuss philosophy. Signing out.

great post Mark.

just by your few paragraphs, the names and terms you mentions (and of
course the way you said it), makes me believe that you know more about
philosophy than me, and, if you write a blog on philosophy, i
certainly would pay much more interest.

On the other hand, Paul Graham's blog on philosophy, just lol. But you
know, it goes with fame. Lots of tech geekers read him, just 'cause he
is a expert programer and is successful. Same with perhaps Bill Gates
who wrote books about the future. And in general, lots of celebrities,
or experts of something (say Nobel winner), once they became well
known, they start to fart on everything, from politics to human nature
to science, and the masses follows it.

Some general advice for my readers:

Most comp.lang.* readers, are
idiots at everything. (actually, this can be said for anyone anywhere)
The comp.lang dwellers are expert in one very specific thing. For
example, if i ask what are the tech details of lisp's package system,
then some regulars at comp.lang.lisp indeed can provide basically the
best answer possible. If i wonder about some particular history of
lisp, there's Kent Pitman, Richard Stallman, and few others, who's
opinion on this can be taken seriously, because, they invented it,
lived thru it. Same for, if i have a perl speed question,
comp.lang.perl guys knows it, such as Randal Schwartz. However, their
opinions, on lang design, which lang is good or best, on lang
evolution, on economics, on licensing, on writing, on AI, on user
interface, on IT corporations, which are perennially 50% of the posts,
are worse than shit. And the worst problem is that they dunno
that. One example to tighten it: Larry Wall perl, Guido python, lisp
McCarthy, these people, their opinion on language design, on
functional programing, would be shit-like. Same, vast majority of
authors who have written books, their opinion on writing, grammar,
linguistics, would be shit-like, even they are best sellers. Computer
scientists (such as often in comp.lang.scheme group), their opinion on
programing would be idiotic shit. Professional mathematicians,
their opinions on math notation, are fuck-ur-ass idiotic.

if you want really good opinion on lang design, ask those specialists,
who spent several years surveyed tens of langs as a _social research_,
and as a _background_, they might also have the ability to code
non-trivial programs in tens of langs, and possibly also with
associated background of basics of linguistics, computer science
proper, math, logic, psychology, cognition. Typically, we don't even
know who are such people, and vast majority of them are not known to
the general programing public.

if you want good opinion on math notations, or comp syntax design, you
get it from specialists on just this very issue, who's math knowledge
or comp programing knowledge might even be below u n me.

such narrow specialists exist in every of the ten million fields, and
their publications, exist, but u have to spend time and money to dig
them out. What iditos i deal daily in comp.lang is like: “Xah is a
troll, because he thinks Larry Wall is wrong to claim perl supports
functional programing.”. “Xah is troll, because he thinks McCarthy is
wrong on some functional programing issue.” LOL. Yes, i think they
know shit, except they are inventors of their langs. I know more about
lang design, functional programing, than them, anytime.

Xah ∑ http://xahlee.org/ ☄


elisp: find/replace in region

suppose i want write a command that do a find/replace on a region

which is more efficient?

(defun space2underscore-region (p1 p2)
"Replace space by underscore in region."
(interactive "r")
(narrow-to-region p1 p2)
(goto-char (point-min))
(while (search-forward " " nil t) (replace-match "_")) ) )


(setq meat (replace-regexp-in-string " " "_"
(buffer-substring-no-properties p1 p2)) )
(delete-region p1 p2)
(insert meat)


(replace-string " " "_" nil p1 p2)

it appears to me, the first is most efficient but is most cumbersome.
The last is most lean, but least efficient.

Xah ∑ xahlee.org ☄