* Menu
page 0 - << : 0 : >>
* 2009-02-20 :
- やばいなぁ。emacsの設定にハマり始めた。
- 慣れたxyzzyの快適さに微妙に届かないのが気になるんだよなぁ。
- popup-listが恋しい...
* memo : xyzzy lisp FFI
いつかちゃんとまとめたい。
- 基本
- データ型関連
- int -> c:int, double -> c:double, ...
- ポインタ型は「(c:char *)」というようなリストの形で表現
- C の構造体は c:define-c-struct で定義
- C の関数を呼ぶ関連
- c:define-dll-entry で C 関数のインターフェースを作る
- c:define-dll-entry RETURN-TYPE NAME (&rest ARGS) DLL-NAME &optional EXPORT-NAME
- RETURN-TYPE 関数の戻り値
- NAME 関数名
- ARGS 関数の引数
- DLL-NAME DLLのパス
- EXPORT-NAME Cの関数名 (DLLでexportされているもの)
- データのやり取りは chunk を介する
- C から呼べる関数(callback関数)を作る関連
- c:defun-c-callable で作る
- c:defun-c-callable RETURN-TYPE NAME (&rest ARGS) &body BODY
- RETURN-TYPE 関数の戻り値の型
- NAME 関数名
- ARGS 関数の引数
- BODY 関数の定義
- データのやり取りは chunk を介する、ということで同上
- 注意点
- 下手をすると簡単に xyzzy が落ちることを頭に入れておく
- gc に注意する
- gc で回収されないオブジェクトを作らない
- C の関数が動いているときに chunk が gc されないように気をつける
- ポインタ型は全部「void *」とみなしても問題ない
- 「void *」は「unsigned long (32bit unsigned integer)」と等価として扱うこともできる
- xyzzy の未実装やバグにも注意
- その他、外部とのやり取り
- dde
- ole
* Common Lisp : 文字列中のエスケープシーケンスを解釈する
とりあえずできた。REPL では動作確認できた。
要 cl-interpol。
SANO さんの情報がなかったらどうにか interpol-reader を使えないか、悩んでいたかも。サンクスです。
(ReadMore...)
要 cl-interpol。
SANO さんの情報がなかったらどうにか interpol-reader を使えないか、悩んでいたかも。サンクスです。
(ReadMore...)
* memo : asdf を使う
さくらのサーバにインストールした clisp で asdf を使うための一連の作業をメモ。
clisp には asdf が付属していないのでソースを取得する。
ついでにコンパイルしておく。
ここからしばらく clisp での作業。
$HOME/local/lisp/ を lisp ファイル置き場にすることにしたので、ここをロードパスに追加する。
asdf.lisp をロード。
asdf:*central-registry* にパスを追加。$HOME/local/lisp/systems/ にした。
ここに *.asd ファイルへのシンボリックリンクを置くようにする。
この状態でGUESSを使えるようにする。
ソースをダウンロードして、展開、シンボリックリンクを張る。
clisp でロード。初回はコンパイルした上でロードしてくれる。
clisp での作業は初期化ファイルにでも書いておく。clispの場合は $HOME/.clisprc 辺り。
clisp には asdf が付属していないのでソースを取得する。
$ cd $HOME/local/lisp $ wget "http://cclan.cvs.sourceforge.net/*checkout*/cclan/asdf/asdf.lisp" $ clisp -c asdf.lisp
ついでにコンパイルしておく。
ここからしばらく clisp での作業。
$HOME/local/lisp/ を lisp ファイル置き場にすることにしたので、ここをロードパスに追加する。
[1]> (push (merge-pathnames "local/lisp/" (user-homedir-pathname)) custom:*load-paths*) (#P"/home/raido/local/lisp/" #P"./" "~/lisp/**/")
asdf.lisp をロード。
[2]> (load '#:asdf) ;; Loading file /home/raido/local/lisp/asdf.fas ... ;; Loaded file /home/raido/local/lisp/asdf.fas T
asdf:*central-registry* にパスを追加。$HOME/local/lisp/systems/ にした。
ここに *.asd ファイルへのシンボリックリンクを置くようにする。
[3]> (push (merge-pathnames "local/lisp/systems/" (user-homedir-pathname)) asdf:*central-registry*) (#P"/home/raido/local/lisp/systems/" *DEFAULT-PATHNAME-DEFAULTS*)
この状態でGUESSを使えるようにする。
ソースをダウンロードして、展開、シンボリックリンクを張る。
$ cd $HOME/local/src/lisp $ wget http://lispuser.net/files/guess.tar.gz $ tar xf guess.tar.gz $ cd ../../lisp/systems/ $ ln -s $HOME/local/src/lisp/guess_0.1.0/guess.asd .
clisp でロード。初回はコンパイルした上でロードしてくれる。
[4]> (asdf:oos 'asdf:load-op :guess) ; loading system definition from /home/raido/local/lisp/systems/guess.asd into #<PACKAGE ASDF0> ;; Loading file /home/raido/local/lisp/systems/guess.asd ... ; registering #<SYSTEM :GUESS #x20538B31> as GUESS ;; Loaded file /home/raido/local/lisp/systems/guess.asd ;; Compiling file /home/raido/local/src/lisp/guess_0.1.0/guess.lisp ... ;; Wrote file /home/raido/local/src/lisp/guess_0.1.0/guess.fas ;; Loading file /home/raido/local/src/lisp/guess_0.1.0/guess.fas ... ;; Loaded file /home/raido/local/src/lisp/guess_0.1.0/guess.fas 0 errors, 0 warnings NIL以上。
clisp での作業は初期化ファイルにでも書いておく。clispの場合は $HOME/.clisprc 辺り。
(push (merge-pathnames "local/lisp/" (user-homedir-pathname)) custom:*load-paths*) (load '#:asdf) (push (merge-pathnames "local/lisp/systems/" (user-homedir-pathname)) asdf:*central-registry*) (asdf:oos 'asdf:load-op :guess)ロードするものが多くなって起動に時間がかかるようになったら、メモリイメージを保存して起動時にこっちを読み込むようにする。
* 2007-05-09
- xyzzyオフのお知らせ→http://raido.sakura.ne.jp/southly/xyzzy/xyzzy-off5.png
- 2007-05-26 18:00 上野 です。その他、不明な点はNANRIまで。
- 前回参加者でmixi経由ではない人にはメールを送っておきたいものの、前回のメールが見つからない...orz
- bulbさんは確実っぽいのでメーります。
- KaMailV3へ移行した直後あたりの時期っぽいなぁ。何かへまをしたのかな?
* 2007-03-27
- 「On Lisp」確保
- 赤塚さんのxyzzyの説明がなくなってるなぁ
- abbrev, インデント, コンパイルはいりそうな気がする
- 「変数の種類」という観点からの説明だから、個々の状況の説明まではしなかったんだよなぁ
- ダイナミックスコープってそういうものというか、環境を超える効果を持っているのがスペシャル変数というイメージですね>「スペシャルであるかどうかということは環境の古いものから引き継ぐ」
; トップレベル (setq x 1) ; 実験用関数 (defun f() x) ; lexicalな束縛 ((lambda (x) (f)) 2) => 1 ; (declare (special x)) によって、この環境ではxがスペシャル変数に昇格 ((lambda (x) (declare (special x)) (f)) 2) => 2 ; また新しい環境なので通常のlexicalな束縛 ((lambda (x) (f)) 2) => 1
* xyzzy : 変数の種類
* 2007-03-06
- セクションの件
- ライセンスという大仕事をした後なので、今の時期はあんまり大きくいじる気力がありません。
- ですけど、やりますということでしたら、相談くらいはのります。
* Scrapbook : Elementary, ... ドラクエ風に写真を説明
* 2007-02-28
- Repositoryの構成については相談しないといけないなと思っていました。
- 他人のパッチの取捨選択はしたいので、ユーザーごとに干渉しない方が都合がいいです。
- なので、以下のようにrootでユーザーごとのディレクトリを作る構成がいいかなと思っています。
root/ ├original/ │ └trunk/ 亀井さんのオリジナルのソース ├nanri/ │ ├trunk/ ユーザーごとのHEAD │ ├tags/ │ └branches/ └user/ ...
- あとはコミットログを記述するときのポリシーとか情報交換の場所とかがいるかなと思います。このへんはまた後でご相談。
* 2006-10-18
* xyzzy lisp : へなちょこ補完その3
* xyzzy lisp : へなちょこ補完その2
* xyzzy lisp : へなちょこ補完
* memo :
キー操作でemacsのメニューにアクセス
ついでなのでlisp-modeのキーバインド
clispのarglistの表示はそっけなくて不便。
ほんとにarg0, arg1, ... なんて使ってるの?
<f10> tmm-menubar
ついでなのでlisp-modeのキーバインド
C-x C-e lisp-eval-last-sexp C-c C-v lisp-show-variable-documentation C-c C-f lisp-show-function-documentation C-c C-d lisp-describe-sym C-c C-a lisp-show-arglist C-c C-k lisp-compile-file C-c C-l lisp-load-file C-c C-c lisp-compile-defun C-c C-r lisp-eval-region C-c C-e lisp-eval-defun C-c C-z switch-to-lisp ESC C-x lisp-eval-defun ESC C-q indent-sexp
clispのarglistの表示はそっけなくて不便。
ほんとにarg0, arg1, ... なんて使ってるの?
page 0 - << : 0 : >>