Hatena::Groupcadr

lnzntのLisp日記 このページをアンテナに追加 RSSフィード

2010年11月18日(木)

評価とクォート

| 08:50 | 評価とクォート - lnzntのLisp日記 を含むブックマーク はてなブックマーク - 評価とクォート - lnzntのLisp日記 評価とクォート - lnzntのLisp日記 のブックマークコメント

評価

  • 式がアトム -> その値を返す
    • シンボル : 代入されている値を返す
    • 整数 : その整数を返す
    • 文字列 : 特殊な文字を変換して返す
  • 式がセル -> 関数を呼び出す
    • リストの第一要素が関数名、それ以外の要素が引数
    • 引数があればそれぞれ先行評価する
    • 引数の全部または一部が評価されない特殊関数もある

クォート

quote は引数を評価しない特殊関数。「'」とも書ける。

> (quote (1 2))
(1 2)
> '(1 2)
(1 2)
> '(cons (1 nil))
(CONS (1 NIL))

setq は「set quote」の略。第一引数のみ評価しない特殊関数。

バッククォート

バッククォートは「`」と書く。基本的にクォートと同じ働きだが「,(カンマ)」を先頭につけた引数は評価する。

> (setq dog 1)
1
> (setq pig 2)
2
> '(dog pig)
(DOG PIG)
> `(,dog pig)
(1 PIG)