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

ansify 0.03.00 微妙に更新

大したものは実装してないんですが一区切りしたい気分だったのでリリースしておきます。 変更点 一部の型指定子をグローバルに修正するようにした xl-alexandria の `positive-real` 型などの問題が解消されるはず `(defun (setf READER) ...)` あたりを使え…

jaunte 0.00.01

Good night, Posterous の画像や説明を見て何となく実装してみました。たぶん大体似てる。 前回までのあらすじ window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) retu…

ロカール関数で (setf READER) を諦めた記録

CL だとこんなことができる。 ;; Clozure CL での例 CL-USER> (let ((table (make-hash-table))) (labels ((key (key) (gethash key table)) ((setf key) (value key) (setf (gethash key table) value))) (setf (key 1) "foo" (key 2) "bar") (maphash (lam…

ansify 0.02.00 ごちゃごちゃ更新

パッケージ "ansify" とは別に パッケージ "ansify.ext" を作っりました。ANSI 標準以外の物はこっちから export するようにしま(す|した)。"ansify.ext" からは以下の関数が export されてます。 ansify.ext:optimize-type-check ansify.ext:canonicaliz…

local-window-flag

http://xyzzy.s53.xrea.com/reference/wiki.cgi?p=set-local-window-flags で設定する行番号とかのやつ。 フラグは on か off か未設定か window と buffer がそれぞれにフラグを覚えてる 優先順位は buffer > window > (グローバルな設定) `get-local-win…

ansify 0.01.01 バグ修正

早速 id:miyamuko さんからバグ報告もらったので修正しました。毎度ありがとうございます。 case, typecase で `ansify::otherwise` ではなく `lisp:otherwise` を使うように修正 xyzzy には otherwise は無いものと思い込んでたけどあった print-unreadable…

case の途中で (otherwise ...)

keys---a designator for a list of objects. In the case of case, the symbols t and otherwise may not be used as the keys designator. To refer to these symbols by themselves as keys, the designators (t) and (otherwise), respectively, must be…

setf-values 0.01.02 更新しました

しょーもないミスでおかしな展開形になってたのを修正した(miyamuko さんからパッチ頂きました。ありがとうございます。)のと、変数以外の atom に setf しようとしたのはマクロ展開時にエラーに。 NetInstaller 用 packages.l 手動ダウンロード用 setf-va…

ansify 0.01.00 をリリースしました

今までバラバラに作ってた ANSI Common Lisp からもらってきたようなものを1つにまとめました。 具体的には NetInstaller 対応してたもの condition-restart symbol-macrolet typespec+ GitHub あたりでこっそり作ってたもの GitHub - bowbow99/xyzzy.typeca…

XTAGS #2 飛ぶ

タグジャンプ(jump-tag)できるようにするための何やら。 ローカル変数 ed:tags-find-target この変数にセットした関数が引数なしで呼び出されるので、カーソル位置の単語を調べて クラス名 名前 関数か否か を多値で返す。 3つ目の値は、nil なら変数、'li…

XTAGS #1 作る

XTAGS を作る(make-tags-file)ための何やら。 変数 ed::*maketag-list* XTAGS を作る時は ed::*maketag-list* に設定された (タグ作る関数 ワイルドカード...) に従ってワイルドカードにマッチするファイルをタグ作る関数で処理していく。ワイルドカードの…

Yet Another Common Lisp Problems #7 subseq

●問題7 リスト xs の n 番目から m - 1 番目までの要素を部分リストとして取り出す関数 subseq xs n m を定義してください。なお、リストの要素は 0 から数え始めるものとします。Common Lisp には同等の機能を持つ関数 subseq がありますので、ここでは関…

Yet Another Common Lisp Problems #6 drop

再開。 ●問題6 リスト xs の先頭から n 個の要素を取り除く関数 drop xs n を定義してください。なお、Common Lisp には同等の機能を持つ関数 nthcdr があります。 > (drop '(a b c d e) 3) (d e) > (drop '(a b c d e) 0) (a b c d e) > (drop '(a b c d e…

setf-values を更新しました

NetInstaller 用 packages.l 変更点 values の setf expander がインチキだったのをマシに subforms の setf expansion を使うようにした 戻り値にセットした多値を返すようにした lisp::setf-expand-1 のコード見直し 不要と思しきコードを削除した オリジ…

symbol-macrolet 更新しました。

NetInstaller 用 packages.l multiple-value-bind の body の先頭に symbol-macro を置いた場合に展開されなかったのを修正。どうして以前 lambda でほぼ同じバグを潰した時に修正しておかなかったのかと小一時間問い詰めたい。 ついでにリファレンスのファ…

Yet Another Common Lisp Problems #5 take

●問題5 リスト xs の先頭から n 個の要素を取り出す関数 take xs n を定義してください。 > (take '(a b c d e) 3) (a b c) > (take '(a b c d e) 0) () > (take '(a b c d e) 6) (a b c d e) 解答 ホームページ移転のお知らせ - Yahoo!ジオシティーズ 無駄…

Yet Another Common Lisp Problems #4 my-last, my-butlast

●問題4 リスト xs の最後尾を求める関数 last と、最後尾の要素を取り除く関数 butlast を定義してください。Common Lisp には同等の機能を持つ関数 last と butlast がありますので、ここでは関数名を my-last と my-butlast としました。 > (my-last '(a …

Yet Another Common Lisp Problems #3 longerp

●問題3 リスト xs はリスト ys よりも長いか調べる述語 longerp xs ys を定義してください。 > (longerp '(a b c) '(a b)) t > (longerp '(a b) '(a b)) nil > (longerp '(a) '(a b)) nil 解答 ホームページ移転のお知らせ - Yahoo!ジオシティーズ これも O…

Yet Another Common Lisp Problems #2 doublep

●問題2 リストの要素が二つあるか調べる述語 doublep を定義してください。 > (doublep '(a b)) t > (doublep '(a b c)) nil > (doublep '(a)) nil 解答 ホームページ移転のお知らせ - Yahoo!ジオシティーズ doublep って double-float-p と間違えそうだ。…

Yet Another Common Lisp Problems #1 singlep

なんか見つけたので気が向いた時に解いていってみよう。 ●問題1 リストの要素がただひとつか調べる述語 singlep を定義してください。 > (singlep '(a)) t > (singlep '(a b)) nil > (singlep '()) nil 解答 ホームページ移転のお知らせ - Yahoo!ジオシティ…

typespec+ を更新しました

NetInsaller 用 カフェイン中毒 変数の名前変えたのに古い名前のまま残ってたのがあったのを修正しました。せっかくなので紹介。xyzzy デフォルトの `typep` に未定義の typespec を与えると、黙って nil を返します。 (typep 3 'hoge) => nil typespec+ を…

condition-restart を更新しました

バグ修正とリファレンス書き直したり、とか。 NetInsaller 用 カフェイン中毒 変更点とか check-type でこないだ作った typespec+ を使うようにしました check-type 使ってたコードがちょびっと速くなったり、deftype した型を使えるようになります。 それで…

関数 abort と関数 muffle-warning

たぶん自分用メモ。CLHS ではこうなってるのだけど If no such restart exists, ..., and the functions abort and muffle-warning signal an error of type control-error.もし該当する再起動が見つからなければ、...、関数 abort および muffle-warning は…

Vim使いもEmacs小指になってしまえ

CopsLock キーを Ctrl にするのは有名だけど、うちで使ってる CapsLock キーの設定。窓使いの憂鬱で設定してる。 # 0. mayu では元々 Eisuu などという名前なので def alias = Eisuu # 1. Caps キーを Ctrl として使えるように mod ctrl += !!Caps # 2. Caps…

typespec+ をリリースしました

type specifier(型指定子、以下 typespec)をもっと便利に使いたいなと思って。 NetInsaller 用 カフェイン中毒 何が問題なのか? typep が比較的遅いだとか、xyzzy だと deftype した型は si:canonicalize-type しないといけないだとか、そんなこんなで ty…

symbol-macrolet を更新しました

いくつかバグ潰した。 symbol-macrolet 内の macrolet で定義したローカルマクロが展開されない場合があったバグを修正 オペレータに置いた lambda 式内の symbol-macro が展開されてなかったバグを修正 lambda, labels, flet, macrolet の lambda-list (仮…

eval-when

よくわかってなかったので調べた。ファイルのトップレベルに `(eval-when (SITUATION*) ...)` を書いて、色んな読み込み方をした場合に評価されるか否か。「ただの式」ってのは eval-when で包んでない場合。 --- :execute :load-toplevel :compile-toplevel…

アナフォリックマクロと package

via アナフォリックマクロとpacakge(2) - sileのブログit も一緒に export しといて使う側は use-package する、で個人的には困らないかなと思うのだけど、ライブラリとしてはまるっと use-package しなくてもマクロだけパッケージ名付きで `(anaph:awhen ..…