牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

Emacs Lisp Reference が長いんで抜粋して縮めて読んでみる01

全部読むのが面倒そうなので何となく大まかに読んでみる。

GNU Emacs 21.3版)

1. はじめに

  • 他のプログラム言語でできることは、Emacs Lispでできます。

1.1 警告

  • 誤りは皆無ではありません。ふれていない話題も少なからずあります。

1.2 Lispの歴史

  • Lispは、人工知能の研究向けに1950年代末にMITで初めて開発
  • 1960年代のMITのMACプロジェクトで開発されたMaclispの影響を受けてる
  • Common Lispからの影響は少ない
  • Common Lispの多くの機能は、必要とするメモリ量を削減するため省いてあるか、単純化してある。
  • `cl'ライブラリにより、Common Lispをかなりエミュレート
  • Schemeの影響をまったく受けてない

1.3 表記法

1.3.1 用語

  • 読者を『プログラマ』と考えて『読者』と呼ぶ
  • 『ユーザー』とは作者自身を含めたLispプログラムを使う人のこと

1.3.2 nilとt

  • Lispでは、シンボルnilには3つの異なる意味
    1. nilという名前のシンボル
    2. 真理値の偽(false)
    3. 空リスト(要素数が0個のリスト)
  • Lispリーダにとっては、`()'と`nil'は同一(同じオブジェクト、シンボルnil
  • 本書では、空リストを強調するときには()を使い、真理値の偽を強調するときにはnil
(cons 'foo ())                ; 空リストであることを強調する
(not nil)                     ; 真理値の偽であることを強調する

1.3.3 評価の表記法

(car '(1 2))
     => 1
  • 『(car '(1 2))を評価すると1になる』と読む
(progn (print 'foo) (print 'bar))
     -| foo
     -| bar
     => bar

1.3.4 結果表示の表記法

  • 表示テキストを`-|'で表します。フォームを評価した結果返される値は、後続の行に分けて書く。

1.3.5 エラーメッセージ

  • エラーメッセージは、`error-->'で始まる行に示す
(+ 23 'x)
error--> Wrong type argument: number-or-marker-p, x

1.3.6 バッファ内のテキストの表記法

  • バッファ内のテキストを修正する例題は、『実行前』と『実行後』のテキストを示す
---------- Buffer: foo ----------
This is the -!-contents of foo.
---------- Buffer: foo ----------

(insert "changed ")
     => nil
---------- Buffer: foo ----------
This is the changed -!-contents of foo.
---------- Buffer: foo ----------

1.3.7 記述形式

  • 関数、変数、マクロ、コマンド、ユーザーオプション、スペシャルフォームは、本書では統一した形式で記述

1.3.7.1 関数の記述例

  • 引数ならびにキーワード&optionalが現れていれば、それ以降の引数を省略できることを示します(省略した引数の値はnil)。関数を呼び出すときに&optionalを書いてはいけません。
  • キーワード&rest (このあとには1つの引数名だけが続く)は、残りの引数が何個でもよいことを示します。直後にある1つの引数名は、変数としての値を持ち、その値は残りのすべての引数のリストです。関数を呼び出すときに&restを書いてはいけません。
  • &optionalと&restについての詳しい説明は、 See 節 11.2 ラムダ式

1.3.7.2 変数の記述例

  • 変数(variable)は、値を保持するための名前
  • ユーザーが変更可能な特定の変数群があり、それらをユーザーオプション(user options)と呼ぶ

1.4 版情報

  • コマンド: emacs-version (実行中のEmacsの版を記述した文字列を返す)