Common Lispの束縛(自己参照型)

いまいちシンボルについてきちんと理解してないのでたまに混乱するのだけど、キーワードシンボルが束縛されているか調べてたのでエントリにしてみた。

自己評価型ってのはboundpは常にTを返すんですねぇ(Tとかnilも)。ここらへんは実際に実装してみれば理解が深まるのかなぁ。

Common Lisp入門

わかりやすかった。

ProductName Common Lisp 入門 (岩波コンピュータサイエンス)
湯浅 太一,萩谷 昌己
岩波書店 / ¥ 3,990 ()
通常24時間以内に発送

  • traceを使うと関数がどのように呼び出されたかわかる
  • 縦棒を使うと小文字をつかった印字名がつくれる |KzFm|

Common Lispのwebサーバー(hunchentoot)

macbookでaserveがうまく動かせないのでhunchentootを使ってる。日本語の通しかたをみつけたので早速。あとcl-whoもちょっといじってみた。

(require :hunchentoot)
(require :cl-who)
(setq *server* (hunchentoot:start-server :port 4242))
(setf (hunchentoot:log-file) "./server.log")
(setq hunchentoot:*hunchentoot-default-external-format*
     (flex:make-external-format :utf-8 :eol-style :lf))
(setq hunchentoot:*default-content-type* "text/html; charset=utf-8")
(setq hunchentoot:*dispatch-table*
     (list (hunchentoot:create-regex-dispatcher "^/$" 'hello-world)))
(defun hello-world ()
 (cl-who:with-html-output-to-string
     (str nil :prologue t)
   (:html (:head (:title "hello world"))
             (:body (:h1 "はろはろ リスプってますよ") (:br) (:img :src 
"http://ec2.images-amazon.com/images/I/51gfHrLAtTL._SS500_.jpg")))))

hunchentoot

このながれで、hunchentootでblosxomクローンでもつくってみるかな。

SLIMEのM-. M-,

setqについて書いた。

SLIMEのM-. M-, C-cC-mあたりがおもしろい

(incf x)をC-cC-mすると

(LET* ((#:G766 1) (#:NEW765 (+ X #:G766)))
  (SETQ X #:NEW765))

とマクロ展開される

SBCLのasdf:oosとrequire

SBCLのasdf:oosとrequireの違いがわからないという、解決も何にもしてないただ疑問だけのエントリーを書いた。

あと、Slimy Hackathon面白そうだ。参加したいところだが、、、、

emacs+slime+clojure+processingでaction-codingのようなことがやれればと思っているんだけど。clojure+processingで再帰的な図形が描ければ楽しいと思うんだよなぁ。

ProductName 計算機プログラムの構造と解釈
ジェラルド・ジェイ サスマン,ジュリー サスマン,ハロルド エイブルソン
ピアソンエデュケーション / ¥ 4,830 ()
通常24時間以内に発送

グループブログはモチベーションが保ててよい

pathnameについて書いた。

#Pって索引になくて、探すの難儀した。

ProductName 実践Common Lisp
Peter Seibel
オーム社 / ¥ 4,410 ()
通常24時間以内に発送

グループブログって初めて参加してみたけど、モチベーションが保ててよい。

Common Lispのwebサーバー

前回aserveがうまくいかなかったので、もうひとつのHUNCHENTOOTを試してみた。

(asdf-install:install 'hunchentoot)

だとこけるので、依存しているライブラリをひとつづつインストールした後改めてhunchentootをインストールしたらあっさり完了

hunchentoot

言語の組み込みのサーバーが動くとなんとなくワクワクする。

Simoのソース読み

ここのところOn Lispとか実践Common Lispを読んで、マクロって面白いなぁと。

という流れで、Simoのソースを読んでみた

そういえばModule::Compile::TTがあったのを思い出した。

That said, string level preprocessing of source code sucks. However, since Perl doesn't have a convenient AST to write Lisp-style macros and deeper templates (that are aware of Perl's own semantics), this module does fill a niche.

Lispだとマクロをガリガリ使えるのは抽象構文木のおかげ?そこらへんのモヤモヤが晴れないのは精進が足りないからか。

Common Lispでlast.fmのベストトラックをパース

この前の続き。

(asdf:oos 'asdf:load-op 'aserve)
(asdf:oos 'asdf:load-op 's-xml)

(setq result (net.aserve.client:do-http-request 
    "http://ws.audioscrobbler.com/2.0/user/kzfm/toptracks.xml"
    :format :binary))

(setq  data (s-xml:parse-xml-string (sb-ext:octets-to-string result 
    :external-format :utf8)))

s-xmlを使った。

((:|toptracks| :|user| "kzfm" :|type| "overall")
 ((:|track| :|rank| "1") (:|name| "Imaginary Folklore") (:|playcount| "169")
  :|mbid|
  (:|url| "http://www.last.fm/music/Clammbon+By+Nujabes/_/Imaginary+Folklore")
  ((:|streamable| :|fulltrack| "0") "0")
  (:|artist| (:|name| "Clammbon By Nujabes") :|mbid|
   (:|url| "http://www.last.fm/music/Clammbon+By+Nujabes")))
 ((:|track| :|rank| "2") (:|name| "アンパンマンのマーチ") (:|playcount| "78") :|mbid|
  (:|url|

結論:Nujabesのクラムボンrmxはよい

ProductName hydeout productions 2nd Collections
オムニバス,hydeout productions,emancipator,Shing02,Uyama Hiroto,DSK,Nujabes,clammbon by nujabes,Pase Rock,C.L.Smooth,Substantial,Five Deez
インディーズ・メーカー / ¥ 3,000 (2007-11-11)
通常24時間以内に発送

MooseとCLOSのこと

第4回Smiley Hackathon(仮)に参加してみることにしました!で、

なぬ、CLでMoose?と思ったので、lingrで色々教えてもらったら、Mooseのソース読まなきゃいけない気分になったのと、Smiley Hackathonに行きたくなったんだけど、予定が埋まってたので無理だった。

ProductName The Art of the Metaobject Protocol
Gregor Kiczales
The MIT Press / 5303円 ( 1991-07-30 )


これも読みたい。