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

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
編集の要約なし
==[[言語まとめ Lisp]]==
[[言語 まとめ]] | [[Lisp]] |
以下から参照、引用
*Emacs [[Lisp ]] Programing http://www.bookshelf.jp/texi/elisp-intro/jp/emacs-lisp-intro.html*Common [[Lisp ]] 入門 http://wisdom.sakura.ne.jp/programming/lisp/index.html
==リスト処理==
===リスト===
*リストを以下のように書く
'(rose violet [[vi]]olet daisy buttercup)
*データとプログラムのどちらも同じ方法で表現する。どちらも、単語や数やリストを空白で区切って括弧で囲んだリストである。
<blockquote>リストの直前に付けた1つのアポストロフィ'を クオートと呼び、リストの直前にこれを付けると、そのリストに関しては何もせずに字面どおりに扱うことをLispに指示する。リストの直前にクオートがない場合には、リストの先頭要素を特別扱いし、コンピュータが従うべきコマンドとなるクオートと呼び、リストの直前にこれを付けると、そのリストに関しては何もせずに字面どおりに扱うことを[[Lisp]]に指示する。リストの直前にクオートがない場合には、リストの先頭要素を特別扱いし、コンピュータが従うべきコマンドとなる</blockquote>
===アトム===
*特殊な関数があり、これらは普通の方式のように動作しない。これらをスペシャルフォーム(special forms)と呼ぶ。関数の定義などの特殊なことを行うものであり、それらの個数は多くはない。
=====ネストしたリスト=====
*インタープリタが探しあてた関数がスペシャルフォームでなく、しかも、それがリストの一部である場合には、 Lispインタープリタはリストの内側にリストがあるかどうかを調べる。内側にリストがあれば、Lispインタープリタは内側のリストを処理してから、外側のリストを処理する。[[Lisp]]インタープリタはリストの内側にリストがあるかどうかを調べる。内側にリストがあれば、[[Lisp]]インタープリタは内側のリストを処理してから、外側のリストを処理する。
==引数==
===データ型===
*letを使う
====setの使い方====
*シンボルflowersの値としてリスト'(rose violet [[vi]]olet daisy buttercup)を設定する >(set 'flowers '(rose violet [[vi]]olet daisy buttercup))
(ROSE [[R]]OSE VIOLET DAISY BUTTERCUPBUTTE[[R]]CUP)
>'flowers
FLOWERSFLOWE[[R]]S
>flowers
(ROSE [[R]]OSE VIOLET DAISY BUTTERCUPBUTTE[[R]]CUP)
<blockquote>setを使う場合、いずれの引数も評価してほしくない場合には、両方の引数をクオートする必要がある</blockquote>
*setで第1引数をクオートする組み合わせは多用されるので、スペシャルフォームsetqが用意してある
*setとほとんど同じであるが、第1引数を自動的にクオートするので、引用符をタイプする必要はない
>(setq flowers '(rose violet [[vi]]olet daisy buttercup))
(ROSE [[R]]OSE VIOLET DAISY BUTTERCUPBUTTE[[R]]CUP)
>flowers
(ROSE [[R]]OSE VIOLET DAISY BUTTERCUPBUTTE[[R]]CUP)
*さらに、setqは、複数の異なる変数に異なる値を代入するためにも使える。
>(setq alpha '(a b c)
===defun===
*シンボルには、関数として呼ばれたときにコンピュータが実行するコードが結び付けられている。
*このコードを関数定義(function definition)と呼び、シンボルdefun(define function(関数を定義する)の略)で始まる Lispの式を評価することで作成する[[Lisp]]の式を評価することで作成する
*defunは、その引数を通常のようには評価しないので、 スペシャルフォーム(special form)と呼ばれる。
=====書式=====

案内メニュー