| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

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

案内メニュー