Open12
Emacsに花束を
プログラマとしてはエディタを使いこなしていきたい。
昨今のエディタではAIがサポートしてくれているけど、僕は古臭い思考の人間なので、自分の手でもコーディングできる様になりたい。
あえてEmacsを使って、自分にあったエディタを手に入れたい。
始めたてで書く内容もおぼつかないけど、アルジャーノンのように少しずつ変化がみられるといいな。
一方で、何から手をつければいいのかわからない。
少しずつカスタマイズしてはコードを読んで使ってみるしかない気がする。
なかなか道は長そうだ。
少しずつ読み進める
Programming in Emacs Lisp
人のinit.elの設定を一つずつヘルプで調べて設定してみている。
地道に地道に。
Emacsはドラゴンのいる洞窟を探検するようなもの、ということらしいけど、探検という感じはしてる。
そのうちドラゴンに出くわすのだろうか。
「リスト遊び」という本を手に入れた。
これを進めてEmacs Lispに少しお近づきになりたい。
zeropのpはpredicateという単語から来ているらしい。
Lisperならcoffeepでコーヒーブレイクに誘えるとか。
答えはt or nil。洒落てますね。
フィボナッチ数列をLispで。
(defun fibonacci (x)
(cond
((= x 0) 1)
((= x 1) 1)
(t (+ (fibonacci(- x 1)) (fibonacci(- x 2))))))
listの要素を置き換える関数作成。
ちゃんとかけた。
(defun repl (lst old new)
(cond
((null lst) nil)
((eq (car lst) old) (cons new (repl (cdr lst) old new)))
(t (cons (car lst) (repl (cdr lst) old new)))))
listからある要素を削除する関数。
(defun del (x lst)
(cond
((null lst) nil)
((eq (car lst) x) (del x (cdr lst)))
(t (cons (car lst) (del x (cdr lst))))))
集合に要素があるか判定する関数。
(defun menq (x set)
(cond
((null set) nil)
((eq (car set) x) t)
(t (menq x (cdr set)))))