CommonLisp

WindowsのSBCLでSBCL_HOME/siteにasdf-install

今までASDFは全く使ってなくて外部ライブラリはCL-PPCREを手動で入れてたくらいなんだけど、明後日のLTにあるcl-irregsexpの予習のためにも使えるようにしてみる。letter: [Common Lisp] Windows の SBCL で asdf-install を動かすにある.sbclrcを 非cygwin…

CLでAO Bench (3)

http://gist.github.com/66945 rayも生成しなおす必要は全く無いなーと思ってちょっと手直し。ついでにoptimize宣言も付けて実行。 Evaluation took: 14.621 seconds of real time 14.562500 seconds of total run time (14.218750 user, 0.343750 system) […

続AO Bench

CLでAO bench - * *scrap* 続き。どうしたら効率的且つスマートに(Lisp的に)書けるかよく分からず、やけくそとばかりに副作用を使いまくって使い捨てvectorを減らしたり無差別に型指定をつっこんだりなどした結果 sbcl 34sec -> 20sec xyzzy 1406sec -> 728s…

CLでAO bench

間違ってたのここだけだった。 (defun clamp (f) (let ((i (* f 255.5))) (cond ((> i 0) 255) ((< i 255) 0) (t (round i))))) これはひどいベンチ結果は Evaluation took: 34.715 seconds of real time 32.491060 seconds of total run time (30.518454 us…

作りかけ

http://lucille.atso-net.jp/aobench/ scheme実装をちら見しつつjs実装をざっくり移植してみたんだけどうまく行かない。 あーどっかで割り算間違えたかなーと思って見直して、明らかに+と*を間違えてるとことか間違ったマクロ定義してる箇所を直したら 見た…

formatメモ

あなごるのFF PP ZZでなんとかkozimaさんに追いつきたいなーと思いながらこの辺を見てた時に気になった機能などをメモ。 capitalize 説明はこの辺 LLGolf Hole2の解説でPythonのtitleメソッドと一緒に紹介されてたのを思い出してPythonのリファレンスを漁っ…

妄想format

format の痒いのに手が届かないところ - kozima の日記 - cadr group 「format の痒いのに手が届かないところ」に挑戦! - 'T - cadr groupelisp風のformatもあればエスケープ地獄は逃れられるかなあという事でsrfi-28を写経&改変して使うという色々と間違っ…

format練習

参考: X, XYZ (anarchy golf) - kozima の日記 - cadr group (defun Y (n) (dotimes (i n) (format t "~V@TY~:[~VTY~;~]~%" (min #2=(floor n 2)i) (<= #2# i) (- n i 1)))) (defun Z (n) (dotimes (i n) (format t (if (> (1- n) i 0) "~VTZ~%" "~*~V@{Z~}~…

とりあえず

あなごるからどう考えてもtimeoutになるネタ。 Koch Island c=[" ","/","\\"] t=[[s=[0,0,0,0],s,s,s], [[0,0,0,1],[1,2,0,2],[2,0,2,1],[1,0,0,0]], [[2,1,2,0],[0,0,1,0],[0,1,0,0],[0,2,1,2]]] def(grow)^(m): (m.map^(l): l.foldl([[],[],[],[]])^(a,e):…

続brainf*ck

CLで無駄に実装3つ書いた。 前のポストのコードの修正版 ジャンプ処理を統合 ごく普通のインタプリタ実装 ふつう リーダーマクロ #^から^までの文字列をBrainf*ckコードとして処理して、テープの最終状態とポインタ位置を多値で返す テープの長さは100固定で…

初brainf*ck

Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~作者: 原悠出版社/メーカー: 毎日コミュニケーションズ発売日: 2008/12/20メディア: 単行本(ソフトカバー)購入: 8人 クリック: 148回この商品を含むブログ (70件) を見るまず付録を読んでから戻っ…

CyanでCLのfind系関数っぽいものを生成するマクロ

定義に使うだけなのでselfの退避先以外の(必要なかった)シンボルは決め打ち。捕捉とかも大丈夫、だと思うけどどうだろう? 引数の取り方もアレだけど定義に使うだけなので以下略 def(Object.equal)^(obj): (.parent == obj.parent) && (self == obj) mac(make…

mapf書いてみる

【どう書く】MDL/Muddleのmapfを作る - 'T - cadr group 殆ど書き上げてからfinal-function省略時にleave, stop使わなかった場合の結果ってどうするんだ? ってことに気付いて初めて仕様書見に行くとかダメすぎる。 (with-gensyms (leave ret stop end) (defu…

shibuya.lisp Techtalk #1

http://shibuya.lisp-users.org/2008/10/15/sltt-1-ust/Willowのゲネプロともろ被りorz ニコ動うpに期待…

sbcl 1.0.21.18

--scriptオプションが追加されたとのことで、CVSから拾ってきて試してみる。 -> Win32用野良ビルド(doc付き) C:\sandbox\cl>sbcl --version SBCL 1.0.21.18 C:\sandbox\cl>sbcl --script palindromic-quine.l This is experimental prerelease support for t…

cutとか

Guacheのリファレンスを眺めてたら便利そうなものを見つけた。 Gauche ユーザリファレンス: 4.3 手続きを作る しかしmacroexpand-1しても良く分からないし、参照実装も殆ど理解できなかったので適当にざっくり書いてみる。 (defun cut-internal (proc exprs-…

#?=

read関数の引数がいけなかったらしい。 (defmacro debug-print (form) (with-gensyms (l v i) `(progn (format t "~&#?= ~S~%" ',form) (let ((,l (multiple-value-list ,form))) (loop for ,v in ,l and ,i = 0 then (1+ ,i) do (format t "~&#?~[-~:;+~] ~…

続・compact-number-list他

畳み込みを使ったコードが出てきてたのを見て、CLで書いてみた。 (defun compact-number-list (x) (reduce #'(lambda(n r) (let ((c (car r))) (if (eql (1+ n) (or (safe-car c) c)) `((,n .,(or (safe-cdr c) c)) ,@(cdr r)) `(,n ,@r)))) `(,@x nil) :fro…

スマートかどうかは置いといて

http://d.hatena.ne.jp/higepon/20080925/1222326246 とりあえずCLで書いてみよう。 (defun compact (nums) (let (result) (labels ((cpush (from end) (push (if (= from end) end (cons from end)) result)) (rec (from end l) (cond ((null l) (reverse (…

CommonLisp勉強会

ログをあさってたら名前が出てきたので寝ボケつつも急遽参加。 しょっぱなからネットストーカー怖っ!と思われそうな自己紹介してた気がするので補足しておくと、xyzzy本読んで奥付見たときに「同い年か!」と感銘を受けた記憶があるのです。On Lispの訳者さ…

いつになったら実践的なコードを書くんだか

Grassで脳がパズルゲーモードになってるところで、100問到達してからしばらく放置してたProject Eulerを再開してみる。 いつの間にやら随分カラフル、というか多機能になってるなーとりあえず最近の問題からサービス問題っぽいとこを。 Problem 203 - Projec…

まったく書いてないわけでもないんだけど

PCLの最初のあれを参考にLivedoor Clipのエクスポートファイルをdelicious形式に変換するコードを書いたりしたのだけど、ほぼ使い捨て。そしてxyzzy専用。 (require 'xml-parser-modoki) (defmacro get-tagname (el) `(car ,el)) (defmacro get-attributes (…

あとで

http://www.shinh.org/p.rb?Palindromic+Quine (format t #1="~%(format t #1=~S #1#(reverse #1#))))#1# esrever(#1# ~S=1# t tamrof(" #1#(reverse #1#))))#1# esrever(#1# "(format t #1=S~ #1#(reverse #1#))))#1# esrever(#1# S~=1# t tamrof(%~"=1# t …

GrassでLLGolf Hole 8 準備

(load "grass-primitive.l") (defun % (&rest arg) (reduce #'funcall arg)) (defun $ (&rest arg) (reduce #'funcall arg :from-end t)) (defvar y (lambda (f) ($ (lambda (g) ($ f (lambda (x) (% g g x)))) (lambda (g) ($ f (lambda (x) (% g g x))))))…

LLGolf Hole 8

doukaku.org 最初に書いたコード。 (do*((e(read))(i(- e)(1+ i)))((= i e))(dotimes(j(- e(abs i)))(princ"*"))(princ #\NewLine)) 微妙だなあと思って投稿しないでいたらformatを使った回答が。 ;mc #7421(2008-08-27 19:25) [ Common Lisp ] (format t "~…

xyzzy lispで簡易destructuring-bind

sbclでdestructuring-bindをmacroexpand-1した結果を見てみて、なんとなくやってる事がわかった気がしたので&keyや&wholeを省いた簡単なものを自前で書いてみた。 (defmacro simple-dbind (varlist valuelist &body body) (let ((whole (gensym)) binds) (la…

多値

算数パズルを解くとき等に便利なmultiple-value-bindとかmultiple-value-listとかの多値を扱うマクロや構文は、名前が長ったらしいのがちょっと嫌。 Arcなら短かい名前付いてそうだと思って調べてみた所、そもそも多値がない模様。残念。 Schemeにはreceive…

LLGolf Hole 5

doukaku.org 反射的に投稿してしまった。 (do((a 1)(e(read)))((< e(incf a(expt 10(floor(log(print a)10))))))) expt floor log なんとかならないかなと思ったけど思いつかない。

LL Golf Hole 4

doukaku.org 正規表現使わずに、CLとxyzzyで動くよう解いてみる。 (defun llgolf4 (f) (flet ((p (c) (or (alpha-char-p c) (digit-char-p c)))) (with-open-file (s f) (do ((h (make-hash-table :test #'equal)) (r 0 (1+ r)) (l "" (read-line s nil))) (…

SBCL 1.0.19

Windowsでメモリ確保に失敗する不具合が改善されたらしい。 (via: http://cadr.g.hatena.ne.jp/haiju/20080807#1218118603) 1.0.13は環境(メモリの空き?)によって全く問題なく動いたり、clear type切ると動いたり、起動オプションのdynamic-space-sizeで調整…