* Menu
[[About:self:AboutPage.txt]] | [[Profile:file/southly/]] | [[まとめ:self:1163859357.txt]] | [[オリジナル:http://ninjinix.x0.com/rn/]] | [[xyzzy:lisp/]] | [[あんてな:listall]] | [[■:lisp]] | [[buzz:files/southly#buzz]]
page 0 - << : 0 : >>
* Common Lisp : ecl
* 2008-03-05 :
- マクロ展開が起こるのは評価時 or コンパイル時という理解でした。
- xyzzy の動作はまさしくこれですよね。
- sbcl はインタプリタがないので定義と同時にコンパイルされて、納得の結果。
- ecl はよく知らない。
- clisp の結果は自分にとってはちょっと不思議。
- 気になったので CLtL2 を確認してみたら、8章の最初のページにありました。
More generally, an implementation of Common Lisp has great latitude in deciding exactly when to expand macro calls within a program. For example, it is acceptable for the defun special form to expand all macro calls within its body at the time the defun form is executed and record the fully expanded body as the body of the function being defined.で、例えば defun での関数定義時にマクロを展開することもOKと書いてありました。
* memo : clispをさくらインターネットにインストール
clispはサーバーのOSバージョンが上がっても動いていたけど、clispの方もバージョンが上がっているので入れなおしてみた。
いまいちうまくいっていないのでもう一回入れなおそう。
必要なライブラリであるlibsigsegvがきっちり認識されない。
libsigsegvはコンパイルはできるがチェックでエラーが出る状態。
ということで --ignore-absence-of-libsigsegv を追加して作成。
本当は --with-module=bindings/glibc も指定する予定だったけれどうまくいかず、結局以下のような感じでインストール。
できあがった物。
いまいちうまくいっていないのでもう一回入れなおそう。
必要なライブラリであるlibsigsegvがきっちり認識されない。
libsigsegvはコンパイルはできるがチェックでエラーが出る状態。
$make check Making check in src Making check in tests make check-TESTS Test passed. PASS: sigsegv1 Test passed. PASS: sigsegv2 FAIL: stackoverflow1 FAIL: stackoverflow2 =================== 2 of 4 tests failed =================== *** Error code 1 Stop in /home/raido/local/src/libsigsegv-2.5/tests. *** Error code 1 Stop in /home/raido/local/src/libsigsegv-2.5/tests. *** Error code 1 Stop in /home/raido/local/src/libsigsegv-2.5.
ということで --ignore-absence-of-libsigsegv を追加して作成。
本当は --with-module=bindings/glibc も指定する予定だったけれどうまくいかず、結局以下のような感じでインストール。
cd local/src/ wget http://ring.sakura.ad.jp/archives/GNU/clisp/release/2.43/clisp-2.43.tar.bz2 tar xf clisp-2.43.tar.bz2 cd clisp-2.43 ./configure --ignore-absence-of-libsigsegv --prefix=$HOME/local --with-module=rawsock --with-module=wildcard cd src/ make make check make install
できあがった物。
$ clisp --version GNU CLISP 2.43 (2007-11-18) (built 3410886803) (memory 3410887057) Software: GNU C 3.4.4 [FreeBSD] 20050518 gcc -g -O2 -Igllib -W -Wswitch -Wcomment -Wpointer-arith -Wimplicit -Wreturn-type -Wmissing-declarations -Wno-sign-compare -O2 -fexpensive-optimizations -falign-functions=4 -DUNICODE -DDYNAMIC_FFI -DNO_GETTEXT -DNO_SIGSEGV -I. -x none libavcall.a libcallback.a -lreadline -lncurses SAFETY=0 HEAPCODES STANDARD_HEAPCODES SPVW_BLOCKS SPVW_MIXED TRIVIALMAP_MEMORY libreadline 5.0 Features: (READLINE REGEXP SYSCALLS I18N LOOP COMPILER CLOS MOP CLISP ANSI-CL COMMON-LISP LISP=CL INTERPRETER SOCKETS GENERIC-STREAMS LOGICAL-PATHNAMES SCREEN FFI UNICODE BASE-CHAR=CHARACTER PC386 UNIX) C Modules: (clisp i18n syscalls regexp readline) Installation directory: /home/raido/local/lib/clisp-2.43/ User language: ENGLISH Machine: I386 (I386) www658.sakura.ne.jp [59.106.19.88]
* 2007-03-29 (昼)
- 続きそうなので Xyzzy Wiki に場所を移しましょうか。
- shadowの件は納得です。ただ、unintern より makunbound の方がより直接的な気がします。
- ということで実験。
; 普通の状況 (progn (setq x 1) (defun f() x) ((lambda (x) (f)) 2)) =>1
; スペシャル変数に昇格 (progn (setq x 1) (defun f() x) ((lambda (x) (declare (special x)) (f)) 2)) =>2
; 束縛を解消 (progn (setq x 1) (defun f() x) ((lambda (x) (declare (special x)) (makunbound 'x) (f)) 2)) ->変数が定義されていません: x
; 束縛を解消その二 (progn (setq x 1) (defun f() x) (defun g() (makunbound 'x) (f)) ((lambda (x) (declare (special x)) (g)) 2)) ->変数が定義されていません: x
* 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 : 変数の種類
[[(ReadMore...) index.rb?1174689340.txt]]