COMMON LISP JP > Archives > 2009/11/20

2009/11/20 14:55:41 UTCmaru
#
Arthur Lemmensが[
#
「実践CommonLisp」を読んでいるという衝撃 :-)
2009/11/20 15:02:28 UTCg000001
#
なんか読み上げてた原稿も日本語で書いてあったらしいですね。すごい!
#
そしてChattonにfaviconが付いてる!!
#
s,tto,to,
2009/11/20 15:04:07 UTCmaru
#
僕はg000001さんのLisp博物館に期待です!
2009/11/20 15:16:15 UTCg000001
#
割と自分のブログは既にそういうのばっかりな気がするんですがww
2009/11/20 15:21:39 UTCmaru
#
体系的にまとめる予定はない感じ?
2009/11/20 15:24:34 UTCg000001
#
体系的にはStoyan先生がまとめていたような。あとGLSとRPGの
#
The Evolution of Lisp とか決定版があるような
#
割とこれボリュームあるんですよね
#
割と自分は、Lisp machine lispにあったdefunpとはなんだ?とか ちまちまどうでも良いことを探ってますねw
2009/11/20 15:28:58 UTCmaru
#
不思議なところにストライクゾーンがありますよね>g000001さん
#
僕はLispは好きだけど道具だと割り切っているところがあるので
2009/11/20 15:30:55 UTCg000001
#
謎のバリエーションがあるところに割とぐっときますね、自分はw
#
なのでlispの構文とかはぐっとくるわけなんですね。TAOとか最高ですw
2009/11/20 15:31:46 UTCmaru
#
日々の業務が忙しすぎて興味の赴くままに好きなことできないのがくやしいな〜
#
Lispの構文てw
#
皆どんなマクロ定義してんの?とかそんな話になっちゃうんじゃないの?
2009/11/20 15:33:42 UTCg000001
#
そうですね、そういえばPaul GrahamのOn lispとかには載ってないマイナーなユーティリティも面白いなーと思いながら写経してたことがあります
#
http://lib.store.yahoo.net/lib/paulgraham/utx.lisp
#
とか、よっぽどloop嫌いなんだなと思いましたw
#
この中からArcにはいったようにみえるのが結構ありますね
2009/11/20 15:35:37 UTCmaru
#
loop好き派とloop嫌い派は結構はっきり分かれる感じしますね
2009/11/20 15:36:33 UTCg000001
#
自分もloopの構文覚えるまではloopが嫌いだったんですが、覚えたら便利なんで使ってしまいますねw
2009/11/20 15:37:03 UTCmaru
#
僕は便利ならいいじゃん、って感じなので
2009/11/20 15:37:11 UTCg000001
#
loopは便利パターンをが数点ありますよね
#
s,をが,が,
2009/11/20 15:37:26 UTCmaru
#
何の躊躇もなく使いますね>LOOP
#
嫌いだったのはどんなところがアレだったんですか?
2009/11/20 15:38:04 UTCg000001
#
PGは目的に応じて細かめにマクロを書くみたいですね
#
loopの構文の規則がlispとは別の規則なんで
#
その辺りに違和感を覚えたという >嫌いなところ
#
doの方が好きでしたが、冗長なことが多いですね
2009/11/20 15:39:53 UTCmaru
#
ほほー。
#
僕はルールを強制することなくどんな趣味指向でも飲み込んでしまうlispの柔軟性が好きなので
#
変なマクロとか見ても変わったことしてんな〜とは思うけど嫌いとは感じないかなぁ
#
正解に至る道のりって考えた人の分だけあっていいと思ってるんで
2009/11/20 15:43:02 UTCg000001
#
なるほどなるほど
2009/11/20 15:43:22 UTCmaru
#
あれ指向じゃなくて嗜好の間違いだな
2009/11/20 15:43:34 UTCg000001
#
TAOは 変わったことしてんな〜 の嵐ですねw
2009/11/20 15:43:53 UTCmaru
#
その辺が「泥の玉」たる由縁かと
2009/11/20 15:44:30 UTCg000001
#
今日、88年のTAOのbitの連載のコピーを見せてもらう機会があったんですが
2009/11/20 15:45:22 UTCmaru
#
是非資料館作ってくださいw
2009/11/20 15:45:26 UTCg000001
#
deflogical-methodとかいう、恐らくメソッドのディスパッチと
#
ユニフィケーションを融合したなんだか分からないものを目にしましたw
2009/11/20 15:46:33 UTCmaru
#
それが生まれた背景を想像しながらニヤニヤしてる感じ?
2009/11/20 15:47:19 UTCg000001
#
そうですね、なんなのかなーと想像したりするという感じなので、まったくプログラミングとは関係なかったりしますねw
2009/11/20 15:48:24 UTCmaru
#
なるほど。ちょっとわかるかもw
2009/11/20 15:48:42 UTCg000001
#
あと、100年もすれば、プログラミング言語の考古学のようなものは成立してるんじゃないかなと
#
いや、まったくプラクティカルじゃないですねw
2009/11/20 15:53:24 UTCmaru
#
実用第一のと、完全に趣味に走ったのと、いろいろあっていいと思いますよ
#
その方がたのしいし.たぶん :-)
2009/11/20 15:55:56 UTCg000001
#
ですねー、lispはこういうところも面白いですね
2009/11/20 16:37:33 UTCleque
#
プログミング考古学は面白いですねー
#
Computer Language History http://www.levenez.com/lang/ でニヤニヤできる層にはたまらないかも
2009/11/20 16:39:03 UTCgaraemon
#
自分はだいぶ実用第一派だなー
2009/11/20 16:45:43 UTCg000001
#
いや、それが正しい姿じゃないかとw
2009/11/20 16:46:53 UTCgaraemon
#
loop覚えるまえにiterateおぼえちゃいました.
2009/11/20 16:47:54 UTCg000001
#
上の表はlisp的にはもうちょっと詳しくできそうですよね
#
そういえば、iterでパラレルに変数を束縛するのって
#
どうやるんでしょう?
#
iterって変数の更新が確かdo*みたいな動きですよね
#
そこがあまり好きになれなかったという…
#
そういえば、do*もあまり好きじゃないな
2009/11/20 16:58:02 UTCg000001
#
通常の式と混ぜられるってのは良いですよね > iter
#
loopとかは、collectとかしたくても混ぜられないので
2009/11/20 16:58:57 UTCgaraemon
#
うーん, 僕にはよくわからんです. っていうかiterとかcollectとforしかつかってない...
2009/11/20 17:00:36 UTCg000001
#
loopよりはS式的な感じで書けるのが良いですよね
#
(ITER (FOR I :FROM 1 :TO 10)
      (FOR J :FROM I :TO 10)
      (COLLECT (LIST I J)))
;⇒ ((1 0) (2 1) (3 2) (4 3) (5 4) (6 5) (7 6) (8 7) (9 8) (10 9))
#
(LOOP :FOR I :FROM 1 :TO 10
      :FOR J :FROM I :TO 10
      :COLLECT (LIST I J))
;⇒ ((1 1) (2 2) (3 3) (4 4) (5 5) (6 6) (7 7) (8 8) (9 9) (10 10))
2009/11/20 17:03:14 UTCleque
#
Paul Graham は Yale T な人なんでしたっけ。 Scheme 寄りの感覚だと loop はちょっと抵抗があるかも
#
http://www.paulgraham.com/thist.html
2009/11/20 17:04:32 UTCg000001
#
あれ、時分でも良く分からなくなってきたww
#
iterで値が違うってのが良く分からないというか、マニュアル読んできますw
#
loopは賛否ありますよねー
#
Tも復活したら面白いですね
#
あ、コード大文字でうざくてすいませんw
#
(let ((z 1))
  (loop :for x :from 1 :to 10
        :and y :from z :to 10
        :collect (list x y)))
;⇒ ((1 1) (2 2) (3 3) (4 4) (5 5) (6 6) (7 7) (8 8) (9 9) (10 10))
#
loopだとandで並列に回せるんですが、iterだとandに相当するものは、なにになるのかなというところですね
#
zを外に出してる意味ないなw
#
xにするべきだったか
2009/11/20 17:19:34 UTCgaraemon
#
うーん, iterateじゃできないのかなー
#
というか(list i j)の一回目のjが0になってるのはまずいと思います.
#
(iterate:iter (iterate:for i from 1 to 10) (iterate:for j first i then\
 (1+ j))  (iterate:collect (list i j)))
#
あわわわpprintされてない
#
(ITERATE:ITER                                                                   
  (ITERATE:FOR I FROM 1 TO 10)                                                  
  (ITERATE:FOR J FIRST I THEN (1+ J))                                           
  (ITERATE:COLLECT (LIST I J)))
#
=> ((1 1) (2 2) (3 3) (4 4) (5 5) (6 6) (7 7) (8 8) (9 9) (10 10))
#
firstを使えということなのかな?
#
iterate.pdfの12ページより
2009/11/20 17:23:43 UTCg000001
#
それはloopだと
#
(loop :for x :from 1 :to 10
      :for y := 1 :then (1+ y)
      :collect (list x y))
;⇒ ((1 1) (2 2) (3 3) (4 4) (5 5) (6 6) (7 7) (8 8) (9 9) (10 10))
#
かなと思うんですが
2009/11/20 17:26:48 UTCgaraemon
#
3.5 Parallel Binding and Steppingっていう節がマニュアルにありますねー
2009/11/20 17:27:09 UTCg000001
#
(let ((x -100))
  (loop :for x :from 1 :to 10
        :and y := x :then (1+ y)
        :collect (list x y)))
;⇒ ((1 1) (2 2) (3 3) (4 4) (5 5) (6 6) (7 7) (8 8) (9 9) (10 10))
2009/11/20 17:27:10 UTCgaraemon
#
The parallel binding and stepping of variables is a feature that iterate does not have.
#
らしいです
2009/11/20 17:27:31 UTCg000001
#
loopも動作が分からなくなってきたw
#
なるほどなるほど
2009/11/20 17:32:43 UTCg000001
#
とりあえず、定番のパターンだけ使ってあまり込み入ったパターンは使わないようにしようということでしょうかw
2009/11/20 17:38:05 UTCgaraemon
#
実装が結構ナイーブなのかな-
#
(defvar *temps*)とかは不安になるな-. MT-safeじゃなさそう.
#
threadつかうならloopの方がいいのかも.