LISP
Eclipse の Cusp プラグインを使って Lisp アプリケーションを開発する http://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-lispcusp/?ca=drs- 昔入れてみた気がするけど,確かうまく行かなかったのでいつかリベンジ。 でもEclipse使わな…
とあるコードを見ていて,「リストの終わりじゃなきゃ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
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関数の勉強を始めました。 こいつを飼いならせる自信がありません。 この変態! >(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 まだまだ始まりにすぎない・・・
(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読みますか。。。
http://www.r6rs.org/
http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp06.html の真ん中ぐらいにある「縮約」 HyperSpec : http://www.lisp.org/HyperSpec/Body/fun_reduce.html
勝手に宿題やってみる 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 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チックで非常にかっこいい。
>(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章まで読んだ。(開いたの超久しぶり・・・苦笑
プログラマにもう少し思いやりの気持ちを持ってもいいんじゃないでしょうか。 仕事に戻ります。
(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が用意してるループマクロ類の使い方を全然知りませんでした。 というわけでメモ。
読み始めました。 と言ってもまだ7ページぐらいしか読んで無いけど・・・w 時間が無いのーー って言い訳するのはあまり好きじゃないんだけど(時間は皆に平等に割り当たっているんだぜ!)、 今月は結構リアルにキツイなぁ。笑 入院で3週間つぶれたのがジワ…
2〜3週間ぶりに(苦笑)LISP製作活動をしました。 現実逃避プロジェクトの1つなので、作業時間は30分ちょっと。 環境の実装とシンボルのインターン/アンインターン、リストの実装を行った。 リスト(というか連結したセル)の出力処理はまだ書いてない。 次…
Lispをもっと勉強したいなぁ。 ↓ Lispを使って何か作ってみるのがいいかもね! ↓ あ、じゃあ、Lisp作るか ということになりました。 思いつきなので後回しにする可能性高し・・・ # 特に7月は忙しくなりそうなので... C#で必要最小限なLispを作って、 あとは…
(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…
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…