==言語まとめ Lisp==
[[言語 まとめ][Lisp]]
以下から参照、引用
*Emacs Lisp Programing http://www.bookshelf.jp/texi/elisp-intro/jp/emacs-lisp-intro.html
*データとプログラムのどちらも同じ方法で表現する。どちらも、単語や数やリストを空白で区切って括弧で囲んだリストである。
<<blockquote>>リストの直前に付けた1つのアポストロフィ'を クオートと呼び、リストの直前にこれを付けると、そのリストに関しては何もせずに字面どおりに扱うことをLispに指示する。リストの直前にクオートがない場合には、リストの先頭要素を特別扱いし、コンピュータが従うべきコマンドとなる<</blockquote>>
===アトム===
*リストの直前にクオートがない場合には、リストの先頭要素を特別扱いし、コンピュータが従うべきコマンドとなる。
>>(+ 1 2)
3
====setの使い方====
*シンボルflowersの値としてリスト'(rose violet daisy buttercup)を設定する
>>(set 'flowers '(rose violet daisy buttercup))
(ROSE VIOLET DAISY BUTTERCUP)
>>'flowers
FLOWERS
>>flowers
(ROSE VIOLET DAISY BUTTERCUP)
<<blockquote>>setを使う場合、いずれの引数も評価してほしくない場合には、両方の引数をクオートする必要がある<</blockquote>>
====setqの使い方====
*setで第1引数をクオートする組み合わせは多用されるので、スペシャルフォームsetqが用意してある
*setとほとんど同じであるが、第1引数を自動的にクオートするので、引用符をタイプする必要はない
>>(setq flowers '(rose violet daisy buttercup))
(ROSE VIOLET DAISY BUTTERCUP)
>>flowers
(ROSE VIOLET DAISY BUTTERCUP)
*さらに、setqは、複数の異なる変数に異なる値を代入するためにも使える。
>>(setq alpha '(a b c)
num '(1 2 3))
(1 2 3)
>>alpha
(A B C)
>>num
(1 2 3)
defun 関数名 (引数) "関数の説明(省略可)" 関数本体
=====例=====
>>(defun pow (x) "power" (* x x))
POW
>>(pow 2)
4
真の場合の動作)
=====例=====
>>(if (> > 5 4)
'("5 is greater than 4"))
("5 is greater than 4")
>>(if (> > 5 6)
'("5 is greater than 4"))
===If--then--else式===
*if式には第3引数を指定することもでき、判定条件が 偽の場合の動作である。
>>(setq x 2)
2
>>(if (= x 1)
'("x is 1")
'("x is not 1"))