Kamuycikap - SentenceDataBase

日々の勉強の記録を気分で書き綴るブログ

EmacsLisp

Emacs Lisp: 置換(改)

Emacs Lisp: 置換(改) 以前に作ったreplを、リストの入れ子対応にする。 前に作ったものは、第一引数のリストであるlstの中で、第二引数のoldと等しい要素すべてをnewで置き換える関数です。 (defun repl (lst old new) (cond ((null lst) nil) ((eq (car …

Emacs Lisp: 再帰の再帰

Emacs Lisp: 再帰の再帰 再帰の定石(リスト入れ子バージョン) ●終了条件を調べ、終了なら初期値を返す ●リストの先頭の要素に対して処理をする。リストの先頭の要素がリストなら、そのリストと共に自分を呼ぶ。 ●処理結果を引数として自分自身を呼び出す こ…

Emacs Lisp: 等しいリスト

Emacs Lisp: 等しいリスト リストとリストを比べて同じかどうか調べる関数を定義してみる。 リストの要素は全てシンボルか整数であることと、2つのリストのそれぞれの要素がeqで比較するとtになることと考えます。 (defun equiv (x y) (cond ((and (null x)…

Emacs Lisp: 連想リスト

Emacs Lisp: 連想リスト ドット対リストです。 ドット対のcarが指すデータが、cdrで取得する値を連想させるデータになっているリスト。 '((rose . red)(violet . blue)(lily . white)) 連想リストを活用する関数「assq」を定義。 CommonLispにassocって名前…

Emacs Lisp: 集合

Emacs Lisp: 集合 ある対象データがある集合の要素かどうか、つまり、特定のシンボルが、リストの中に含まれているかどうか検出。 集合に含まれていれば「t」、そうでなければ「nil」を返す。 集合はリストで表現する。 関数の第一引数は検査対象となるデー…

Emacs Lisp: 再帰とリスト

Emacs Lisp: 再帰とリスト 関数引数として、リストが指定された場合、全て再帰的に処理するには? 再帰の定石(リストバージョン) ●終了条件を調べ、終了なら初期値を返す ●リストの最初の要素に対して処理をする ●処理結果を引数として自分自身を呼び出す 渡…

Emacs Lisp: 再帰について

階乗を作る 再帰処理で階乗を作る 再帰の定石 ●終了条件を調べ、終了なら初期値を返す ●引数に対して処理をする ●処理結果を引数として自分自身を呼び出す (defun factorial-test (n) (cond ((zerop n) 1) (t (* n (factorial (1- n)))))) (factorial 4) 差…

Emacs Lisp: 関数について  andとorを使ってみる

and と or Emacs Lisp メモ ;; 引数がリストかどうかを評価 (defun listp (x) (or (null x) (consp x))) (setq kin '(a b c d)) (listp kin) ; => t 閏年計算をandとorで書いてみる。 4で割り切れたら閏年 ただし100で割り切れたら普通の年 もし100で割り切…

Emacs Lisp: 関数について 整数の比較

整数の比較 Emacs Lispのメモ ;; 引数である整数がマイナスかどうかを評価 (defun Minusp (n) (cond ((< n 0) t) (t nil))) (Minusp -10) condを使う。 condは全ての条件を上から順番に評価する。 評価の結果、条件がtであれば、条件の中の処理を全て処理し…