Lisp | XML

Everything we’ve learned about Lisp so far can be summarized by a single statement: Lisp is executable XML with a friendlier syntax.

— Slava Akhmechet

2010.04.19 Monday ACHK

Redpill

“Lisp is the red pill.”

— John Fraser, comp.lang.lisp

The first appearance of the concept of the “red pill” in the 1999 film The Matrix. A hacker named Morpheus offers a choice to the film’s protagonist, Neo, to take the blue pill, where “the story ends, you wake up in your bed and believe whatever you want to believe”, or to take the red pill, where “you stay in wonderland, and I show you how deep the rabbithole goes.”

The term redpill is a pop culture term that was popularised in science fiction culture via the 1999 film The Matrix. The movie relies on the premise that an artificial reality that is advanced enough will be indistinguishable from reality and that no test exists that can conclusively prove that reality is not a simulation. This ties in closely with the skeptical idea that the everyday world is illusory. In the movie, a Redpill is the term used to describe a human who has been freed from the Matrix, a fictional computer-generated world set in 1999. Bluepill refers to a human still connected to the Matrix.

— Wikipedia on Redpill

2010.04.17 Saturday ACHK

Designed for smart programmers

As for Arc, I think you actually get a
better language if you design for smart
programmers. Designed for smart
programmers: C, Smalltalk, Lisp. Designed
for “average” programmers: Cobol, Pascal,
Java. See a pattern here?

Paul Graham
Tuesday, December 18, 2001

2010.04.05 Monday ACHK

The primordial forces

* Programming in Lisp is like playing with the primordial forces of the universe. It feels like lightning between your fingertips. No other language even feels close.

o Glenn Ehrlich

2010.04.04 Sunday ACHK

Lisp macros

Lisp’s uniform, parenthesized syntax works especially well with macros. Languages of the Lisp family, such as Common Lisp and Scheme, have powerful macro systems because the syntax is simple enough to be parsed easily. Lisp macros transform the program structure itself, with the full language available to express such transformations. Common Lisp and Scheme differ in their macro systems: Scheme’s is based on pattern matching, while Common Lisp macros are functions that explicitly construct sections of the program.

Being able to choose the order of evaluation (see lazy evaluation and non-strict functions) enables the creation of new syntactic constructs (e.g. control structures) indistinguishable from those built into the language. For instance, in a Lisp dialect that has cond but lacks if, it is possible to define the latter in terms of the former using macros.

Macros also make it possible to define data languages that are immediately compiled into code, which means that constructs such as state machines can be implemented in a way that is both natural and efficient.

— Wikipedia on Macro (computer science)

2010.03.30 Tuesday ACHK

The Maxwell’s equations of programming

Interactive means that programming is a dialog with Lisp. You enter an expression and Lisp computes the side effects (for example output) and the value.

So your programming session is like ‘talking’ with the Lisp system. You work with it until you get the right answers.

Alan Kay (of Smalltalk fame) calls the original definition of Lisp evaluation in Lisp the Maxwell’s equations of programming.

— Rainer Joswig

2010.03.26 Friday ACHK

Upgrade path

Somewhere in the course of doing Viaweb, someone gave me a very useful piece of advice: users always want an upgrade path, even though as a rule they’ll never take it. Rtml was our upgrade path. If you wanted to, you could get absolute control over everything on your pages.

— Lisp in Web-Based Applications, Paul Graham

2010.03.21 Sunday ACHK

Html | Lisp

One way we used macros was to generate Html. There is a very natural fit between macros and Html, because Html is a prefix notation like Lisp, and Html is recursive like Lisp. So we had macro calls within macro calls, generating the most complicated Html, and it was all still very manageable.

— Lisp in Web-Based Applications, Paul Graham

2010.03.20 Saturday ACHK

Category Theory | Lisp

My current self-study programme includes

1. read almost everything written by Paul Graham

public domain image
Wikipedia

2. learn Lisp programming language (Common Lisp/Scheme) by reading Paul Graham’s textbooks

3. learn Category Theory so that I can read almost everything written by John Baez

public domain image
Wikipedia

Yester-night and tonight, I discovered that they are related:

“Lists, and recursive operations on them, are an excellent case in point. But the path connecting them to their mathematical underpinnings is a long and winding one, which lays in the realm of Category Theory.” — jao

I had never expected that. They are one thing.

Paul Graham –> Lisp –> Category Theory –> John Baez

I have been learning Lisp since 2000 (Machine Intelligence course), since 2006 (Structure and Interpretation of Classical Mechanics, Structure and Interpretation of Computer Programs), since 2010. I have been learning Category Theory since 2006-2008 (John Baez), since 2008 (Sets for Mathematics), since 2010. I had never expected that they are just two different languages of the same thing.

— Me@2010.03.04

2010.03.05 Friday (c) All rights reserved by ACHK

4.3 Lisp

4.3.2 Have a habit of doing good work in your current job, whether it is your favourite

In order to get your favourite job, you have to get used to doing good work in your current job. So, even if you choose to quit your current job later, you know that you are quitting not because you want to give up, but because you have a better job or a better chance.

.

.

2008.07.09 Wednesday \copyright CHK^2

4.3 Paul Graham

LISP writer Paul Graham has written an essay called “How to do what you love”, giving some practical advice.

There are three main points, for me, in the essay:

  1. Do not feel guilty about not doing some boring jobs.

  2. Have a habit of doing good work in your current job, whether it is your favourite.

  3. Always produce in your favourite area, whether it is your current job.

.

4.3.1 Do not feel guilty about not doing some boring jobs

Sometimes, I faced some boring work. When I wanted to get rid of it, I had a thought: “Someone has to do it anyway. If I do not do it, someone else will have to. That means I am wasting other people’s time. I will feel guilty about that.”

Now I do not think in that way. If I choose not to do a job, the number of people available for that job will decrease. That means the price to get a person to do the job will rise. Then the person who has chosen that job will get a higher salary. So, instead of wasting his time, I make him earn a higher salary.

If a job is so boring that it is virtually impossible to get any human being to do it, people will create a machine to get the job done.

.

.

2008.06.30 Monday \copyright CHK^2