Source of Nothingness - ...

* Menu

About | Profile | まとめ | オリジナル | xyzzy | あんてな | | buzz

* 2009-02-20 :

* memo : xyzzy lisp FFI

いつかちゃんとまとめたい。

* Common Lisp : 文字列中のエスケープシーケンスを解釈する

とりあえずできた。REPL では動作確認できた。
要 cl-interpol。
SANO さんの情報がなかったらどうにか interpol-reader を使えないか、悩んでいたかも。サンクスです。
(ReadMore...)

* memo : asdf を使う

さくらのサーバにインストールした clispasdf を使うための一連の作業をメモ。

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

* 2007-03-27

; トップレベル
(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 : 変数の種類

(ReadMore...)

* 2007-03-06


* Scrapbook : Elementary, ... ドラクエ風に写真を説明

 http://e8y.net/blog/2007/02/27/p142.html

* 2007-02-28

root/
 ├original/
 │ └trunk/      亀井さんのオリジナルのソース
 ├nanri/
 │ ├trunk/      ユーザーごとのHEAD
 │ ├tags/
 │ └branches/
 └user/
  ...

* 2006-10-18

* xyzzy lisp : へなちょこ補完その3

絞込み
(ReadMore...)

* xyzzy lisp : へなちょこ補完その2

候補の絞込みしていなかったのを修正。
(ReadMore...)

* xyzzy lisp : へなちょこ補完

C/C++とかJavaとかのメンバをdabbrevライクに補完
てきとー
(ReadMore...)

* memo :

キー操作でemacsのメニューにアクセス
<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, ... なんて使ってるの?