LISP

Cusp

Eclipse の Cusp プラグインを使って Lisp アプリケーションを開発する http://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-lispcusp/?ca=drs- 昔入れてみた気がするけど,確かうまく行かなかったのでいつかリベンジ。 でもEclipse使わな…

consp

とあるコードを見ていて,「リストの終わりじゃなきゃXXをする」と書くべきところに (if (consp lst) ~ ~) と書かれていた。 一瞬なんで?と思ったけど,nilを渡すとnilが返るからですね。 なるほどー。 普通は (if (not (endp lst)) ~ ~) とかって書くもん…

var result = from x in Enumerable.Range( 0, 6 ) select Math.Pow( 2, x ); (loop for x in '(0 1 2 3 4 5) collect (expt 2 x) ) [2**x for x in range(6)]

多重人格

>(setf (symbol-function 'foo) #'(lambda (x) (* x foo))) foo >(setq foo 5) 5 >(foo 4) 20

range

Common LispにはPython等に見られるrange関数がないみたい(?)ですね。 (defun range (end &optional (start 0) &key (step 1)) (cond ((not (plusp (- end start))) nil) (t (let (acc) (do ((i start (+ i step))) ((>= i end) (nreverse acc)) (push i …

format始めました

format関数の勉強を始めました。 こいつを飼いならせる自信がありません。 この変態! >(dotimes (i 7 'end) > (format t "~VD~%" (expt 2 i) i) ) 0 1 2 3 4 5 6 end >(format t "~,,'.,5:D" 10000000000) 1.00000.00000 nil まだまだ始まりにすぎない・・・

rotatefマクロ

(setq a 1 b 2 c 3 d 4) (defun pnt () (print a) (print b) (print c) (print d) "====") >(pnt) 1 2 3 4 "====" >(rotatef a b c d) 1 >(pnt) 2 3 4 1 "====" >(rotatef a b c d) 2 >(pnt) 3 4 1 2 "====" 引数が2つなら入れ替えに使える。 shiftfっていう…

開発環境

ずっとSchemeの環境がなかったので,とりあえずDr.Schemeを入れた。 あと,無償のLispWorks Personal Editionをインストールした。 使い方がいまいち良くわからない・・・。 日本語の情報あまりないし,tutorial読みますか。。。

R6RS

http://www.r6rs.org/

reduce関数

http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp06.html の真ん中ぐらいにある「縮約」 HyperSpec : http://www.lisp.org/HyperSpec/Body/fun_reduce.html

第6回の宿題やらなきゃ!

勝手に宿題やってみる ttp://web.sfc.keio.ac.jp/~aihara/lisp06/hiki.cgi?%C2%E86%B2%F3%BD%C9%C2%EA

連想リスト

復習中心 >(setq al nil) nil >(setq al (acons 0 'zero al)) ((0 . zero)) >(push '(1 . one) al) ((1 . one) (0 . zero)) >(setq al (acons 2 'two al)) ((2 . two) (1 . one) (0 . zero)) >(assoc 1 al) (1 . one) >(rassoc 'zero al) (0 . zero) >(assoc…

memberの仕様

member item list &key key test test-not => tailmember-if predicate list &key key => tailmember-if-not predicate list &key key => tail(reference "http://www.lisp.org/HyperSpec/Body/fun_membercm__ember-if-not.html")

構造体

Lispの構造体はLispチックで非常にかっこいい。

defsetf

>(setq v 10) 10 >(macroexpand '(setf (symbol-value 'v) 20)) (set 'v 20) >(defsetf foo set) (setf foo) >(macroexpand '(setf (foo 'v) 30)) (set 'v 30) http://www.yuasa.kuis.kyoto-u.ac.jp/~komiya/tus-man/tus/node41.html(終わりのほう。Scheme…

(carに対して : 残りのリストに対して) mapcar : maplist mapc : mapl mapcan : mapcon (setq a '(1 2 3 4 5 6 7 8)) (mapcan #'(lambda (x) (if (evenp x) (list x))) a) -> (2 4 6 8) (defun mapcan2 (fn lst) (apply #'nconc (mapcar fn lst))) 集合 (set…

入院中の勉強内容

苦しかったり検査あったり眠かったり(熟睡できない...) 部屋が暑かったりで びっしり勉強はできなかったけど, ちょびちょび進めてました。 数学 結構復習をしました。 それとは別に30ページぐらい?進みました。 今は真理値とかブール演算とか。 初めて情…

体の具合がよろしくないので今日はぐーたらしてました。 でも突然Lispが書きたくなったので久しぶりにいじって遊んでた あと,OnLispを2章まで読んだ。(開いたの超久しぶり・・・苦笑

CommonLispのformat関数は

プログラマにもう少し思いやりの気持ちを持ってもいいんじゃないでしょうか。 仕事に戻ります。

スペシャル変数

(proclaim '(special sv)) (setq sv 99) (defun hoge1 (x) (let ((sv x)) (hoge2) "end")) (defun hoge2 () (print sv) ) ---- (hoge1 10) (print sv) 10 "end" 99

標準 Pascal によるモダンな Lisp の小さな実装 http://www.okisoft.co.jp/esc/llsp/L2Lisp in Ruby http://codezine.jp/a/article/aid/1492.aspx

今まで修行(?)のために繰り返し処理も再帰を使って表現していたため、 CommonLispが用意してるループマクロ類の使い方を全然知りませんでした。 というわけでメモ。

On Lisp

読み始めました。 と言ってもまだ7ページぐらいしか読んで無いけど・・・w 時間が無いのーー って言い訳するのはあまり好きじゃないんだけど(時間は皆に平等に割り当たっているんだぜ!)、 今月は結構リアルにキツイなぁ。笑 入院で3週間つぶれたのがジワ…

実装

2〜3週間ぶりに(苦笑)LISP製作活動をしました。 現実逃避プロジェクトの1つなので、作業時間は30分ちょっと。 環境の実装とシンボルのインターン/アンインターン、リストの実装を行った。 リスト(というか連結したセル)の出力処理はまだ書いてない。 次…

ツクール

Lispをもっと勉強したいなぁ。 ↓ Lispを使って何か作ってみるのがいいかもね! ↓ あ、じゃあ、Lisp作るか ということになりました。 思いつきなので後回しにする可能性高し・・・ # 特に7月は忙しくなりそうなので... C#で必要最小限なLispを作って、 あとは…

dynamic scope

(defun hoge1 (x y) (declare (special x y)) (+ x (hoge2))) (defun hoge2 () (declare (special x y))

Gaucheプログラミング http://karetta.jp/book-cover/gauche-hacks このkarettaだかっていうサイト面白そう。 もっと色々増えて欲しいなぁ。書く方は大変でしょうけど(^^;

マクロの練習

マックロくろ助出ておいで〜 でないと目玉を・・・・展開するぞこら!!! ・・・。 なんとなくマクロの練習をしておりました。 いつの日かOn Lisp読めるかなぁ。(知識的にも、積読リスト的にも.... まず、andを自分で定義してみる練習 (defmacro and2 (&rest …

お勉強中

defunがマクロだと知ったので、自分で定義できないかがんがってみました. なんか変になったような・・・? (defmacro define (func-name arg-list proc) `(let ((fn2 (quote ,func-name)) (expression #'(lambda ,arg-list ,proc))) (setf (symbol-function…

Kyoto Common Lisp...

GCL (http://www.gnu.org/software/gcl/)History GCL is the product of many hands over many years. The original effort was known as the Kyoto Common Lisp system, written by Taiichi Yuasa and Masami Hagiya in 1984. In 1987 new work was begun b…