Land of Lisp
Conrad Barski M.D.著、川合史朗訳
オライリー・ジャパン
ISBN978-4-87311-587-0
object-at
を実際に動かしてみよう
objects-at
を実際に動かしてみよう
object-at
関数を使って見つけ、
objects-at
関数を使って見つけ、
dot->png
のコード。書籍版のままでも動作しますが、生成されるdotファイルの名前が本文中の説明と食い違います。原書サポートページからダウンロードできるコードだと本文の説明と合致します。違いは3行目。
(defun dot->png (fname thunk) (with-open-file (*standard-output* (concatenate 'string fname ".dot") :direction :output :if-exists :supersede) (funcall thunk)) (ext:shell (concatenate 'string "dot -Tpng -O " fname ".dot")))
<DIV>
をトル
(setf (gethash 'my-key (nth foo 1)) 77)
(setf (gethash 'my-key (nth 1 foo)) 77)
maplist
の例の下
mapcan関数
の節の2行め
mapcan
は返されたリストを全てappend
したものを返す
mapcan
は返されたリストを全てつなぎ合わせたリストを返す
pick-monster
関数10行め
"That monster is alread dead."
"That monster is already dead."
userid=foo&password=supersecretpassword
userid=foo&password=supersecretpassword
read-sequence
使ってストリームから
read-sequence
を使ってストリームから
draw-tile
関数を呼ぶ準備が整った。
draw-tile-svg
関数を呼ぶ準備が整った。
three-way-if
の定義の5行め
(,val ,@c)
((not ,val) ,@c)
foo
に
foo
に
defparameter
の結果
#(NIL NIL NIL)
X
lables
はflet
と似ているが、
labels
はflet
と似ているが、
(save-file)))
(save-file))
x
にない新しいノードを見つけたら、その度に探索済みノードにpush
コマンドでそれを追加する。
push
コマンドで追加する。
push
を使って*animal*
リストに追加し
push
を使って*animals*
リストに追加し
hello-request-handler
のコード: 本文ではコードを簡略化するため、
本来出力すべきhttpのレスポンス行とrfc822ヘッダを省略している。
当時のブラウザはそれでも許容してくれていたようだが、最近のブラウザはレスポンスを厳密に
解釈して無効な応答としてしまうようだ。正しく動作させるコードは例えば次のとおり:
(defun hello-request-handler (path header params) (if (equal path "greeting") (let ((name (assoc 'name params))) (if (not name) (format t "HTTP/1.1 200 OK~%~%<html><form>What is your name?<input name='name' /></form></html>") (format t "HTTP/1.1 200 OK~%~%<html>Nice to meet you, ~a!</html>" (cdr name)))) (format t "HTTP/1.1 404 Not Found~%~%Sorry... I don't know that page.")))
find-empty-node
の実装が非常にナイーブで運が悪いと無限ループする。修正法もnatsutanさんが書かれている (訳注に入れとけば良かったかな)
draw-board-svg
関数の内側のloopのdo節で、タイルにリンクをつけるかどうかの判断の時、ダウンロードコードの方は現在選択されているタイルをチェックしていない。そのため一度選択したタイルを再クリックしてキャンセルすることができない。書籍のコードリストでは直っている。
1.2節(p.6)で「12章以前はどんなCommon Lisp処理系を使っても良い」とあるけれど、
7章p.115で処理系依存関数のext:shell
が使われていることが判明。
別処理系での代替コード、判明したものをここに貼っときます。
(defun dot->png (fname thunk) (with-open-file (standard-output fname :direction :output :if-exists :supersede) (funcall thunk)) (ccl:run-program "bash" '("-c" "/usr/bin/dot -Tpng") :input fname :if-output-exists :supersede :output (concatenate 'string fname ".png")))
saki (2013/02/25 03:47:17):
shiro (2013/02/25 06:11:12):
snufkon (2013/02/28 00:08:11):
shiro (2013/02/28 11:28:42):
snufkon (2013/03/01 10:24:49):
n (2013/03/02 14:46:16):
fu7mu4 (2013/03/03 07:29:26):
fu7mu4 (2013/03/03 07:43:11):
shiro (2013/03/03 08:00:49):
tsz (2013/03/03 12:47:11):
fu7mu4 (2013/03/03 15:43:11):
shiro (2013/03/04 01:28:32):
snufkon (2013/03/09 09:41:23):
shiro (2013/03/10 07:34:17):
fu7mu4 (2013/03/23 13:44:27):
shiro (2013/03/23 20:50:38):
peropero (2013/03/24 04:35:45):
peropero (2013/03/24 04:59:38):
peropero (2013/03/24 06:20:41):
ponkore (2013/03/24 13:21:59):
ponkore (2013/03/24 13:22:25):
fu7mu4 (2013/03/24 13:54:18):
shiro (2013/03/25 11:12:06):
ito (2013/04/08 04:53:54):
camel (2013/04/26 15:37:10):
aznn (2013/06/08 12:49:56):
shiro (2013/06/08 20:37:03):
amagi (2013/06/09 08:38:23):
aznn (2013/06/09 10:01:47):
amagi (2013/06/09 10:40:20):
hatsunetsu7 (2013/08/08 04:02:56):
shiro (2013/08/08 05:15:47):
kenji (2013/10/01 23:22:18):
kenji (2013/10/06 02:31:36):
shiro (2013/10/06 08:07:08):
taka (2013/10/31 10:28:50):
taka (2013/10/31 12:30:55):
hrk (2013/11/23 08:44:20):
lambda_sakura (2014/04/02 08:22:55):
shiro (2014/04/02 08:29:08):
daiki (2014/05/26 15:02:43):
shiro (2014/05/27 04:31:03):
shiro (2014/05/27 04:31:50):
aki426 (2014/06/20 12:11:45):
aki426 (2014/06/27 12:21:17):
aki426 (2014/07/09 06:04:19):
aki426 (2014/07/09 09:29:43):
shiro (2014/07/09 22:40:27):
daiki (2014/08/21 14:39:36):
shiro (2014/08/21 18:13:01):
shiro (2014/08/21 18:16:09):
daiki (2014/09/25 14:50:25):
daiki (2014/09/25 15:45:56):
usa (2016/01/28 14:15:35):
sto (2016/05/09 03:28:07):
shiro (2016/05/09 08:04:39):
non (2016/09/26 23:13:03):
shiro (2016/09/27 02:32:46):
kei (2016/11/05 03:06:58):
shiro (2016/11/05 03:28:15):
elect (2017/02/22 16:03:17):
elect (2017/02/22 17:30:21):
vel (2017/06/26 11:09:04):
LISP (2017/06/27 09:31:36):
shiro (2017/07/02 10:04:49):
vel (2017/11/05 13:54:08):