http://d.hatena.ne.jp/rubikitch/20081120 より
(count #\0 (format nil "~{~D~}" (loop :for i :from 0 :to 1000 :collect i)))
;=> 193
Commom Lisp は文字列を弄ることが出来るから面白い。
http://d.hatena.ne.jp/rubikitch/20081120 より
(count #\0 (format nil "~{~D~}" (loop :for i :from 0 :to 1000 :collect i)))
;=> 193
Commom Lisp は文字列を弄ることが出来るから面白い。
反省会というより、単なるログです。
[~/lisp/]$ ls chaos-cadr.tar.gz disk.img.tar.gz usim.tar.gz [~/lisp/]$ tar fxvz usim.tar.gz [~/lisp/]$ tar fxvz disk.img.tar [~/lisp/]$ cd usim [~/lisp/usim]$ ln -s ../disk.img disk.img [~/lisp/usim]$ ./usim起動まで50秒弱 [Intel celeron M, 1.40GHz] 起動後に現在の日時を聞かれるので"月/日/年 時:分"のように答える
***CADR [Running]*** Please type the date and time: 1/17/81 22:20 Time is Saturday the seventeenth of January, 1981; 10:20:00 pm, OK? Yes This is band 1 of CADR diskmaker image. System 78.48 Zmail 38.5 Tape 6.5 LMFS 21.34 Symbolics 8.13 Microcode 841 Distribution Unknown, with associated machine UNKNOWN. _後はここからEmacsの*scratch*バッファよろしくS式を書くらしい
見つけたキーバインド F2-f: ファイルシステムエディタ起動 F2-l: Listener(最初の画面)に戻る F2-e: Zmacs起動, (ed) F2-m: Zmail起動キーボードは101配列、106配列がごっちゃになっていた (なぜ?)
---106配列
1234567890-^\
qwertyuiop@[
asdfghjkl;:]
zxcvbnm,./\
!"#$%&'()~=~|
QWERTYUIOP`{
ASDFGHJKL+*}
ZXCVBNM<>?_
---Lispマシンエミュレータ
1234567890-^\
qwertyuiop@[
asdfghjkl;:]
zxcvbnm,./\ (backslash)
!@#$%^&*()_^|
QWERTYUIOP@{
ASDFGHJKL::}
ZXCVBNM<>?|
見つからなかったキー
quote('),doublequote("),backquote(`),plus(+),tilde(~)
解像度が1024x768だと縦幅が足りない…
サイズの変更も出来るらしいんだけど、挫折(泣)
Lispマシンエミュレータ起動画面
をぼんやり見ていて、そういえば FUNCTION と COERCE では環境が違うってうちの CLISP が言ってたのを思い出した。
(funcall '(lambda (x) (1+ x)) 1) ;; => Error ;; *** - FUNCALL: argument (LAMBDA (X) (1+ X)) is not a function. ;; To get a function in the current environment, write (FUNCTION ...). ;; To get a function in the global environment, write (COERCE '... 'FUNCTION).
CLHS にもそれらしい記述があったのでメモ。
CLHS: Function COERCEIf the result-type is function, and object is any function name that is fbound but that is globally defined neither as a macro name nor as a special operator, then the result is the functional value of object. If the result-type is function, and object is a lambda expression, then the result is a closure of object in the null lexical environment.
= objectがマクロ、スペシャル・オペレータ以外でグローバルに定義されたfboundな関数名を持っているなら、そのobjectの関数値を返す。 objectがラムダ式なら、空レキシカル環境なobjectのクロージャを返す。
CLHS: Special Operator FUNCTIONThe value of function is the functional value of name in the current lexical environment.
= functionは現在のレキシカルな環境を持ったnameの関数値を返す。
この環境を引数に渡せる関数、マクロはいくつかある。 ラムダリストキーワードに &environment を持つものがそれで、例えば setf とか push とか。
(arglist 'setf) ;=> (&WHOLE SYSTEM::WHOLE-FORM &REST SYSTEM::ARGS &ENVIRONMENT SYSTEM::ENV)
macroexpand も環境を引数に渡せるが、こちらはなぜか &optional になっている。
(arglist 'macroexpand) ;=> (FORM &OPTIONAL ENV)
万能プレーヤーである VLC media player の起動アイコンがクリスマス仕様になっている事に気づいた。
Google のトップページが時期によって模様替えされるのは何度か見たけれど、こういう遊びをするソフトウェアって少ないんじゃないかな。