櫻井(Sakurai)/euslisp
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
] [
Japanese
/
English
]
研究について
研究の概要
論文発表
メディア
メンバー
教員
大学院生
学部生
OB
リンク
リンク集
授業
コンピュータプログラミング基礎II
機械知能システム工学特別講義I
機械システム工学特論(MORE SENSE特論)
内部用
物品管理(registries)
外部ソフトウェア
PC環境設定
買い物
プリンタ設定
定例研究会(weekly)
研究発表会(monthly)
閲覧回数順
開始行:
#contents
* とりあえずメモ [#m86c18a1]
** lisp [#c22b92fa]
- プログラミング言語の一種。リスト処理を意味する英語「lis...
** シェル(shell) [#l0658f83]
- オペレーティングシステム(OS)のユーザーのためにインタフ...
** インタプリタ(interpreter) [#t44ad22f]
- プログラミング言語で書かれたソースコードないし中間表現...
** () と nil [#md35ede3]
- 空リストを強調するときには()を使
- 真理値の偽を強調するときにはnil
** 関数 [#f2f7c331]
- #'+ は (function +) の省略形。function は特殊形式で、シ...
- #'+ であれば、シンボル + から加算を行う処理を取り出す。
-- つまり、mapcar にはシンボル + に格納されている値ではな...
-- (defun 3+ (x)(+ x 3)tmp) = (defun 3+ (lambda (x) (+...
** instantiate [#f7c3a17d]
- オブジェクトを複製
* set, setq, setf [#af939ae0]
** set [#r13065a8]
- 第一引数を評価する
(quote x) ← (quote x) を評価すると x が返る
(set (quote x) 100) ←xに100がバインドされる(≒代入される)
(set 'hoge 200) ← 'hoge を評価すると hoge が返る。
- 「'xxx」は「(quote xxx)」に自動的に変換される(マクロ)...
** setq [#v8c2a166]
- =「 (set (quote .. 」
- 第一引数を評価しない
(setq (car w_list) 'a)
不正なデータ型です: (car w_list): symbol
この場合、(car w_list)を評価しないためエラーとなる
- nervousの*ns*
-- 長くて打つのが面倒だから
(setq n (open-nerve :io))
としてnにバインドするという方法がある。(恒岡さんbuEnwaの回)
** setf [#gb18dfc0]
- 第一引数を評価する
- 第一引数は「場所を表す式」
-- 例:(car w_list) なら w_listというリストのcarという場所
(setf (car w_list) 'a)
-- 例:(elt w_list 2) なら w_listというリスト(かベクトル)...
(setf (elt w_list 2) 'k)
-- 例:(setf (cdr (assoc :name alist)) "Hanako") なら、al...
(cons 1 2)
↑ (cons a b) とすると carがaでcdrがbであるような''consセ...
(setq dotlist (cons :name "Taro"))
↑ carが:nameでcdrが"Taro"であるようなconsセルを作り、dotl...
(setq alist '((:name . "Taro") (:age . 20)))
↑ (:name . "Taro")と(:age . 20)という二つのconsセル(ドッ...
(assoc :name alist)
↑ 連想リストの中からキーが:nameである要素を見つける。連想...
(cdr (assoc :age alist))
↑ :ageをキーとして連想リストalistを検索し、見つかったドッ...
(setf (cdr (assoc :name alist)) "Hanako")
↑ :nameをキーとして連想リストalistを検索し、見つかったド...
結果として、alist == ( (:name . "Hanako") (:age . 20) ) ...
** defvar [#bd9b5440]
- setq と同じく変数を設定する
-- ただし変数に何も設定されていない時だけに作用する
** let [#ha68f8d2]
- ローカル変数をセットする
(let a b) ;a,b→ローカル変数
*** let* [#c0865f88]
- 前に設定されたローカル変数の影響を受ける
*boundp [#wed527ad]
** boundp [#dc1a6a8e]
- シンボルが変数として束縛されているかどうか調べる
-- 束縛されている場合 t
-- そうでない場合 nil
** fboundp [#k82e8d9d]
- シンボルが関数として束縛されているかどうか調べる
-- 束縛されている場合 t
-- そうでない場合 nil
(fboundp 'foo)
;=> nil
(defun foo ()
nil)
;=> foo
(fboundp 'foo)
;=> t
* memq [#q6708ee9]
- member + q(か?)
- OBJECTがLISTの要素かどうか調べる
(memq OBJECT LIST)
-- then→OBJECTが最初に現れるところから始まるリストを返す
-- else→nil
* if, cond [#e08bd5a1]
** if [#m10e3c25]
- 1分岐しかできない
(if (evenp x) ; 条件部
(print "偶数です") ; then 節
(print "奇数です")) ; else 節
- 「条件を満たさないときに評価したい式」を省略できない
-- if の else 節が nil の場合 = when
(when test S式1 S式2 S式3 ..... )
-- if の then 節が nil の場合 = unless
(unless test S式1 ...) ≡ (when (not test) S式1 ...)
** cond [#g70124f2]
- たくさん分岐できる
(cond ( 条件部A S式A1 S式A2 ... )
( 条件部B S式B1 S式B2 ... )
・・・・・
( 条件部M S式M1 S式M2 ... )
( t S式T1 S式T2 ... ))
** format関数 - 出力関数 [#x96269d3]
(format destination control-sequence arg 0 ... arg n )
- destination :出力先を指定する
-- 明示的に出力ストリームを指定するとそこに出力
-- t にすると標準出力 (*standard-output*) に出力
-- nil にするとストリームには出力せず、出力を戻り値(文字...
--- 戻り値: destination が非 nil のときは nil 、 destina...
-- fill pointer付き文字列にすると、出力をその文字列に追加
- control-sequence :出力文字列
-- 文字列中のformatディレクティブ(Cの printf における %d...
- arg 0 ... arg n :それぞれの値が基本的には前から順に消...
RIGHT:[[ref.ファイヤープロジェクト:http://www.fireproject...
** ファイルへのアクセス [#d48b908d]
- ファイルにアクセスするための3つの基本操作
-- アクセスするファイルをオープンする(open)
--- アクセスするファイルを指定して、それと一対一に対応す...
-- 入出力関数を使って(ストリームを経由して)ファイルを読み...
-- ファイルをクローズする(close)
- これらをまとめて行ってくれる便利なマクロ with-open-file
(with-open-file (変数
ファイル名
:direction [:input / :output / :io / :p...
・・・)
-- 与えられたファイルをキーワード:directionで指定した方向...
-- 変数は局所変数として扱われ、with-open-fileが実行されて...
-- 引数として与えられた S 式を順番に評価する
-- with-open-fileの実行が終了すると、ファイルは自動的にク...
* ラムダリストキーワード [#bd4c6298]
|キーワード名|機能|
|&optional|引数のデフォルト値を設定|
|&rest|引数をリストにまとめて関数へ渡す|
|&key |キーワードの設定|
|&aux |補助変数の指定|
** &optional [#y1c8ef07]
- 指定された引数(オプションパラメータ)のデフォルト値を設...
- デフォルト値は (パラメータ デフォルト値)で指定
- 指定範囲は次のラムダリストキーワードorラムダリストの終...
((lambda (a &optional (b 10)) (+ a b)) 1 2)
=> 3
((lambda (a &optional (b 10)) (+ a b)) 1)
=> 11
- &optional b のように引数名だけ指定するとデフォルト値は ...
- オプションパラメータへの引数の指定
-- 実引数が省略された場合 -> デフォルト値がセットされる
-- 実引数が指定された場合 -> その値がセットされる
**&key [#m5bed1e2]
- 複数の引数にデフォルト値を設定する場合&optionalよりも&k...
- 指定された引数(キーパラメータ)のデフォルト値を設定する
- デフォルト値は (パラメータ デフォルト値)で指定
- 有効範囲は次のラムダリストキーワードorラムダリストの終...
; &key の使用例
((lambda (a &key b c) (list a b c)) 10)
=> (10 nil nil)
; デフォルト値の指定
((lambda (a &key (b 1) (c 2) (d 3)) (list a b c d)) 10 :...
=> (10 30 20 40)
; オプションパラメータとの比較
((lambda (a &key (b 1) (c 2) (d 3)) (list a b c d)) 10 :...
=> (10 1 2 20)
((lambda (a &optional (b 1) (c 2) (d 3)) (list a b c d))...
=> (10 1 2 20)
RIGHT:[[ref.M.Hiroi's Home Page / xyzzy Lisp Programming:...
終了行:
#contents
* とりあえずメモ [#m86c18a1]
** lisp [#c22b92fa]
- プログラミング言語の一種。リスト処理を意味する英語「lis...
** シェル(shell) [#l0658f83]
- オペレーティングシステム(OS)のユーザーのためにインタフ...
** インタプリタ(interpreter) [#t44ad22f]
- プログラミング言語で書かれたソースコードないし中間表現...
** () と nil [#md35ede3]
- 空リストを強調するときには()を使
- 真理値の偽を強調するときにはnil
** 関数 [#f2f7c331]
- #'+ は (function +) の省略形。function は特殊形式で、シ...
- #'+ であれば、シンボル + から加算を行う処理を取り出す。
-- つまり、mapcar にはシンボル + に格納されている値ではな...
-- (defun 3+ (x)(+ x 3)tmp) = (defun 3+ (lambda (x) (+...
** instantiate [#f7c3a17d]
- オブジェクトを複製
* set, setq, setf [#af939ae0]
** set [#r13065a8]
- 第一引数を評価する
(quote x) ← (quote x) を評価すると x が返る
(set (quote x) 100) ←xに100がバインドされる(≒代入される)
(set 'hoge 200) ← 'hoge を評価すると hoge が返る。
- 「'xxx」は「(quote xxx)」に自動的に変換される(マクロ)...
** setq [#v8c2a166]
- =「 (set (quote .. 」
- 第一引数を評価しない
(setq (car w_list) 'a)
不正なデータ型です: (car w_list): symbol
この場合、(car w_list)を評価しないためエラーとなる
- nervousの*ns*
-- 長くて打つのが面倒だから
(setq n (open-nerve :io))
としてnにバインドするという方法がある。(恒岡さんbuEnwaの回)
** setf [#gb18dfc0]
- 第一引数を評価する
- 第一引数は「場所を表す式」
-- 例:(car w_list) なら w_listというリストのcarという場所
(setf (car w_list) 'a)
-- 例:(elt w_list 2) なら w_listというリスト(かベクトル)...
(setf (elt w_list 2) 'k)
-- 例:(setf (cdr (assoc :name alist)) "Hanako") なら、al...
(cons 1 2)
↑ (cons a b) とすると carがaでcdrがbであるような''consセ...
(setq dotlist (cons :name "Taro"))
↑ carが:nameでcdrが"Taro"であるようなconsセルを作り、dotl...
(setq alist '((:name . "Taro") (:age . 20)))
↑ (:name . "Taro")と(:age . 20)という二つのconsセル(ドッ...
(assoc :name alist)
↑ 連想リストの中からキーが:nameである要素を見つける。連想...
(cdr (assoc :age alist))
↑ :ageをキーとして連想リストalistを検索し、見つかったドッ...
(setf (cdr (assoc :name alist)) "Hanako")
↑ :nameをキーとして連想リストalistを検索し、見つかったド...
結果として、alist == ( (:name . "Hanako") (:age . 20) ) ...
** defvar [#bd9b5440]
- setq と同じく変数を設定する
-- ただし変数に何も設定されていない時だけに作用する
** let [#ha68f8d2]
- ローカル変数をセットする
(let a b) ;a,b→ローカル変数
*** let* [#c0865f88]
- 前に設定されたローカル変数の影響を受ける
*boundp [#wed527ad]
** boundp [#dc1a6a8e]
- シンボルが変数として束縛されているかどうか調べる
-- 束縛されている場合 t
-- そうでない場合 nil
** fboundp [#k82e8d9d]
- シンボルが関数として束縛されているかどうか調べる
-- 束縛されている場合 t
-- そうでない場合 nil
(fboundp 'foo)
;=> nil
(defun foo ()
nil)
;=> foo
(fboundp 'foo)
;=> t
* memq [#q6708ee9]
- member + q(か?)
- OBJECTがLISTの要素かどうか調べる
(memq OBJECT LIST)
-- then→OBJECTが最初に現れるところから始まるリストを返す
-- else→nil
* if, cond [#e08bd5a1]
** if [#m10e3c25]
- 1分岐しかできない
(if (evenp x) ; 条件部
(print "偶数です") ; then 節
(print "奇数です")) ; else 節
- 「条件を満たさないときに評価したい式」を省略できない
-- if の else 節が nil の場合 = when
(when test S式1 S式2 S式3 ..... )
-- if の then 節が nil の場合 = unless
(unless test S式1 ...) ≡ (when (not test) S式1 ...)
** cond [#g70124f2]
- たくさん分岐できる
(cond ( 条件部A S式A1 S式A2 ... )
( 条件部B S式B1 S式B2 ... )
・・・・・
( 条件部M S式M1 S式M2 ... )
( t S式T1 S式T2 ... ))
** format関数 - 出力関数 [#x96269d3]
(format destination control-sequence arg 0 ... arg n )
- destination :出力先を指定する
-- 明示的に出力ストリームを指定するとそこに出力
-- t にすると標準出力 (*standard-output*) に出力
-- nil にするとストリームには出力せず、出力を戻り値(文字...
--- 戻り値: destination が非 nil のときは nil 、 destina...
-- fill pointer付き文字列にすると、出力をその文字列に追加
- control-sequence :出力文字列
-- 文字列中のformatディレクティブ(Cの printf における %d...
- arg 0 ... arg n :それぞれの値が基本的には前から順に消...
RIGHT:[[ref.ファイヤープロジェクト:http://www.fireproject...
** ファイルへのアクセス [#d48b908d]
- ファイルにアクセスするための3つの基本操作
-- アクセスするファイルをオープンする(open)
--- アクセスするファイルを指定して、それと一対一に対応す...
-- 入出力関数を使って(ストリームを経由して)ファイルを読み...
-- ファイルをクローズする(close)
- これらをまとめて行ってくれる便利なマクロ with-open-file
(with-open-file (変数
ファイル名
:direction [:input / :output / :io / :p...
・・・)
-- 与えられたファイルをキーワード:directionで指定した方向...
-- 変数は局所変数として扱われ、with-open-fileが実行されて...
-- 引数として与えられた S 式を順番に評価する
-- with-open-fileの実行が終了すると、ファイルは自動的にク...
* ラムダリストキーワード [#bd4c6298]
|キーワード名|機能|
|&optional|引数のデフォルト値を設定|
|&rest|引数をリストにまとめて関数へ渡す|
|&key |キーワードの設定|
|&aux |補助変数の指定|
** &optional [#y1c8ef07]
- 指定された引数(オプションパラメータ)のデフォルト値を設...
- デフォルト値は (パラメータ デフォルト値)で指定
- 指定範囲は次のラムダリストキーワードorラムダリストの終...
((lambda (a &optional (b 10)) (+ a b)) 1 2)
=> 3
((lambda (a &optional (b 10)) (+ a b)) 1)
=> 11
- &optional b のように引数名だけ指定するとデフォルト値は ...
- オプションパラメータへの引数の指定
-- 実引数が省略された場合 -> デフォルト値がセットされる
-- 実引数が指定された場合 -> その値がセットされる
**&key [#m5bed1e2]
- 複数の引数にデフォルト値を設定する場合&optionalよりも&k...
- 指定された引数(キーパラメータ)のデフォルト値を設定する
- デフォルト値は (パラメータ デフォルト値)で指定
- 有効範囲は次のラムダリストキーワードorラムダリストの終...
; &key の使用例
((lambda (a &key b c) (list a b c)) 10)
=> (10 nil nil)
; デフォルト値の指定
((lambda (a &key (b 1) (c 2) (d 3)) (list a b c d)) 10 :...
=> (10 30 20 40)
; オプションパラメータとの比較
((lambda (a &key (b 1) (c 2) (d 3)) (list a b c d)) 10 :...
=> (10 1 2 20)
((lambda (a &optional (b 1) (c 2) (d 3)) (list a b c d))...
=> (10 1 2 20)
RIGHT:[[ref.M.Hiroi's Home Page / xyzzy Lisp Programming:...
ページ名: