2009-01-01から1年間の記事一覧

values への setf 対応させる patch

昨日の values への setf で書いたコード(lisp/setf.l への patch)貼るの忘れてたので、http://xyzzy.s53.xrea.com/wiki/index.php?patch%2F30 に貼っておいた。(たしか)Cygwin の diff -u で作ったんだけど、なんか改行が不可思議なことになってたので …

values への setf

defsetf とか define-setf-method とかの使い方はよく知らんのだけど、まぁ何とかなるかなーと思ってた。世の中そんなに甘くなかった。 define-setf-method (setf (access-fn args) new-value) とゆー風に呼び出される access-fn への setf を定義する defin…

install ruby, rubygems and ditz

## ruby をインストール $ apt-cyg install ruby ## rubygems をインストール $ mkdir rubygems $ cd rubygems $ wget http://rubyforge.org/frs/download.php/57643/rubygems-1.3.4.tgz $ tar zxvf rubygems-1.3.4.tgz $ cd rubygems-1.3.4 $ head README =…

GitHub の syntax-highlight

xyzzy-lisp のファイル(*.l)が色つかない。*.lisp にしてみたら付いた(common-lisp 色)んで、拡張子見て判断してるっぽい。うーん。"filename.l を common-lisp として扱え" なんてリクエストしていいもんだろうか。とゆーか language:xyzzy-lisp があれ…

GitHub に置いときました

http://github.com/bowbow99/ xl-expectations.l symbol-macrolet.l どっちも「リリースしました!」とか言える状態ではないんで、えーと、その、お察しください。GitHub のリポジトリは、管理画面からリポジトリ名の変更とかリポジトリの削除をできそうなん…

GitHub

Git

準備 参考 http://rewish.org/tools/cygwin_github ## インストール $ apt-cyg install git ## git の設定 $ git config --global user.name "bowbow99" $ git config --global user.email bowbow99@gmail.com $ git config --global ui.color auto ## githu…

Cygwin-1.7 入れてみた

git 使いたいがために何度となく試しては使わなくなった cygwin に再挑戦。と思ったら 1.7 とゆー新しいのが出たというので。 apt-cyg 昔 cyg-apt という python のを試してみたら動いたんだけど、今回はどうにも動かせなかったんでこっちを試してみた。 Goo…

クリック対応 SandS を諦めた

こないだ 2ch の mayu スレで 月は空き地でいっぱい | 繭tips 第3回 というのを知って試してみたけど、完全に望んだ動作はさせられなかったという話。やりたかったのは: Space をふつーに押すと Space 入力 Space を押したまま他のキーを押すと、S- Space を…

なんちゃって symbol-macrolet

(defmacro symbol-macrolet (defs &body body) (labels ((rplatom (old new forms) (cond ((null forms) nil) ((atom forms) (if (eq forms old) new forms)) (t (cons (rplatom old new (car forms)) (rplatom old new (cdr forms))))))) `(progn ,@(dolist…

CodeRepos に申し込んだ

CodeRepos か GitHub かーと迷ったけど、以下の理由でとりあえず CodeRepos に。 Subversion は一応使ったことあるんで取っつきやすいだろう 「放流」という言葉がえらく気に入った YappoLogs: CodeRepos - 個人レポジトリを共有しよう!計画 けど git は便…

when と and - higepon blog

個人的にはタイプ数が多くなっても「条件」と「処理」が区別できるから when が好き。なので条件が複数の場合でも when 使う。 (when (and <condition-1> <condition-2>) <do whatever>)</do></condition-2></condition-1>

そろそろ公開する準備しよう

簡単なとこ(utility とか)のみだけど自分の spec 書いて自分で verify できるようになった。 (specify values-of (expect (values-of '(a b c d) #'car #'cadr #'cddr) (returns 'a 'b '(c d))) (expect (values-of 'a #'identity) (returns 'a)) (expect …

なにかあったら出力

(format t "~:[~;~:*~S~]" <なにか>) #1: nil/non-nil で分岐 "~:[こっち~;そっち~]" という format 文字列を置いとくと、そこに与えられる引数が nil なら "こっち" が、non-nil なら "そっち" が出力される。 (format t "~:[nil だぉ・・・~;non-nil だぉ!!…

xl-expectations.l minimal なの

(expect (+ 1 2 3) (returns 6)) => t (expect (concat "foo" "bar") (returns "foobar")) => t (expect (add 1 2 3) (returns 6)) (add 1 2 3) Expected: return 6 Actually: signaled undefined-function. => nil (expect (+ 'foo 'bar) (signals type-err…

パッケージと名前のプレフィックス

xyzzy の拡張 lisp では「-」みたいな名前をつける習慣がある。たとえば complete+-select-prev-item みたいな。たぶん package system の無い emacs での習慣をそのまま持ってきたんだと思う。これは拡張ごとに package 作っちゃって「:以下、"extension" …

最小化しよう

書いてるうちに「あんなこともできそう」とか「こんなんできたら便利くさい」とか思いついちゃって全然終わらないので、最低限だけのもの作ってしまおう、ということにした。 (expect (+ 1 2 3) (returns 6)) => t ;なにか non-nil な値 (expect (add 1 2 3)…

正規表現リテラル

質問箱/262 - XyzzyWiki 正規表現中のクォートの取り扱い先に言うとたぶん無理。 # $str =~ /"(.*?)\./s; この行はコメントになって、後の行が全部文字列色になっちゃうってことはない。それは「"」が出現したのがコメントの中なので、その「"」は文字列の開…

structure の conc-name

structure の定義は (get ' 'si:structure-definition) で得られるのはわかったけど、そっから conc-name を見つける方法がわからなくて struct.l を3時間くらい読んでみた。結果、structure の定義を作ってる si::*make-structure-definition なる関数に co…

最近わかった気になってきたこと

書き始めてしまえばけっこーなんとかなる ただし、そのコードは汚い それでも書いてるうちにイメージがはっきりしてくる 結論: いいから黙ってコード書いてろ

コンスセルを展開させてみた

そもそも、これを読んで「へぇーへぇーへぇー」とか言ってた。 alist 例.((foo . 1) (bar .2) ...)とplist 例.(foo 1 bar 2 ....)の使うコンスセル数は同じことが知られています。 10分でコーディング x 2 〜リストの破壊的操作篇〜 - わだばLisperになる …

listp と consp の違い

(listp nil) => t (consp nil) => nil ふむ・・・。nil は cons ではない、と。 (atom nil) => t そして nil は atom だ、と。なんか釈然としないがそうなんだから仕方がない。

Given-When-Then

BDD 云々について調べてたら Google グループ を見つけて、んでまぁチラチラと過去ログ読んでたら GWT という(考え方の)フレームワークがあった。 Given: ○○な(状態|状況)で When: ××をしたら Then: △△(が起きる|になる) ちょっと Given というのがわかり…

リストの破壊的操作

リストの破壊的操作をする - 象徴ヶ淵 経由http://cadr.g.hatena.ne.jp/g000001/20090521/1242909362 の問題 nalist-to-plist (nalist-to-plist '((foo . 1) (bar . 2) (baz . 3))) => (foo 1 bar 2 baz 3) らしい。(key1 value1 key2 value2 ...) という li…

#n# とか #n=ナントカ とか

ちゃんとした説明を読んだことが無いので間違ってるかもしれない。この記法(?)のちゃんとした名前を、そんなものあるのかどうかも知らないけど、知らないのでどう調べていいのかわからない。"common-lisp #n#" とかでググっても # が無視されちゃうみたい…

lisp の説明をする簡単なお仕事です

バイト先にコンピュータ関係の学科の大学生がいて、何を間違ったか lisp の勉強をし始めたらしく(プライベートで)、バイト中に lisp の質問をしてくる。 「2番目の要素」? なにやら lisp の本を読んでるらしくて、例題にあった「与えられたリストの2番目…

データっていうか高階関数なら使えます

データが扱える人を探せ! - 象徴ヶ淵 経由 JAVA5.0でGO!! | プログラミングに自信があるやつこい!!こないだ トランプを配 ったらトラックバックをもらったのでお礼?お返し?に、という建前で遊んでみた。こーゆーの楽しい。ついでに言うと他の人の見…

symbol-value と boundp はlexical な binding を無視する

(let ((x 'foo)) (symbol-value 'x)) => 変数が定義されていません: x (let ((x 'foo)) (boundp 'x)) => nil なんで・・・ Notes: The function bound determines only whether a symbol has a value in the global environment; any lexical bindings are i…

interactive で任意の動作をさせる list について調べた

selection があれば selection の region があれば region の C-u されてれば、現在行の前後の行の C-u されてればバッファ全体の それ以外なら現在行の start と end を受け取る interactive なんてのがあれば便利かなぁ、という気がしたので作ってみる。 …

interactive で任意の動作をさせる list のまとめ

interactive の引数として list を渡せばおk list を返す方法は、単にそこに書いてある式が評価される(っぽい)のでどーにでもなる interactive にした関数の各引数は、その list の各要素に束縛される 順番は、えーと、respectively。(ひとつめの引数は…

落書き、もしくは妄想

昔書く書くと言ってた「テスト用のなにか」。名前が無いと不便なのでとりあえず xl-behave としたんだけど、subversion の repository とか trac とか考えると名前を変更するのってけっこーめんどい予感。書く書くと言って全然書いてないのは、どういうもの…