elisp超入門 -3ページ目

括弧の訳

lispには多数の実装がある(lisp方言と呼ぶ)が、どの実装も括弧が多くてキモイことは共通している。
何を隠そう、この括弧こそlispをlispたらしめる所以であり、lispが最強と言われる所以である。
例えば、iを2倍して表示する。
Cでは
#include

int main (void) {
int i;
i = 5;
printf("%d\n",2*i);
return 0;
}
となる。
lispでは、
(setq i 5)
(* i 2)
です。
しまった。俺が言わんとすることをこの式で説明するのは困難を極める。
別のことを語ろう。この式も十分重要なことを語れる。
(これでいいんだ。  いきなり括弧の秘密について話しても俺の能力ではその秘密を伝えられない。)


まず、setq(セットクと読む)についてだ。
(setq i 5)
これは以下の式とほぼ同じ動きをする。
int i;
i = 5;
つまりどちらもi と5を関係づけている。

しかしながら、Cを書く俺は(setq i 5)を見て考える。
i は果たして何者なのか?
同時にlispを書く俺は悩む。
何故Cを書く俺は i に何故int型と決めることができたのか。
i に文字が来る可能性は無いのか。と。

まぁ大概の人はCを書く俺に賛成だと思う。
でも最近はそうでもないか。

ここで俺が言わんとすることが分かった人はここから下は読まなくてよろしい。

Cでは何をするにもはじめに宣言をする。
これは何のためか?
プログラムに必要なメモリを始めに割り当てる。コンパイルの効率をあげる。ect.
まぁようは機械の都合だ。

(setq i 5)では単にあるデータ i に5を束縛しているに過ぎない。
束縛って何んだ?って思ってるひとは正解。
束縛って代入と同じだろって思っちゃった人は残念。

今日は代入と束縛の概念の違いをメインに語る(おおいきなり、そんなことをしてもただの自己満足で終わるのに(lispが最強と言われる所以の一つに学習するにつれ他の言語のあらが見えてくる点をあげられる。(まあ言いをかえると言語の特性が見えてくる)))

束縛とは言ってしまえばその時点のアトムの状態・値を保持しつつアトムに新たなアトムを結び付けることです。

アトムって何だってそれは括弧の中に閉じ込められた諸々のものとしか言いようが無いね。
いきなり重要事項。
てか最重要事項。
括弧の中は基本的にアトムでいっぱいだ!!(例外はもうすぐ示す予定)
てかまだについて何も言ってなかった。
式とは括弧で括られたアトムとシンボルと括弧自身のすべてを指します。
あぁなんかふつーの入門書になってきたわ。(残念)
lispでは式と言う単位で考えてる。式はコードそのものであり、lispと言う表現の全てである。(おおこの流れで、後3000字ぐらい書けば括弧の秘密まで書ける気がする(「lispと言う表現」って深いね))
つまり全ての基本的にlispは以下の形からなる。
(シンボル アトム1 アトム2 アトム3、、、、、)
シンボルとは+、*、setqなどのこと。
あぁ飽きて来た。

強引にまとめる(全くもってまとめではない)
今までの説明を読んで来て分かると思うが、ここの文章には脈絡が無い。
人に説明しようとしているのに、流れが見えない。
しかし、全く無意味でもない。
俺はこれが正しいlispの書き方だと思う。
「さて、今日はこの仕様書をやっつけよう」と書くのではなく。
徒然なるままに、欲望に任せて、書きつづる。
そのうち何か、可能性が見えてくる。
これぞプログラムの醍醐味。
以上。

windowsでemacsインストール編

http://ourcomments.org/Emacs/EmacsW32.html#download
こんなのもあるけどとりあえずmeadowがよいと思われます。

http://www.meadowy.org/meadow/

Netinstallerでインストールすれば良いです。
時代は便利なものになりました。

何か問題が起きたらコメント下さい。暇だったら答えます。

とりあえず使ってみる(Mac編)

なぜMac編なのかと多くの人が突っ込みたくなるかも知れませんが、筆者の偏見により、とりあえず、mac編からです。(だってインストール方法とか分からない人に教えるの面倒じゃん(インストールはgnuを参照すべし))
では始めます。
ターミナルを開く。
ターミナルはユーティリティの中にあります。
(finderでリンゴのマークとshiftとUを押せばユーティリティのに飛べます。)
ターミナルを無事機動するとcuiの画面が出てきます。


Last login: Sun Dec 24 14:59:08 on console
Welcome to Darwin!
You have mail.
mac:~ apple$

emacsと入力してリターン。


Last login: Sun Dec 24 14:59:08 on console
Welcome to Darwin!
You have mail.
mac:~ apple$emacs

すると
Welcome to GNU Emacs

Get help C-h (Hold down CTRL and press h)
Undo changes C-x u Exit Emacs C-x C-c
Get a tutorial C-h t Use Info to read docs C-h i
Ordering manuals C-h RET
Activate menubar F10 or ESC ` or M-`
(`C-' means use the CTRL key. `M-' means use the Meta (or Alt) key.
If you have no Meta key, you may instead type ESC followed by the charac\
ter.)

If an Emacs session crashed recently, type M-x recover-session RET
to recover the files you were editing.

GNU Emacs 21.2.1 (powerpc-apple-darwin7.0)
of 2006-07-31 on localhost
Copyright (C) 2001 Free Software Foundation, Inc.

GNU Emacs comes with ABSOLUTELY NO WARRANTY; type C-h C-w for full detai\
ls.
Emacs is Free Software--Free as in Freedom--so you can redistribute copi\
es
of Emacs and modify it; type C-h C-c to see the conditions.
Type C-h C-d for information on getting the latest version.


と表示されます。
無事emacsが起動しました。
なにかキーを押すと画面が下のように変わります。


File Edit Options Buffers Tools Help
;; This buffer is for notes you don't want to save, and for Lisp evaluat\
ion.
;; If you want to create a file, visit that file with C-x C-f,
;; then enter the text in that file's own buffer.

せっかくだからテトリスをしましょう。

(tetris)と入力。

カーソルを(tetris)の直後(つまり『の』の位置)に持って来て
controlキーとXを同時に押す。
その後controlキーとEを同時に押す。

はい。emacsでテトリスができました。

終わるときは
まず、controlキーとXを同時に押す。
その後controlキーとCを同時に押す。
ご苦労様でした。

まぁemacs起動後の操作方法はMacに限らず他でも同じです。

今回のポイント
終わるときは
まず、controlキーとXを同時に押す。
その後controlキーとCを同時に押す。