g000001 2008-05-01T11:30:03+09:00
あー、てすてす。本日は晴天なり。
(setq slime-compile-with-maximum-debug 3)
(defun fib (n)
  (declare (optimize (debug 3)))
  (if (< n 2)
      n
      (+ (fib (1- n))
	 (fib (- n 2)))))
;(defun fib (n)
;  (declare (optimize (debug 3)))
;  (if (< n 2)
;      n
;      (+ (fib (1- n))
;	 (fib (- n 2)))))
view pasteすればちゃんと整形されて表示されるのか、なるほど。
(DEFUN SOURCE-COMPARE-FILE-UPDATES (FILE &AUX CURRENT-PROBE INSTALLED-PROBE)
  (UNWIND-PROTECT
    (PROG (CURRENT-VERSION INSTALLED-VERSION FILE-TO-COMPARE)
	(SETQ CURRENT-PROBE (OPEN FILE ':PROBE))
	(COND ((ERRORP CURRENT-PROBE)
	       (FORMAT T "~% No source for ~A  (~A)" FILE CURRENT-PROBE)
	       (RETURN NIL))
	      (T (SETQ CURRENT-VERSION (FUNCALL CURRENT-PROBE ':TRUENAME))))
	(SETQ INSTALLED-VERSION (FUNCALL (FUNCALL FILE ':GENERIC-PATHNAME)
					 ':GET
					 ':QFASL-SOURCE-FILE-UNIQUE-ID))
	(COND ((NULL INSTALLED-VERSION)
	       (FORMAT T "~%Installed version of ~A unrecorded, trying oldest" FILE)
	       (GO OLD))
	      ((STRINGP INSTALLED-VERSION)
	       (SETQ INSTALLED-VERSION (FS:PARSE-PATHNAME INSTALLED-VERSION))))
	;Get installed version from current sys host, not the one it was compiled on
	(SETQ INSTALLED-VERSION (FUNCALL CURRENT-VERSION ':NEW-VERSION
					 (FUNCALL INSTALLED-VERSION ':VERSION)))
	(SETQ INSTALLED-PROBE (OPEN INSTALLED-VERSION ':PROBE))
	(COND ((ERRORP INSTALLED-PROBE)
	       (FORMAT T "~%Installed version ~A not available (~A), trying oldest" 
		         INSTALLED-VERSION INSTALLED-PROBE)
	       (GO OLD))
	      (T
	       (SETQ FILE-TO-COMPARE INSTALLED-VERSION)
	       (GO COMP)))
  OLD	(SETQ FILE-TO-COMPARE (FUNCALL CURRENT-VERSION ':NEW-VERSION ':OLDEST))
	(SETQ INSTALLED-PROBE (OPEN FILE-TO-COMPARE ':PROBE))
	(COND ((ERRORP INSTALLED-PROBE)
	       (FORMAT T "~% Can't get oldest version (~A), giving up." INSTALLED-PROBE)
	       (RETURN NIL)))
	(SETQ FILE-TO-COMPARE (FUNCALL INSTALLED-PROBE ':TRUENAME))
  COMP  (COND ((SAME-FILE-P FILE-TO-COMPARE CURRENT-VERSION)
	       (COND ((AND INSTALLED-VERSION
			   (SAME-FILE-P INSTALLED-VERSION CURRENT-VERSION))
		      (FORMAT T "~%No change to file ~A" FILE))
		     (T (FORMAT T "~%Only one version to compare ~A" FILE))))
	      (T (FORMAT T "~%Comparing ~A~% and ~A~%"
			   (ZWEI:DESCRIBE-FILE-ID (FUNCALL INSTALLED-PROBE ':INFO))
			   (ZWEI:DESCRIBE-FILE-ID (FUNCALL CURRENT-PROBE ':INFO)))
		 (*CATCH 'SYS:COMMAND-LEVEL
		   (SRCCOM:SOURCE-COMPARE FILE-TO-COMPARE CURRENT-VERSION)))))
    (AND INSTALLED-PROBE (NOT (ERRORP INSTALLED-PROBE)) (CLOSE INSTALLED-PROBE))
    (AND CURRENT-PROBE (NOT (ERRORP CURRENT-PROBE)) (CLOSE CURRENT-PROBE))))
結構大きめのものでもおkらしい。
Zach Beane(xach)氏がSLIMEを壊したという話。
http://xach.livejournal.com/170158.html
xach氏の変更により、数引数を付けて、slime-compile-defun(C-u C-c C-c)すると、
(declare (optimize (debug 3)))が付くようになったらしい。
これのせいで、CVS版SLIMEは、SBCLは、1.0.8以上でないとまずくなったらしい。
ChangeLogより
2008-04-17  Zach Beane 

	C-c C-c with prefix args now uses the maximal debug level.
	Only implemented for SBCL.
	
	* slime.el (slime-compile-with-maximum-debug): New variable.
	(slime-compile-defun, slime-compile-region): Use it.

	* swank.lisp (compile-string-for-emacs): Accept new debug
	argument. Update backend accordingly.
手元で確認したところ、最新のCVS版でc-u c-c c-cしてコンパイルすると、確かにディスアセンブルの結果はdebug 3になっている模様。

quek 2008-05-01T14:02:21+09:00
(print 'こんにちは)

名無しさん 2008-05-01T14:02:54+09:00
(print 'こんにちは)
あれ二重にログインしてしまっているのかな

quek 2008-05-01T14:03:56+09:00
仕事中のくせにのぞきにきました。g000001 さんの行動力には脱帽です。

名無しさん 2008-05-01T14:04:14+09:00
おお、お仕事頑張ってください! 
いや、行動力というか
暇なのでw
ちょくちょく覗きにきてください!

quek 2008-05-01T14:06:20+09:00
SBCL って
(declaim (optimize (debug 3) (safety 3)
                   (speed 0) (space 0) (compilation-speed 0)))
とかやると結構動かなかったりするんですよね。

名無しさん 2008-05-01T14:07:13+09:00
え、そうなんですか
自分はステップ実行もしないので、

quek 2008-05-01T14:07:25+09:00
(declaim (optimize debug)) くらいで我慢してます。

名無しさん 2008-05-01T14:07:37+09:00
debugもあまり使わないのですがw
いまいちステップ実行の旨味を理解していないという…
なるほど

quek 2008-05-01T14:09:50+09:00
私も CL ではステップ実行は使わないです。使い方を知らないだけかもしれませんが、使いにくい。

名無しさん 2008-05-01T14:10:21+09:00
あ、そうなんですか。debugというとステップ実行という先入観がありましたw
ソースコードレベルでステップ実行してくれるんだとばかり思ってて
それができないので、放置してましたw

quek 2008-05-01T14:12:04+09:00
確かスタックトレースが詳しくなるので、使ってます。

名無しさん 2008-05-01T14:12:35+09:00
なるほど。色々ご利益はあるのですね。
自分もデフォルトでc-u c-c c-cするように
しようかな
なんかお仕事中なのに
引き止めるようなことしてしまって
すいません(^^;
Lingrは監視するツールが使えたりとか
ログが後でみれたりとか
できるので、ここも2chみたいな感じで使っていただけたらと思っています。

quek 2008-05-01T14:19:47+09:00
仕事のことはいいです(笑

名無しさん 2008-05-01T14:20:12+09:00
そうなんですかw

quek 2008-05-01T14:20:13+09:00
c-u c-c c-c って何ですか? debug でコンパイル?

名無しさん 2008-05-01T14:20:30+09:00
最新のslimeだと
cvs版のですが
そういう風に変更になったみたいですね
少し上にネタとして
投稿してみました、なにも話題がないのも寂しいのでw
C-c C-cは今までと同じなのですが、
C-uでdebug引数を指定できるみたいなのですが、
C-uは4ですし、謎ですねw
C-u 3 C-c C-cでもいいのかな?

quek 2008-05-01T14:26:17+09:00
なるほど、いいことを教えてもらいました。

名無しさん 2008-05-01T14:26:41+09:00
slime-compile-with-maximum-debugってことなので、
onかoffかしかないみたいですね(^^;
手元で確認してみても、とりあえず何かつければ、
BREAK 15 ; single-step trap (before)
とかつくようになりますね。
disassembleの結果には。

quek 2008-05-01T14:35:52+09:00
アセンブラのことはよく分からないのですが、そんの感じでステップ実行のとっかかりをコンパイルしてるんですね。
なんとなく、もっとインタプリタ的にやってるのかと思ってました。

名無しさん 2008-05-01T14:36:32+09:00
そうなんでしょうね。自分もアセンブラはわからないのですが、結果が違っていたので
なんとなく書いてみましたw

g000001 2008-05-01T16:01:17+09:00
てすと、てすと。なるほど、サインインしてなかったんだな。
stumpwmとratpoisonの作者が同じだったとは知らなかった…
http://bc.tech.coop/blog/080427.html
とはいえ自分はstumpwmしか使ったことはないですがw

名無しさん 2008-05-01T21:08:35+09:00
なんだか判りませんけど
とりあえず 参加

g000001 2008-05-02T00:12:09+09:00
yosiさん、こんばんは
なにかCLで分からないことがあったりしたら
ここで質問して頂ければ
私が分かる範囲なら
レスさせて頂きます!
翌日くらいまでにはw
tszさんの「hyperspecをanythingから引く」というのが便利そう!
http://d.hatena.ne.jp/tsz/20080501/1209651989

名無しさん 2008-05-02T01:32:31+09:00
記念カキコ。

g000001 2008-05-02T01:48:11+09:00
こんばんわ!>maruさん
Gauche部屋でよく見かけてましたw
そのmaruさんでしょうか?
Allegroに詳しい方だったと記憶しているのですが、機会がありましたら色々ご教授ください!

名無しさん 2008-05-02T01:54:10+09:00
よくわからないけど住まわしてもらいます。
あら。見つかった(汗

g000001 2008-05-02T01:54:39+09:00
こんばんは!

名無しさん 2008-05-02T01:54:51+09:00
Allegroそんなに詳しくないっスよ。KRCの頃にちょいと使ってたくらいで。
で、なにかCLで分からないことと言えば・・・

g000001 2008-05-02T01:55:54+09:00
よろしくおねがいします>佐野さん
はいはい

名無しさん 2008-05-02T01:56:11+09:00
○○○の日本語版はいつ頃発売されそうですか?>佐野さん
よろしくお願いします。
とか書いたら殺されそうな希ガス
殺さないけどそっくりそのままお返しする方向で
どうでしょう?
とか

g000001 2008-05-02T01:57:05+09:00
お二人は知り合いなんですねw

名無しさん 2008-05-02T01:57:25+09:00
6月頭まで週末も研修が... orz

g000001 2008-05-02T01:58:12+09:00
佐野さんはもの凄く交流範囲が広いなあ

名無しさん 2008-05-02T01:58:21+09:00
えと、原稿のレビューをお願いしている一味の片割れだとご理解ください>g000001さん

g000001 2008-05-02T01:58:50+09:00
なるほど、そうなんですか(^^

名無しさん 2008-05-02T01:59:17+09:00
この場合世間が狭いんだと思います
今後ともよろしくお願いします。

g000001 2008-05-02T01:59:39+09:00
よろしくお願いします!

名無しさん 2008-05-02T01:59:44+09:00
いや、佐野さんは交流範囲広いと思うぞ。

g000001 2008-05-02T01:59:48+09:00
狭いといっても
自分が目にする方々と
大概の場面で既に知り合いというw
そんな光景ばかり見ていますがw
ですよね>maruさん

名無しさん 2008-05-02T02:02:23+09:00
rhg 素人sicp xyzzyで人脈コンプリートできるので
それで人脈広いっていうのは
多分やっぱり違うと思います

g000001 2008-05-02T02:02:49+09:00
そうなんですかw
でも割と分野的に近そうでいて
ばらけてる気もしますが
勉強会につかえないかとおもって
部屋を開設してみたのですが
どういう風に勉強会につなげて行くかが
まったく見えないw

名無しさん 2008-05-02T02:05:54+09:00
オンライン勉強会って良くわからないのですが、オフライン準備用には使えるんじゃないかと思います

g000001 2008-05-02T02:06:13+09:00
なるほど、なるほど

名無しさん 2008-05-02T02:06:20+09:00
しきりにオンラインオンラインいってましたけど
何か反省する点があったんですか?

g000001 2008-05-02T02:06:44+09:00
いや、基本ひきこもりなんで
外に出たくないかなみたいなw

名無しさん 2008-05-02T02:07:08+09:00
そうか…

g000001 2008-05-02T02:07:19+09:00
あと、会場の用意が色々難しいですねw
この前は、最悪の事態は回避できましたが、かろうじてw

名無しさん 2008-05-02T02:08:26+09:00
ぉ。久しぶりにLispネタですね>Bill Clementson's Blog
人数的にダメになりえないですよね

g000001 2008-05-02T02:08:40+09:00
10人くらい集められるとまた違った感じになるんですしょうけどw
そうですね、一時Erlangにご執心でしたが>>Bill Clementson's Blog

名無しさん 2008-05-02T02:09:19+09:00
何の勉強会ですか?

g000001 2008-05-02T02:09:25+09:00
そうですね4人ですからw
SLIMEの勉強会を
いきなり開いてみたんです
ルノアールでw

名無しさん 2008-05-02T02:10:22+09:00
なる。Allegro使ってなければSLIMEバンザイ派だったかも。

g000001 2008-05-02T02:10:31+09:00
自分的には割と色々新しい発見はできたかなとはおもっているんですが…

名無しさん 2008-05-02T02:10:39+09:00
最近はもっと進化してるんだろな>SLIME

g000001 2008-05-02T02:10:49+09:00
EliとかSLIMEより便利らしいですよね
基本的な機能は
3年前くらいから変わってないかも
しれません

名無しさん 2008-05-02T02:11:25+09:00
Allegroのこわいところは

g000001 2008-05-02T02:11:30+09:00
が、ちょこちょこ変更はされてはいる感じですね

名無しさん 2008-05-02T02:11:51+09:00
他の処理系使って仕事するモチベーションが持続できなくなること。

g000001 2008-05-02T02:12:01+09:00
確かにw
便利そうですよね
しかも、仕事で必要なところが特に

名無しさん 2008-05-02T02:13:17+09:00
実際便利。何でもっと流行らないんだろうという気もするけど

g000001 2008-05-02T02:13:53+09:00
やっぱり高額だからでしょうか?

名無しさん 2008-05-02T02:14:00+09:00
何で流行ると思うんだろう?

g000001 2008-05-02T02:14:05+09:00
でも仕事だったらどうにかなりそうだけど…

名無しさん 2008-05-02T02:14:06+09:00
という方向ではどうでしょう
K田さんみたく下手に普及してよくわかってない人達の手でおかしなことになるくらいならマイナーなままでいい、ってのもわからないではないです。

g000001 2008-05-02T02:14:55+09:00
まさに、私がその方向に進めようとしていますねww

名無しさん 2008-05-02T02:15:17+09:00
逆に考えますか>佐野さん

g000001 2008-05-02T02:15:34+09:00
ま、普及はしそうにないなあと
思ったりはしますねえ

名無しさん 2008-05-02T02:16:10+09:00
Javaプログラマを大量投入して人月で稼ぐことができなくなりますからね(プ
いあ、なんかそういう雰囲気は良くわからんのですが
普及って
そもそも何をきっかけに言語をえらぶんだろう
と思ったときに
common lispを手に取ろうと思う人って
何が魅力なんでしょうかね?

g000001 2008-05-02T02:18:00+09:00
その辺は、なんというか、鶏と卵というか、

名無しさん 2008-05-02T02:18:14+09:00
C#とかjavaとかCとかperlとかrubyとか良くわかるんですよ

g000001 2008-05-02T02:18:41+09:00
普及してるから、○○を選ぶ。○○を選ぶから普及する、みたいな感じなんでしょうか

名無しさん 2008-05-02T02:19:14+09:00
matz lispは、あれだけlispno
間違えた。
もっと特定分野のどこどこでなら勝てる
という雰囲気が何かしら必要な気がするんですけど
あれだけlispの思想を受け継いでるなら大人しくsexp使えばいいのに、と思わなくもない。
lispな人はスクラッチからが好きそうな雰囲気は気のせいでしょうかね

g000001 2008-05-02T02:20:39+09:00
ああ、自分は
極度にsexp好きで、
スクラッチでがちゃがちゃやるのが
大好きというか
それ以外でプログラムを組み立てることが
できませんね。
画家とハッカーの

名無しさん 2008-05-02T02:21:25+09:00
そんなことないよ。僕は他人のふんどしで相撲取るの大好きよ。

g000001 2008-05-02T02:21:31+09:00
駄目バージョンというかw

名無しさん 2008-05-02T02:21:47+09:00
綺麗なふんどしじゃないとイヤだけどw

g000001 2008-05-02T02:21:53+09:00
あ、スクラッチの意味を取り違えてたかw

名無しさん 2008-05-02T02:22:26+09:00
0からって意味ですね

g000001 2008-05-02T02:22:33+09:00
それでも、マクロで変な構文をつくるのは好きだから、
近い傾向ってのはあるかもしれないですねw
他人のふんどしを眺めるのも好きですw
変なふんどしが多いきがするので

名無しさん 2008-05-02T02:23:08+09:00
良い部品を借りてきても結局無味無臭なんですよね
フレームワークって何で存在するの?
みたいな雰囲気ありません?
lisp界隈の話?
良い材料を手に入れた
俺構文で
味付けて
自分で!
みたいな人が目立つ気がする…
粛々とやっている人もいるんでしょうかね

g000001 2008-05-02T02:25:26+09:00
ITAだと
75人のCLのチームだそうですが
この規模でCLの開発だと
どうなるんですかね、味付けとか

名無しさん 2008-05-02T02:26:00+09:00
ぉ。leopardのインストール終わった。明日も出勤なので風呂行って寝ま~す。
see you.
おやすみなさい

g000001 2008-05-02T02:26:12+09:00
はい、おやすみなさいー
また、よろしくおねがいします(^^

名無しさん 2008-05-02T02:26:38+09:00
どうなるんでしょうかね

g000001 2008-05-02T02:26:54+09:00
maruさんがいないと
レベルの高い話ができなくて
すいません(^^;

名無しさん 2008-05-02T02:27:36+09:00
与太話してればいいんだと思いますよ

g000001 2008-05-02T02:27:44+09:00
フレームワークすら知らないからなあw
それだったら全然おkですけどw

名無しさん 2008-05-02T02:28:03+09:00
できる話すりゃいいんですよ
なんつーか
あー
第二回のダンドリとかしてれば誰か絡んできてくれるんじゃないすかね
オフラインも一回こっきりじゃないですよね?

g000001 2008-05-02T02:29:05+09:00
そうですね。
お題はあるっていえば
あるんですがw
まあ、一回完結でやれば
面白いものは沢山あるとは思っています
というか、自分が知りたいだけ、だったりするのですがwネタに関しては

名無しさん 2008-05-02T02:30:29+09:00
あー

g000001 2008-05-02T02:30:33+09:00
CLOSとかやりたいかなあ

名無しさん 2008-05-02T02:30:34+09:00
そういうのもいいですね

g000001 2008-05-02T02:30:49+09:00
結構興味深い論文は沢山あるので

名無しさん 2008-05-02T02:30:59+09:00
closは

g000001 2008-05-02T02:31:01+09:00
それを題材にしたりすると
いいかなと

名無しさん 2008-05-02T02:31:05+09:00
人集められると思いますよ

g000001 2008-05-02T02:31:25+09:00
割と秘境なんですよねCLOSは
日本だけかと思いきや
割と海外でも、それっぽいという
知ってる人は異様に知識があるんですけど
最初の敷居が高いというか

名無しさん 2008-05-02T02:32:38+09:00
入手が楽で楽に読めるものは完全にないですよね

g000001 2008-05-02T02:32:44+09:00
できること、に比べて情報が圧倒的に少ないか、偏ってるかなあ
他のOOで出来る範囲を解説してる文献は多いって感じですか?

名無しさん 2008-05-02T02:33:50+09:00
closって単発でできるんですかね?

g000001 2008-05-02T02:34:12+09:00
うーん、
自分が考えてたのは
CL Cook Bookの内容を
皆でやると、
言う感じでしたね
でも、あれも偏ってるのかなあ
例題とか解くと6時間位では終わらないかなあ

名無しさん 2008-05-02T02:36:51+09:00
うーん

g000001 2008-05-02T02:37:04+09:00
他のOOPやってる人だと
するするっと理解できるんでしょうか?
なんか,
CLOSの変態的なところが
書かれている気もしないでもないですがw

名無しさん 2008-05-02T02:38:38+09:00
一回でやる分量な気もしますが
しんどそう…

g000001 2008-05-02T02:39:05+09:00
多重継承、賛成、反対、とかnの方向に話が進みそうな気もしないでもないです。OOP経験者さんとやるとすると

名無しさん 2008-05-02T02:39:15+09:00
講師の予習ががんばるしき
でないと終えられない?

g000001 2008-05-02T02:39:23+09:00
そうですね。ちょっと微妙ですねー。
問題が割と
defstructでdefclassの真似してみよう!とか
マクロ書けないと難しいようなところが
あるような
ないような

名無しさん 2008-05-02T02:40:52+09:00
できるかなー

g000001 2008-05-02T02:41:07+09:00
どっちにしろ、CLでちょっとは書けるようになってないと、難しいようなところはありますね、そういえばw
あんまりその辺りは考えてなかったなw

名無しさん 2008-05-02T02:41:43+09:00
sossune
えっと
defstructっぽいdefclass-plusマクロ

g000001 2008-05-02T02:42:45+09:00
そうですね、そういうのばっかりな気が
難しくないのかもしれませんが

名無しさん 2008-05-02T02:42:55+09:00
defstructでdefclassって

g000001 2008-05-02T02:43:02+09:00
面倒でしたw
一応全部やってみたんですけど
あ、最後の一問やってないかな

名無しさん 2008-05-02T02:44:10+09:00
面倒というよりもシンボルがとっちらかってどうしようもない予感…

g000001 2008-05-02T02:45:10+09:00
なんというか、
defstruct->defclassの変遷というか
そういうのを学んで欲しかったんでしょうねw
http://d.hatena.ne.jp/cl-intern/20070801/clos
自分は翻訳されてたので、
挑戦してみたのですが…
あまり、本質的でない
小細工が要求される問題が多いような、多くないようなというような印象を持ちましたねー

名無しさん 2008-05-02T02:47:57+09:00
もっとイントロっぽいところからいかないといけない気がしますね。
勉強会としてやるなら

g000001 2008-05-02T02:48:24+09:00
ですよねw

名無しさん 2008-05-02T02:48:34+09:00
defstruct->defclassとか当分の間はどうでもいいわけで
むしろdefstructにどこか出番あるのかをこの前聞いてみたりしたんですが

g000001 2008-05-02T02:48:58+09:00
そうなんですよねw
速度ですかね。

名無しさん 2008-05-02T02:49:32+09:00
defstructで十分なときはdefstructを使うみたいな

g000001 2008-05-02T02:49:45+09:00
あ、そうなんですか。

名無しさん 2008-05-02T02:49:49+09:00
setf setqみたいな…そうかー
速度ですね

g000001 2008-05-02T02:50:07+09:00
昔の本には、2倍くらい
違うって書いてましたが、
今でもそうなんでしょうか。
Kiczalesだったけかな

名無しさん 2008-05-02T02:51:05+09:00
直感的に総称関数が速いわけ無い気はしますが

g000001 2008-05-02T02:51:26+09:00
でも、typecaseで振り分けと、defmethodのディスパッチだとdefmethodの方が速いって
かいてはいましたね。
Kiczalesさんは

名無しさん 2008-05-02T02:51:49+09:00
なんというか

g000001 2008-05-02T02:51:56+09:00
推進派なのでw

名無しさん 2008-05-02T02:53:12+09:00
なんかそういう問題だったかどうかを思い出せなくなってきた…

g000001 2008-05-02T02:53:22+09:00
自分は速度についてはあまり関心がないので、全部defmethodと、defclassdで全然おkですが…。
まあ、自分がいってるのは、

名無しさん 2008-05-02T02:53:37+09:00
defun使うの禁止?

g000001 2008-05-02T02:53:40+09:00
20年まえの話ですからねえ(^^;
ディスパッチ不要の場合もあるので
defunになる局面は絶対あるとは思いますが
Dylanみたいに基本全部総称関数、みたいなw
まあ、関数はちゃんとありますけど…。
Dylanにも

名無しさん 2008-05-02T02:56:33+09:00
まぁそういう違いじゃないですかねdefstructとdefclass

g000001 2008-05-02T02:56:35+09:00
やっぱりCLOS派、Paul Graham見たいな派閥は分かれるちゃうのかなあ

名無しさん 2008-05-02T02:57:00+09:00
派閥…なんだろか

g000001 2008-05-02T02:57:19+09:00
派閥というか、
PGとかCLOS不要な立場の人ですよね
なんか話によると
Norvigもそういう方だそうで…。
CLOS大好き!っていう人をあまり見かけないというか

名無しさん 2008-05-02T02:58:50+09:00
うーん

g000001 2008-05-02T02:58:50+09:00
実際なくてもどうにかなるというかw

名無しさん 2008-05-02T02:59:00+09:00
無くてもどうにかなるってのは
大体のものが…
使うか使わないかの問題?
ですかね

g000001 2008-05-02T03:01:17+09:00
そうですねー。自分はコンディションシステムがCLOSの知識前提な気がするので必須だとは思ってはいるのですが…。
k田さんもGaucheナイトで

名無しさん 2008-05-02T03:01:54+09:00
それは

g000001 2008-05-02T03:02:08+09:00
そういう感じのこと仰ってたような

名無しさん 2008-05-02T03:02:08+09:00
コンディションシステムを使うか使わないか…

g000001 2008-05-02T03:02:56+09:00
あれは、オブジェクトがちゃんと規定されてないと、エラーもちゃんと処理できないってことだったかな?
ま、上のように自分は適当に解釈してましたw

名無しさん 2008-05-02T03:03:26+09:00
gaucheナイトで言っていたのは

g000001 2008-05-02T03:03:36+09:00
はい

名無しさん 2008-05-02T03:03:49+09:00
フルの継続があるとまずいよね
じゃないんですかね?

g000001 2008-05-02T03:04:07+09:00
あ、それとは別に
Schemeの
仕様について語ってるときに
エラーを規定するにはまず

名無しさん 2008-05-02T03:04:42+09:00
あー

g000001 2008-05-02T03:05:01+09:00
オブジェクトがちゃんと決まって無いと

名無しさん 2008-05-02T03:05:07+09:00
はい

g000001 2008-05-02T03:05:10+09:00
いけないとか、
型だったかな?
いや、まずクラスの階層がしっかり定義されてないと
エラー処理もちゃんとできるわけがない!みたいな、感じだったかな?

名無しさん 2008-05-02T03:06:33+09:00
文脈が飛んでて危険ですね
印象としては似た感じで聞いてましたけど

g000001 2008-05-02T03:06:51+09:00
Schemeのどこに突っ込んでたのか
忘れてしまいましたがw
そうですねw 

名無しさん 2008-05-02T03:07:51+09:00
まぁ
とりあえずclosは容易に明後日にいける

そんな感じの雰囲気が

g000001 2008-05-02T03:09:09+09:00
そうですねー。自分は、MOPとかわからないのですが
OOPに於けるCLのマクロみたいな存在ならば、
やっぱり面白そうなので、知りたいかなあと
全然違うのかもしれませんがww

名無しさん 2008-05-02T03:10:11+09:00
なるほどー

g000001 2008-05-02T03:10:22+09:00
明後日にいきたい派なんでしょうねw

名無しさん 2008-05-02T03:10:35+09:00
まぁ
そういう空気ですね

g000001 2008-05-02T03:12:25+09:00
マクロより混沌としてるのかもしれませんが…。
The Art of the Metaobject Protocolとか読まれました?
自分は読んだことないんですが、面白ければ読もうかなと。
安いしw

名無しさん 2008-05-02T03:15:05+09:00
人から借りっ放し…

g000001 2008-05-02T03:15:10+09:00
自分じゃ歯が立たなそうな気はおおいにしますがw
そうなんですかw
あれは、実装側の本ですか?

名無しさん 2008-05-02T03:17:13+09:00
多分…

g000001 2008-05-02T03:18:44+09:00
なるほど、じゃあ難しそうだなあ…。

名無しさん 2008-05-02T03:19:05+09:00
裏表紙を見ると

g000001 2008-05-02T03:19:09+09:00
On Lispみたいな本でないかなあ…。MOPno
はい。

名無しさん 2008-05-02T03:19:19+09:00
実装と演習の部分と
規格の部分に分かれてる
って書いてありました

g000001 2008-05-02T03:19:53+09:00
なるほどー。深そうだ!
PAIPの次くらいに勉強会のネタになりそうですねw

名無しさん 2008-05-02T03:20:57+09:00
まぁpaipよりはさっくりしているとおもいますが…
第一部が132ページまで
二部が242まで

g000001 2008-05-02T03:23:38+09:00
なるほどー

名無しさん 2008-05-02T03:23:43+09:00
付録が323まで
132までなんじゃないかと思います
勉強としてみんなでできるのは
あー
でも二部も楽しそうではある…

g000001 2008-05-02T03:25:50+09:00
最近のCLの実装って

名無しさん 2008-05-02T03:25:54+09:00
なんというか宇宙遊泳よりじゃなくて

g000001 2008-05-02T03:26:02+09:00
殆どそれを手本にしてるんですよね?
はい

名無しさん 2008-05-02T03:26:14+09:00
実装を使うのが楽しくなるのをオフラインでやったほうが
よいのかなー
と思いました
slimeは楽しくなりそうですしその流れ…
というとリストにあったのだとdefsystemですかね

g000001 2008-05-02T03:26:52+09:00
そうですね。結構役に立ったとは
思ってるんですが、自分自身には
知らない機能とか使うようになりましたし…。

名無しさん 2008-05-02T03:27:27+09:00
背伸びしすぎるといかんと思うので

g000001 2008-05-02T03:27:29+09:00
ですね、defsystemはパッケージつくるなら
押さえておきたいですね。
ASDFも手頃かなとは思ってました

名無しさん 2008-05-02T03:28:04+09:00
第一回いきたかったなぁ

g000001 2008-05-02T03:28:08+09:00
足りないくらいが丁度いい気もしますw
いや、割と雑談がw
延々と4時間くらいで

名無しさん 2008-05-02T03:28:31+09:00
雑談がいいんじゃないかと!

g000001 2008-05-02T03:28:46+09:00
ずっと私がまくしたてて暴走してましたが、
割と皆うつらうつらしてましたww
まあ、GOOの話とかDylanとか熱心に話されても…という感じかなとww

名無しさん 2008-05-02T03:29:44+09:00
なるほど
蝉の脱皮ほどの破壊力が足りないw

g000001 2008-05-02T03:30:26+09:00
xyzzyの話とかもしたかな
あと、組み込みでLISP使えないかとか

名無しさん 2008-05-02T03:31:12+09:00
組み込みというとeclとかの話?

g000001 2008-05-02T03:31:25+09:00
そうですね、mokeheheさんが
組み込み関係のお仕事もされているそうで
ecl試してみてるそうなんですが、
佐野さんがいればねー、って話にもなりましたw
佐野さんeclいじってたので詳しいかなと

名無しさん 2008-05-02T03:32:27+09:00
多分勘違いしてswankについて話してたと思います

g000001 2008-05-02T03:32:48+09:00
なんか、期待したコードが生成されないそうで
swankですかw

名無しさん 2008-05-02T03:33:31+09:00
うーん

g000001 2008-05-02T03:33:35+09:00
eclでswank単体exeにできないかなあ、って前に挑戦したことがあるんですが
できるんですかね。
似た感じにはなってはいるんですけど手。n
ですけど。

名無しさん 2008-05-02T03:34:16+09:00
単体exeになったっけか

g000001 2008-05-02T03:34:37+09:00
コアイメージをつくるとかじゃないので
毎回ロードするのも面倒なので纏めたかったんですが
exeになっても周りの.oファイルをゴリゴリ読み込んでるようにしか作れませんでした…。
まあ、eclはあまり使ってないので良いのですがw

名無しさん 2008-05-02T03:36:27+09:00
スクリプト用の道具固めてwindowsでちょっとしたexeを配る用じゃないかと…
思ってます。
割合に申し訳ない使い方しかしてないっすね

g000001 2008-05-02T03:37:32+09:00
Dylanだとswankが単体Exeになるので、
お、これは手軽で良いなと、また思ったりしているのですが…。
まあ、サーバー別起動ってのは全然手軽じゃないのかなw

名無しさん 2008-05-02T03:38:41+09:00
どうなんですかね
そんなんばっかりですよね
slimeでltk!!!さぁプロセスはいくつ?
とか?

g000001 2008-05-02T03:40:30+09:00
まあ、確かにw
なんか引き止めてしまっていますが、
佐野さんは明日大丈夫ですか?

名無しさん 2008-05-02T03:41:37+09:00
そろそろ落ちたほうがいいですね
あー

g000001 2008-05-02T03:42:05+09:00
はいはい

名無しさん 2008-05-02T03:43:04+09:00
普通に○○○を渡したりしてもいいのかもしれないですね
なんというか近所さんらしいですし

g000001 2008-05-02T03:43:37+09:00
そうですね、近所なんでしょうか?w
2、3kmとかなんですかね?
4kmくらい? 良くわからない憶測ですがw

名無しさん 2008-05-02T03:44:39+09:00
まぁそのどれかだと思います

g000001 2008-05-02T03:44:41+09:00
自分は、烏山の駅から800mくらいでしょうか。

名無しさん 2008-05-02T03:46:57+09:00
世田谷通りぞいくらいです
なんとなく住所はやめといたほうが良いような気がしました
夜更かししすぎた…

g000001 2008-05-02T03:49:00+09:00
落ちたw
すいません、引き止めてしまって
4時ですね。
自分は砧図書館くらいだったら
余裕で歩いていけることはいけますね
firefoxがなんか変だw

名無しさん 2008-05-02T03:53:22+09:00
近所すぎる…

g000001 2008-05-02T03:53:30+09:00
ともあれ、読んで頂ければ参上しますがw

名無しさん 2008-05-02T03:53:32+09:00
とりあえず寝ます。

g000001 2008-05-02T03:53:34+09:00
そうなんですか?w
はい、またよろしくお願いします!

名無しさん 2008-05-02T03:54:16+09:00
はいでわ

g000001 2008-05-02T03:54:35+09:00
ではでは!

名無しさん 2008-05-02T06:28:22+09:00
深夜? 早朝? のChatt!
salam

g000001 2008-05-03T00:28:41+09:00
深夜のチャットでしたw > yosiさん
あれ、もしかしてここのURLは分かりやすい名前に変更できるのかな?
http://www.lingr.com/room/cl-jpとかの方がいいかしら。
European Common Lisp Meeting 2008のまとめページ
http://www.weitz.de/eclm2008/
http://dlweinreb.wordpress.com/2008/04/26/european-common-lisp-meeting-2008/
Weinreb氏のまとめのavid Moon氏の反応が面白い、ってxach氏がコメントしてました。
意外にも10年前よりCLは活動的になってきた、ということでしょうか?
こんばんは! >tszさん
ECLは組み込みだけじゃなくて
ANSIにも準拠してるフルセットの処理系だー
という主張
http://ecls.wiki.sourceforge.net/space/showimage/eclm2008.pdf
まあ、名前が悪いんじゃないかと思ったり。
こんばんは! >佐野さん

名無しさん 2008-05-03T01:20:55+09:00
こんばんは

g000001 2008-05-03T01:21:09+09:00
こんばんは!
anythingの設定なかなかいいですね

名無しさん 2008-05-03T01:21:30+09:00
こんばんは!

g000001 2008-05-03T01:21:46+09:00
こんばんは!

名無しさん 2008-05-03T01:21:58+09:00
なんとなくeclの資料読んでました

g000001 2008-05-03T01:22:13+09:00
結構詳しく書いてますよね
UTF-8に対応してくれたら
もっと頻繁につかうかも>ecl

名無しさん 2008-05-03T01:24:25+09:00
今どうなってたっけなぁ

g000001 2008-05-03T01:24:38+09:00
というかSLIMEで通信切断されなければ、使うかな、というそれだけですがw

名無しさん 2008-05-03T01:24:58+09:00
それはlatinで繋げば?という話?

g000001 2008-05-03T01:25:43+09:00
utf-8でつなげなかったような気はするんですが、どうだったでしょう
コンソールとかでecl単体では日本語表示できてますけども
これはたまたまってことなのかな?
という風に2chで話してたのを
眺めてましたw

名無しさん 2008-05-03T01:27:03+09:00
> char-code-limit
256
何を言っているのか意味がわからない…

g000001 2008-05-03T01:27:23+09:00
そうですね、256ですね、eclはたしか

名無しさん 2008-05-03T01:27:39+09:00
utf-8で繋がるわけがあるか!

g000001 2008-05-03T01:27:40+09:00
他言語対応してる処理系は

名無しさん 2008-05-03T01:27:53+09:00


g000001 2008-05-03T01:27:55+09:00
65536以上であることがおおいっていう
LispUserさんの話からきてるのかしら
そうですねw

名無しさん 2008-05-03T01:28:43+09:00
とりあえずエクスペリメンタルにunicode対応が刺さっているのはわかるんだけど
どういう方向だったかを追えてないです。
へっぽこ

g000001 2008-05-03T01:29:28+09:00
発表の資料にも対応するみたいな
ことかいてあるので
なんとなーく待ってようかなとw

名無しさん 2008-05-03T01:30:01+09:00
手元にあるバージョンがそもそも古いので
なんとなく流れが…

g000001 2008-05-03T01:30:18+09:00
0.9jとかですか?
発表だと0.9kとか書いてるので、
先端だと色々変わってるのでしょうか

名無しさん 2008-05-03T01:32:09+09:00
バージョンが古いまま>リリース情報すら追っていない
という感じです

g000001 2008-05-03T01:34:30+09:00
ECLは色々面白そうなことを
していたんだなあと
資料をみて思いましたが
普段つかうにはやっぱり

名無しさん 2008-05-03T01:35:40+09:00
cのコードベースがどれくらいあるか?
がかなり効きそうです
dll一個で組み込めるので
そこら辺が嬉しい人には嬉しいんじゃないかと思います

g000001 2008-05-03T01:36:47+09:00
なるほどー
とりあえず、さっき起きたばかりなので
朝の情報収集をしているのですが

名無しさん 2008-05-03T01:40:35+09:00
さっき?

g000001 2008-05-03T01:41:17+09:00
いや、2時間位経過していますね、いつの間にかw
ずっとぼーっとしているなw

名無しさん 2008-05-03T01:42:33+09:00
なんか申し訳ないけどもうすぐ寝ます…
というか

g000001 2008-05-03T01:42:47+09:00
いえいえ、普通そうですよねw

名無しさん 2008-05-03T01:42:55+09:00
もうちょっと(5時間くらい)寝てたら良かったんじゃないでしょうか?

g000001 2008-05-03T01:43:18+09:00
いや、12、3時間寝てしまったので
自動的に起きてしまいましたねw

名無しさん 2008-05-03T01:44:08+09:00
それはそれで朝の情報…は抑えていて欲しい

g000001 2008-05-03T01:44:51+09:00
豆腐屋さんと
新聞屋さんより
早起きということでw

名無しさん 2008-05-03T01:45:34+09:00
なるほど

g000001 2008-05-03T01:47:05+09:00
これからは、
ネタを見付けたら
やたらここに投下しようかなと
思ったりもしますが、

名無しさん 2008-05-03T01:47:40+09:00
流れとしては良いと思うんですけど

g000001 2008-05-03T01:47:51+09:00
はい

名無しさん 2008-05-03T01:47:56+09:00
c.l.l見れば全部のってるからよろしく!


g000001 2008-05-03T01:48:14+09:00
そうですねえw

名無しさん 2008-05-03T01:48:14+09:00
同じ勢いで埋もれそう…

g000001 2008-05-03T01:48:23+09:00
そう、埋もれるんですよね
それが問題っぽいです
まとめて、自分のブログにアップしようかしら
なんか激しく自作自演なんですけどw
まあ、いいか

名無しさん 2008-05-03T01:49:21+09:00
blogも埋もれるんですよね

g000001 2008-05-03T01:49:34+09:00
そうですね、それ問題ですw
やっぱり過去記事よんでるひとって
非常に少ないでしょうからw
索引とかも考えてみてるんですが

名無しさん 2008-05-03T01:50:26+09:00
blogの形式だと読もうと奮い立つのがしんどいです

g000001 2008-05-03T01:50:31+09:00
割と無駄な抵抗かなあ
確かにw

名無しさん 2008-05-03T01:51:03+09:00
索引自体をblogにしちゃうともうダメそうですよね

g000001 2008-05-03T01:51:36+09:00
情報を巻き散らかすには適しているんですけどねえ
上手く参照できるように纏めるのはなかなか難しいというか
書く時もあまりそういうこと考えてないし、難しいですねえ。

名無しさん 2008-05-03T01:53:08+09:00
私は日記は埋もれて行くことを期待して書いてますが。
blogは後から参照する場合、検索に引っかかるの前提って感じですね。
全部のエントリを同じように掘り下げて欲しいと思います?

g000001 2008-05-03T01:53:57+09:00
そうですね、それは狙っているのですが
いや、それはないですねw

名無しさん 2008-05-03T01:54:16+09:00
L-99は割と埋もれていいんじゃないかと思ってるのではないかとか

g000001 2008-05-03T01:54:26+09:00
一応つぶやきとL99は
読まれることは考えてないかなw
その割につぶやきが一番
うけてるのが、ちょっとw
どうしたもんかとw

名無しさん 2008-05-03T01:55:04+09:00
blogの読まれ方と合致してる…
と理解するしか

g000001 2008-05-03T01:55:22+09:00
まあ、そういうことなんでしょうねw
はてなでブックマークされることもないですしねw
del.icio.usの方が多いのが意外というか
なんかしらの傾向があるんでしょうね
自分の場合、記事を晒した緊張感をめあてにしているというか
そういう感じなので、
ちょっと自己満足な傾向が強いでしょうからねえw
とりあえず今のところは
1バイトでも多くlisp関係の情報を
巻き散らかしたいと、

名無しさん 2008-05-03T01:59:59+09:00
誰かまとめろ…


g000001 2008-05-03T02:00:01+09:00
言う考えて更新しています

名無しさん 2008-05-03T02:00:12+09:00
なるほど
うまくつながった
w

g000001 2008-05-03T02:00:36+09:00
いや、纏めて頂く程のことは書いてないのですがw
ちゃんと書きたいという人のネタくらいになればいいかなw
自分は、とりあえず、書き散らかすことしかできないw

名無しさん 2008-05-03T02:02:40+09:00
よくわからないですけど
どうしておくといいですかね

g000001 2008-05-03T02:03:55+09:00
一緒に書き散らかしませんか?w

名無しさん 2008-05-03T02:05:34+09:00
うーん

g000001 2008-05-03T02:05:45+09:00
いや、まあ、私の場合は、
守るものが無いですから、書き散らかしても
全然問題ないわけなのですがw

名無しさん 2008-05-03T02:06:45+09:00
いあ
それは無関係だと思いますが
調べた結果がもったいないので
もう少しなんとか…

g000001 2008-05-03T02:08:41+09:00
あー、
でも、拾って来たものが
*LISPとかなんで
どうしたもんかなとw
*LISPのことをブログでかいてるのって
多分、世界でも3人くらいしか
いないのでは?w

名無しさん 2008-05-03T02:11:06+09:00
いまいち方向が見えない…

g000001 2008-05-03T02:11:28+09:00
そうなんですよねw

名無しさん 2008-05-03T02:11:41+09:00
読んでいなかったので読んでみようとしましたけど
これなんでblogで書いているんですかね

g000001 2008-05-03T02:12:23+09:00
更新するのが簡単だからという、以上の理由はないですねw

名無しさん 2008-05-03T02:12:53+09:00
日付順が鬱陶しすぎる…

g000001 2008-05-03T02:13:04+09:00
あと、ブログで晒すと長続きするんですよ、不思議なことに

名無しさん 2008-05-03T02:13:19+09:00
モチベーション?

g000001 2008-05-03T02:13:23+09:00
ああ、逆になりますからね、それはうっとうしい
そうですね、あと、一人で纏めるよりは
ちゃんと調べますね
だから、後で自分で読み返したときに
分かりやすいw

名無しさん 2008-05-03T02:14:21+09:00
なるほど

g000001 2008-05-03T02:14:37+09:00
自分の場合、自分用に書くと
後で全く理解できないことになりますねw

名無しさん 2008-05-03T02:15:02+09:00
blogとして書き足しながらblogじゃない見せ方ができるといいですね

g000001 2008-05-03T02:15:19+09:00
http://d.hatena.ne.jp/perlcodesample/
とかいいなあと思うんですが
CLでこういうのあったらかなり利用するかなあ、と思ってはいるんですが…。
やるとしたら、ブログ分けないと駄目かな

名無しさん 2008-05-03T02:18:09+09:00
ブログってやつを今まで使ったことのない人なので…
よくわからんです
まぁさっくりと今日はこれくらいにして…
というか

g000001 2008-05-03T02:19:05+09:00
はいはい

名無しさん 2008-05-03T02:19:46+09:00
明日?というか今日は大丈夫ですか?

g000001 2008-05-03T02:20:00+09:00
ずっと大丈夫ですねw

名無しさん 2008-05-03T02:20:31+09:00
じゃ起きたらメールします。

g000001 2008-05-03T02:20:48+09:00
分かりました。できれば携帯の方だと
万が一寝てても
気づきますんで

名無しさん 2008-05-03T02:21:06+09:00
なるほど

g000001 2008-05-03T02:21:07+09:00
よろしくお願いしますw
12時間ねても

名無しさん 2008-05-03T02:21:27+09:00
いつ寝るんだろう…

g000001 2008-05-03T02:21:29+09:00
なんかまた眠いのでw

名無しさん 2008-05-03T02:21:40+09:00
寝すぎで眠い…
では

g000001 2008-05-03T02:21:54+09:00
はいー、よろしく
おねがいします
quekさんのcl-win32oleがCodeReposに!
http://read-eval-print.blogspot.com/2008/05/cl-win32ole-coderepos.html
これで、CodeReposにもCLのコーナーができましたね。
自分も真似して、なんか置いてみようかしら!
tao-compat(TAOマニュアルを参照して関数とかマクロを作ってみたもの)とか誰も使いそうがないものは作ってるんですけど…。
(provide '話題)

ひげぽんさんの、Lisp/SchemeのIRCチャネルをや ら な い かという呼掛け
http://d.hatena.ne.jp/higepon/20080502/1209705430
freenodeの#lispとか、lisppasteと連携できて幸せそうなんだけれど、
日本でもそういうのできたら良いなあ。
(provide '話題)

Common Lisp五人組の一人、Richard P. Gabriel(rpg)氏の文章を翻訳してる方発見
http://www.kt.rim.or.jp/~hisashim/gabriel/
Worse is betterは、完結した話ではなく、rpg氏のライフワークと化しているようだ(笑)
(provide '質問)

(loop :for x :across #(foo bar baz) :collect x)
だとベクタで受けて、リストで返すことになってしまうわけですが、
string->stringや、vector->vectorな定番書法ってどういう感じになるのでしょうか?

(coerce 
 (loop :for x :across #(foo bar baz) :collect x)
 'vector)

(loop :for x :across #(foo bar baz) :collect x :into res
      :finally (return (coerce res 'vector)))
位?
loopって多機能なんですが、「ありそうで無い」機能だったりするんですかね。
こんにちはー
(provide 'ネタ)

Lingr APIを叩くCL製のbotを作って、
http://lingr.g.hatena.ne.jp/keyword/API%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB
HyperSpecとか引けたりするというのはどうでしょう。
clhs-lookup.lispというのはlisppaste2.3の配布物の中にあるので、
発言を読んでURLを投稿してくれるbotを作るだけで良さそう
(provide '便利メモ)

〜コードを貼り付けたいときに〜

(1)このLingrを使う場合
ペーストするとインデントが崩れるけれど、
右下のview pasteを押せば整形した状態で表示される。

(2)paste.lisp.orgを使う場合
Select a channelで、Noneを選択(NoneでないとIRCのチャネルにペーストを投下してしまいます)
コードのハイライト法を選択(色々あります。)
例:
http://paste.lisp.org/display/60191

(3)codepad.orgを使う
http://codepad.org/
残念ながらCL用のハイライト機能はなし
paste.lisp.orgの場合は、コードにレスを付けられます。残念ながら日本語は通らない模様。
(provide 'CL入門のためのサンプルコードどう書く)

http://d.hatena.ne.jp/perlcodesample/
は非常に素晴らしいと思うのですが、こちらの例をお題に
CLで解いてみるのはどうかしら、という試み

今回は、「プロセスIDを取得する。」
http://d.hatena.ne.jp/perlcodesample/20080502/1209788719

#+SBCL
(sb-posix:getpid)
;=> 15595

色々な処理系の例お待ちしております。
また議論も歓迎です!
纏まったら、どっかにアップしたいと思います。

名無しさん 2008-05-04T16:02:17+09:00
#+ECL
(si:getpid)
http://www.franz.com/support/documentation/8.1/doc/os-interface.htm#getpid-op-bookmarkxx
#+allegro
(excl.osi:getpid)

g000001 2008-05-04T21:56:53+09:00
佐野さん、tszさん、ありがとうございます!

KMRCLにもgetpidがあって、
http://www.cliki.net/kmrcl

(defun getpid ()
  "Return the PID of the lisp process."
  #+allegro (excl::getpid)
  #+(and lispworks win32) (win32:get-current-process-id)
  #+(and lispworks (not win32)) (system::getpid)
  #+sbcl (sb-posix:getpid)
  #+cmu (unix:unix-getpid)
  #+openmcl (ccl::getpid)
  #+(and clisp unix) (system::process-id)
  #+(and clisp win32) (cond ((find-package :win32)
                             (funcall (find-symbol "GetCurrentProcessId"
                                                   :win32)))
                            (t
                             (system::getenv "PID")))
  )

こんな感じのラッパーになってるのを見付けました。
割とどの処理系もgetpidは標準装備っぽいですね。
(provide '話題)

ひげぽんさんIRCチャネル開設!
irc.freenode.net
#Lisp_Scheme
utf-8

http://d.hatena.ne.jp/higepon/20080504/1209906810

私も参加します!
でも、そうすると、この部屋の存在意義がちょっと微妙かしら(笑)
ここは、Lingrのメリットを活かした何か、ってことになるのかなあ。
もしくは、CLに焦点を絞るかですかねえ。
まあ、選択肢は沢山あった方が良いかと!

quek 2008-05-05T13:24:26+09:00
さっそく昨日 #Lisp_Scheme にちょっと参加してみました。

g000001 2008-05-05T13:24:37+09:00
こんにちは!
自分もさっそく参加してみていますw

quek 2008-05-05T13:24:55+09:00
ひげぽんさが g000001 さん来てくれないかなぁ、とおっしゃてましたよ。
こんにちは。

g000001 2008-05-05T13:25:19+09:00
g000002で参加してましたw

quek 2008-05-05T13:25:50+09:00
2回目の (gensym) ですかw

g000001 2008-05-05T13:26:10+09:00
そうですねw クライアントを色々ためしていて
それで競合回避のためにですねw
IRCをのぞきつつ、こっちものぞきつつと言う感じで、なかなか忙しいですw

quek 2008-05-05T13:30:43+09:00
そういえば loop の collect で vector を返すってなさそうですね。

g000001 2008-05-05T13:31:06+09:00
あ、やっぱりそうですか
ありそうなもんなんですけどね
あれだけ多機能なんだからw
あんまりvectorで返すとかそういう使い方はしないのかな?

quek 2008-05-05T13:34:05+09:00
ほしい気はします。loop って拡張できなのでしょうか?
http://www.cliki.net/iterate は拡張可能らしいです。

g000001 2008-05-05T13:34:39+09:00
そうなんですか。iterate便利そうですね。
series使いたいところですねw
quekさんもseriesファンでしたよね?w

quek 2008-05-05T13:35:27+09:00
おぉ、series っていいですよね w

g000001 2008-05-05T13:35:42+09:00
seriesの場合中間形式としてseriesだから
最終的に変換するものを書くということになるんでしょうか?

quek 2008-05-05T13:36:04+09:00
scan-file で external-format を指定できるようにしようかと思って、がんばったんですが挫折しまし。

g000001 2008-05-05T13:36:17+09:00
ああ、欲しいですね
自分は、utf-8に統一して
問題を直視していませんw
seriesの拡張の仕方が全然理解できてないですねー、自分は。
なんにしろseriesはもっと評価されるべき!
と思っていますw

quek 2008-05-05T13:38:42+09:00
私は series のコードが読めませんでした。
御意! > もっと評価されるべき
(collect 'vector (scan '(1 2 3)))
verctor いけるみたいですね。

g000001 2008-05-05T13:40:07+09:00
なるほど、やっぱり最終的に変換すると
言う感じで
コードは複雑そうですよねー > series

quek 2008-05-05T13:41:21+09:00
誰か series のコードを解説してくれないかしらww

g000001 2008-05-05T13:41:38+09:00
いやー、quekさんを置いてほかにはw
comp.lang.lispにもたまに質問があがるんですけど
本場でも知ってる人はあんまりいない感が漂っていますねー。

quek 2008-05-05T13:43:00+09:00
そうなんですか。

g000001 2008-05-05T13:43:21+09:00
実際にはどういう風につかわれているの?
みたいな質問がたまにあるんですが、
ポインタが投げられることは
ないですねw
俺にメールすれば、教えてやる、っていう変な解答はありましたけどw

quek 2008-05-05T13:45:49+09:00
ソースを見ると 2007-08-08 が最終更新みたいですから、地道に開発は進んでいるのかもしれないですね。

g000001 2008-05-05T13:46:21+09:00
そうですね。どこかで進んでいて
しっている人は知っている見たいな感じがもどかしいw
自分が知っている限りのドキュメントは、
http://cadr.g.hatena.ne.jp/g000001/20080213/1202871555
で書いた位ですねー。

quek 2008-05-05T13:50:05+09:00
Pascal 版もあるってのが驚きです。

g000001 2008-05-05T13:50:10+09:00
そうなんですよ!
自分も意外でした
quekさんは、リーダーマクロで#Mとか#zは設定してますか?
自分は説明どおりにしてもあまり上手く動かないので放置してしまっているのですが…。

quek 2008-05-05T13:52:57+09:00
いえ設定してないです。正直あまり series 使ってないですw

g000001 2008-05-05T13:53:44+09:00
いえ、私も正直使ってないですw
scan-fileは大好きですけどw
with-open-fileが使われるところはseriesって位でしょうか、自分の場合。

quek 2008-05-05T14:07:24+09:00
いま見たばかりなんですがこれおもしろいです。
http://blog.viridian-project.de/2008/05/04/function-encapsulation-in-sbcl/
elisp の advice? みたいなことができるようです。

g000001 2008-05-05T14:09:39+09:00
おお、なんか凄そうです!
これは、CLOSを回避したいってことなんでしょうかw
(defun gorm (x) (1+ x))

 
(SB-INT:ENCAPSULATE 'gorm 'identity '(apply sb-int:basic-definition sb-int:arg-list))

(gorm 10)
11

(SB-INT:ENCAPSULATE 'gorm 'add-five '(+ 5 (apply sb-int:basic-definition sb-int:arg-list)))
 
(gorm 10)
16
 
(SB-INT:ENCAPSULATE 'gorm 'add-seven '(+ 7 (apply sb-int:basic-definition sb-int:arg-list)))
(gorm 10)
23

(SB-INT:UNENCAPSULATE 'gorm 'add-five)
(gorm 10)
18

(SB-INT:UNENCAPSULATE 'gorm 'add-seven)

(gorm 10)
11

(SB-INT:UNENCAPSULATE 'gorm 'identity)

(gorm 10)


なるほど、なんの為に名前を指定するのかと思ったら、フックを掛けたり外したりするためなんですねー

quek 2008-05-05T14:21:17+09:00
私が解釈した意図は、generic じゃない関数や CL パッケージの関数もいじれるってのが嬉しいとろこじゃないでしょうか。
(sb-int:encapsulate
 '+ 'string
 '(typecase (car sb-int:arg-list)
   (number (apply sb-int:basic-definition sb-int:arg-list))
   (string (apply #'concatenate 'string sb-int:arg-list ))))
(+ 1 2)
;; 3
(+ "aiu" "ba")
;; "aiuba"

g000001 2008-05-05T14:21:59+09:00
なるほど、そこは便利ですねー。

quek 2008-05-05T14:23:08+09:00
ときどき全部 generic function だったらいいのに、って思うことがありますw

g000001 2008-05-05T14:23:17+09:00
ですねー
+とかそういう典型かもしれませんね
なにか多用してみたくなる、黒魔術的ななにかを感じますねw
これマクロに纏めたら結構便利に使えちゃいそうですねー。

quek 2008-05-05T14:29:19+09:00
この処理系バグってんじゃないの? って動きが簡単にできちゃいそうですねw

g000001 2008-05-05T14:30:02+09:00
実際これの動きを理解するのに、ちょっと分かんなくなりましたw
フックをはずしてるというのがちょっと理解できなくて、動作が予測できなくて、fmakunboundして初期化したりしてましたw
自分は、総称関数から特定のメソッド外すのも結構途方に暮れることが多いです(^^;

quek 2008-05-05T14:33:57+09:00
私も Slime でよく C-c C-u で fmakunbound でしちゃいます♪

g000001 2008-05-05T14:36:23+09:00
簡単にできる便利な方法とかあったら知りたいですね(*'-')

quek 2008-05-05T14:39:07+09:00
子供に「遊んで!!」ってせがまれたので遊んできます。λ...

g000001 2008-05-05T14:39:22+09:00
はい、いってらっしゃいまし^^
こんにちはー、自分はIRCにも参加中ですw
ログも見れるようになった模様
http://lambdarepos.org/kaela/logview.awk?20080505

名無しさん 2008-05-05T15:34:05+09:00
使い分けはどうするんすかねー.

g000001 2008-05-05T15:34:53+09:00
そうですね。割と
住み分けになるかもと言う感じが
しないでもないですねー
やっぱり、CLの話は、こっちの方が速いかもと
quekさんと話をしてみて、そう思いました。
IRCはもっとScheme畑の人が聞いてもおkっぽい話題というか
そんな感じが
割とCLの人が多いんでビックリしたりもしたんですがw
>IRC
当分様子見というか、利用者がいなくなるまで続けるつもりですがw
>この部屋

名無しさん 2008-05-05T18:07:43+09:00
総称関数で+を書き換えると引数なしだと単位元という部分が崩れますね。
引数なしが嬉しいかどうかも謎なのでいらんかもだけど…

g000001 2008-05-05T18:10:07+09:00
総称関数で可変引数って使いどころが難しいですよね
というか、基本的に全部指定するんですかね
(provide '話題)

MacOSX用のLisp環境ごった煮パッケージ
ReadyLisp Version 20080428公開

http://groups.google.co.jp/group/comp.lang.lisp/msg/7768f0c39238813e
http://www.newartisans.com/software/readylisp.html
(provide '話題)

たまたま、del.icio.usから流れてきたので…。

CLのコンディションシステムの起源について
http://groups.google.com/group/comp.lang.lisp/msg/1f7c3f07202ca62c
(provide '話題)

CL上に実装されたPython:
http://common-lisp.net/project/clpython/

ページが更新されたのでなんとなく投下
使ったことある方いますでしょうか?(*'-')

quek 2008-05-05T18:45:46+09:00
こんにちは。そうなんですよね。> 総称関数で+を
未体験です > clpyhton
Python って実装が多いような気がします。

g000001 2008-05-05T18:47:25+09:00
よく目にする気はしますね^^
mini pythonとか

quek 2008-05-05T18:48:24+09:00
なんとなく引数の Generict function ってありかな? と思ったら普通に定義できました。
OO で考えるとレシーバーのないメッセージでしょうか?

g000001 2008-05-05T18:49:26+09:00
どういう位置づけになるんでしょうねw

quek 2008-05-05T18:49:56+09:00
存在意義があるのかな? と考えて、:before, :after, :around が使えるくらいかな、と思いました。

g000001 2008-05-05T18:50:31+09:00
call-next-methodがなんというか
考えにくいですねw
いや、普通かw

quek 2008-05-05T19:12:16+09:00
引数なしだと特定化するものがないんですよね。> call-next-method

g000001 2008-05-05T19:13:34+09:00
そうですね、そう思って書いたんですが、:aroundとか普通に動くし、アリだったんだなと気づきましたw

quek 2008-05-05T19:57:05+09:00
そっか、:aroud は普通に動きますね。なるほど!

g000001 2008-05-06T07:54:46+09:00
そうですね、ただ引っ掛けるだけみたいなので。試してみてできることに気付きました(*'-')
(provide '話題)

http://lispm.dyndns.org/news?ID=NEWS-2008-05-05-1

Rainer Joswig氏が今月末に開催されるHamburg Lisp Meetingで
Lispマシンをデモすることになり、そのために作成したLispマシンの年表

Lispマシンが稼働する姿を見たい人は5/28にハンブルグに集合だ!w
http://wiki.alu.org/Hamburg
(provide 'CL入門のためのサンプルコードどう書く)

今回は、「ファイルの存在を確認する。」
http://d.hatena.ne.jp/perlcodesample/20080505/1209997969
ゴルフ的に考えてみました。
(format t"~A は、存在しま~:[せん~;す~]~%"#1="/tmp/a.txt"(probe-file #1#))
こんにちはー
(provide '質問)

黒田さんが
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/script-lang
のページでCLに足りないもの(標準化されてないもの)として、MOPや、OOなストリームとかを挙げていますが、Weak Objectsというのがいまいち分かりません。
http://clisp.cons.org/impnotes/weak.html
というページもあるので、CLISPにもあるようですが、どういう場面で活躍するものなのでしょう?

名無しさん 2008-05-06T11:50:18+09:00
http://d.hatena.ne.jp/rui314/20070920/p1

g000001 2008-05-06T11:58:21+09:00
なるほどー。GCのためのものだったんですねー。

名無しさん 2008-05-06T12:06:56+09:00
縮められないなー>golf

g000001 2008-05-06T12:07:52+09:00
それ割と短くかけましたねw
つかぬことをお伺いしますが。佐野さんが3回目のPAIP勉強会にもってきたCLOSの本って結構良いですか?
タイトルとか教えて頂ければと…。

名無しさん 2008-05-06T16:20:34+09:00
[[ASIN:0136059406]]Object-Oriented Common Lisp Prentice Hall  Stephen Slade:著
これっすかね。

g000001 2008-05-06T16:23:11+09:00
ありがとうございます!
そうか、CLOSに焦点をしぼったという訳ではないんですね。

名無しさん 2008-05-06T16:25:05+09:00
FranzのJans Aasmanが、次はこれね?というような意味で紹介してくれた本です。

g000001 2008-05-06T16:25:23+09:00
おお、直々にw

名無しさん 2008-05-06T16:25:36+09:00
とてもよい本だと思っていますけどclosに割いたページはあんまりないですね。

g000001 2008-05-06T16:25:52+09:00
なるほどー
色々詳しく書いてある本みたいですね。

名無しさん 2008-05-06T16:26:41+09:00
またpaipの時にでももって行きますけど次回いつでしたっけ?

g000001 2008-05-06T16:27:01+09:00
いや、自分4回目いってないのでw
NANRIさんが知ってましたたしか
4回目も出席してたので、
5/17とかいってたかなあ
土曜日だったのは間違いなかったような
そして、自分はまだPAIP買ってないんですよねw

名無しさん 2008-05-06T16:30:59+09:00
出席しても忘れてしまうのです。

g000001 2008-05-06T16:31:35+09:00
ああ、4回目も出席してたんですね(^^;

名無しさん 2008-05-06T16:31:39+09:00
17は別の用事でその会場に行く予定があるげです…
gaucheの部屋で聞いてくるかな…

g000001 2008-05-06T16:32:18+09:00
うーん、それじゃ、ありえないのか…。
ですね、bi
び、さんに直接

名無しさん 2008-05-06T16:33:01+09:00
びさんにメールの方がよいだろか
うーむ
mixiとかMLとか

g000001 2008-05-06T16:34:08+09:00
はいはい

名無しさん 2008-05-06T16:34:27+09:00
他にも手段があったような気がしてきた

g000001 2008-05-06T16:34:53+09:00
自分は結構Gauche部屋で聞いちゃいますけどw
MLだと返事があったり、なかったりみたいですがw

名無しさん 2008-05-06T16:36:43+09:00
MLに投げてきた。
24にしてもそろそろ告知が無いと前回と同じノリになりそうですし。

g000001 2008-05-06T16:38:16+09:00
ああ、前回4人だったらしいですね
自分は本がないので待機してたらMLにメールがありましたね

名無しさん 2008-05-06T17:30:16+09:00
私は5分?くらい遅刻したので4人に数えられてないです。
普通に行けばよかった気がします。
待機ってもったいない

g000001 2008-05-06T17:35:08+09:00
いやあ、やっぱり、本がないと行きづらいかなあ(^^;
(provide '質問)

defsetf、define-setf-expander、(defun (setf ...))の使い分け

サンプルコードによる Perl 入門をみていて、
http://d.hatena.ne.jp/perlcodesample/20080331/1206979653
Perlでは定番の

$message =~ s/tennis/baseball/;

のような書法が、CLだとどう書けるかなと考え、直訳したら、

(let ((message "I play tennis."))
  (setf (ppcre:scan "tennis" message) "baseball")
  message)

みたいな感じかなあと思い色々試行錯誤して、
http://paste.lisp.org/display/60324#1
みたいな感じのを作りました。
この例では、defsetfと、マクロを組み合わせてるんですが、(defun (setf ..))とか、
define-setf-expanderとかでも実現できるもんなんでしょうか?
いや、もちろん、

つppcre:regex-replace

とかだとは思うんですがdefsetfの問題ということで…。

名無しさん 2008-05-06T19:34:38+09:00
なんというか高度というわけじゃないんだろうけど自分であんまり興味を持たないと知れないことだなーと
さてdefun setfってどう展開されるんだろうとか思ったりしながら
ぽちぽちみてきますけどsbclの展開系ってつまんないですね。(悪い意味じゃないですけど

g000001 2008-05-06T19:37:17+09:00
これの場合、ストリングが破壊的に変更できれば、関数的でも良いと思うのですが、
分からなかったので、マクロで処置したというような
感じですね…。

名無しさん 2008-05-06T19:38:33+09:00
破壊的に…はある程度想定の範囲が無いと難しそうですね

g000001 2008-05-06T19:38:52+09:00
listだったら、おkだと思うんですよね。
なんというか、非常に特殊なケースな気もしないでもありません^^;

名無しさん 2008-05-06T19:40:36+09:00
文字列は文字のリストと今言われてもなんか困る…
気がする

g000001 2008-05-06T19:41:58+09:00
ああ、なるほど^^;

名無しさん 2008-05-06T19:42:19+09:00
古典perlでは頻出だったような記憶があるのですが
この言語ではこうやるっていう部分は平行移動できないですねー

g000001 2008-05-06T19:44:31+09:00
CLでこういう書き方はしないでしょうねw

名無しさん 2008-05-06T19:46:01+09:00
すばらしくどうでも良いんですけど
(let ((message "I play tennis."))
(setf (ppcre:scan "tennis" message) "baseball")
message)
messageを最終行
残したのは?
何の意図でしょう?
と思ったのですが

g000001 2008-05-06T19:47:29+09:00
ああ、これは、messageが変更されてしまっているということを表したかったのですね
(let ((message "I play tennis."))
  (setf (ppcre:scan "tennis" message) "baseball")
  message)
;=> "I play baseball."

名無しさん 2008-05-06T19:48:13+09:00
あー

g000001 2008-05-06T19:48:14+09:00
と言う感じで、

名無しさん 2008-05-06T19:48:14+09:00
なるほど
setfの結果がモッタイナイ
とか
明後日の方向へ
いってしまいました

g000001 2008-05-06T19:49:31+09:00
自分が試した感じでは
(defun (setf ...))とか、define-setf-expanderでは、
"I play baseball."というのが書けなくて
"I play tennnis."になっちゃうんですね^^;
それで、マクロを書いて、defsetfでくつけるという…。
そんな感じになってしまいました。
ちょっと説明が悪かったかもですね。単純に

(let ((message "I play tennis."))
  (setf (ppcre:scan "tennis" message) "baseball")
  message)
;=> "I play baseball."

どう書く? という問題にした方が良かったかも…。
(provide 'CL入門のためのサンプルコードどう書く)

今回は、「ディレクトリの存在を確認する」
http://d.hatena.ne.jp/perlcodesample/20080506/1210082563

(let ((dir "/etc/fstab"))
  (format t "~A はディレクトリで~:[はありません~;す~]~%" dir (kmrcl:probe-directory dir)))

ディレクトリかどうかを判定する標準関数はないのかな?
(provide 'ネタ)

こんなブログがあったとは!
Object-Oriented Programming in COMMON LISP を読む
http://oopcl-review.blogspot.com/

「初めての人のためのLISP」を読む
http://hajimete-no-hito-no-tameno-lisp.blogspot.com/

hatenaだと拾いやすいんだけど、bloggerってどうしても漏れるなあ。

名無しさん 2008-05-07T14:55:28+09:00
oopclはもってないっすねー
竹内本は欲しいんですけど

g000001 2008-05-07T14:56:20+09:00
(provide '告知)

「Paradigms of Artificial Intelligence Programming:
Case Studies in Common Lisp」
                             by Peter Norvig *2

の第5回読書会を開催します。これまで同様、原文をゆっくりと読みなが
ら、面白そうなところで適宜話を膨らませるような、ゆるい形で進めたい
と考えています。もちろん、事前に面白そうなネタを仕込める方は大歓迎
です。プロジェクタを使えるので、デモも歓迎します。

                         記

日時:    2008年5月10日(土) 13:00~18:00
場所:    株式会社タイムインターメディア2F大会議室
        東京都新宿区坂町26-27 インテリジェントプラザビル 2F *3
参加費:  無料
参加条件:特にありませんが、上記の本とCommon Lisp処理系をインストールした
        ノートパソコンを持参することをお薦めします。
その他:  持ち込みネタ(PAIP本に関わる発表とかデモとか)大歓迎です。
        予定通りならp.79 3.10 Destructive Functionsから読み始めます。

質問や提案があれば、上記WiLiKiのページ*1かこのメーリングリスト、あるいは
LingrのGauche部屋*4 に流してもらえるとありがたいです。また、この告知自体の
転載を歓迎します。

それでは、よろしくお願いします。
こんにちはー
はじめてのLISPって名著らしいですよねー

名無しさん 2008-05-07T14:59:43+09:00
とりあえずマックの勢力が多すぎて笑ったっすlisp_scheme

g000001 2008-05-07T15:00:07+09:00
あ、参加してみました?

名無しさん 2008-05-07T15:00:11+09:00
いあ
ログを見てきた感じです

g000001 2008-05-07T15:00:28+09:00
なるほど、そうかもw
自分もMacだし
いまはLinuxですが…

名無しさん 2008-05-07T15:01:03+09:00
windowsはあんまりってことですかね

g000001 2008-05-07T15:01:29+09:00
OSS関係の人が多いのかもしれませんね

名無しさん 2008-05-07T15:02:20+09:00
まーしょうがないですね
主な対象者向けにはそんなに悪くないと思うんですけど
emacsに漬かりきっている人がスイッチできるとも思えないので

g000001 2008-05-07T15:03:43+09:00
いや、やっぱり手軽で良いと思いますよ
xyzzyは
meadowはなんだかんだで面倒だと自分は思いますねー

名無しさん 2008-05-07T15:04:52+09:00
漢字入力とfont以外に癌でも無い気がして…
それってプログラマ的には実はどうでもいいんじゃないかと…
まぁmeadowが埋め込んであるgaucheboxのサイズのでかさに閉口して

g000001 2008-05-07T15:06:06+09:00
結構gates設定でxyzzy使ってる人も多いみたいですし
客層は結構違ってるんじゃないかと

名無しさん 2008-05-07T15:06:15+09:00
それから作業を始めて3,4時間くらいで作ったアーカイブなので

g000001 2008-05-07T15:06:21+09:00
そういう人にはgaucheboxは良いかと思うなあ

名無しさん 2008-05-07T15:06:55+09:00
gatesで矛盾しないように設定しなおすかなー

g000001 2008-05-07T15:07:08+09:00
あと、初心者向けということだと
インデントですかね

名無しさん 2008-05-07T15:07:18+09:00
まぁyasuyukiさんに拾ってもらわないと駄目っぽいですよね。
はい

g000001 2008-05-07T15:07:23+09:00
初心者に限ってこだわりそうというかw

名無しさん 2008-05-07T15:07:39+09:00
それは眠くなったので終了した感じです
w
schemeのインデントをちゃんと理解してないのが痛いところ

g000001 2008-05-07T15:08:57+09:00
まあ、でもその辺は有志がですね
直してくれるかと思うんですね

名無しさん 2008-05-07T15:09:41+09:00
ライセンス問題無いのを集めて書いてるんで
…一番の問題は僕のが明記してない…
しまった
mitとgplが混じってるので
mitかな…

g000001 2008-05-07T15:11:41+09:00
なるほどー
自分はちょっと試してみて、良いなとおもったのでIRCにネタとして投下してみたのですがw
これって、Gauchebox/xyzzy/xyzzy.exeを叩くって使い方でいいんですよね?

名無しさん 2008-05-07T15:13:36+09:00
はい
irc今いったほうがよさそうな流れだな

g000001 2008-05-07T15:14:02+09:00
これは初心者にはいいと思うなあ
まあ、絶賛協力者募集中ということでw

名無しさん 2008-05-07T15:19:57+09:00
おー書き込めた。化けてない…

g000001 2008-05-07T15:23:44+09:00
大丈夫ですね。結構Utf-8で
切断されるひとが続出なんですがw

名無しさん 2008-05-07T15:30:53+09:00
xyzzyの挙動を理解してないとbuildできない感じなんですけど動かしてみると結構普通…
自前skkのことを考慮されてないのでminibufferでメッセージの編集の際に毎度c-x c-jがちょっと面倒ぐらいでした

g000001 2008-05-07T15:32:13+09:00
なるほどー。skkのc-jって
結構色々ぶつかるんですよねw

名無しさん 2008-05-07T15:33:17+09:00
キーバインドの衝突回避ってどうやるんでしょうかね…
作者と趣向が同じであることを祈るくらいしかないような…

g000001 2008-05-07T15:33:41+09:00
自分は、c-oに移動してしまってますね。emacs上での話ですけど…

名無しさん 2008-05-07T15:34:39+09:00
移動か…

g000001 2008-05-07T15:35:20+09:00
skkのc-jは改行してインデントすればいいじゃん、ってことでもとのバインドを
上書きすることにしたみたいなんですが、
自分はc-jで改行+インデントしたいので、skkのデフォルトは邪魔なんですよねー
あれ、話の波が落ち着いてしまったw>IRC

名無しさん 2008-05-07T15:39:48+09:00
ま、そんなもんです
チャットであんまり忙しいのもいかん気がするので

g000001 2008-05-07T15:40:23+09:00
そうなんですよね、そのあたりの感覚がまだ自分は掴めてないですねえ

名無しさん 2008-05-07T15:40:31+09:00
もとよりwindows使っている人が誰もいない…
=あんまり意味ない?
という感じがとてもします

g000001 2008-05-07T15:40:59+09:00
いやー、夜は結構きてるから
winな人ですが
2chのスレみて訪問とか多くなってきた感じかなあ
そういう人はwinの方が多いんじゃないかなあ

名無しさん 2008-05-07T15:41:53+09:00
ふむん
boxじゃない配布もちょっぴり考えますよ

g000001 2008-05-07T15:43:03+09:00
実はLisp in a Boxは使ったことがないのですが、
こんな感じなんですかね?
最初からREPLが開くみたいな。

名無しさん 2008-05-07T15:43:58+09:00
違うと思います
というかemacs版のgaucheboxも違います。

g000001 2008-05-07T15:44:19+09:00
あれ、もっと素のSLIMEみたいな感じですか?

名無しさん 2008-05-07T15:44:32+09:00
slimeですよー

g000001 2008-05-07T15:44:44+09:00
最初からREPLが開くのが良いところだと思いましたね。

名無しさん 2008-05-07T15:45:41+09:00
ヤバイどうしていたかすでに忘れかけている…
おー
画面分割を最初っからやってたんだー
評価するとreplを起動するんじゃなかったっけー

g000001 2008-05-07T15:50:52+09:00
それ良いとおもいますよ

名無しさん 2008-05-07T15:51:07+09:00
とか思ったら違って驚いた。

g000001 2008-05-07T15:51:46+09:00
そしてIRCでも話し掛けられてますよw

名無しさん 2008-05-07T15:51:48+09:00
C-c sが理解できなかったらおしまいだから…

ありがたいですw

g000001 2008-05-08T10:45:13+09:00
こんにちはー
(provide '話題)
ベアメタルの上で動く、SBCL - SBCL-OS
1.44FDか、CDからブートするらしい。MovitzのSBCL版という感じ?
http://www.lisphacker.com/projects/sbcl-os/project-map/
SBCL-OSの説明
http://www.lisphacker.com/projects/sbcl-os/how-it-works-2008-04-19.txt
(provide 'ニュース)

CMUCL 19e リリース
http://common-lisp.net/project/cmucl/downloads/release/19e/
MacOSXは今バージョンからIntel版にシフトした模様。

リリースノート:
http://common-lisp.net/project/cmucl/downloads/release/19e/release-19e.txt

名無しさん 2008-05-09T01:46:47+09:00
hiiiiiiiiiiii

g000001 2008-05-09T10:49:37+09:00
こんにちはー
(provice '告知)

5/10(土)に予定されていた「第5回PAIP本読書会」は、会場の手配の問題で、
中止とのことで、先送りになりました。
日程は、MLで議論してゆくとのこと

名無しさん 2008-05-09T14:45:11+09:00
残念
hiiiiiiiiiiiiiii
i want to speak
is there any body here
heyyyyyyyyyyyyy
hiiiiiiiiiiiiiiiiii
こんにちわ
mohammad u from?
quek
hi

quek 2008-05-09T17:21:18+09:00
こんにちは、アルミさん。
すみません間違えました。アミルさんですね。

g000001 2008-05-12T23:40:59+09:00
困った、ネタがない!

名無しさん 2008-05-13T03:45:33+09:00
ご存知の通りに割合にそれどころじゃない感じです…。
ircも寂しげですね。
寝よ
…時間が間違っていた上に変なテンションだった…

g000001 2008-05-13T12:59:44+09:00
頑張って下さい!
間に人が入って調整するとばかり思っていたのですが、直にやりとりするとは予想外でした…。
(provide 'ネタ)

LispUserさんのSBCLマニュアルの翻訳で、スペシャル変数とグローバル変数の意味を使いわけているように読めたので試してみたら、挙動が違っていました…。
http://lispuser.net/commonlisp/sbcl.html
スペシャル変数は親スレッドから継承しないけれど、グローバル変数(というかスペシャル以外の変数)は継承する様子。
http://paste.lisp.org/display/60662
若干ややこしい。

名無しさん 2008-05-13T16:05:22+09:00
global変数は共有してよい。フレームは共有するとわけがわからない。ローカルな変数は各々で共有
という感じですね
パッケージ(シンボル)とか関数とかについてはどうなんだろうなーと思っているんですけどなにかありますかね?

g000001 2008-05-13T16:13:33+09:00
なるほど、なるほど。

名無しさん 2008-05-13T16:14:17+09:00
各々で共有は嘘ですね各々で持つ

http://slashdot.jp/interview/article.pl?sid=08/05/13/0727238

g000001 2008-05-14T03:22:33+09:00
これは凄い!
ソースを見てないので何とも言えませんが、ハッシュにしたら速くなるんでしょうか。
探検してみよう。

名無しさん 2008-05-14T03:24:49+09:00
何でこのプロジェクトがインタビュー受けたのかが気になります

g000001 2008-05-14T03:26:11+09:00
そういわれれば、そうですねー。
点字とCLの組み合わせがレアだったのかなあ。

名無しさん 2008-05-14T03:27:21+09:00
clは常にレアな気がしますが…
点字ソフトの社会的な意義とかですかね

g000001 2008-05-14T03:30:46+09:00
このコーナーで取り上げられてるのをざっと眺めてみたんですが
そういう方向性が若干あるような、ないようなw
brcのソース眺めて見ました。
多分、Emacsとかエディタの支援なしで書かれているのではないかと…。

名無しさん 2008-05-14T03:42:56+09:00
インデントですか?

g000001 2008-05-14T03:44:27+09:00
そうですねー。でもソースによってまちまちだし、普通のもあるから
なんらかの進展が途中であったのかも
あと、文字列操作のライブラリとか全部自作みたいで苦労されている様子。

名無しさん 2008-05-14T03:49:19+09:00
あー気になるな…

yuyam 2008-05-14T03:50:25+09:00
こんばんわ

g000001 2008-05-14T03:50:39+09:00
こんばんはー

名無しさん 2008-05-14T03:50:40+09:00
こんばんわ

yuyam 2008-05-14T03:51:57+09:00
点字の変換ですか

g000001 2008-05-14T03:52:34+09:00
そうですね、珍しいので、眺めてしまいますw

yuyam 2008-05-14T03:53:31+09:00
レポジトリのぞいてみてます
おお
なんかCっぽい

g000001 2008-05-14T03:54:53+09:00
割とごりごりですよねw
どうもこのコードかなり古くからあるっぽいのですが、
処理系の判別にlucidとかsymbolicsとかkclgがあるんですよねw

名無しさん 2008-05-14T03:55:55+09:00
どこかからのフォークが混じってます?
おはようでしょうか こんばわでしょうか
…こんな時間にこんなに人数が…
やはりこんな時間帯に

g000001 2008-05-14T03:56:36+09:00
こんばんはー

名無しさん 2008-05-14T03:57:29+09:00
気分としてはこんばわです

g000001 2008-05-14T03:57:44+09:00
珍しい話題のときに、珍しくも人が集まるという珍しさw

yuyam 2008-05-14T03:57:55+09:00
こんばんわです

名無しさん 2008-05-14T03:57:57+09:00
飼い猫に起されまして 覗いてみましたが

yuyam 2008-05-14T03:58:10+09:00
おお、私もです
寝てる私の背中で猫が寝てたようなのですが、雷にびっくりして爪たてられて、目がさめました。

g000001 2008-05-14T03:59:24+09:00
CLで書かれた点字のプログラムがあるということで話をしてました。

名無しさん 2008-05-14T03:59:32+09:00
ごめんなさい話題を中断したみたいで

g000001 2008-05-14T04:00:00+09:00
いえいえ〜
yosiさんへの説明のつもりでした(^^

名無しさん 2008-05-14T04:02:03+09:00
点字を打刻変換してくれると言う意味のでしょうか?
記事を読むとclの生産性が高く点字の世界は深いっぽい
という事意外まるでわかりませんが
少しアーカイブを読んで見見ます
とても面白そうです
コンバーター

g000001 2008-05-14T04:14:34+09:00
そうですね、変換エンジンみたいなんですけども

名無しさん 2008-05-14T04:14:37+09:00
早起きすぎるみたいですね私にはブログの方で.....ごめんなさい では

g000001 2008-05-14T04:14:56+09:00
はい、またおまちしてます〜
100行位ある関数が結構ありつつ

名無しさん 2008-05-14T04:16:32+09:00
ツッコミいれてみるとか?

g000001 2008-05-14T04:17:05+09:00
いや、これはきっとコツコツと地道に咲いた花なので
そっとしておくというw
いろいろ勉強もされてるみたいですよ

yuyam 2008-05-14T04:17:38+09:00
w

g000001 2008-05-14T04:17:52+09:00
On Lispから引用したコードとか沢山貼付けてありましたw

yuyam 2008-05-14T04:17:56+09:00
勉強の跡は感じますね
Tools.lispでしたっけ

名無しさん 2008-05-14T04:18:12+09:00
上から目線が怖い…

g000001 2008-05-14T04:18:36+09:00
いや、自分には書けないんですけどw

yuyam 2008-05-14T04:19:12+09:00
上から?

名無しさん 2008-05-14T04:20:02+09:00
「よくがんばってるじゃない」みたいな。
冗談ですよ

yuyam 2008-05-14T04:20:55+09:00
ああ、そういう意味ですか。いや、私はCLでプログラム書いた事ないのでいわずもがなです
On Lispも今年に初めて読みました。

名無しさん 2008-05-14T04:22:26+09:00
なるほど

g000001 2008-05-14T04:23:12+09:00
でも、これは
結構昔から開発されているものの様な気がするんですよねー
それとも、コピペかなんかしたのかなー。

名無しさん 2008-05-14T04:24:57+09:00
lucidとかsymbolicsとかkclg ってのがいつごろの機械だかよくわからないです

g000001 2008-05-14T04:25:23+09:00
80年代後半から90年代前半ですねー

yuyam 2008-05-14T04:34:48+09:00
連想リストをハッシュなり、あるいはdbm系のdb使うとかしたら性能あがりそうではある

g000001 2008-05-14T04:43:11+09:00
うーん、上から目線じゃなくて、
やっぱり、読んでて「がんばってるじゃない」って思うのは、それはそれでありかなあw
自分も初心者ですが、
なんて言うかポジティブな意味でねw
インタビューでご本人もそんな感じのことおっしゃってますし。

yuyam 2008-05-14T04:52:14+09:00
CLで速いコードとか、CLらしいコードってのは私はまだよくわかんないんですけど
ああいいや。なんでもないすw

g000001 2008-05-14T04:55:13+09:00
いや、多分、なんていうか
C診断室っていう本があると思うんですけど

yuyam 2008-05-14T04:55:40+09:00
ありますね

g000001 2008-05-14T04:56:12+09:00
そういうところがあるんじゃないでしょうか。言語に共通のというか。

yuyam 2008-05-14T04:56:38+09:00
それです。そういう事をいいたかったけど、めんどうくさかったのでやめましたw
言語固有じゃなくって、
いわゆるアルゴリズムとデータ構造とか
定石とか
なんかそんなんですよね
そういう事を勉強するにはどうしたらいいのか
未だに私はわからないんですけど
多分、地味に継続するだけなのかな、とか想像してます。

g000001 2008-05-14T04:58:32+09:00
職人ですね〜

yuyam 2008-05-14T04:58:38+09:00
その地味な継続の四苦八苦を感じるコードでした

g000001 2008-05-14T04:59:55+09:00
自分は楽しみつつボトムアップで書いてるのかな、と感じていて
その辺りがCLの生産性の高さ、と表現してるのかなあと思いました。
ただ、大きい関数のところは、大変そうですが…。

yuyam 2008-05-14T05:02:51+09:00
私のプログラミング歴が浅いという事と、文字では誤解を招きやすいという2点において
ここで言うのを躊躇ったことなんですけど

g000001 2008-05-14T05:03:50+09:00
いえいえ、自分もプログラミング歴は浅いです〜

yuyam 2008-05-14T05:04:16+09:00
ちょっとまえに自分が悩んで、なんか適当にぐぐったりして人のコードよんで「そうかそうすればいいのか」とはっとさせられて、っていう
そういうのが一部あったりして
で、そういう時いつも自分のセンスのなさにへこんだりするんですがw
でも最近、みんな最初はそうだったんだよ、的な話をきいたりして
なんかいろんな感情がぐるぐるしました。

g000001 2008-05-14T05:06:53+09:00
なるほどー、yuyamさんは職業プログラマさんなんですか?

yuyam 2008-05-14T05:07:03+09:00
一応そうです

g000001 2008-05-14T05:07:34+09:00
自分はCLがなんとなく好きなだけで、
プログラミングの基礎もなんにも分かってなかったりして
そもそもプログラムの批評なんかできないんですが、
こういう流れになるとは思ってなかったので
どうポジティブに纏めたらいいかと、今探っていますw

yuyam 2008-05-14T05:10:04+09:00
w
チャットってむずかしいですよね
口語で文章書くんで
意図に対する読み手の解釈の幅がすごく広い気がする。
私個人の心証ですが、
最初からポジティブに感じています。
インタビューで作者さんが中年と書いておられたとおもうんですけど、

g000001 2008-05-14T05:11:56+09:00
はいはい。

yuyam 2008-05-14T05:12:07+09:00
コード読んだ時に、
私はすごい努力と試行錯誤の跡に感じたんです。

g000001 2008-05-14T05:12:56+09:00
なるほど、なんとなく段階的なところがあるんですよね

yuyam 2008-05-14T05:13:11+09:00
中年と書いておられるので、多分私よりすこし上だと思うんですが、
この人のように継続的に1つのものをいじり続けた経験が私はないので
そこらへんに感銘を受けました。
仕事は仕事なんで、いじりつづけますけどねw
それと同時に
自分はこれでいいのか、という不安も覚えました。

g000001 2008-05-14T05:15:20+09:00
なるほど。
自分は、あまり何も考えてませんでしたw

yuyam 2008-05-14T05:17:03+09:00
w

g000001 2008-05-14T05:17:49+09:00
CL初心者が、偉そうにコード批評してましたw
いやー、難しい

yuyam 2008-05-14T05:20:10+09:00
www
ややこしいっすね、こういうのw
なんか言葉選ぶのもしんどいんで、ふつうの口でしゃべろう。

g000001 2008-05-14T05:20:53+09:00
さっきから色々な策を考えてるんですけど
やましいところが無い訳でもないのが難しいww

yuyam 2008-05-14T05:21:56+09:00
コードでいえば色々つっこみどころは一杯あるわけなんです
あと言語でいえば、だいたいどの言語でも書ける考え方なわけです
たぶん。
けど、仕事でいろんな技術系の人にお会いしてきたけど
すごい人もいれば、SQL Injectionを3年経っても全く理解してくれない人もいたりとか
でもそういうのはどうでもよいんですw
いや、納品物としてはよくないんですけど
それは私がなおせばいいんです。

g000001 2008-05-14T05:23:57+09:00
色々大変なんですね

yuyam 2008-05-14T05:24:05+09:00
コード批評をやり合って切磋琢磨とか
多分、お互いがその土俵にあがってないと、できないんで
その土俵にあがってない人にやっても、相手おいつめるだけだったりして、すごい後味悪かったり。

g000001 2008-05-14T05:25:12+09:00
うーん、なるほど。

yuyam 2008-05-14T05:25:19+09:00
本当はそういうのが当たり前というコンセンサスとれればいいんですけど
現実的には難しいし。
で、一方で
自分の半年前のコードをみると恥ずかしくて脳みそを爆破したくなるという現実もありまして、

g000001 2008-05-14T05:26:29+09:00
そうなんですかー。

yuyam 2008-05-14T05:26:34+09:00
はいw
で、そういう事、前にちょっと考えた事があるんです。
どうすりゃいいんだろう、って。
上下の階層のモデルが面倒の元なのかな、と今は思います。

g000001 2008-05-14T05:27:57+09:00
なるほど、抽象化とかですか?

yuyam 2008-05-14T05:28:09+09:00
技量と人格とが、いっしょくたになってひとつの上下階層になっていると理解されてしまうと
色々もめるわけです。
こっちとしては、お互いに技量があがるための礎として

g000001 2008-05-14T05:28:29+09:00
ああ、なるほど、そういうことですか。

yuyam 2008-05-14T05:28:32+09:00
色々コード批評とか
やってもいいんじゃないの?
っておもってるけど
相手が上下のモデルをもってると
そうは解釈してもらえなくて

g000001 2008-05-14T05:29:38+09:00
なるほど、完全実力主義なら、心への負担もすくないのになあ、みたいなw

yuyam 2008-05-14T05:29:40+09:00
「お前、ちょっと知った位で人格否定みたいなまねすんなよ。人としておかしいよ。」的な事になったり

g000001 2008-05-14T05:29:52+09:00
自分もそういうこと考えたことありますw

yuyam 2008-05-14T05:30:02+09:00
「お前の上もごまんといるよ。うざいんだよ。」的な事になってしまって
みんな傷ついておわっちゃう、という。

g000001 2008-05-14T05:30:36+09:00
なるほどー。

yuyam 2008-05-14T05:30:44+09:00
私の場合、コーディングとか設計で相談できる人がまわりにいないという、ど田舎環境なので
厳しい意見でも色々新しい見地開いてくれる人が欲しいなあ
なんて良く思っていたせいか、
コード批評は上下階層のモデルとは捉えていないんですけど
その解釈の違いが、火種になるようです。

g000001 2008-05-14T05:31:37+09:00
そうですねー、
スポーツマンシップ的な
ところというか
さっぱりとしたところというか
自分の場合は、ボロクソに言いまくって自分もボロクソに言われると
いうのが理想ではありますが、

yuyam 2008-05-14T05:33:24+09:00
w

g000001 2008-05-14T05:33:37+09:00
それが他の人の価値観でも、そうかといえば、そうじゃないので

yuyam 2008-05-14T05:33:42+09:00
その合意が成立している場をみたい。同席したい。

g000001 2008-05-14T05:33:44+09:00
大変ですよねー。

yuyam 2008-05-14T05:33:53+09:00
そうですよね。

g000001 2008-05-14T05:34:15+09:00
でも、割と技術者の皆さんって
完全実力主義に近いところがあるから

yuyam 2008-05-14T05:34:44+09:00
きっと、そういった解釈モデルの差異が、この微妙な空気を作っている!w

g000001 2008-05-14T05:34:46+09:00
すっきりしてるような気もするんですけれども…。

yuyam 2008-05-14T05:34:57+09:00
私個人の実感では
完全実力主義な人は少数とおもいます
自分を含む大半の人は

g000001 2008-05-14T05:35:33+09:00
そうなんですかー。

yuyam 2008-05-14T05:35:46+09:00
びびってますよ。
自分よりすごいと感じる人に
何か言われる事が
こわいんじゃないですかね

g000001 2008-05-14T05:36:26+09:00
なるほどー。

yuyam 2008-05-14T05:36:32+09:00
そんな風に受ける必要はないんでしょうけど、
人情ってやつかなw

g000001 2008-05-14T05:36:50+09:00
自分の場合は、ちょっと外野な感じなので
真正面から受けることはあまりないですねー。

yuyam 2008-05-14T05:37:26+09:00
私の場合は、それを避けても始まらねー
を合い言葉に
ボロカスにいいあう土俵に上っているつもりですw

g000001 2008-05-14T05:38:08+09:00
なるほどー、

yuyam 2008-05-14T05:38:13+09:00
けど、なんか怖い、なんかへこむっていう気持ちはすごいわかりますw

g000001 2008-05-14T05:38:46+09:00
そういうところでいうと、MonaOSのひげぽんさんとか凄いなあといつも思います。

yuyam 2008-05-14T05:38:55+09:00
ああ、すごいですね
ぐいぐい矢面にw

g000001 2008-05-14T05:39:11+09:00
自分を晒しまくっているので、凄いなとw

yuyam 2008-05-14T05:39:18+09:00
ああいうタフネスがある人は
すごいっすね。
私は全然表に出ずに
いっつも遠巻きに見てるだけですけど
わだばさんのblogにしてもそうですし
ひげぽんさんもそうですけど
なんかそういう風に前にでていく人っていうのは
多分、ボロカスに言い合う土俵にあがってるんだとおもいます。

g000001 2008-05-14T05:41:46+09:00
いや、自分は、
斜め上ですねw

yuyam 2008-05-14T05:41:57+09:00
で、その土俵を現実生活にそのまま持ち込むと、先の微妙な空気になるというw

g000001 2008-05-14T05:42:05+09:00
怒られない場所を探っていますw

yuyam 2008-05-14T05:42:20+09:00
十分目立ってるとおもいますw

g000001 2008-05-14T05:42:55+09:00
いやでも、なんというか、
マイナーな上にマイナーなんで、
間違ってても誰も指摘できないんですね、多分。

yuyam 2008-05-14T05:43:31+09:00
w

g000001 2008-05-14T05:43:44+09:00
それを良いことに適当なことを書きまくっているんですねw
あと、人生投げてるんで、
ぶっちゃけ、分かんないくせに知ったふりして書いてる馬鹿でも、良いんですww

yuyam 2008-05-14T05:45:23+09:00
w

g000001 2008-05-14T05:45:47+09:00
なので、調べて分かったことを書いてるって感じなだけですねー。
プログラミングの実力があれば
もっともっと面白いんだと思うんですけど

yuyam 2008-05-14T05:46:28+09:00
あるんじゃないですか?

g000001 2008-05-14T05:46:59+09:00
ありそうに思わせるような内容を書いてるんでしょうねww
ないんですけどw

yuyam 2008-05-14T05:47:24+09:00
面白い人だなあw

g000001 2008-05-14T05:47:57+09:00
いや、なんていうか、そういうコツみたいなものは
なんとなく人生経験的に持ち合わせがあるんですねw
詐欺師とか向いてるのかなと、
思うんですよww

yuyam 2008-05-14T05:49:36+09:00
少なくとも私よりは、プログラミングを仕事にすべき人のような気がするけどなあw
私は仕事じゃなかったらプログラミングなんてしたくねえー
っていうw

g000001 2008-05-14T05:50:12+09:00
そうなんですかw
自分は、ただ面白そうなところに突っ込んでるだけなので、

yuyam 2008-05-14T05:50:33+09:00
そうなんです、いろんな意味ですみませんw

g000001 2008-05-14T05:50:40+09:00
これはこれで仕事にするのは無理でしょうねw
いえいえ〜。

yuyam 2008-05-14T05:51:58+09:00
私はもともとプログラマ志望でもなかったんですけど
地元の技術系企業(今の職場)がプログラマしか募集なくって
まあとりあえずやっとくか
って感じで今に至りますw
センスがないんですよねwww
センスがない。むいていない。という自覚があったから
よかったのかもしれないですけど。
理解できなくても当たり前。センスないんだから人より時間かけて勉強しなきゃわかるわけない。
っていうのが、よかったのかな、と。
無駄にストレスに感じる事なく継続できた。

g000001 2008-05-14T05:54:53+09:00
なるほどー、でも大事ですよね。
それがどういう流れでCLに辿りついたのですか?

yuyam 2008-05-14T05:55:35+09:00
どういう流れだったかなあ

g000001 2008-05-14T05:55:47+09:00
割とマイナーな方向ですよねw

yuyam 2008-05-14T05:56:01+09:00
そうですねw
業務系のソフト組む事が大半なんですけど
基本的には客の業務に合わせていく方向で設計するわけです

g000001 2008-05-14T05:56:58+09:00
はいはい。

yuyam 2008-05-14T05:57:25+09:00
客に「業務をこんな感じに改善してくれると、システム化と相性がよくなるんで、色々効果でますよ」といったところで「おk」なんて返事はめったにかえってこないんで。
ある程度実績とか関係を積んで行くと、そういう返事してもらえる事もふえるんですけどね。
そうすると、論理的におかしかったり、ちょー適当だったり、無駄にまどろっこしい仕様が大半をしめてくるんです。

g000001 2008-05-14T05:58:42+09:00
そういうものなのですかー

yuyam 2008-05-14T05:58:57+09:00
頻繁に仕様がかわる(業務のやりかた自体が頻繁にかわる)とか
矛盾を抱えたまま、人間の対応力に任せた業務とか
そういう、いわゆる美しくない要求ってのは
やっぱ、泥臭くなりがちなんですよね。
こっちとしても、あんまり泥臭い事ばっかりやってても飽きてくるし

g000001 2008-05-14T06:00:18+09:00
なるほど

yuyam 2008-05-14T06:00:22+09:00
お客としても、電話一本30分対応みたいな
そういうのが多分理想だとおもうんですね
それで
色々勉強して
柔軟性だとか
確実性だとか
抽象だとか
そういう事を皮膚感覚的に捉えられるようにならんと
一向に、自分の会社も自分自身もお客も
幸せにはなれんぞ
とおもって
色々つまみ食い的に勉強してるうちに
lispに着陸した
といった具合です。

g000001 2008-05-14T06:02:14+09:00
なるほど、日々是精進ですねー。

yuyam 2008-05-14T06:02:25+09:00
多分、lambdaがきっかけだったとおもうんですけど
あんまりおぼえてないですw

g000001 2008-05-14T06:02:52+09:00
shiroさんのエッセイとかですか?

yuyam 2008-05-14T06:03:04+09:00
shiroさんのエッセイは多いに影響うけましたけど
lambdaにドキッとしたあとですね
ちゃんと勉強したほうがいい
という確信をもって
色々あさってるときに
shiroさんのエッセイに到達
Gaucheをインストール
という流れだったとおもうます

g000001 2008-05-14T06:04:09+09:00
なるほどー。
私は、引きこもりになって
やることないからやってるだけですねw
すいませんwww

yuyam 2008-05-14T06:04:52+09:00
なにもやることない時に、clを選んだってのが
すげえなあw
どういう発想なんだw

g000001 2008-05-14T06:05:24+09:00
引きこもるちょっと前にL-99を解いてみていて
パズルみたいで面白くなってきたので、

yuyam 2008-05-14T06:05:38+09:00
私がやることなかったら、寝てるか山に山菜とりに行くか、海に釣りに行くとおもいますw
おおー

g000001 2008-05-14T06:06:17+09:00
最初lispに実用性を求めてたんですけど
それを捨てたら面白くなって来たんですよね、不思議なことに
すいません、6時ですねw
お時間大丈夫ですか?

yuyam 2008-05-14T06:07:25+09:00
大丈夫です
今日は寝ずに出社ですので。
本当は徹夜の予定だったんですけど
うたたねしてしまっていた。
これが本来あるべき姿ですw
見たかった映画を夜通し見る祭りを

g000001 2008-05-14T06:08:35+09:00
そうだったんですか、それなら良いのですが.

yuyam 2008-05-14T06:08:38+09:00
一人で開催中なんです
紅の豚に涙しそうです。

g000001 2008-05-14T06:09:48+09:00
そうなんですかw
今後は内製ツールをCLで作ったりするんですか?

yuyam 2008-05-14T06:11:09+09:00
どうだろう
Scheme (Gauche)で作って納品した事はあります

g000001 2008-05-14T06:12:05+09:00
おお、凄いですねー。ちゃんと活用されてるじゃないですか。

yuyam 2008-05-14T06:12:21+09:00
そのアプリは全然難しい事はしてないんですけど
webだったりする部分があるので
ある程度パフォーマンスが欲しい
っていうのと
ころころ顧客の要求がかわるっていうことで
gaucheで書きました。

g000001 2008-05-14T06:14:03+09:00
なるほどー。

yuyam 2008-05-14T06:14:20+09:00
最近CLにしといたほうがよかったかも
と思う事がありましたけど
まあどっちでもいいかな。

g000001 2008-05-14T06:15:13+09:00
CLだとGaucheより面倒なことがあるかもしれませんねー
何が面倒って

yuyam 2008-05-14T06:15:24+09:00
そうですね、逆もありますけど。

g000001 2008-05-14T06:15:35+09:00
やっぱり教えてくれる人がいないというか
ハマっても何が悪いのか分からないというか

yuyam 2008-05-14T06:16:40+09:00
w

g000001 2008-05-14T06:16:51+09:00
Gaucheの方が地面は整ってるようで、そのあたりはうらやましいですよねー。

yuyam 2008-05-14T06:17:21+09:00
マニュアル読むだけでかなり書けるようになっちゃって
「俺意外といけんじゃん」みたいな勘違いをかつてしましたw
それくらい地盤しっかりしてますねw
でもCLも
悪くないんじゃないですか?

g000001 2008-05-14T06:18:28+09:00
そうですねー
でも、仕事で使うというか、

yuyam 2008-05-14T06:18:48+09:00
今まだ勘を養っている段階ですけど

g000001 2008-05-14T06:19:03+09:00
仕事でちょっとしたところで使うということになると
何かが足りない気がするんですねー
自分はプログラマじゃないので、憶測ですがw

yuyam 2008-05-14T06:19:34+09:00
例えばどういう?

g000001 2008-05-14T06:19:46+09:00
文字コードの問題とか

yuyam 2008-05-14T06:19:54+09:00
あー

g000001 2008-05-14T06:20:08+09:00
あと、ネットワークとか、
なんというか、ちょっと使いたいところ

yuyam 2008-05-14T06:20:26+09:00
案件によるかな

g000001 2008-05-14T06:20:41+09:00
の割には、もしハマると難しそうなところですw

yuyam 2008-05-14T06:21:26+09:00
逆に、おじさまが「あそこのOracleで共有しましょう」みたいな事言ってくると
CLだとすぐ使えてうまーだったりします
物によるかな。
対して複雑じゃなきゃ
phpとかでささっと終わらせといた方がコスト的によかったりもしますしねw

g000001 2008-05-14T06:22:32+09:00
そうですね、そういう場面ですねー

yuyam 2008-05-14T06:22:37+09:00
あんまり好きじゃないですけど。PHP。

g000001 2008-05-14T06:23:13+09:00
1600万でAllegro買っても良いようなシステムでは
Allegroは最強なんだと思いますw

yuyam 2008-05-14T06:23:45+09:00
最強ですけど、会社的にはきびしいw
予算よりもむしろ人材確保の点でw
結局いつもそうなんですよ
わりとややこしかったり
無駄に扱いにくい仕様だったり
性能要求されたり
っていう時、いつもCLが私の中で候補にあがってくるんですけど

g000001 2008-05-14T06:25:02+09:00
なるほどー。

yuyam 2008-05-14T06:25:09+09:00
もし納品後に自分がダンプにひかれてぺしゃんこになったら、残された同僚とかどうなっちゃうんだろう
とか
考えると、採用できないんですよね。
それはあまりにも、自分勝手すぎる選択かな、と。
死なない保証ができないんで。
ちっちゃい会社なんですけど
わりと信用してもらってるようで
言語の選定もそうですし、仕様やらサーバ選定やら
結構自由にやらせてくれるんですけど

g000001 2008-05-14T06:26:14+09:00
確かに人材確保は難しそうですねー

yuyam 2008-05-14T06:26:30+09:00
それだけに、裏切れないというおもいが、Lispを遠ざける。
gaucheで書いた案件は

g000001 2008-05-14T06:27:06+09:00
なるほどー

yuyam 2008-05-14T06:27:23+09:00
その気になりゃ、短期間でウケのいい言語に書き直す事もできるし
そんなに長く継続する事もなさそうな案件だし
自分一人で一通りソフトのライフサイクル見届けられるんじゃないかと言う事で
やってみた感じです。

g000001 2008-05-14T06:28:09+09:00
なるほどー。
高名な黒田さん的には
20年後を考えればANSI CLということになるんだと思いますが、
なかなか、人材確保は難しいですよねw

yuyam 2008-05-14T06:29:38+09:00
20年後にその案件があるとは思えないし、うちの会社が生き残っている可能性も低い。
とおもうw
でも実際、CLでやりたいなと思う仕事はあるんですけどね。
長く続きそうで、性能も要求されて、割と泥臭いっていう。
こいつこそ、clでやりたいんだけど
そういうものなだけに、
lisperが見つかりそうもない土地では採用できない

g000001 2008-05-14T06:31:46+09:00
意外なことに、
海外では、なんとなく盛り上がりつつあるみたいなので、
日本でも盛り上がんないかなあと

yuyam 2008-05-14T06:32:17+09:00
その波が日本まで届けば、あるいは
という?

g000001 2008-05-14T06:32:28+09:00
思って入るのですがw
そうですね。なんというか、

yuyam 2008-05-14T06:32:41+09:00
盛り上がって

g000001 2008-05-14T06:33:11+09:00
LLのお蔭でCLというか、Lisp的な考えかtが
割とみじかになって来たんじゃないかと
なんというか、Lispが普通になったというか

yuyam 2008-05-14T06:34:08+09:00
(let ((a (if (expr) 1 0)))
  (* 100 a))

(setf (if (expr)
            1
             0))
(* 100 a)
と書いてあるようなコードが量産されるとか。
これインデントどうやってつけるんだろう、、、


g000001 2008-05-14T06:36:03+09:00
最近のLLだと前者っぽく書くんじゃないかなという希望的観測でしょうかw

yuyam 2008-05-14T06:36:05+09:00
aわすれてるし。

g000001 2008-05-14T06:36:26+09:00
view pasteを押すと元の形で

yuyam 2008-05-14T06:36:31+09:00
おお

g000001 2008-05-14T06:36:32+09:00
読めるみたいです。

yuyam 2008-05-14T06:36:33+09:00
みれたw

g000001 2008-05-14T06:37:49+09:00
でも、CLは関数型言語っていうほど
関数型でもなく、OOもありつつ
代入もしつつ、ループもありなので

yuyam 2008-05-14T06:38:28+09:00
そうですね

g000001 2008-05-14T06:38:40+09:00
非常に適当というか、
スタイル的には包容力がありますよね。

yuyam 2008-05-14T06:39:05+09:00
そうですね
なんでも来いな感じしますね

g000001 2008-05-14T06:39:34+09:00
全部微妙に斜め上なんですけどもw

yuyam 2008-05-14T06:40:19+09:00
その
包容力が問題を複雑にする気がするw

g000001 2008-05-14T06:40:51+09:00
そうなんでしょうねw

yuyam 2008-05-14T06:40:54+09:00
わかってる人が使うと
すごい適材適所な感じになって「CLすげえな、大人の包容力」みたいな空気になるけど
そうでないと「これCLの意味あるのか」となってしまいかねないw

g000001 2008-05-14T06:42:14+09:00
そうですねw
なんというか、
普及してくれれば、
なんだ、CLも普通じゃん、と思われると
思っているんですが…
自分は他の言語をやってないので、
なんともいえませんw

yuyam 2008-05-14T06:44:55+09:00
全くやってないんですか?

g000001 2008-05-14T06:45:16+09:00
シェルスクリプトは書けるくらいです

yuyam 2008-05-14T06:45:24+09:00
そりゃすげえ
天才だw
宇宙人だw

g000001 2008-05-14T06:45:42+09:00
Perlも挫折して

yuyam 2008-05-14T06:45:55+09:00
perlは私も挫折しました

g000001 2008-05-14T06:45:57+09:00
Cも挫折しましたw
いや、単なる相性かなにかなんですかね
Rubyも駄目ですね。

yuyam 2008-05-14T06:46:32+09:00
Cは、どうこう言うほど使ってないなあ。読む事はぼちぼちあるけど。

g000001 2008-05-14T06:46:45+09:00
自分のしょうもない分析では、
{}と[]のある言語は駄目なんですね

yuyam 2008-05-14T06:47:03+09:00
なんかおかしい、となった時にCにおりて行く位かなあ。
www

g000001 2008-05-14T06:47:35+09:00
なんていうか見た目の問題だけなんですよねw

yuyam 2008-05-14T06:47:48+09:00
なんかよく
lispは括弧のせいで受けが悪いみたいな話あるじゃないですか?

g000001 2008-05-14T06:48:06+09:00
はいはい。

yuyam 2008-05-14T06:48:12+09:00
私はむしろ括弧のおかげでスッキリしたんですけど
ああ、もうごちゃごちゃ頭つかわんでええのか、と。

g000001 2008-05-14T06:48:32+09:00
そうですね、自分もそういうタイプです。
ローカル変数のスコープとか

yuyam 2008-05-14T06:48:45+09:00
なにかにつけては頭に(尻に)でいいのか
という安心感。

g000001 2008-05-14T06:48:57+09:00
括弧で囲まれているので、理解できました。

yuyam 2008-05-14T06:49:08+09:00
あーあるある
なんだよ、最初っから全部囲んであったらわかりやすかったんじゃん。

g000001 2008-05-14T06:49:25+09:00
演算子の優先順位もないですし

yuyam 2008-05-14T06:49:26+09:00
っておもいましたねw
うんうんw

g000001 2008-05-14T06:49:58+09:00
もしgotoを使うとしても、括弧の外には飛べませんし、
式単位で完結できるし、ということで、
めんどくさいけど、脳みそへの負担は
軽いと思うんですよねw

yuyam 2008-05-14T06:50:55+09:00
わたしもそうおもいます
私は記憶する事が苦手なんですよね
本当に。
子供の頃からそうなんですけど
苦手な事といえば、暗記と本読み。
perlはやったけど全然頭にはいんなかった

g000001 2008-05-14T06:52:40+09:00
自分はPerlを書くと
BASIC以下の内容になるんですよねw

yuyam 2008-05-14T06:52:53+09:00
best practiceとか言ってるのを見て「じゃあもうそれ1wayでいいじゃねえかよ。」と思う
1wayで駄目ならそれはbestじゃないんじゃないのか、とか。
w

g000001 2008-05-14T06:54:15+09:00
なるほど、

yuyam 2008-05-14T06:54:19+09:00
まあどうこう言うほどperlを知らないのと、perlの人たちは怖いんで、どうでもいいやって感じですけどw
なんか覚えないと読めない事が一杯ありそうだったんで、思考停止しました。

g000001 2008-05-14T06:55:30+09:00
そうですねー。
関数がsubで
引数をshiftして扱ったりする見た目が
ちょっと敷居が高いかなと感じました。
自分は。

yuyam 2008-05-14T06:57:44+09:00
記号が多くて記憶容量が不足しました。
脳みそがかゆくなる感じです。
多分、なれればどうと言う事ではないんだろうけど
なれるまでがんばれなかったなあw

g000001 2008-05-14T06:59:22+09:00
Perlの仕組みを理解するために
Perlのsub風に関数定義できるマクロとか
インデックス指定をリーダーマクロで
作ってみたりしたんですが、
割と似てるところもあるなあとは、
思ったのですが、何が駄目なのか、
どうもなじめませんで。

yuyam 2008-05-14T07:01:55+09:00
そういう事をやる気によくなるなあw

g000001 2008-05-14T07:02:11+09:00
いや、なにか理解できるかなと思いましてw
そういうのが簡単にできるのがCLの面白いところというかw
テストベットとしては、便利なんでしょうね、CLは。

yuyam 2008-05-14T07:03:30+09:00
やっぱりCLの面白さっていうのは、そういう奇天烈な発想を受け入れてくれるところなのかなあ

g000001 2008-05-14T07:04:24+09:00
とりあえず、自分を一切曲げないで諸理系側を曲げて書くというのは

yuyam 2008-05-14T07:04:24+09:00
CLの場合、できる/できないじゃなくて、やる気になる/ならないの問題になるところがすごいなあw

g000001 2008-05-14T07:04:49+09:00
楽な言語かなと思うんですよね。

yuyam 2008-05-14T07:04:57+09:00
そうですね。

g000001 2008-05-14T07:05:04+09:00
処理系でしたw

yuyam 2008-05-14T07:05:21+09:00
私の場合は、あくまでより仕事を楽にしたい
っていう発想で着陸したクチなんで
そういう奇天烈な発想はもちあわせてないんですよねw

g000001 2008-05-14T07:06:00+09:00
コードジェネレーションとか
CLでやってる人は結構いると
2ch情報なんですがw

yuyam 2008-05-14T07:06:37+09:00
w
Lisp Schemeスレ?

g000001 2008-05-14T07:07:10+09:00
そうですねー、結構昔のスレだったような
でも、内製ツールとして使ってるという
人で、昔ながらの方は結構そういう使い方
してる方も多いという印象があります。

yuyam 2008-05-14T07:08:12+09:00
コードジェネレーション
ピンとこないなあ
どういうのをさすのでしょうか?

g000001 2008-05-14T07:08:55+09:00
CLでCのコードとか生成させるんですかねw

yuyam 2008-05-14T07:09:00+09:00
ああ
そっちですか
やらないですねw

g000001 2008-05-14T07:09:43+09:00
プリプロセッサの代わりとかなんでしょうか?

yuyam 2008-05-14T07:10:08+09:00
どうなんでしょう

g000001 2008-05-14T07:10:10+09:00
昔は結構メジャーな使い方だったみたいなんですが、

yuyam 2008-05-14T07:10:25+09:00
そうしたほうが楽っていう状況にさらされた事がないから

g000001 2008-05-14T07:10:29+09:00
多分当時は、LLがないので

yuyam 2008-05-14T07:10:35+09:00
よくわかんないです。
ああ、なるほど。

g000001 2008-05-14T07:10:46+09:00
それで、CLだったりしたのではないかと。

yuyam 2008-05-14T07:10:55+09:00
なるほどねえ

g000001 2008-05-14T07:12:09+09:00
多分それで、年配の方の内製ツールというと、そうなるのかなあと、思ってはいるのですが、
実際そうなのかどうかww
すいません、若干燃料切れのようで、
割と支離滅裂な事を書き始めているようなw

yuyam 2008-05-14T07:13:11+09:00
ああ、いえいえ。
自分が掘らない穴を掘っている人の話は

g000001 2008-05-14T07:13:35+09:00
同じことを何度も書いているかもしれませんw

yuyam 2008-05-14T07:13:37+09:00
おもしろいですよw

g000001 2008-05-14T07:14:17+09:00
マイナーな穴である自信はありますねw

yuyam 2008-05-14T07:14:36+09:00
マイナーな言語のマイナーな穴を掘る宇宙人さん
lisperの名に相応しいw

g000001 2008-05-14T07:15:17+09:00
いや、なんていうか、
プログラミングはしていないので、
Lisperではないのですがw
色んな楽しみ方はできる言語だと思いますw

yuyam 2008-05-14T07:16:25+09:00
してるじゃないですかw

g000001 2008-05-14T07:16:51+09:00
歴史も長いし、方言も多いので、コレクションするだけでも、結構面白いですよ
どちらかというと、コレクターなんですね、自分は。

yuyam 2008-05-14T07:18:18+09:00
blog拝読した限りでは、そのようですねw

g000001 2008-05-14T07:18:33+09:00
眺めて楽しむという感じなのですが、
プログラマさんには、割と理解されないんですよw
「どこを眺めると面白いの?」みたいなw

yuyam 2008-05-14T07:19:13+09:00
w
眺めるという捉え方
おもしろいなあ

g000001 2008-05-14T07:19:49+09:00
それなりに、ドラマ的なものはあるんですけどね

yuyam 2008-05-14T07:20:17+09:00
ifとcondの歴史について
たしか言及されてましたよね?

g000001 2008-05-14T07:20:43+09:00
あ、書いたことありますね、変遷シリーズですね

yuyam 2008-05-14T07:20:49+09:00
そうですそうです
あれおもしろかったなあ
変遷シリーズ
あれは理解が深まった感あって
懐がホクホクしたような気分になりましたw

g000001 2008-05-14T07:22:15+09:00
割と多くが80年ころに一気に開花してて
ifもそういうところなんですよねー。

yuyam 2008-05-14T07:23:17+09:00
80年頃
私が生まれた頃か

g000001 2008-05-14T07:23:52+09:00
Lispマシンが生まれた頃に結構劇的に
変わるんですね
そこからは、割とそれが継続してるという感じで、
衰退しつつ、現在に至り、

yuyam 2008-05-14T07:24:46+09:00
なるほど

g000001 2008-05-14T07:24:50+09:00
若干盛り上がりつつあるというw

yuyam 2008-05-14T07:25:20+09:00
lispマシンの次の火付け役は現れるんですかね

g000001 2008-05-14T07:25:51+09:00
どうなんでしょうねw
開発体制が、

yuyam 2008-05-14T07:26:10+09:00
ハードウェアの進化自体が実は火付け役なのかな

g000001 2008-05-14T07:26:14+09:00
多分オープンソースな方向に向かってて

yuyam 2008-05-14T07:26:19+09:00
緩やかすぎて今は目立たないだけで。

g000001 2008-05-14T07:27:22+09:00
Perl、Ruby、Pythonみたいな感じのコミュニティというか、
コミュニティベースで何かが怒れば
起これば
なにかあるのかなあ、と思ったりはしますw
Lispマシンの頃は、少数の天才がゴリゴリ作っていたという時代ですねーl。

yuyam 2008-05-14T07:29:37+09:00
凡人が頭数でちょろちょろとアウトプットする時代がセカンドインパクトか

g000001 2008-05-14T07:30:04+09:00
そうですね、その流れが最近若干盛り上がって来ているのではないかと
海外ではなのですが。

yuyam 2008-05-14T07:30:30+09:00
ある意味
海外で盛り上がりを見せているっていうのはラッキーかもしれないですね
国内での盛り上がりに比べれば
根付く確率は格段に高い

g000001 2008-05-14T07:31:35+09:00
そうですねー。
すいません、燃料不足で、ガックンガックンいうようになってしまいましたw

yuyam 2008-05-14T07:35:05+09:00
オブジェクトDBとLispは相性が良い気がする
という燃料を投下。

g000001 2008-05-14T07:35:13+09:00
a,
あ、その辺りも面白そうですよw

yuyam 2008-05-14T07:36:23+09:00
この辺りが活発になってくれると
色々と助かる予感がするんだけど

g000001 2008-05-14T07:36:35+09:00
そういう流れも盛り上がってるみたいです。

yuyam 2008-05-14T07:36:39+09:00
勘違いかもしれない。
おお
そうなんだ

g000001 2008-05-14T07:37:23+09:00
自分はDBは苦手なんであまり情報収集してないのですがw
オブジェクトそのまま格納したいという流れになるみたいなので

yuyam 2008-05-14T07:37:58+09:00
RDBMSに馴染みにくい要求ってのが
割と実務ではあるんで
期待してしまう。

g000001 2008-05-14T07:38:21+09:00
そうなんですかー。
LispUserさんのところにそういう記事がちらほらあったような気がします

yuyam 2008-05-14T07:39:10+09:00
おお、それはみなければ。
先のGaucheで書いた案件は、dbmとかcdbとか
ちょこちょこつかって
RDBMSの採用を避けました。
けど、遠隔地のDBに接続とか

g000001 2008-05-14T07:40:16+09:00
なるほどー。
http://lispuser.net/memo/lisp/2006-04-26-03-02.html

yuyam 2008-05-14T07:40:26+09:00
Lisp以外の言語で開発してる他社さんと共有とか
なってくると、きびしい

g000001 2008-05-14T07:40:32+09:00
これですね。

yuyam 2008-05-14T07:40:42+09:00
遠隔地だけならやりようはあるんですが。

g000001 2008-05-14T07:41:17+09:00
あ、lisp以外だとどうなんだろうw
あ、これの場合は、大丈夫みたいですね。
最近だとElephantとか名前は良く聞くのですが、
http://common-lisp.net/project/elephant/
ElephanthはちょっとOODBとはちょっとちがうのかな(^^;

yuyam 2008-05-14T07:46:27+09:00
OODBといえばそうなんじゃないですかね

g000001 2008-05-14T07:47:06+09:00
DBはほんと疎いのでw

yuyam 2008-05-14T07:47:26+09:00
私も全然知らないんですw
ただまあ、オブジェクトそのまま永続化できれば
最低限のOODBとしての機能を満たしているといえなくはない気もするけど
同時更新の制御とかACID特性とか
どうなんよみたいなのは
そっちの人に任せよう。
Tokyo Cabinetってのがにぎわってたなあ
http://tokyocabinet.sourceforge.net/
OODBというかdbm

g000001 2008-05-14T07:49:54+09:00
hayamizさんが、Gauche用のライブラリ早速つくってましたね。

yuyam 2008-05-14T07:50:17+09:00
ちょっと近代的なdbmみたいな感じですけど、CLだけでやる分には割と十分だとおもいます。
ああ、そうです、それです。
みなさん、動きが速いですね
まさかないよなあとおもったら
ちょうど「つくったけど」みたいな感じでした。

g000001 2008-05-14T07:52:02+09:00
なるほどー。

yuyam 2008-05-14T07:52:57+09:00
Object Prevalenceは仕事で使えるレベルになるかもしれないなあ。
おっかけとこう。

g000001 2008-05-14T07:53:39+09:00
すごそうですよねー。

yuyam 2008-05-14T07:54:30+09:00
お、8時だ。
モーニングでも食べて仕事いってきますね。

g000001 2008-05-14T07:54:52+09:00
なんか長々とすいませんでしたw

yuyam 2008-05-14T07:54:55+09:00
なんかすみません、だらだら話しちゃって。
いやいや、こちらこそw

g000001 2008-05-14T07:55:05+09:00
いえいえw
常駐してますので、
また、お気軽にどうぞ!

yuyam 2008-05-14T07:56:20+09:00
基本的にオンライン時は公私を問わずLingr Raderでみてるんで
何だったら呼んでくださいw
サクラ希望とか言ってもらえればw

g000001 2008-05-14T07:56:59+09:00
いや、サクラはw

yuyam 2008-05-14T07:57:06+09:00
w
それでは。

g000001 2008-05-14T07:57:38+09:00
はい、では、また〜

名無しさん 2008-05-14T16:38:30+09:00
こんばんわ!?

g000001 2008-05-14T20:48:29+09:00
若干こんばんは気味でしたw>yasさん
こんばんはー。

名無しさん 2008-05-15T02:26:18+09:00
ばんわ

g000001 2008-05-15T02:28:11+09:00
今日のネタ収集ではLISP界に新しそうなネタは転がってませんでした

名無しさん 2008-05-15T02:30:11+09:00
なんかちっともネタ収集ができないのですが
そして正方向の仕事もあんまできていないげなのですが

g000001 2008-05-15T02:30:38+09:00
いえ、そんなw
大変ですよね。
お疲れ様です

名無しさん 2008-05-15T02:32:30+09:00
なんかネタ作りたいな…
んでも今時間使って仕込むのは間違いっぽいので
ねときます

g000001 2008-05-15T02:33:23+09:00
そうですねw

名無しさん 2008-05-15T02:33:36+09:00
おやすみなさい

g000001 2008-05-15T02:33:45+09:00
お休みなさいまし〜(^^

名無しさん 2008-05-15T03:03:41+09:00
ある関数に対してsetf expanderが用意されているかどうかって、処理系依存ッスかね?
CLHS: Section 5.1.1.2
http://www.lispworks.com/documentation/HyperSpec/Body/05_aab.htm

g000001 2008-05-15T03:04:19+09:00
こんばんはー(^^

名無しさん 2008-05-15T03:04:39+09:00
を眺めた雰囲気だとそうっぽいんですけど。
こんばんは。

g000001 2008-05-15T03:05:21+09:00
そう言われれば、処理系依存なのかもしれませんねー。

名無しさん 2008-05-15T03:06:19+09:00
nthcdr のsetf expanderってどう書くんだろって思ったときに疑問に思ったのでした。
n=0のときどう処理させれば良いのか、分からなかった。

g000001 2008-05-15T03:08:29+09:00
なるほどー、自分は(setf (last foo) '(x))とかやっていつも怒られますねw
あれ、nthcdrはSBCLでも定義されていないのかー。

名無しさん 2008-05-15T03:13:24+09:00
です。

g000001 2008-05-15T03:14:10+09:00
ブログにも書かれてましたよねw
自分、読みましたw

名無しさん 2008-05-15T03:14:56+09:00
n>0の時の処理は簡単なんですよね。

g000001 2008-05-15T03:16:00+09:00
なるほど

名無しさん 2008-05-15T03:16:50+09:00
や、あれであっているかどうかもホントのところはよく分からないのですが。
n=0の時の処理が、イメージできないというか。

g000001 2008-05-15T03:18:24+09:00
なるほど、自分勘違いしてましたw
0だとまんまのリストを返すんですよね

名無しさん 2008-05-15T03:18:51+09:00
listを丸ごと置き換えてしまっても良いような気もするし、定義できないような気もして。

g000001 2008-05-15T03:19:08+09:00
確かに、どうやるんですかねw
丸ごと置き換えってことになるんでしょうか…。

名無しさん 2008-05-15T03:20:17+09:00
まあ使わなくても他にやりようがあるので困らないんですけど。

g000001 2008-05-15T03:20:58+09:00
いや、これは面白いネタではw

名無しさん 2008-05-15T03:23:23+09:00
歴史をさかのぼっていくと、何か分かるかもしれませんね。

g000001 2008-05-15T03:24:02+09:00
なんとなくですが、
nthcdrは適当にnthと対応して作られたような気がしますね、特に0の時の動作とかw

名無しさん 2008-05-15T03:27:20+09:00
http://d.hatena.ne.jp/sumim/20060910/p1 setfの歴史で思い出したネタ。
意外なことに、アラン・ケイ発のアイデアなのだそうで
だそうです。

g000001 2008-05-15T03:28:16+09:00
リーダーで読み出して来た場所に書き込むっていうアイディアですねー。

名無しさん 2008-05-15T03:30:53+09:00
nth と nthcdr の対応はそんなに変でもない気がしますが、0のときはcdrか?って感じで、変な感じしますね。

g000001 2008-05-15T03:31:12+09:00
そうですよねw
0があるなら、-1とか来ても文句いえなそうなw
(setf nthcdr)は定義するとパッケージロックで怒られるのはなんでなんだろう。
(defmacro set-nthcdr (pos lst subst)
  (if (zerop pos)
      `(setq ,lst ,subst)
      `(rplacd (nthcdr (1- ,pos) ,lst) ,subst)))

(defsetf my-nthcdr set-nthcdr)
ちょっと無理矢理ですかねw

名無しさん 2008-05-15T03:34:26+09:00
エラーにしないのであれば、そんな感じな気がします。

g000001 2008-05-15T03:34:53+09:00
(defmacro set-nthcdr (pos lst subst)
  (case pos
    (0 `(setq ,lst ,subst))
    (1 `(rplacd ,lst ,subst))
    (otherwise `(rplacd (nthcdr (1- ,pos) ,lst) ,subst))))
とか、ちょっと変えてみたり。
でも、やっぱり0の場合は、
オブジェクト自体が違うものになるという感じで
ありなのかなあと
もしかして、リスト全体が指してるポインタは維持する必要があるんですかね

名無しさん 2008-05-15T03:40:32+09:00
どうなんでしょ

g000001 2008-05-15T03:40:56+09:00
(defmacro set-nthcdr (pos lst subst)
  (case pos
    (0 `(progn
	  (rplaca ,lst (car ,subst))
	  (rplacd ,lst (cdr ,subst))))
    (1 `(rplacd ,lst ,subst))
    (otherwise `(rplacd (nthcdr (1- ,pos) ,lst) ,subst))))
こうなんでしょうか?(^^;
(let ((foo '(a b c d)))
  (eq foo (setf (my-nthcdr 0 foo) '(1 2 3))))
;=> t
にはなるんですが…。これは比較方法として正しいのか?(笑)

名無しさん 2008-05-15T03:46:17+09:00
大丈夫かと

g000001 2008-05-15T03:46:31+09:00
全体をsetqしてしまうとアドレスが変わってしまうので、
rplacaとrplacdの組み合わせという感じなんですが(^^;

名無しさん 2008-05-15T03:50:40+09:00
nthcdrはリストを扱うのに、その範囲を超えている気がするあたりが、残るネックですね

g000001 2008-05-15T03:51:41+09:00
あー、範囲を超えるとnilを返すんですねw
(let ((foo '()))
  (setf (cdr foo) '(1 2 3))
  foo)
がエラーみたいなので、エラーってことでしょうか(^^;

名無しさん 2008-05-15T03:54:43+09:00
ん~、リスト全体を指しているポインタは変わっていないから、リスト操作はリスト操作なのか
なんか、混乱してきましたw

g000001 2008-05-15T03:55:12+09:00
そうですねw
rplacaだと中身だけかえられるかなと思って
rplacaの方が良いのかなと漠然と考えたんですが、厄介ですねw
リストのポインタを変更しないで
中身を全部取っ替えるとなると
rplaca+rplacdしかないのでしょうか?

名無しさん 2008-05-15T03:59:45+09:00
おそらく。
破壊的操作ってあんまりやらないので、よく知らないっていうのがホントのところですけど。

g000001 2008-05-15T04:02:40+09:00
最近の流れだと、リストは変更不可オブジェクトでもいいんじゃないか
みたいな感じらしいですよね。
変更するなら、ベクタ等を使う、みたいな。
Scheme界隈の話ですが(^^
setq使わなければ、全部ポインタ操作なので、
マクロに展開しなくても
(defsetf nthcdr (pos lst) (subst)
  (case pos
    (0 `(progn
	  (rplaca ,lst (car ,subst))
	  (rplacd ,lst (cdr ,subst))))
    (1 `(rplacd ,lst ,subst))
    (otherwise `(rplacd (nthcdr (1- ,pos) ,lst) ,subst))))
とか
(defun (setf nthcdr) (subst pos lst)
  (case pos
    (0 (progn
	 (rplaca lst (car subst))
	 (rplacd lst (cdr subst))))
    (1 (rplacd lst subst))
    (otherwise (rplacd (nthcdr (1- pos) lst) subst))))
でもOKみたいですねー。
あ、caseの実行部は暗黙のprognだった…。
しかし、(defun (setf foo))と、define-setf-expanderと、defsetfの短形式と、長形式、それぞれの使い分けが全然分からないなあ…(^^;

名無しさん 2008-05-15T04:20:30+09:00
自分は(defun (setf foo) ...) の印象が強いッス。fooの関数定義の直後にあるイメージ。

g000001 2008-05-15T04:21:28+09:00
なるほどー。
しかし、ややこしいので、
セッターの定義が面倒になるんですよねーw
(defun (setf foo))が一番綺麗な気がしますね。
(provide 'news)
News【GNU CLISP 2.45リリース】
http://clisp.cvs.sourceforge.net/*checkout*/clisp/clisp/src/NEWS?revision=clisp_2_45-2008-05-15
http://clisp.cons.org/
今バージョンから実験的にGNU lightningを利用したJITコンパイル機能が付いた模様。

名無しさん 2008-05-16T21:19:41+09:00
FreeBSDのportsにlibsigsegv 2.5が来ているのに気付いたから
sakuraサーバのclispをコンパイルしなおそうと思っていたけど、2.45を試してみようかな。

g000001 2008-05-16T23:36:04+09:00
GNU lightningがx86_64だとつかえない(;_;) PPCと、Sparcとx86だけなのかー。
とりあえず、悔しいので、kqemu上のx86でlightning付きでコンパイルしてみよう…。> clisp
(provice 'ネタ)

CMUCLでFastcgi
http://www.s2.org/~chery/projects/fastcgi-cmucl
(provide 'ネタ)

SymbolicsのLispマシンのキーボードをPS/2 -> USBで使うという話
http://netzhansa.blogspot.com/2008/05/symbolics-keyboard-on-ps2-port.html
おお、び さんがいらっしゃる!
(provide 'ネタ)

SymbolicsOpen Genera(仮想Lispマシン)のセットアップ方法
http://collison.ie/blog/2008/04/lisp-machines

元々は、Tru64 Unix/Alpha用に作られたOpen GeneraをLinuxで動かす方法。
「Open Generaのソースの知的財産権については、はっきりしない」とか書いてますが、
この紹介記事は、真っ黒な気がします(笑)

(び) 2008-05-20T18:25:17+09:00
覗かせてもらってまする

名無しさん 2008-05-21T01:35:15+09:00
xyzzyオフ会は今回どんな感じですか?
計3人なんで前回よりさらに減っちゃいました。
mixiにいる人で以上?
ってことすか
今見たらmixiでもう一名来てらっしゃいますね。+bulbさんです。
きそうな人が気がつかない気がします
今となってはブラウザのセッションを保存するようにしてなかったらmixi多分開かない…
気付かれてなさそうな気はしているんですが、じゃあどうするかというと難しいんですよね。xyzzy MLにもう少し流量があれば流すのですが。
この話題だけが繰り返されるのもどうかと。
確かに…
披露宴寄った後にいけたりはしないんだろうな…
ということで不参加なのですが…
どんなもんだったっけな…あんまり後の時間に予定つめちゃいかんのだろうな…
あらら、そうでしたか。先にちょっとリサーチしておけばよかったですね。
土曜はなんだかんだで埋まりますねー
ふぉなみさんが来れそうな雰囲気のことを書いてらっしゃいますね。いつ確定するのかな?
なんというか消えてしまった日記に一緒に二名くらいこれそうな雰囲気が漂っていたので
3名と聞いて驚きました
未確定情報は扱いに困ります(^^;
そうですね…

g000001 2008-05-21T09:38:23+09:00
(provide 'ネタ)

SymbolicsのキーボードをPS/2に変換する方が、
成果物のプロジェクトも公開!
http://code.google.com/p/lmkbd/

名無しさん 2008-05-21T12:09:45+09:00
symbolicsのキーボードの入手…

g000001 2008-05-21T14:14:09+09:00
それが最大のネックですねww

名無しさん 2008-05-21T20:03:07+09:00
CMUCL 19e released - comp.lang.lisp | Google Groups
http://groups.google.com/group/comp.lang.lisp/msg/90bbfeb35a545df5
でもって
     - Support for Mac OS X/Intel has been added for OSX 10.5 and
      later. 
ということらしいので、コンパイルしてみるかな。
未対応のハードウェアなのでできないのですが、clozure clの方がアプリよりの人には楽しそうです。
g000001さんは対応機種持ってます?
ま、コンパイルは寝ながらすれば良いかと。

g000001 2008-05-22T09:06:03+09:00
こんにちはー。
自分はたまたまですけど、PPCとx86_64がメイン環境なのでどっちでもCCLは動いてますねー。
SBCLの次に好きな処理系ですねー。
(provide 'ネタ)

On Lispの続編を目指した、CLのマクロ本が登場した模様。
http://groups.google.co.jp/group/comp.lang.lisp/msg/048b09d7784252a1
http://letoverlambda.com/index.cl

名無しさん 2008-05-22T10:18:43+09:00
8章のタイトル「Lisp Moving Forth Moving Lisp」を見て即 Amazon で注文しちゃいました。

g000001 2008-05-22T10:27:10+09:00
おお、forthを実装するって章があるんですね。

名無しさん 2008-05-22T10:29:02+09:00
目次を見て推測するに Lisp で Forth を作って、その Forth で Lisp を作るみたい? はずしているかもしれませんが。

g000001 2008-05-22T10:31:22+09:00
本のサイトが大人気のせいか早速落ちてるので確認できないのですが、
c.l.lの解説を読むと
そういう感じみたいですねー。
forthのコンパイラを作って、lisp
を動かすみたいな。3階建てw

名無しさん 2008-05-22T10:33:22+09:00
おぉ、本が届くの楽しみです♪

g000001 2008-05-22T10:33:27+09:00
いや、3階建てではないのか、わらしべ長者的に作って行くのかな。
quekさんは大好きそうですねw

名無しさん 2008-05-22T10:35:10+09:00
はいw ちかごろ CL で Forth 実装してみたりしてたので、まさにコレだ! ってい本です。紹介ありがとうございます。
ミスって40分歩いて帰宅。ちと疲れました。

g000001 2008-05-23T04:38:37+09:00
こんばんはー。終電乗り過ごしですか?>NANRIさん
perl-users.jpとかas-users.jpとか盛んですが、cl-user.jpはまだ早いとはいえ、
何かクックブック的なサイトを皆で作れないもんかなと思っています。
http://www.namaraii.com/rubytips/
をCLに移植したりするだけでもかなり良いかなと思うのですが、
「誰でも参加できて」「逆引きRuby
のように見やすい形に仕上げられる
Wikiとか無いでしょうかー。
livedoorでwikiを作ってみてはいるのですが
livedoorのアカウントを持ってないと駄目みたいなので、どうしたもんかと思っています。
一応既存のwiki
はこちらです
http://wiki.livedoor.jp/g000001/d/FrontPage
管理してなくて寂れてますがw
何か良い情報/アイディアありましたら教えて下さい〜

名無しさん 2008-05-23T13:25:06+09:00
無意識にcl-usersじゃないあたりが面白。

g000001 2008-05-23T13:49:03+09:00
そうなんですよねw
今日からGoogleでwikiサービスが提供らしいんで、ちょっと試してみています。
http://sites.google.com/site/cl-jp/
で作ってみましたが、こっちは、cl-jpだったり統一性がないというか、
cl-users-jpとか取るのも気がひけたというか、
いや、cl-jpもずうずうしいんじゃないかと思ったりw

名無しさん 2008-05-23T15:48:08+09:00
wikiは立ち上げのタイミングが命ではないかと思います…
実験とかしてると大概立ち上がらなくて死んじゃうげ

g000001 2008-05-23T15:52:18+09:00
そうかもしれないですねw
ただ軌道にのることはあるのかな〜
のってくれたりしたらうれしいなー

名無しさん 2008-05-23T16:03:25+09:00
乗るような注目を集められるタイミングで一気にというのがミソげです
xyzzyのアレは最初ha
私がついてけませんでした w

g000001 2008-05-23T19:17:04+09:00
なるほどー。いろいろ難しそうですねー。
こんにちはー
(provide 'ネタ)

先日のLispvanで発表された、CL版のRoR、LoL(Lisp on Lines)のムービー
AOPを推し進めたような?、ContextLを主に利用して構築されていて、
ConetxtLの説明もあり。
なかなか凄そう。
http://bc.tech.coop/blog/080523.html

quek 2008-05-25T17:07:20+09:00
こんにちは。
core-server のホームページをはしめたよ、というアナウンスが UCW の ML にながれてみました。http://labs.core.gen.tr/#index
UCW 停滞気味でしたが、これでどんどん活性化するといいですね。
いまの UCW
は どれを使ったらいいのかよく分からないし、依存ライブラリのアップデートにも追従していないような状態なので。
それにしても、LoL のムービーのサイズがでかいw

g000001 2008-05-25T17:10:45+09:00
こんにちはー。
core-server凄そうですねー。

quek 2008-05-25T17:10:59+09:00
こんにちは

g000001 2008-05-25T17:11:14+09:00
自分も実験できるサーバを確保しなくてはw
LoLは今みてるんですが、時間も長いw

quek 2008-05-25T17:12:01+09:00
ようやく半分ダウンロードですw

g000001 2008-05-25T17:13:31+09:00
LoLもucwを利用してるみたいなんですが、
結構他から利用されてる例っておおいんでしょうか。

quek 2008-05-25T17:15:16+09:00
私がしっているかぎりでは、もう一つなにかあったと思います。

g000001 2008-05-25T17:18:01+09:00
なるほどー。結構基盤として使われてるんですねー。
core-serverはオールインワンパッケージになってるので導入は楽そうですね。

quek 2008-05-25T17:18:37+09:00
core-server ためしてはないんですが、
(defmethod/local page-contents ((self coretal-component) page) 
  (aif (find-document (application self) page) 
       (list page (document.data it))))
みたいなかんじで、クライアント側(js)で動くメソッドを定義できるのがミソっぽいですね。
フレームワークは依存パッケージが多いのでオールインワンパッケージは嬉しいですよね。

g000001 2008-05-25T17:20:04+09:00
なるほどー、これがjsに展開されたりするんでしょうか。
そうですねー。

quek 2008-05-25T17:20:29+09:00
こんな感じになるみたいです。
pageContents : function (page) {
 return funcall('?s=bsGRCEPL&k=act-dFCIfLGJ', { page : page }); 
}
http://labs.core.gen.tr/#technology
parenscript をフレームワークに統合したイメージなのかも。

g000001 2008-05-25T17:22:06+09:00
なるほどー。parenscriptも試してないなあ。
色々便利そうなものがあって
深いですねー。
core-serverは運用面も含めてパッケージになってるんですねー。
至れり尽くせりだなあ。
いや、screenとかまではパッケージじゃなかったw

quek 2008-05-25T17:27:10+09:00
screen が必要ってのはなかなかおもしろいw
もう一つ UCW を使ってそうなの http://common-lisp.net/project/cl-dwim/
ですが、これは構想だけで実態はないのかもしれませんw

g000001 2008-05-25T17:28:19+09:00
あ、これ名前だけは、良く目にする気がします。>cl-dwim

quek 2008-05-25T17:28:56+09:00
このページに Web フレームワークの機能比較マトリックスがあるのですが、表示されないのです。
http://www.cliki.net/webframeworkmatrix

g000001 2008-05-25T17:29:59+09:00
なるほど。
こうしてみると、高機能そうなのが、沢山ありますねー。

quek 2008-05-25T17:32:20+09:00
あと、Weblocks http://common-lisp.net/project/cl-weblocks/

g000001 2008-05-25T17:33:57+09:00
継続ベースなのが沢山ありますねー
とりあえず、何かしら自宅サーバで実験してみたいところではあるのですが…

quek 2008-05-25T17:42:53+09:00
どれか一つデファクトスタンダードになれば、またそこから Common Lisp 独自の発展をして面白いことになりそうなんですが。
ようやく LoL ムービーがダウンロードできなので、これから観ますね。
1時間16分もあるのかw

g000001 2008-05-25T17:43:51+09:00
はいー、1時間20分くらいありますw
割と段取りが悪いんですよねw
あと、早口なので、自分はちょっと聞き取れないところが(^^;

quek 2008-05-25T17:50:58+09:00
私は早口でもあまり聞きとれないので、あまり早口は問題ないかとw
s/早口でも/早口でなくても/

g000001 2008-05-25T18:41:34+09:00
やっと見終わりました。>LoLムービー
自分はどうしても目的より手段を追いかけてしまうのでとりあえず、ContextLに興味が湧きましたw

quek 2008-05-25T18:44:45+09:00
いろんな description を定義してと、1つのオブジェクトをいろんな見せ方でができるって感じでしょうか。
DB まわりのデモ(CRUD画面)とかあったらいいなぁ、と思いました。
:metaclass described-db-access-class が気になります。きっとこれが ActiveRecord 相当のはず。
コンテキスト指向といえば Perl?

g000001 2008-05-27T14:53:36+09:00
(provide 'ネタ)

CLの規格準拠度のテストについて
テストキットがあったとは知らなんだ。

http://brainrack.wordpress.com/2008/05/26/stability-and-cltl2-conformance-review-of-corman-lisp/
(provide 'news)

SBCL 1.0.17 リリース
http://groups.google.co.jp/group/sbcl-devel/browse_frm/thread/ee0c77e71b50cd40

メインページにまだアナウンスはありませんが、1.0.17はダウンロード可能になっています。

ソースコード:
http://prdownloads.sourceforge.net/sbcl/sbcl-1.0.16-source.tar.bz2?download

名無しさん 2008-05-29T11:29:34+09:00
それ16じゃね?

g000001 2008-05-29T11:30:45+09:00
あら、ホントだ、いろんなところにコピペしてしまったw
http://prdownloads.sourceforge.net/sbcl/sbcl-1.0.17-source.tar.bz2?download
です。
(provide 'ネタ)

5/28のHamburg Lisp Meetingの様子

http://www.flickr.com/photos/srichter
http://netzhansa.blogspot.com/2008/05/hamburg-lisp-meeting.html

Joswig氏のLispMのデモとかムービーで公開されないかなー。
(provide 'ネタ)
CLから取り去ってしまいたいものは?というエントリ
http://metabang.com/unclogit/?p=287
(provide 'ネタ)

Lisp 50周年っていうけど、具体的に記念日はいつなの?というスレ
http://groups.google.com/group/comp.lang.lisp/browse_thread/thread/fbc7311e9e2dba0a/7e482aa4c6458661?#7e482aa4c6458661
どうやら、秋頃らしいというだけで曖昧な様子…。
(provide 'ネタ)

Joswig氏のレベルに応じた学習課題
http://lispm.dyndns.org/news?ID=NEWS-2008-06-02-1

名無しさん 2008-06-02T16:32:11+09:00
険しい脳…

g000001 2008-06-02T16:33:23+09:00
Lisp Historianへの道も険しいようですw
その前にそういう道があったのが驚きですがw

名無しさん 2008-06-02T18:00:23+09:00
g000001さんが歩んできた道に名前がついたんですよ。よく知らないけど
blogも Lisp Historianになる あたりに。(ひどい)

g000001 2008-06-02T18:49:58+09:00
その名前もいいですねw
しかし、logoってlisp族なのかな。
開発にLisperが多く関わってるらしいことは知ってたんですが…

名無しさん 2008-06-06T19:08:34+09:00
seen links to my site. What's up with Lisp in Japan?

g000001 2008-06-06T20:56:04+09:00
Hi! Mr. Lispm.
The lisp is going to become lively in Japan.
but, it's still minor language...
(with Machine translation)
ヨスウィッグさんご本人でしょうか。
こういうとき英語できると良いなと思いますが、残念ですー。

名無しさん 2008-06-06T21:12:58+09:00
I've met some japanese people at Lisp conferences some years ago. I was always thinking that quite a lot people in Japan were using Lisp (maybe that was some time ago), but not telling much about it.
what are you doing with Lisp?
which conference? I think I've attended ILC2003 @ NY.
I was there, too.
2003 in New York
I think I remember a Lego talk.
controlling a robot
Lisp running on Lego Mindstorm?
That was really impressive talk, I think.
Yes, I liked that talk. Did you give a talk?
No, I didn't.
I'm just learning about Lisp :)
I attended ILC 2007.
I wan't know the place where lisper is not minority.
yeah, being among so many Lispers is quite an amazing experience. ;-)
especially if you meet so many people who wrote books or designed Lisp systems.
there is a lot of knowhow present at an ILC
Yes I agree. It was fantastic experience.

g000001 2008-06-07T16:27:00+09:00
こんにちはー
zickさんが予習されているのをみて
びびっていますwww
http://blog.bugyo.tk/lyrical/2008/06/2_cllingr_8.html
やばい!疑問に答えられないwww
これから調べます(^^;

名無しさん 2008-06-07T19:23:21+09:00
add-to-listの件ha
add-to-listの件はpushかなぁ?
pushだとマクロだからちょっと違う気もするけど。
>小さなイメージのアプリケーションを配達する
これは小さなバイナリを作って配布するってことでしょうね。

g000001 2008-06-07T19:25:13+09:00
こんばんはー。
そうですね、ちょっと原文を参照しないと

名無しさん 2008-06-07T19:25:23+09:00
こんばんはです。

g000001 2008-06-07T19:25:28+09:00
分からないようなこともあるかもしれません(^^;
とりあえず、一人勉強会は回避できそうで、よかったです
とりあえず、zickさんの疑問への準備はしてみました!
ということで、開始の前にご飯買ってきますww

名無しさん 2008-06-07T19:29:09+09:00
いってらっしゃいませ。
自分は今食ってます。

g000001 2008-06-07T19:48:14+09:00
ご存知かとは思いますが本日のテキストは
http://www010.upp.so-net.ne.jp/okshirai/tutorial-on-good-lisp-programming-style-ja.txt
です。
よろしくおねがいしますー

名無しさん 2008-06-07T19:48:59+09:00
原文はhttp://obfusco.com/tmp/luv-slides.pdf
ですね。

g000001 2008-06-07T19:50:39+09:00
ですね、ありがとうございますー。

名無しさん 2008-06-07T19:56:02+09:00
よろしく 自己紹介から47歳男仕事は主にドス制御の機械の整備修理 バッチ処理使い捨てのプログラムや機械そのものの修理を長年続けています 最近ではドスkara

g000001 2008-06-07T19:57:26+09:00
よろしくお願いしますー。
そういえば、自己紹介とか全然考えてませんでしたw
今回いきあたりばったりで
勉強会を呼びかけさせていただきましたg000001
です。
無職ですw
http://cadr.g.hatena.ne.jp/g000001/
でlispのブログを書いております。

名無しさん 2008-06-07T19:59:16+09:00
訂正 ドスからリナックスにosが変更に 開発言語は主にCを最近2年
程lispをよんでいます
こんにちは。g000001さんのブログを拝見して来てみました。
29歳大学院生です。駆け出しSchemerなので今日はROMってます。

g000001 2008-06-07T20:00:40+09:00
ありがとうございます!
それでは、20時なので開始したいと思います!
まったくノープランなのでぐだぐだになるかもしれませんが、
よろしくおねがいします!

名無しさん 2008-06-07T20:01:08+09:00
xyzzy使いのhttp://raido.sakura.ne.jp/southly/rn/の人。大学は数値計算屋でその流れで今に至る感じ?という人です。
よろしくお願いします。

g000001 2008-06-07T20:01:38+09:00
よろしくおねがいします!
observerの方も良かったら記念にjoinだけでもしてみてくださいw

zick 2008-06-07T20:02:01+09:00
20歳大学生のzickです。記念ROMにきました(笑)

名無しさん 2008-06-07T20:02:17+09:00
テキストは読んでみましたがはじめからスタートですか

g000001 2008-06-07T20:02:22+09:00
また、ツッコミも歓迎します! ツッコミ返しはしないので気軽に突っ込んでください!
では、1. 良いスタイルとは何か?
から進めていきます!

名無しさん 2008-06-07T20:03:03+09:00
すみません、記念にjoinしました

g000001 2008-06-07T20:03:14+09:00
ありがとうございます!w
まず、全体的な参考文献ですが、
PCLが詳細な

名無しさん 2008-06-07T20:04:00+09:00
この章

g000001 2008-06-07T20:04:04+09:00
手引きになるかと思うので、
くわしくなったらそっちを参照ということでふらせていただきますw
http://gigamonkeys.com/book/
です。
コンディション
format
詳しく解説されています。
では開始ということで!

名無しさん 2008-06-07T20:05:13+09:00
私はこの章には特にありませんね

g000001 2008-06-07T20:05:29+09:00
1章全体ですか?(^^

名無しさん 2008-06-07T20:06:29+09:00
重要度からいうと「理解しやすい」が一番ということでしょうね。この順に書いてあるということは。

g000001 2008-06-07T20:06:45+09:00
そうですね、
どの言語にも共通のことと言うかんじですねー

名無しさん 2008-06-07T20:07:09+09:00
格言は参考に・・・

g000001 2008-06-07T20:07:09+09:00
とりあえず、じゃあ、がんがんとばしていくということで

名無しさん 2008-06-07T20:07:20+09:00
まだ具体的な話になっていないので、このためにどういうことに気をつければいいかとかが

g000001 2008-06-07T20:07:21+09:00
1.1. 良いスタイルはどこから来るのか?

名無しさん 2008-06-07T20:07:27+09:00
あとに来るでしょう。

g000001 2008-06-07T20:07:39+09:00
までは質問なしで良いでしょうかー。
ツール(trace, step, apropos, クロスリファレンス, マニュアル)
がちょっとlisp的なくらいですかね。

名無しさん 2008-06-07T20:08:44+09:00
「全てはコミュニケーションにかかわることである」
という辺りがぐっとくる

g000001 2008-06-07T20:09:08+09:00
なるほどw
では、
1.2. それが良いかどうかをどうやって知るか?
をよんでみて
なにかありますでしょうか?
付加引数とキーワード引数

名無しさん 2008-06-07T20:10:15+09:00
「オブジェクト指向設計は、オブジェクトのクラスと情報隠蔽に集中する階層化
設計である。」

g000001 2008-06-07T20:10:29+09:00
についてちょっとCL的かもしれませんね。

名無しさん 2008-06-07T20:10:29+09:00
のあたりが納得でした。
ここも一般的な事柄が・・
(Lisp関係ないのですが)

g000001 2008-06-07T20:11:05+09:00
いえ、どんな感想でもおkです!
zickさんのブログによると
*感心したところ・驚いたところ*

    型情報がわかっている場合、それを宣言すること。他の人々が行なうようなこ
    とや、コンパイラが使うだろうとわかっているものだけを宣言するようなこと
    を行なわないこと。コンパイラは変化し、プログラムが進行中の介在を必要と
    せずにそれらの変更を自然に利用させたい。
    また、宣言は人間の読み手とのコミュニケーションのためのものでもある -
    単にコンパイラのためではない。

なんだかLispならではの意見ですよね。型付けが動的なのに、型を宣言できるというのがなんとも。型宣言があれば読みやすいというのには納得。
ということなのですが、
schemeとCLのちょっとした違いといえば、
型指定の構文があるところだと思うんですが、
どうでしょう。
declareを上手く使えば、デバッグにも良いし人間にも読みやすい、
ってことですかねー。

名無しさん 2008-06-07T20:13:46+09:00
C/C++なんかでもグローバル変数やメンバ変数をばしばし使われると、型情報が分からず分かりにくいってことにすぐなります。

leque 2008-06-07T20:14:24+09:00
Scheme でも型情報が欲しくなることはありますね
できれば Haskell とかみたいに推論してくれて

g000001 2008-06-07T20:14:42+09:00
自分はコード書くときにコンパイラが警告してくれるので、割と好きなんですが>型指定
そうですね、推論までしてくれると最強な感じですね。
clisp等はあまり警告してくれないのですが、
cmucl/sbclとかだと、型の指定をすると結構警告を細かく出してくれますー。

leque 2008-06-07T20:16:27+09:00
ある程度大規模になると、先に型を決めてからコードを書くと安心

g000001 2008-06-07T20:16:40+09:00
なるほど。
といったくらいですかね。>型について
じゃ、次で
データ抽象が保証するのと同様に具体的に。それ以上具体的ではいけない。
以降くらいはどうでしょう。
- ifは2方向に分岐する式に対して
- when, unlessは1方向の文に対して
ってのがありますが、
わりと趣味と言う感じで、
CLtL2ではwhenはボディ部が副作用目的の場合に使うと書いてある。
値を返すときは、ifか、andを使えのような記述もあります。
http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node84.html
このあたりはちょっとCLに特化してるところもあるみたいですが、
まあ、大体問題ないでしょうか。
それで、add-to-listの件ですが
これはどうでしょう。
とくにないでしょうかw
これってemacs lispからきてると思うんですが、
CLだとpushnewですよね?
adjoinと、pushを混ぜたもので、
名前もpushnewだと、新しいものをpushするという意図が分かりますが、
add-to-listだと、listに加えることが分かるのみで、後なんだか、
前なんだか、新規なのかまるで分からないという問題を指摘しているのでは?
と思いました。

名無しさん 2008-06-07T20:22:27+09:00
ですね。pushだと同じ要素も加えちゃいましたね。

g000001 2008-06-07T20:22:57+09:00
そうだ説明してませんでしたw
pushnewはリストの先頭に
要素を加えるんですが、
加える要素が存在した場合は、加えません。
ということで、
正しい言語を選ぶ
の前くらいまでは、問題ないって感じでしょうか?
では、正しい言語を選ぶ
を考えてみたいのですが、
Lispの向き不向きについてなにかありますでしょうか?

名無しさん 2008-06-07T20:25:30+09:00
すばやいプロトタイピングって良く言われますが

g000001 2008-06-07T20:25:36+09:00
はいはい

名無しさん 2008-06-07T20:25:50+09:00
何でLispって市場導入までの時間を最少にできるんでしょうか?

g000001 2008-06-07T20:26:08+09:00
どうなんでしょうね。
一般にインクリメンタルな
感じで開発できてフィードバックが速いので
プロトタイピングに向いてる
みたいな印象をもっていますが
どうでしょう。

名無しさん 2008-06-07T20:27:34+09:00
マクロがあるってことでプロフェッショナルが最高の実力を発揮できる言語という印象があります。

g000001 2008-06-07T20:27:57+09:00
そうですね、マクロで
雪だるま式に効率がよくなってくるというのも
よく言われているような
気もします。

名無しさん 2008-06-07T20:28:22+09:00
確かにマクロがバリバリ使えたら"俺はLisper!"って感じがしますね。
マクロで実際に書くコード量を圧縮することができるイメージ。

g000001 2008-06-07T20:29:00+09:00
0から1にするのが得意系の言語という感じの記載な気もしますね。
個人的には初心者にもやさしい言語だとおもってるんですが、
そういう認識はないみたいなので、
そういう考えを広めてみたいですw
zickさんのブログでは、
Lispは以下に対して良い:
    - 単一のプログラマ(または10人未満のチーム)のプロジェクト
についての質問がありました。
なんとなく4人くらいが最適と聞きますが
どうなんでしょう。

名無しさん 2008-06-07T20:31:33+09:00
4という数はどこから?

g000001 2008-06-07T20:31:45+09:00
ITAでは、たしか75人のチームで開発してるってどっかに書いてたきがします。
どこなんでしょうw

名無しさん 2008-06-07T20:32:18+09:00
どの言語も同じでしょうが個々の

g000001 2008-06-07T20:32:40+09:00
3、4人くらいがよろしいってのがPaul Grahamか誰かのエッセイではよく見かけるような気はします。

名無しさん 2008-06-07T20:32:43+09:00
認識程度 理解度が問題に

g000001 2008-06-07T20:33:45+09:00
ここいら辺は大規模にLISPが用いられた例が
あまりにも少ないので
なんとも言えないのかもしれませんねw
運用次第でどうにでもなりそうですし。。。

leque 2008-06-07T20:34:29+09:00
Ruby の方の人に言わせると、 Lisp のマクロは自分で構文を作れるので、大人数だと混乱しやすいとか

g000001 2008-06-07T20:34:46+09:00
なるほどー。でも
実際マクロばりばり書いてるのはLisperで
混乱してない気もするんですけどねw
多分Rubyにマクロつけたら混乱するとは思いますけどw
そのあたりも大規模開発じゃ、制限しないとだめなところでしょうねー。

名無しさん 2008-06-07T20:36:19+09:00
Rubyも混乱させようと思えばいくらでもできる気が…

leque 2008-06-07T20:36:21+09:00
マクロだと手続きみたいに評価規則が一定しないからだと思いますけど

g000001 2008-06-07T20:36:46+09:00
http://practical-scheme.net/wiliki/wiliki.cgi?Lisp%3Aよくある誤解
とか
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3Aマクロの効用
とか参照って感じのところでしょうか。

leque 2008-06-07T20:37:16+09:00
ですね

g000001 2008-06-07T20:37:39+09:00
多分schemeよりCLの方がマクロを多用するかもしれないので、
その辺がちょっとスタンス違うかもしれませんが
CLでもSchemeでも共通なところだとは思いますねー。
では、次に
現在のLispの実装は、以下に対してはそれほど良くない:
ってところですが、
- 実行時の制御(しかしGensymはそれを行なった)
ってのが謎だと思います。
ややこしいんですが、Gensymという会社があって、
Real-time制御にLispを使って成功したらしいのを踏まえてるんだと思います
http://portal.acm.org/citation.cfm?id=114669.114679

leque 2008-06-07T20:39:18+09:00
なるほど

名無しさん 2008-06-07T20:39:20+09:00
あ、そっちなんですか。

g000001 2008-06-07T20:39:53+09:00
原文は、
Real-time control (but Gensym did it)
tte
ってことなんですけど、
ややこしいというか、
1991のことなんで当時は話が通じたんでしょう

名無しさん 2008-06-07T20:40:19+09:00
参考になりますね

g000001 2008-06-07T20:40:19+09:00
w
GCとリアルタイム制御関連の話でしょうねー。

名無しさん 2008-06-07T20:41:00+09:00
でしょうね>GC

g000001 2008-06-07T20:41:22+09:00
Lispでもできる!って論文もありますので探してみてくださいw
竹内先生近辺だったと思います。

名無しさん 2008-06-07T20:42:17+09:00
「別言語のコードとの緊密な通信」ってのはFFIじゃ不満ってことですか?

g000001 2008-06-07T20:42:18+09:00
ここにもあった
http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3A組込み・リアルタイム用処理系
そうですね、FFIのことだとおもいます
けど、当時も今も
規格できまってるわけではないし、
あまり得意でもないんですかね?
http://www.franz.com/services/conferences_seminars/jlugm00/conference/Talk14_takeuchi.pdf
これがさっきのGCの話ですね。
   - 小さなイメージのアプリケーションを配達する
ってのは、
巨大なイメージを抱えこんでいるので、
単体のexeファイルとして配布するのには都合がわるい、
くらいのところでしょうか。
ということで1章眺めてみましたが、
何か「これは、なんだ」というところはありますでしょうか?

名無しさん 2008-06-07T20:45:39+09:00
つか、処理系を起動するのにもコアダンプを読み込みますしね。

g000001 2008-06-07T20:45:47+09:00
そうですねー。
Dylanとかは、最初からスタンドアロン
バイナリを目指してたりするんですが、
そういう処理系は少ないですよね。
では!
2. 組み込みの機能に関するヒント

名無しさん 2008-06-07T20:46:49+09:00
LispがOSになれば別って感じでしょうか

g000001 2008-06-07T20:47:05+09:00
そうですね、LispMは
全部LISPの世界ですのでww
ではでは、2. 組み込みの機能に関するヒント
にうつってもよろしいでしょうかー

名無しさん 2008-06-07T20:47:59+09:00
はい。

g000001 2008-06-07T20:48:12+09:00
この章はかなりCLよりなんですけど
なにか疑問点はありますでしょうかー。
zickさんのブログでは、
再ロード時に再初期化したくない物事に対してdefvarを使うこと。
に感心されたということですが、
上書きしたくない場合に、defvarで、
しても良いときにはdefparameterを使います。
あと、eval-whenとか特徴的でしょうか

名無しさん 2008-06-07T20:50:15+09:00
emacs lisp とかも同じ動作じゃありませんでしたっけ>defvar

g000001 2008-06-07T20:50:23+09:00
あ、そうですね。
eval-whenもありましたっけ?
eval-when-compileかな
eval-whenはコンパイル時と
ロード時と実行時の
各々の状況で、評価したり
しなかったりを制御できる構文です。
主にコンパイル時とロード時の挙動が違うので
そういう対策らしいですが
ロードは頭からファイルを評価。コンパイルはコンパイルするだけ、ということで…
詳細はPCLを参照してくださいww
http://gigamonkeys.com/book/the-special-operators.html

名無しさん 2008-06-07T20:53:46+09:00
eval-whenは難しいッス。

g000001 2008-06-07T20:54:21+09:00
コンパイル時には評価されないんですが、
式が評価されないんですが、
評価されないだけだと、
ロード時の挙動とかわってしまうので、その辺を吸収する目的もあるようです

名無しさん 2008-06-07T20:55:17+09:00
難解ですね
xyzzy の話になりますが、
定数の値を決めるのに必要な関数があって、それはコンパイルされるだけでは定義が無いから、eval-whenの中に入れて評価させる必要があったみたいなことがありました。

leque 2008-06-07T20:56:57+09:00
マクロ展開時の補助関数にも関係するんでしたっけ

g000001 2008-06-07T20:57:00+09:00
そうですね、同じだと思いますねー。
ですね、普段は直接さわることは
あまりないと思うんですが、
下層のマクロを書くようになったら、把握してないといけない、みたいなところ
みたいです。
defun等を代表にいろんなマクロにくっついてます。>eval-when
簡単にいえば、マクロを定義するのに先に必要な情報を揃えるため、
先に評価するところを指定しておく、くらいの理解でいいんでしょうか?
まあ、マクロとは限らないのですが。。。
eval-whenについてはこれくらいですかねー。
つぎに
コードの重複を避けるためのFLET
ですが、
こういう書き方してるひと
あまり見たことないんですが
どうでしょうw

leque 2008-06-07T21:02:12+09:00
Scheme だと internal define で似たようなことをしますかねえ

g000001 2008-06-07T21:02:19+09:00
Schemeだともっと綺麗に書いてる人はたくさんいそうですよね。
fletはちょっと中途半端かなあw

名無しさん 2008-06-07T21:02:34+09:00
まぁでも、一考には値するかと。

g000001 2008-06-07T21:03:37+09:00
ですねー。自分もしばらく真似して書いてましたw
でも、内部関数じゃなくて、
普通にトップレベルで定義するようになってしまいましたねー。
そのあたりも色々あるんでしょうね。

名無しさん 2008-06-07T21:04:35+09:00
自分もどちらかというとそうかも>トップレベルに定義

g000001 2008-06-07T21:04:52+09:00
CLの場合パッケージでさらにわけるので、
割と汚しまくれるというかw
ということで、
DEFPACKAGE
に進んでみますー
モジュールでスレッドセーフにしたりするのは、
あんまり考えて作ってる人は少ないような気がするのですが
どうなのでしょう。
あ、ここはdefpackageの説明か。。。
ここはdefpackageの心得みたいなもんでしょうか。
定義されたファイルの先頭にエキスポートされたシンボルを置く人もいる。
っていうのは、(export 'foo)とかまとめて別にかくスタイルもあるよーってことかな。

名無しさん 2008-06-07T21:08:41+09:00
ですね

g000001 2008-06-07T21:08:46+09:00
defpackage全般でなにか質問とかありますでしょうかー
個人的には、#:fooのように書いたりするのが謎でした。

名無しさん 2008-06-07T21:09:49+09:00
exportはシンボルでするのが良いのか文字列でするのが良いのかってあります?
シンボルでするのが無難かと

g000001 2008-06-07T21:10:47+09:00
string=で判定されるので、

名無しさん 2008-06-07T21:10:54+09:00
いまはmodernで使う人がでてきていると思うので。

g000001 2008-06-07T21:10:58+09:00
本式にはstringなんでしょうかね。
シンボルでやると無駄なインターンが発生するので、
(defpackage #:parser
  (:use #:cl #+Lucid #:lul #+Allegro #:excl)
  (:export #:parse #:parse-file #:start-parser-window
           #:define-grammar #:define-tokenizer))
って書くひともいますねー。
ここまででなくてもキーワードにする人は多いですよね。
自分はキーワード派です(^^
comp.lang.lispでも、
論争になってました。>パッケージでの、modern
xyzzyはmodernですよねー

名無しさん 2008-06-07T21:14:15+09:00
2年位前までmodern派だったんですが、最近は割りとどっちでもよくなってきました。
ですね。>xyzzy

g000001 2008-06-07T21:14:41+09:00
ちなみにmodernというのは、
大文字と小文字を区別することを
称しておりますー。
区別するのが、modernらしいです。
仕様では区別しないんですけど、
割と論争のネタになるみたいですw
とりあえずdefpackageはこれくらいで、
コンディションに進んでもいいでしょうかー。
コンディションシステムは、CLの良いところだと思うんですが、
説明が難しいというか、
大変ですよねーw

名無しさん 2008-06-07T21:17:34+09:00
Javaでいう例外とエラーの違いみたいなものなんでしょうか?

g000001 2008-06-07T21:18:14+09:00
そうですね、自分はjavaを知らないのでなんともいえないのですが、
色々ハンドリングできるんですよね?
これもPCLに良い解説ありです。
http://gigamonkeys.com/book/beyond-exception-handling-conditions-and-restarts.html
コンディションが階層的にクラスになっていて
コンディションは、エラーをトラップしたり、
対話的にリスタートをかけられたり高機能なものくらいな感じでw

名無しさん 2008-06-07T21:19:21+09:00
気持ち的な問題だと思ってました。例外→ハンドリングして欲しい。エラー→して欲しくない。

g000001 2008-06-07T21:19:53+09:00
無視したり、より上位の対策に任せたり、なんか色々できるんですよねw
対話的にリスタートかけたりとか
あ、そういえば、errorについては、
そういうものらしいですね。
わりと本格的になると
説明もしっかり把握してないとできないので、
厳しいですねw
数理システムさんの
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/tutorial/condition-system.pdf
が良い教材でしょうか。
Common Lisp. における例外処理. ——. Condition System. の活用.
です。
このあたりは、実際に書かないと、ちょっと理解がむずかしそうですねー。

名無しさん 2008-06-07T21:24:38+09:00
なるほどこれは後ほど読んでみます

g000001 2008-06-07T21:24:46+09:00
ということで、ここまで何か質問ございますでしょうかー

名無しさん 2008-06-07T21:24:51+09:00
(これも面白かったです(コメント含めて): http://dlweinreb.wordpress.com/2008/03/24/what-conditions-exceptions-are-really-about/

g000001 2008-06-07T21:25:10+09:00
あ、これの議論ですね、
errorはハンドリングできるべきじゃない、だったかな。>david moon氏
なにやら難しくて、自分にはちんぷんかんぷんな感じなのですが。。。
このあたりの議論を把握できるようになるといいですねー
うーん、難しいw
とりあえず、今後の課題ということで。。。

名無しさん 2008-06-07T21:30:41+09:00
頭がパンクしそうw

g000001 2008-06-07T21:31:09+09:00
とりあえずは、上記のテキストか、PCLからといったところでしょうか
本格的にやると奥が深いので。。。

名無しさん 2008-06-07T21:31:44+09:00
(プログラマが例外的とみなす状況と、それを扱う仕組みとは、CLでは直交しているんだな、とだけ自分は理解しました)

g000001 2008-06-07T21:31:45+09:00
では、とりあえず、
なるほどー、
ここでも
エラーとコンディションの違いを学ぶこと。
全てのエラーはコンディションである; 全てのコンディションがエラーである
とはかぎらない。
って書いてますけど、
そういうことでしょうか?
ちょっと違うかなw
とりあえずは先進みますかw
UNWIND-PROTECT
ですが、
これもあまり直接触れる機械が少ないかもしれないですねー
とりあえず、途中でエラーに遭遇しても後始末をしてくれる仕組みがあると
言うくらいでw
黒田さんのschemeの話で有名になりましたがw
ということで、formatにいっても良いでしょうか?
では、進んでしまいますが、
I/Oの問題: FORMATを用いる
ということですが、
formatも突っ込むと大変なことになるので、
http://gigamonkeys.com/book/a-few-format-recipes.html
PCLに良い解説があります。
zickさんのブログの疑問では、
逆に言えばチルダの後って大文字でも小文字でも大丈夫ってことでしょうか?
ってことなんですが、
~aでも、~Aでも意味的には同じですー
あと、~&は、先頭位置でなければ、改行するというものです。
ここでは大文字で書くのを推奨してますねー。
自分も大文字で書く派でしょうか。
gaucheだと小文字で書く人が多いかな?

名無しさん 2008-06-07T21:43:08+09:00
日本語の中だと大文字でも小文字でも目立つのでどっちも書きます。

g000001 2008-06-07T21:43:22+09:00
なるほど、なるほど、
CL以前のZetalispとか、MacLISPとかでも大文字なんですよね。
なんかなんとなくの伝統なのかもしれませんね>大文字。
ところで、疲れてきてませんか?>皆さん
自分だけですか?w
ちょっと休憩いれますか?

名無しさん 2008-06-07T21:44:57+09:00
入れますか。どのくらい入れます?
ハイ コーヒーですね

g000001 2008-06-07T21:45:35+09:00
じゃ、5分くらい休憩ということで
50分スタートでもいいですか?(^^
しばしご歓談をww
50分ですねー。
じゃ、再開ということでよろしいでしょうかー。
ちょっとペース速くした方がいいかな?
じゃ、次いきます。
正しくストリームを用いる
でなにか質問はありますでしょうか?
ここいらもCL固有で、実際使ってみないとわからないので、
質問するのも難しいかもしれませんねー。
CLには色々なストリームがあるんですよね。
では、先に進みまして、
3. ほぼ標準のツールに関するヒント
ですね、
ここの記述はさすがに古くなってしまっているところが多いかもしれません。
ほぼ標準のツールを用いる
ってのは、心がけなので
よしとして
- プログラムを定義するためのdefsystem
は昔のdefsystemでしょうか?
最近だとASDFがデファクトになってると思うんですが、
これのdefsystemと同じですかね?
とりあえず、最近は、ASDFga
ga
がデファクトだということでw
で、次の
ツール
ですが、
やっぱり最近だとSLIMEですよね。
あと、ここで取り上げられてないのはHyperSpecとかかな。
ASDFのdefsystemも色々なことができます。

名無しさん 2008-06-07T21:58:02+09:00
clocc(http://clocc.sourceforge.net/)がasdfじゃ無くて、昔悩んだなぁ

g000001 2008-06-07T21:58:26+09:00
mk:defsystemでしたっけ?

名無しさん 2008-06-07T21:58:42+09:00
そんな感じのです。

g000001 2008-06-07T21:58:49+09:00
10年くらい前は色々あるんですよね。
最近はASDFに落ち着いてて
統一されてきてる感じなので、その辺は楽になってきたかと思います。
- あなたのシステムがコンパイラの警告なしでロードされることを確実にする
de,
で、declare ignoreを使うってのは、心がけの問題ですかねー。
自分はつける派ですが。。。
- システムが何もないところからコンパイルされ得ることを確実にする
ってのも
規模が大きくなるとありそうな問題ですね。
それで、ここから
エディタコマンド
ということで、
emacsのことですね。

名無しさん 2008-06-07T22:01:18+09:00
あーその前に

g000001 2008-06-07T22:01:25+09:00
はいはい(^^

名無しさん 2008-06-07T22:01:51+09:00
ドキュメントシステムのデファクトってあるんでしょうか。

g000001 2008-06-07T22:02:12+09:00
なるほど、
あまり、聞いたことないですよね、

名無しさん 2008-06-07T22:03:02+09:00
自分はcldocか何かが使えたので使ってるんですが。ライブラリとかバラバラで統一されて欲しいなと。

g000001 2008-06-07T22:03:05+09:00
http://www.cliki.net/Documentation tool
で上がってるのがメジャーどころな気も
Tinaaはよく見かけるきもしますが、
作者のGary Kingさんのウェブページをよくみてるからかもしれないw
あんまり「これだ!」っていうのはなさそうですねー

名無しさん 2008-06-07T22:06:56+09:00
なるほど。

g000001 2008-06-07T22:07:20+09:00
ということで、emacsで

名無しさん 2008-06-07T22:07:25+09:00
Tinaaは食わず嫌いだったかもです。試してみます。

g000001 2008-06-07T22:07:57+09:00
なんとなくデザインとか好みが分かれる気がしますがw >tinaa
エディタコマンド
については、
emacsのことなんで、
とくになにもないでしょうか?
cl-cookbookに良いドキュメントがあるので、
そちらも参照されると良いかと。
これかな
http://cl-cookbook.sourceforge.net/windows.html

名無しさん 2008-06-07T22:10:20+09:00
そうですね

g000001 2008-06-07T22:11:04+09:00
あれ、上のリンクじゃなさそうだな
http://cl-cookbook.sourceforge.net/emacs-ide.html
でした。
では、4. 抽象化

名無しさん 2008-06-07T22:11:53+09:00
transpose-sexpsとかC/C++の引数を交換するのにも使えて便利。

g000001 2008-06-07T22:11:54+09:00
に突入してもよろしいでしょうか?
そうですね、式単位での編集はやっぱり必須ですよね。
抽象化ですが、
これも関数型言語に共通のところですかねー。
 データ抽象(抽象データ型)
はまず良いとして
- 関数抽象(関数、手続き)
も共通かと思いますし、
ただ
制御抽象(イテレータやその他の新たな制御フロー構造を定義する)
ってのは、Schemeの方がCLより得意ですかね?
Schemeだと割とよく見かける気はするんですが、
CLはどうなんでしょう。
ということで、さらっと流してw
設計: どこからスタイルは始まるか
ですが、
Lispはこれらのアプローチの全てをサポートする:

- データ抽象: クラス、構造体、deftype
- 関数抽象: 関数、メソッド
- インターフェイス抽象: パッケージ、クロージャ
- オブジェクト指向: CLOS、クロージャ
- 階層化設計: クロージャ、上記の全て
- 遅延された決定: 実行時のディスパッチ
についてなにか疑問はありますでしょうか?
特になさそうですねー。
設計: 分解

名無しさん 2008-06-07T22:17:58+09:00
ですね。

g000001 2008-06-07T22:18:35+09:00
設計: 分解、データ抽象も
心がけというか、
そんな感じですかね?
zickさんのブログでの疑問では、
    (defstruct (rule (:type list))
      name antecedent consequent)
はリストになるのか?ということでしたが、リストになりますw
defclassで型の指定をするのも
前にでてきた、効率と可読性を向上させるってことでしょうねー。
(deftype time () "秒での時刻" 'integer)
ってとこまで考えたことは全然ありませんでしたが。。。
CLの本格的なプログラマさんは結構型作ったりしてるんでしょうか?
ということで、さらっとながしてw
抽象データ型を実装する

名無しさん 2008-06-07T22:23:34+09:00
何でもとりあえずlistにしちゃうからなー

g000001 2008-06-07T22:23:36+09:00
に進んでみたいと思いますが
そうですね、そういう流儀もありますねー>なんでもリスト
Arcとかそういう方向ですね。
CLha
CLはいろんなデータ型があつかえるので、
活用しましょう、みたいなw
感じですが、
抽象データ型を実装する
で、
色々なデータ型が上げられてますが、
zickさんのブログで
tconcってなんぞや、と
いうことがとりあげられていましたが、
listの性質上リストが長大になると末尾への追加が遅くなる
んですが、
これを解決する古典的な方法みたいです。
末尾へのポインタと、ヘッドへのポインタを保持するもので、
末尾への追加コストが低くできるという。
http://www.ece.uci.edu/eceware/cadence/sklanguser/chap8.html
に図解があります。
最近だと構造体で表現するみたいですが、
昔(30年くらい前のinterlisp)では、
リストでも表現してたみたいです。
http://pdp-10.trailing-edge.com/decuslib20-01/01/decus/20-0004/6lisp.tty
末尾がすぐ見つかるのでつなげるのが簡単みたいです。
というかんじで、さらっと流してですねw
4.2. 関数抽象
ですが、
これも心がけと言う感じでしょうか?

leque 2008-06-07T22:32:05+09:00
Gauche の util.queue が tconc ですね

g000001 2008-06-07T22:32:14+09:00
割と関数型言語が好きな方は自然に行ってるかなと
あ、そうなんですかー >tconc

名無しさん 2008-06-07T22:32:45+09:00
そうですね。lispの場合長くなったらS式単位で切り出せるので、割と維持しやすいかなと。

g000001 2008-06-07T22:33:33+09:00
tconcの実装も良い課題のようですので、皆さんも挑戦されてみてはいかがでしょうか?
to
関数の分割というか、高レベルへの抽象化はschemerの方々が大の得意でしょうね。
ということで、
英語翻訳のルール
ということなんですが、

名無しさん 2008-06-07T22:35:03+09:00
あー、そっちがいいですよね。

g000001 2008-06-07T22:36:29+09:00
ですね。CLはちょっと
ごちゃっとしてるかもしれないですよね。
ということで、
英語翻訳のルール
に進むんですが、
これは、最初にコメントを書いてから実装する、
「コメント駆動開発」ってやつですか?
そんな用語はないみたいですねw
でもよく言われることみたいですね。
s/よく言われること/使われる方法論/
これも心がけ的な感じですかね。

名無しさん 2008-06-07T22:40:36+09:00
書くことで考えがまとまるってのはありますね

g000001 2008-06-07T22:40:36+09:00
それで、
ですねー。
ということで、
次の
ライブラリ関数を使う
ですが、
このあたりもCLの関数を良くしりましょうね、と
言うくらいのものでしょうか?

名無しさん 2008-06-07T22:44:42+09:00
そうですね。全部ライブラリを使った方がって思ってしまうのはxyzzyに親しみすぎたせいかも。

g000001 2008-06-07T22:45:26+09:00
ということで、
4.3. 制御抽象
にすすんでみますが
再帰 vs. 繰り返し
はScheme vs CLみたいなw
感じで語られることが多いですね。

名無しさん 2008-06-07T22:47:02+09:00
doが末尾再帰のシンタックスシュガーってのはなるほどと思います。

g000001 2008-06-07T22:47:17+09:00
そうですね、形がそういう形をしているんですが、
自分はdoが結構好きなんですが、
末尾再帰の形のシンタックスシュガーだと思って
ぜひ毛嫌いしないで使っていただきたいw
まあ、実際schemeだとそのとおりなんですが。。。
割とdoは嫌われてますねw

名無しさん 2008-06-07T22:49:52+09:00
doとloopを嫌ったら何にも残らないような…

g000001 2008-06-07T22:50:17+09:00
そうですねw

名無しさん 2008-06-07T22:50:36+09:00
mapでがんばるとか?

g000001 2008-06-07T22:50:37+09:00
dolistとかですかねー。

名無しさん 2008-06-07T22:51:06+09:00
数系統の問題の終了条件が書きにくい…

g000001 2008-06-07T22:51:50+09:00
ここでは、
loopと、map系とdoと
色々使い分けよう、って感じでしょうかー。
loopも深くなると、
魔術気味なので、
PCLでも参照されると良いかと思います。
http://gigamonkeys.com/book/loop-for-black-belts.html
良く使うパターンを暗記、と言う感じでしょうか?>loop
例外脱出や、無駄なコンスにも気を配りつつ色々考えると、
そういう章でしょうか。
;; リードマクロを導入する:
(reduce #'+ numbers :key #L(if (oddp _) (* _ _) 0))
ってのは、Arcみたいですね。
あとは、メモ化関数
とかですが、
これも有用かもしれませんね。
ずずー、と降って
マクロ近辺ですが、
マクロでの問題
悪い: インライン関数であるべき
悪い: 関数であるべき
悪い: 展開時に動作する
で何か思うところがある方は
いらっしゃいますか?
自分は、割と展開時になにかしてしまうような
マクロを書いてしまうんですが、
この辺判断が難しいような気がします。。。
悪い: インライン関数であるべき

(defmacro name-part-of (rule)
  `(car ,rule))
ってのも、インライン宣言したらかならずインラインになるんだったらいいんですけど、
保証はされてないので、
なんとも中途半端な気がw
clispはinlineにならないんでしたっけ?
ということで、
ちょっとCLのマクロについての突っ込んだ話なので、
あとは、On Lispを参照したり
するとよいのかもしれません。
4章までで、なにか、議論したい!ということはありますでしょうかー?

名無しさん 2008-06-07T23:04:56+09:00
とりあえずはOKです。

g000001 2008-06-07T23:05:16+09:00
はいー
じゃ、その他ですけど、
これも心がけでしょうか。
(defun lookup (name)
  (declare (type string name))
  (if (null name)
      nil
      (or (gethash name *symbol-table*)
          (make-symbol-entry name))))

これは、
nullでnameを判定してるんで、
型宣言と矛盾してるって話ですよね?
SBCLとかだと実際に
あとのコードが削られちゃいます。
命名規約: 一貫して
mo
も慣習というか、
そんな感じでしょうか。
- structure.slotを考慮する
は、リーダーマクロでやるんですかね?
- 内部的な関数と外部的な関数を区別する
  &optionalと&keyを混ぜないこと; 1つか2つの&optional引数を注意深く使う
  こと(Dylanは0である)
の細くですが、Dylanには、keyはありますけどoptionalはないようです。
色々心がけ的なものが続きますが、
いくつかの赤旗
はどうでしょう?
赤旗 →
赤信号
くらいなんだと思いますがw
- あらゆるevalの使用
- あらゆるgentempの使用
- あらゆるappendの使用
- setfを用いるか、macroexpandを呼び出すマクロに&environmentパラメータ
  がないこと
- 型errorに対してコンディションハンドラを書くこと(ignore-errorsの使用
  を含む)
- caar, cad...rを除くあらゆるc...r関数の使用("..."は全てd)
でなにか疑問点はありますでしょうか?
gentempは使いどころが確かに分からないので、納得というところでもあります。

名無しさん 2008-06-07T23:12:16+09:00
あんまり使わないんですけどappendはまずいんですかね。

g000001 2008-06-07T23:12:31+09:00
appendは`(,a ,@b)みたいな書き方をしろってことでしょうか?

zick 2008-06-07T23:12:56+09:00
単に遅いってだけじゃないんですか?

g000001 2008-06-07T23:13:07+09:00
それとも無駄にコンスするなってことですかね。
なるほど、なんか深いですねw

名無しさん 2008-06-07T23:13:49+09:00
そんな気がします>無駄にコンス

g000001 2008-06-07T23:14:11+09:00
`(,a ,@b)はappendとnconcの中間くらいの破壊度らしいです。
`(,a ,.b)はもうちょっとnconcよりみたいですw

名無しさん 2008-06-07T23:14:42+09:00
mapcanとかなら良いのかなー…
細かい…

g000001 2008-06-07T23:15:20+09:00
ただ、破壊系のオペレータも使いどころ分かってないと
難しいですよねー。

名無しさん 2008-06-07T23:15:56+09:00
使えるところだけ覚えて後は禁止ですかね

g000001 2008-06-07T23:16:10+09:00
そうですよね、基本そんな感じですよね。
- setfを用いるか、macroexpandを呼び出すマクロに&environmentパラメータ
  がないこと
は難しいというか、
&environmentをあまり理解してないので、
ちょっと分からない。
あ、このあとで、
破壊的な関数に対してポリシーをもつ:

名無しさん 2008-06-07T23:18:09+09:00
環境に依存しないマクロはマクロにする意味が無い? みたいな事なのかなぁ。

g000001 2008-06-07T23:18:13+09:00
って章がありましたね。
環境によって展開結果が違ってくるのを制御する引数がとれるんじゃなかったかと思うのですが、
展開結果に関わってくるんじゃないかと、
要確認ですねー。
とりあえず、先に進みますと
破壊的な関数に対してポリシーをもつ:
はさっき議論したようなことですねー。
しかし、
ジェネレーションスキャベンジングGCは、破壊的な更新によって遅くなり得
  ることに注意すること。
ってかかれると
じゃあ、どっちにすればいいんだ、ってなりますよねwww

名無しさん 2008-06-07T23:22:19+09:00
処理系を知れってことですね
たぶん

g000001 2008-06-07T23:22:57+09:00
なるほど、適材適所ということで

名無しさん 2008-06-07T23:23:16+09:00
各処理系のGCの性質とかってどこかにまとめてあったりします?

g000001 2008-06-07T23:23:30+09:00
そういえば、全然把握してないかも。
http://common-lisp.net/~dlw/LispSurvey.html
とかに書いてました。
SBCL
GC: On x86 and x86-64 SBCL uses a generational mostly copying conservative garbage collector. On PPC it uses a precise generational copying collector. On other architectures it uses a precise non-generational semispace collector.
だそうで。
複雑ですね。
ということで、先に進みますと
あまり重要ではない過ち
も、ポリシー的なところで、
シリーズを考慮する:
ってのはCLのSERIESパッケージのことでしょうね。
マルチタスクとマルチプロセス
はANSI CLでも仕様が決まっていないので、
色々探りつつという
あとは、後半は、心がけという感じで、
しょうか。
急にばっさり進みましたがww
ということで、
一通り眺めたかと思いますが、
なんでも好きなことを
発言してみてくださいwww
割といろんな言語で共通な部分も多いですよね、多分。
CL固有で、ちょっと分からないということがありましたら、
ぜひ質問でもしてくださいまし。
割と大事なところ抜かしたりしてましたでしょうか?w

名無しさん 2008-06-07T23:32:55+09:00
どこよんでいるのかついていけませんでした>< w

g000001 2008-06-07T23:33:05+09:00
ごめんなさいwww
後半飛ばしましたねw
長すぎるかと思ってw
何か予習してて疑問に思ったことなど、ありましたら、是非!
とりあえず、この文献とPCLを交互によんで、
理解を深めると、
良いのではないかと
思ったり思わなかったりしました。
あと、On Lispとか効率やマクロについての記述があるので、
そのあたりも良いテキストになるかと。
いずれも私はあまり理解できていないのですが(^^;
特に質問もないということで、
3時間半もかかってしまい、
また、細かいところも確認できませんでしたが、
これからもオンライン勉強会は
試みようと思っていますので、
これに懲りずにぜひともご参加いただければと!
なかなか難しいですねー。
IRCとかの方がいいですか?
それともお題がみなさん、もう知ってることばっかりでしたでしょうか?

名無しさん 2008-06-07T23:40:58+09:00
どれに答えたものか…
や、よかったですよ
ただ、もっと自分で読み書きしないと分からないことが多いなーと

g000001 2008-06-07T23:42:00+09:00
そうですねー。
そういうところが多いテキストでしたね。

名無しさん 2008-06-07T23:42:18+09:00
あんまりコード書いていない人には全く発言できなさそうな教材ですね
そーなの?
ってかんじで

g000001 2008-06-07T23:42:47+09:00
そのとおりですねww
次、LISPとデザインパターンとか考えてるんですけど、

名無しさん 2008-06-07T23:43:09+09:00
戻ってくるたびに得るものがあるのかな

g000001 2008-06-07T23:43:34+09:00
多分、それ系のものかなーと
おもいますね。
> 戻ってくるたびに得る

名無しさん 2008-06-07T23:43:50+09:00
スルメ…と

g000001 2008-06-07T23:44:10+09:00
そうですね、

名無しさん 2008-06-07T23:44:12+09:00
IRCかこっちかという話がありましたけど、

g000001 2008-06-07T23:44:14+09:00
そういう感じなんですかねー。
はいはい >IRC
BOT動かせば、IRCもありですかね。

名無しさん 2008-06-07T23:45:34+09:00
ログが残るのがお好みでない場合はここは嫌かもしれません

g000001 2008-06-07T23:45:44+09:00
あー、逆にそんなもんなんですかねー。
ログを残したいのでLingrだったんですが。そういうのもあるのかな。
でも、そこは匿名でですね。
参加していただければw

名無しさん 2008-06-07T23:47:08+09:00
そうですね
希望としては超のつく初心者むけに
http://www.partty.org/
あたりをつかったハンズオンがよいなー
とおもったりします

g000001 2008-06-07T23:47:54+09:00
なるほどー。
そうだ、みなさん
なにか勉強したいお題はありますでしょうか。
LISP系言語の落とし穴
ってテキストもあるんですけど、
これもいい題材かと思っています。

名無しさん 2008-06-07T23:49:49+09:00
Lispの処理系を作る系の話があったらぜひお願いしたいです。

g000001 2008-06-07T23:49:58+09:00
http://www.aiai.ed.ac.uk/~jeff/lisp/cl-pitfalls
<
> 落とし穴のテキストです
Lispの処理系を作る系 は
多分、先生がたくさんいらっしゃるので、
実現できそうですねー。
自分は無理ですけどww
CLについて知りたいことっていってもなかなか難しいですよねw
コンディションシステムは
やりたいですね、自分的には。
でも、これも自分で手を動かす系ですかねー。
そうだ、zickさんはLISPの処理系つくるの大好きじゃないですか、
是非、教えてください!

名無しさん 2008-06-07T23:55:25+09:00
教えてください!!
なんか振りかたとしてこれはいかんような気がしてきた…

g000001 2008-06-07T23:56:50+09:00
いや、私は、十年の計で待っていますからw

名無しさん 2008-06-07T23:57:24+09:00
次回よろしくという勢いではないのですね

g000001 2008-06-07T23:58:06+09:00
気長なのでw
JoswigさんにLispマシンのことに聞くってのも
ありかなと思うんですけど、
是非英語の分かる方で、
引っ張ってきて頂きたいなとw
毎週勉強会やろうと思ってたんですけど
なかなか、難易度は高いもんだということが分かりましたww
毎週は極端だったか。

名無しさん 2008-06-08T00:04:14+09:00
集まって適当に話すとかでも良いと思いますけどね。

g000001 2008-06-08T00:04:53+09:00
なるほどー。
とりあえず、土曜の8時に無謀にやりつづけてみようかなw
燃え尽きるまでww

名無しさん 2008-06-08T00:11:06+09:00
燃え尽きてしまうと困ってしまうのですが(苦笑)
続いていればOK的な感じで

g000001 2008-06-08T00:11:54+09:00
なるほど。極端でしたかw
1時間くらいであっさりできるなにかがあれば最高なのですが、

名無しさん 2008-06-08T00:15:52+09:00
毎週やるなら継続するものでも…

g000001 2008-06-08T00:16:14+09:00
そうですねー。
なにかないですかねー。
SBCLマニュアル読書会とか。

名無しさん 2008-06-08T00:16:33+09:00
おばんです。

g000001 2008-06-08T00:16:38+09:00
あんまり読書会にならなそうなニッチなものをw
こんばんはー。

名無しさん 2008-06-08T00:17:43+09:00
うーん。なにがええやろね。

g000001 2008-06-08T00:17:53+09:00
割と処理系のマニュアルはいいことかいてると思うんですけどね。

名無しさん 2008-06-08T00:17:59+09:00
lisp logの中の人です。^^;

g000001 2008-06-08T00:18:21+09:00
イニシャルから分かりましたw

名無しさん 2008-06-08T00:18:26+09:00
w
のぞいたらまだやってたのでビックリしました。お疲れさまです。

g000001 2008-06-08T00:19:27+09:00
長くかかってしまいましたw

名無しさん 2008-06-08T00:19:31+09:00
lisp logの中の方にはcommon-lisp-controllerのイマイチなところを伺いたかったです。どの辺りがイマイチなんでしょう。

g000001 2008-06-08T00:19:37+09:00
1時間の予定だったんですがw

名無しさん 2008-06-08T00:20:28+09:00
あれかぁ。僕があれをかいたのは直接関係ない所だから間違ってたかもしれん。パッケージを導入したときに互換性でうまく動かない時があったもんで
ediさんところのサーバーだっけな…
レポジストリからじゃなくて直接ediさんところからinstallしたらなおったから。んがーっ!になってました。^^;

g000001 2008-06-08T00:22:51+09:00
common-lisp-controllerってdebian系のみですか?

名無しさん 2008-06-08T00:23:13+09:00
たしか源流はdebian だったとおもう。

g000001 2008-06-08T00:23:15+09:00
KMRCLのkmrさんがメンテしてるんでしたっけ?
あれ、違ったかなw
自分はパッケージ全然つかってないんですけど、

名無しさん 2008-06-08T00:25:23+09:00
http://www.cliki.net/common-lisp-controller gentooでも大丈夫みたいだね。。

g000001 2008-06-08T00:25:34+09:00
debian系の方だったら、やっぱり普通パッケージつかうんですかね。

名無しさん 2008-06-08T00:25:55+09:00
http://packages.debian.org/ja/lenny/common-lisp-controller
kmrさんというのがKevin M. Rosenbergならメンテナに入ってますね

g000001 2008-06-08T00:26:43+09:00
あ、そうですね。
kmrさんがメンテナだから
何かあるというわけではないのですがw

名無しさん 2008-06-08T00:27:37+09:00
それがね。一部パッケージはメンテナンスがうまくなされてないらしく、導入でうまくいかないことがあるのよね。それさえなければ、lispをやりたいといわれたら即ubuntuでパッケージ導入したらええというんだけど。

g000001 2008-06-08T00:28:03+09:00
なるほどー。
kmrさんはかなりメンテナンス手がけてるみたいですが、
全部というわけにはいかないでしょうねー。

名無しさん 2008-06-08T00:28:23+09:00
なるほど。

g000001 2008-06-08T00:28:27+09:00
http://qa.debian.org/developer.php?login=kmr%40debian.org
CLの作法とDebianの作法の両方を知ってる人って限られそうですね

名無しさん 2008-06-08T00:35:02+09:00
apt-get/synaptics/aptitudeあたりが使えれば大丈夫。

g000001 2008-06-08T00:35:34+09:00
あ、すいません、言葉たらずでした、
メンテナがパッケージ作るのに、ってことですね(^^;

名無しさん 2008-06-08T00:36:05+09:00
ああ、すんません。わかりました。

g000001 2008-06-08T00:37:26+09:00
でも、パッケージで揃ったららくでしょうねー
apt-getすればいいだけだし。

名無しさん 2008-06-08T00:38:07+09:00
依存関係を見て必要なライブラリも揃えてくれて。
あと、ここだけの小耳情報ですが 笑 xreaでcmuclは動きます。cgiにするのは少し手を入れないとダメみたいだけど。

g000001 2008-06-08T00:41:55+09:00
SBCLも遠くなさそうですねw
ちょっとマシン交代するので、抜けます〜

名無しさん 2008-06-08T00:44:37+09:00
cmuclで日本語って大丈夫なんでしょうか?
その辺が心配<日本語;自分の家の環境でcmucl+drakmaではutf8の日本語なら読めたから、扱う方法はあるんだなという印象です。
おかえり

g000001 2008-06-08T00:48:11+09:00
ども〜
SBCLを一個の実行ファイルに固めてアップするとかの方法は無理なんですかねー
SBCLの実行ファイルが何に依存してるか調べてないのでなんとも言えないのですが。。。

名無しさん 2008-06-08T00:51:41+09:00
http://rpw3.org/hacks/lisp/site-switch-script.lisp このソースを書いているとおりにcmuclに導入してやればcmuclはスクリプト言語として扱えます。:-)
sbclもlinux x86のバイナリのtarボールをホームディレクトリで展開すれば動くような気がする。cmuclはこの方法でOKだった。

g000001 2008-06-08T00:54:49+09:00
なるほど、
それじゃ、cgiとして上手く動くかということですね。

名無しさん 2008-06-08T00:55:48+09:00
うん。
ずいぶん話を逸らしてしまった^^; ごめん

g000001 2008-06-08T01:00:35+09:00
いや、そんなことないですよw

名無しさん 2008-06-08T01:04:25+09:00
オンライン勉強会で使えそうなものってほかには http://www.slideshare.net/ こんなサービスも使うことができるかもしれない。(日本語はどうか分からない。)

g000001 2008-06-08T01:05:32+09:00
おお、なるほど。
これたまに見かける気がします、
日本の人も使ってたような。
これいいですね。

名無しさん 2008-06-08T01:07:09+09:00
使え層なものだと思ってるけど使ってないっす。

g000001 2008-06-08T01:09:31+09:00
こういうの使って事前にちゃんと準備できれば
最高でしょうねー。勉強会的には。

名無しさん 2008-06-08T01:11:18+09:00
うん。たとえばね。PCLの1章ごとをスライドにまとめてみたいな勉強会だったら効果的に使えそうだけど

g000001 2008-06-08T01:12:04+09:00
そうですね、今回もそういう風にしたらよかったw

名無しさん 2008-06-08T01:12:31+09:00
試行錯誤だよ。
準備が面倒だけど
今回のってもともとスライドのはずだからどこかにあるかも。

g000001 2008-06-08T01:13:39+09:00
あ、そういえば、そうだったw
そういうPDF
もどっかにあったはずww
それにしても、スライドで見せるにしても
どれだけの時間かけるもんなのかなと
大分ボリュームありましたよねw

名無しさん 2008-06-08T01:15:14+09:00
あのページ数から言うと短くて2時間長くて3時間の講演じゃないか
3時間の講演かー すげー
大体1分1枚くらいでないと 視聴者が理解できない
<講演
さて寝ますわ。

g000001 2008-06-08T01:33:35+09:00
はいー、お休みなさいましー。

名無しさん 2008-06-08T01:33:54+09:00
おやすみなさい。

g000001 2008-06-10T00:24:43+09:00
(provide 'ネタ)
4重loopから、return-fromではなく、returnで脱出するコード

(loop :do (loop :named bar 
                :do (loop :named foo 
                          :do (return 'bye))))
=> bye

名無しさん 2008-06-10T00:27:57+09:00
loopブロックに名前が付けられるってことですね。

g000001 2008-06-10T00:28:17+09:00
こんばんはー。

名無しさん 2008-06-10T00:28:25+09:00
こんばんは。

g000001 2008-06-10T00:28:41+09:00
そうですね、一発ネタというか、
屁理屈っぽいコードですねw
こういうのは、書いちゃだめでしょうねw

名無しさん 2008-06-10T00:29:35+09:00
でしょうね。>書いちゃだめ

g000001 2008-06-10T00:30:38+09:00
ブロックの名前が暗黙でnilになるので、
returnが合致するっていう

名無しさん 2008-06-10T00:33:48+09:00
言おう言おうと思っていたんですが、g000001さん、LL Future(http://ll.jus.or.jp/2008/)で喋るとか、いかがです?
LISPの歴史とかLISP族の紹介とか、聞いてみたいのですが。

g000001 2008-06-10T00:34:32+09:00
え、何をしゃべるんですか?w
あ、歴史ですかw

名無しさん 2008-06-10T00:35:01+09:00
LL Futureの詳細がまだ不明なので何とも言えませんけど。

g000001 2008-06-10T00:35:13+09:00
いやー、ど素人だし、緊張するし、
どうなんでしょうねw

名無しさん 2008-06-10T00:36:21+09:00
緊張するのは自分もなので無理には勧めません。会場もでかいみたいですし。

g000001 2008-06-10T00:37:06+09:00
なるほどー。
しかし、CLって割と穴場っていうか、

名無しさん 2008-06-10T00:37:42+09:00
頭の片隅にでも置いておいてもらえれば。

g000001 2008-06-10T00:37:57+09:00
はいー。
nanriさんは発表するんですか?

名無しさん 2008-06-10T00:38:38+09:00
とりあえず、予定はないです>発表
他人に勧めた分、何かネタを作ろうと考えていますけど。

g000001 2008-06-10T00:39:46+09:00
他のLLってどんな発表するんでしょうねー。

名無しさん 2008-06-10T00:40:52+09:00
自分は去年、和田先生の講演を聴くために参加しました。
その他だとオレ様言語の作り方あたりが楽しかったです。

g000001 2008-06-10T00:41:24+09:00
そうなんですかー。
和田先生のやつってハッカーとは?
みたいなのですか?

名無しさん 2008-06-10T00:42:40+09:00
そんな感じです。

g000001 2008-06-10T00:43:05+09:00
david moon氏の名前が出てたと思うんですけど、
なんで出て来たんだか分かりますでしょうか?
MacLISPの主要メンバだったからかな?

名無しさん 2008-06-10T00:44:03+09:00
う〜ん、覚えてないです。
講演資料に何かあるかな?http://ll.jus.or.jp/2007/

g000001 2008-06-10T00:44:52+09:00
ハッカーってどんな人->david moon, bernard breenberg,みたいな人
っていうような纏めページがどっかにあったような
これかな?
http://d.hatena.ne.jp/SumiTomohiko/20070804/1186267478
別になにって訳ではないのですが、私はmoon氏のファンなのでw

名無しさん 2008-06-10T00:51:14+09:00
講演資料を見て楕円コンパスとか、潮汐予測とかの話があったなぁと思ってました。

g000001 2008-06-10T00:52:42+09:00
今年の2月ころにやってた
unixマガジンの講演はみました?
いや、去年の12月ころかな?
ここでも和田先生が講演されてましたねー。
ストリーミングだったんで自分はみてました。

名無しさん 2008-06-10T00:53:56+09:00
それはチェック漏れですorz

g000001 2008-06-10T00:55:28+09:00
あれ、11月でしたw
http://www.ascii.co.jp/pb/unixmag-dvd/event/
knuthはgotoだらけってのはこれでもいってましたw
あと、ifもgotoみたいなもんなので、

名無しさん 2008-06-10T00:57:16+09:00
11月はxyzzyオフやらLISPセミナーがあったから、いっぱいいっぱいだったのかも。

g000001 2008-06-10T00:57:17+09:00
できるだけ分岐を減らしてみよう!とかもネタにしてたかな?
なるほどー。
そういえば、自分もLISPセミナー参加しようと思ってましたが
めんどくさくなって辞めたというw

名無しさん 2008-06-10T00:59:18+09:00
PC持ち込みで、PAIP本を元にした入門をちょろっとやりました。>LISPセミナー
デビット月といえば、MS謹製の高速JAVAだね。

g000001 2008-06-10T01:00:02+09:00
こんばんはー。派手ですね、アイコンがww

名無しさん 2008-06-10T01:00:07+09:00
だれもソースが読めずメンテナンスはできないがめちゃ速いという…
w
こんばんは。
こんばんわ

g000001 2008-06-10T01:00:30+09:00
それ井田先生のbitの記事が
どんどん尾ひれがついていった話ですよねw
元ネタが探し出せないー

名無しさん 2008-06-10T01:03:04+09:00
http://slashdot.jp/developers/article.pl?sid=04/03/09/2053231
http://iiyu.asablo.jp/blog/2007/05/08/1494815

g000001 2008-06-10T01:04:31+09:00
そうですね、これの元があるんですけど、どこかなー
emacs考現学なんですけど、
あった、これです
http://web.archive.org/web/20041211124103/www.sipeb.aoyama.ac.jp/~ida/books/javaone98.html
文字コードiso-2022-jpです
井田先生がdaniel weinrebと世間話をしてるんですけど、
それが発展して伝わってるんですよねw
自分のなかでは、Lispマシンの主要なところを書いてた人だったみたいなので、
それで詳しく知りたいなーと思ったりしてるんですけど、

名無しさん 2008-06-10T01:10:25+09:00
なるほどこれか

g000001 2008-06-10T01:10:34+09:00
難しすぎてついていけないことが多いww
あとDylanの主要メンバでもあったと思います。

名無しさん 2008-06-10T01:11:04+09:00
なんかよくわからんけどとにかくすげー

g000001 2008-06-10T01:11:21+09:00
そう、そういう感じなんですよ
w
LOOPマクロもMoon氏がメイン開発者らしいですよw

名無しさん 2008-06-10T01:12:08+09:00
なんとw

g000001 2008-06-10T01:12:17+09:00
まあ、weinreb氏の贔屓目情報かもしれませんが…
weinreb氏はmoon氏からlisp
を教わったみたいで、

凄く慕ってるみたいなんですよねw
そういうブログのエントリもありました
そういえば、最初のemacsもmoon氏とGLSの作らしいですし
割と目立たないんですけど、凄いですよね
これが、weinreb氏の徒弟時代の回想録を含むエントリですね。
http://dlweinreb.wordpress.com/2007/12/25/be-a-mentor/
割とミーハーなところなんですが、
moon氏の動画もあったのを思い出しました。
http://www.ai.mit.edu/projects/dynlangs/wizards-panels.html

名無しさん 2008-06-10T01:36:04+09:00
あの変態loopマクロもお月さんだったのか。

g000001 2008-06-10T01:36:12+09:00
Dylanの人たちが大分集まって
る感じですw
そうですね、でもloopマクロは、
元々interlispのforから来てると思うので
ちょっと疑問でもありますねー。
interlisp
のforは殆どloopみたいな感じですし。

名無しさん 2008-06-10T01:40:07+09:00
仕様を決めるというよりも、ガンガン実装しちゃう人なんでしょうね、きっと。

g000001 2008-06-10T01:40:48+09:00
コードをみると割と職人系というか、
がっちりしてる気はしますねー。
http://www.google.com/codesearch?hl=ja&q=show:EyglNNfoY3Q:gVjugwN74OM:FgoGLnrDivo&sa=N&ct=rd&cs_p=http://www-cgi.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/lisp/code/codewalk/mapforms/mapforms.tgz&cs_f=mapforms/annotate.lisp&start=1

名無しさん 2008-06-10T01:41:35+09:00
そうかもね。口だけの人をだまらそうと思ったら、実装して動いた結果で文句をいわさないが一番近道だからw

g000001 2008-06-10T01:41:49+09:00
みたいな感じのコードをいつも書いてたみたいです。
コメントとか細かいんですよねw

名無しさん 2008-06-10T01:44:02+09:00
コメントが丁寧だなぁ。

g000001 2008-06-10T01:46:36+09:00
割とlispマシン関連の人たちは署名残さないんで、
誰が誰だか分からないんですが、
コメントが丁寧に沢山ついてるのは、Moon氏のコードかもしれませんねー。

名無しさん 2008-06-10T01:47:16+09:00
ほお、日本の匿名文化に通じるなぁ。<それ

g000001 2008-06-10T01:47:52+09:00
書く人は書くんですけど、
kent pitman氏とかは、kmp
って署名書いてるので分かりますねー。
他は、割とごちゃごちゃですね。
あ、kmpはMacLISPでしたね。
MITのLisp村で署名が入ってるコードは割とすくないです。
あ、あとコメントが丁寧っていえば、RMSも丁寧ですね。
そして、関数名が異様に長いw
これはlispマシンのコードについてですね >rms

名無しさん 2008-06-10T01:53:55+09:00
コメントが丁寧な方が結果として自分も助かるんだけど、ついかかない。汗

g000001 2008-06-10T01:54:19+09:00
自分はどういう訳か一切書かない派ですねw
ちゃんと書くようにしてみようかなw

名無しさん 2008-06-10T01:55:20+09:00
自分も書かないなぁ。書くとしてもDOCSTRINGくらいかなぁ。

g000001 2008-06-10T01:55:25+09:00
コメント書くのも練習しないと、適切にかけないですよねー

名無しさん 2008-06-10T01:55:44+09:00
かくまえにより細かくわけて作ってしまうようなきがする。でも、最近マクロをつくりだしてからちょっといい加減じゃ自分でも分からないということが置きそうになってきたw
こんなの→(loop2d ((x 0 10)(y 0 10)) (print (+ x y)) doループ並に分かりにくい^^;

g000001 2008-06-10T01:58:05+09:00
ああ、でもなんとなく内包表記なんじゃないんですか?w

名無しさん 2008-06-10T01:58:42+09:00
内包表記も一見トリッキーに見えるもんな。

g000001 2008-06-10T01:59:13+09:00
interlisp
interlispのforだと
(do (print (+ x y)) for x from 0 to 10 and for y from 0 10)
とか書けたみたいで、内包表記的には読みやすかったかなと
思ったりもしています。
でも、自作マクロは何にしろ説明はするべきなんでしょうねw

名無しさん 2008-06-10T02:02:27+09:00
そう思う。関数より複雑だもん。ちょっと便利なマクロを作り出すと。

g000001 2008-06-10T02:04:44+09:00
定番な感じを模倣したりするもの大事なんでしょうね。分かりやすさのためには…。
do-、with-とか、先日の勉強会のネタでもありますがw

名無しさん 2008-06-10T02:05:51+09:00
修行しなきゃ

g000001 2008-06-10T02:06:37+09:00
ですねー。
仕様をネタに皆で実装してみたりするのも面白いかもしれないといま思いましたw
割とLispMとかTAOとか面白いマクロあるので

名無しさん 2008-06-10T02:07:49+09:00
初心者のなかの初心者にはきびしいよ。
マクロの実装はきつそうだなぁ

g000001 2008-06-10T02:08:35+09:00
自分はマクロ書くのが好きなんですけど、
好きな人ってあんまりいないのかなw
くだらないマクロって結構面白いですよw
まあ、実用的なことを考えると
難しいとは思いますね、確かに。
自分は、SRFI-1とか、TAOのマニュアルを延々と実装して遊んでたんですが、
これが結構面白いんですよね。
(provide 'ネタ)

ものは試しで、マクロを作って遊ぼうコーナー
Lispマシンにあったcond-everyを実装してみましょう。

condの変種ですが、該当する条件節は上から全部実行されるというものです。
otherwise節を持っていて、この節は該当するものがない場合のみ実行されます。
多値は返さないようなことを書いてますが、まったくcondと同様でも良い気もします。

参考:
http://common-lisp.net/project/bknr/static/lmman/fd-flo.xml#cond-every
(provide 'news)

XCVB

ASDFは、大規模までスケールしない等の問題があるそうで、
そういう諸問題を解決しようというという新しいシステム。
名前は、ASDFの伝統に則ったんですね。
打ちやすいけど読むの面倒臭さそう(;´Д`)

http://www.lispcast.com/drupal/node/36
http://article.gmane.org/gmane.lisp.cclan.general/807

名無しさん 2008-06-11T12:58:05+09:00
emit-htmlマクロのrebindingマクロの定義が見つからない。
昼の件はhttp://www.cliki.net/lw-compatで解決。

g000001 2008-06-12T09:36:04+09:00
rebindingとかwith-unique-namesとか同じ機能でも違う名前が付いてるマクロでややこしいですよねー
rebinding => once-only
with-unique-names => with-gensyms
という…。

j1gvh0f5Nfo 2008-06-12T22:41:51+09:00
http://www.bk1.jp/product/02997001
Practical Common Lispキタコレ 

名無しさん 2008-06-13T00:31:11+09:00
onjoさんだから期待できるね。

g000001 2008-06-13T04:40:42+09:00
おー、7月発売なんですねー。>日本語PCL
これでCL入門者が増えるといいなー。
というか増えるでしょうね(^^
画像貼込みテスト
あれ、どうやるんだ?w

若干面倒だなー。
zickさん今回も予習して頂いてありがとうございますー
http://blog.bugyo.tk/lyrical/
http://blog.bugyo.tk/lyrical/2008/06/3_cl.html
とりあえずzickさんの質問の用意はできました…。
がしかし、コンディションシステムの内容に強力に突っ込まれると自分は涙目だなあww
まあ、勉強会ということで…。
今回は進行にスライドを使ってみることにしました。
http://www.slideshare.net/g000001/the-power-of-lisp-macros
これって進行者がページをめくると見てる人全員のページもめくられたりしないんですかねー。
こんばんはー
本日勉強会の流れは、
20:00-20:25
 THE POWER OF LISP MACROS (Edi Weitz氏)
 CLマクロ入門者的な方

20:30-20:55
「Common Lisp における例外処理 〜Condition System の活用〜」(数理システムさん)
 CLのコンディションシステム入門者的な方

21:00-21:25 LISPマシン入門
 Lispマシンって何だか知りたい方

21:25-	反省/質問/お題の提案/雑談
みたいな感じを予定しておりますー。
よろしくお願いします!
ちょっと難しめのお題を選んでしまったかもしれません(^^;

quek 2008-06-14T19:53:02+09:00
こんばんは。準備ごくろうさまです。よろしくお願いします。

g000001 2008-06-14T19:55:19+09:00
よろしくお願いしますー。
マクロの巻は自分も分からない箇所があるので、皆さん教えて頂ければと…。

名無しさん 2008-06-14T19:58:14+09:00
こんばんは よろしくお願いします

g000001 2008-06-14T19:58:47+09:00
よろしくお願いしますー
マクロの巻の資料は
http://www.weitz.de/macros.lisp
ですー。

名無しさん 2008-06-14T19:59:17+09:00
こんばんは 主にROM参加ですが、よろしくお願いします。

g000001 2008-06-14T19:59:38+09:00
よろしくお願いしますー

では、20時になりましたので、開始したいと思いますー。
よろしくお願いします!

名無しさん 2008-06-14T20:00:43+09:00
よろしくお願いします

quek 2008-06-14T20:00:55+09:00
お願いします。

g000001 2008-06-14T20:01:07+09:00
とりあえず、スライドつくってみたんですが
http://www.slideshare.net/g000001/the-power-of-lisp-macros
あんまり意味ないかもしれませんww
では、とりあえず、1)から始めたいと思いますー
1、はとりあえずマクロについての予備知識らしいのですが

名無しさん 2008-06-14T20:02:31+09:00
スライドつくってみたんですが

g000001 2008-06-14T20:02:48+09:00
はいー
これ連動して動くと参考なんですが…(^^;
1は予備知識ということで2からでOKでしょうか?(^^

quek 2008-06-14T20:04:24+09:00
OKです。

g000001 2008-06-14T20:04:38+09:00
あ、そうだざっとの説明ですが、
マクロの落とし穴や、
マクロを書くマクロ
コンパイラマクロ等の流れになってますー。
では、スライドの2で
2ですが、
ちょっとLispWorks依存になってしまっているのですが
関数とマクロの違いというか、
その辺の説明になってますねー。
最初に
(defun my-if (test-form then-form else-form)
  (cond (test-form then-form)
        (t else-form)))
を定義してみるわけですが、
then節もelse節も評価されてしまうので関数じゃ書けないということですね。
そこで、マクロ登場と
この辺は皆さんOKでしょうか?(^^
とりあえずは、OKということで、
3にいってもよろしいでしょうか
あ、そうだ、その前に2のおすすめ文献ですが、
http://home.pipeline.com/~hbaker1/MetaCircular.html
はおもしろいと思います。
それでは、3に入りますー。
分からないことがあったら
ガンガン引き止めてくださいー
3. The classic: WITH-
ですが、
大まかな流れとしては、
unwind-protectの定番の使い方を解説してます
unwind-protectは、途中で割り込みが入った際にもクリーンアップ節は必ず実行するというものですが、
ここのwith-transactionを実行すると
(with-transaction 
  (print "transaction!!!!"))
これは正常ですねー
Starting transaction

"transaction!!!!" Committing transaction
こう言う感じで、
途中でエラーとかになると、
(with-transaction 
  (print "transaction!!!!")
  (error "foo?"))
Starting transaction

"transaction!!!!" Aborting transaction
アボートになると
言う感じで、
それで定番の形ですが、
アボートしたかどうかは、クリーンアップ節では分からないので、
フラグとして、
doneを使っていて、
正常に実行が終わったら、doneはtにセットされると
いう流れになります。
それで、
自分もちょっと分からないところがあるんですが、
ここで、
with-transactionが2種類でてきてるんですが、
あとの方は、
*in-transaction-p*
を判定するようになってるんですが、
これはなんでなんでしょうか?
入れ子対策ですかね?
(with-transaction 
  (print "foo")
  (with-transaction
    (print "bar")))

quek 2008-06-14T20:18:10+09:00
私もそうだと思います。>入れ子対策。

g000001 2008-06-14T20:18:11+09:00
こういう場合の対策かなと思ったんですが、どうなんでしょう(^^;
unwind-protectが二重にならないようにと
言う感じでしょうか

quek 2008-06-14T20:19:35+09:00
ちょっとはみでてしまうのですが、これはスレッドセーフなんだろうか? というのが気にかかります。

g000001 2008-06-14T20:19:35+09:00
ということで、unwind-protectマクロの書き方の定番が分かったという
そうなんですよねw
自分もそれ考え単ですが
たんですが、
スレッドごとにスペシャル変数は別個になるらしいんですが、
その辺との兼ね合いで
どうなって行くのかと(^^;
スレッドごとにnilを持つことになると
…ダメっぽいですよねwww

quek 2008-06-14T20:22:07+09:00
実装依存というところもありそうで、宿題ということで(笑

g000001 2008-06-14T20:22:20+09:00
そうですねww
割と深いんですよ、このお題は
ああ、25分ってあっという間ですねw
とりあえず、ここまでで質問は
ありますでしょうかー
多分今回はここまでですね

quek 2008-06-14T20:23:29+09:00
はい。ありがとうござます。

g000001 2008-06-14T20:23:36+09:00
このお題は、後半になるにしたがっていい味出してるので
是非、次回深追いしたいところです
短いですかね、>25分

名無しさん 2008-06-14T20:24:46+09:00
あ、そういう進行なんですね。了解です。

g000001 2008-06-14T20:24:58+09:00
そうなんですよね、
ちょっと無理があるかもww >進行
それで、ここから5分休憩ですー
マクロの巻の質問して頂いてもおkですー。
では、ここからコンディションシステムの回になりますー

資料はこちらですー
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/tutorial/condition-system.pdf
ちょっとこれ難しいんですが
とりあえず、zickさんがブログのエントリで予習して
頂いたので、その質問を先にという
感じで
まず、
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/tutorial/condition-system.pdf
まちがった
このPDFはだいぶLOOPマクロを
多用しているんですが、
CLerはこんな感じなのかと
- loopマクロって多用するものなの?
なんだかサンプルのソースコードに山ほどloopマクロが出てきたんですが、
CommonLisp使いってloopマクロを多用するのでしょうか。
loopマクロってなんだかそれ自体が一つの言語に見えるくらい、
いろいろ出来るみたいで大変そうなんですけど。
ということなのですが、
自分的にもかなり多用しているなと
思います。
みなさんどうでしょうか?(^^

quek 2008-06-14T20:34:35+09:00
mapcar や find でいけるところも気がつくて使ってたりします。

g000001 2008-06-14T20:34:48+09:00
そうなんですよね、
だいぶLOOP言語になってるという感じはします。
ちょっとそのあたりが読みにくいかもとは思います。
check-value-with-cerror
をiterで書き直したりしてみたんですが、
http://paste.lisp.org/display/62219
こういう方がわかりやすいかなとは思います。
通常のCLの構文が使える、という意味では。
ということで、
次回は、LOOPマクロ勉強会でもww
次の質問ですが
- (lambda (cond) (declare (ignore cond)) ...)
これは引数condは使用しないっていう意味の宣言なんでしょうか。
うまく最適化されるのかな。
とのことですが、
宣言して使わない変数があるとコンパイラが警告を出すので、それを黙らせる、いう意味ですね。ignoreしてるのに使うと、それはそれで警告になります。
それと、ignorableは、使っても使わなくても良いというものですね。
それと次ですが、
- #'car と 'car
#'carは(function car)、'carは(quote car)というのは分かるのですが、
関数が必要とされる箇所でこの二つって区別されましたっけ?
lambda式につける場合は#'でないと駄目なのは明らかなんですが、
シンボルに対してはどうだったっけ……。
quoteとfunctionの違いですが、
(defun plus1 (n)
  (+ 100 n))
として、
(flet ((plus1 (n) (1+ n)))
  (mapcar #'plus1 '(1 2 3 4)))
;=> (2 3 4 5)
としてみると
これは、意図どおりだと思います。
(flet ((plus1 (n) (1+ n)))
  (mapcar 'plus1 '(1 2 3 4)))
;=> (101 102 103 104)
quoteだとsymbolについた関数になるので、大域の関数が呼ばれます。
(flet ((plus1 (n) (1+ n)))
  (mapcar (symbol-function 'plus1)
          '(1 2 3 4)))
;=> (101 102 103 104)
みたいな。
という局所関数とのからみになってくると思うんですけど、
他にquoteとfunctionの違いって

名無しさん 2008-06-14T20:42:27+09:00
コンパイルとかにも関係するはずです。

g000001 2008-06-14T20:42:35+09:00
なるほど、
functionの方が最適化されるんでしたっけ?

名無しさん 2008-06-14T20:43:10+09:00
functionだとその時点で関数オブジェクトが決定されてしまう、という感じだったはずです。

g000001 2008-06-14T20:43:31+09:00
なるほど、なるほどー。
色々深いですねー。

名無しさん 2008-06-14T20:44:24+09:00
quoteはシンボルから引くことになるので、実行時まで決定されない。といううかんじ。

g000001 2008-06-14T20:44:50+09:00
自分もそれの良い例がないかと
考えたのですが、
思いつきませんでしたww
そういうところでfunctionの方がCLでは、色々適切なところが多いと
言う感じでしょうか。
ということで、
コンディションシステムですが、
これオンラインだと難しいなーっw
とりあえず、
1 はじめに
ですが、
とりあえず、CLは色々できますよと、
そういう感じですねw
2 Condition システム

名無しさん 2008-06-14T20:48:13+09:00
仕様で決まっているから安心と。

g000001 2008-06-14T20:48:14+09:00
ですが、
そうですね、
ちゃんと決まっていると
CLでは、コンディションシステムは
シグナリングと
ハンドリングと
リスタートとなっていて
今後もそういう区分けで進んで行きます。
2.1 関数仕様の重要性
は、実際に設計するさいに
どうするかと
いう感じなのですが、
このあとでも
あまり具体的な指針ってのは
示されてない感じもします…。
というかんじで、ここまでは
良しとして、
3Condition システムの使い方
ですが、
とりあえず、3、1をよんで
大切そうなところは、
エラーで絶対に終了するところには、ignore-errorsで無視することはしないように
ってところ位なんでしょうか
あと、コンディションには階層がありますよと、いう感じですね。
それで、次の
3、1、1 Condition の定義と生成
ですが、
大体CLOSチックな感じで
defclassのようにdefine-conditionで
コンディションを定義して行きます。
PCLに書いてあったんですが、
歴史的な事情により
define-conditionはdefclassのようにstandard-objectを継承することは
義務付けられていないそうで、
standard-objectが動作するマクロ等がconditionでも全部使えるとは限らないとか、なんとか。
でも、ここのマクロ展開の例では、
defclassに展開されてますねー。

名無しさん 2008-06-14T20:56:50+09:00
conditionはCLOSで実装されるのだと思ってました。

g000001 2008-06-14T20:57:09+09:00
そうですねー。
このあたり、詳しくないので、
自分も喋るとボロがでるのですが、
standard-objectを継承する義務はないと
いうことなので、
CLOSでないというわけでも
ないのか、あるのかww
実装によってゆれがあるんでしょうね、多分(^^;
AllegroだとこのPDFno
の例みたいな感じだということで。
あれ、
59分だ!w
じゃ、このあたりの問題は、宿題というか、HyperSpecで調べる、みたいなw
次回3.2 シグナリングからですね。

名無しさん 2008-06-14T21:00:12+09:00
はーい

g000001 2008-06-14T21:00:15+09:00
もうちょっと、楽に進められるような方法を考えてみますー
休憩飛ばしてしまいましたが
どうしましょうかw
もし大丈夫ならこのまま続けますが
次Lispマシンの回なんですけど
ちょっと
グダグダになるかもしれません(^^;
じゃ、大丈夫そうなので、Lispマシン入門に移行してみようかと
http://www.slideshare.net/g000001/lisp-m
スライドつくってみました。

leque 2008-06-14T21:03:07+09:00
コンディションは「Whether a user-defined condition type has slots that are accessible by with-slots is implementation-dependent.」ということで CLOS っぽいことができない実装もあるのかも(Hyperspec)

g000001 2008-06-14T21:03:27+09:00
そうですね、そこです、PCLでも
そこのことを書いてました(^^
という感じでLispMの回なのですが
そもそも、LispMについて知りたいことってありますでしょうかw
とりあえずは進めてみます(^^;
スライドp1
は表示ですんで、
p2
Lmは、LISPで動いていたマシンです
で、p4
ALTOに影響をうけてるんですね。
シングルユーザ向けの環境でした。
p5
p6
p7
LISPだけでなくて、
Cとか、Adaとかfortranとかのコンパイラもあったみたいです
p8
これ、進行が難しいですねwwww
p9ですが、
1973年の論文がきっかけみたいですねー。
つっこみあったら、
どしどし、つっこんでください(^^
p10
GreenblattさんがLMをつくると
いう気になるんですね。
最初は個人プロジェクトでした
1年くらいで大体形になって
じゃあ、みんなでやろうという
ことになります。
基本的にsmalltalk/altoに非常に
影響を受けていて
まんまな感じとさえ言えるかもと
p11,p12
ですね。
最初のマシンはconsというんですが、
この辺りでLMはほぼ形になっています。
p13

名無しさん 2008-06-14T21:10:57+09:00
この辺で出ているホストというのがよくわからないのですが。

g000001 2008-06-14T21:11:12+09:00
あ、そうですね、
ホストというのは
consはスタンドアローンでは作動できなかったので、
ディスクとか、その他を
親のコンピュータから借りてるんですね。
そういう親コンピュータをホストと書いてみました。

名無しさん 2008-06-14T21:12:10+09:00
LISPマシンは仮想マシンとして動いていたということでいいですか

g000001 2008-06-14T21:12:39+09:00
最初は、シミュレータで
段々実体化してきて
CPUも独立して、ディスクも独立して、
と言う感じで、段階的に
スタンドアローンマシンになっていったようですー
それで、独り立ちしたのが
p13
のcadrです。
2番めなので、cadrです
ここで、オブジェクト指向とか、ネットワーク共有のファイルシステムとか
が使えていたようです。
オブジェクトシステムは、
CLOSじゃなくて
Flavorsというもっと、Smalltalkのようなものでした。
で、p14
書き込みすぎて見にくいんですが、
いまCLで普通につかってるものが
かなりこの段階で導入されました。
多値とか、
ラムダリストパラメータとか
構造体とか
オブジェクト指向とか
あと、パッケージですね。

leque 2008-06-14T21:16:37+09:00
このころって可変長引数ってなかったんですか?

g000001 2008-06-14T21:16:58+09:00
このあたりはzickさんが得意だと思うんですが
lexprとかfexprという
仕組みはあって
まとめて引数をとって
evalするという仕組みはありました。
それが、ちょっと重たいのも問題になっていたようです
まとめて引数をとるところは
今はもうなくなってしまいましたね。
あと、fexprは引数を評価しないんで
マクロ的なこともできると、
そんな感じだったみたいですねー。
あと、ダイナミックスコープですね
CLになって初めてレキシカルに移行という感じで

leque 2008-06-14T21:20:22+09:00
ふむふむ。このあたりにちょっとありますね http://www010.upp.so-net.ne.jp/okshirai/HOPL2-Uncut-j.txt > fexpr, lexpr

g000001 2008-06-14T21:20:28+09:00
そのあたりが意外といえば、意外かもしれません。
あ、それ今回の元ネタにもなってますw
MacLISPまでは、fexpr,lexpr,expr,subrとか
そういうものをシンボルのプロパティに格納して
それを判断して評価、みたいなことをしてたみたいです。
LM lispからは、ちょっと変わったようです。
あと、クロージャですね
ダイナミックスコープなのにクロージャという
そのあたりもおもしろい
あと、ALTOに影響を受けてるので、
開発環境もリッチという
そんな感じで、
p15ですが
lmのエディタはemacsなんですが
今のemacsと殆んど同じことができるんですね。
30年前にすでに
replとエディタのバッファが統合されてる感じで
式をコマンドで評価してコンパイルとか普通にできます
で、そのあたりの例が
p16とか
マクロ展開もこまんどで
できてました。
これは見にくいですが、
loopマクロを展開してみてる例ですね
Zmacsでは、展開させると
画面の上からするするーっと
展開結果が表示されます。
何かキーをおすときえるという
p17
はマルチフォンとの例ですが
つぶれてみえないですかねwww
とりあえず、マルチフォンとでしたw
p18
はフォンとエディタで
自分でフォンとをつくったりできました。
あ、そうだ
ちなみに
これは全部
30年前のCADRのエミュレータです。
p19
はメーラーです。
メーラーも標準装備でした。
p20はその他ですが、
ターミナル、やプロセスモニタ、やファイルシステム管理のプログラム等色々あります。
と言う感じで時間になってしまいましたw
これ15分くらいでおわっちゃうはずだったんですけどw
とりあえず、あと5分くらいで
ぱぱっと終わらせてしまってもよいでしょうか?(^^

名無しさん 2008-06-14T21:30:31+09:00
OKです。

g000001 2008-06-14T21:30:39+09:00
ありがとうございます。
それで、
結構いい感じに仕上がったので、
商用化すると
言う感じになりました。
でも、greenblatt氏はビジネス
をするというタイプじゃなかったので、
すったもんだがありまして、
AIラボが2分するんですね
それで、
LMIとSymbolicsというLMの会社ができました。
p26
で最初はどっちも
CADRを綺麗に仕立てただけなんですgた、
ですが
段々独自の機構をつけます
p27,p28ですね。
で、RMSが闘ってたのもこの頃で
絶望して、GNUが開始されるわけですね。
で、そのうちTIが登場するんですが、
最初はLMIからライセンスをうけてるんですが、
そのうち独立という
で、p31
ですが、
CLにも大きく影響していて
CLとZetalispはかなりちかい感じです。
p32
それで日本ですが、
TAO/ELISという
マシンがありました。
で、AIの冬がおとずれ
景気が悪くなって
続々倒産という
それでも
Symbolicsは仮想LMを製品化するんですが、
現在でも
64bit LINUX上で動きます。
いきなりとんでp36の最終ページですがw
エミュレータもCADR、TI Explorer等ありますので、
動かしてみると非常におもしろいと
思うんですが
いかがでしょうかという
ちょっと、苦しいお題でしたね(^^;
ご質問ございますでしょうかー

quek 2008-06-14T21:37:46+09:00
いえ、とてもおもしろかったです。

名無しさん 2008-06-14T21:37:59+09:00
面白かったです

g000001 2008-06-14T21:38:13+09:00
もっと詳しくした方が良かったのかとも思いましたが、
どのあたりが適切なのかww

名無しさん 2008-06-14T21:38:28+09:00
かなり面白かったです。もう少し詳しく聞いてみたいと思いました

g000001 2008-06-14T21:38:47+09:00
自分が知ってる範囲でしたら、
資料のポインタくらいは
すぐ出せますので、
何かありましたら、
教えていただければー。
Symbolicsについて
あまり言及できてませんが、
SLIMEよりリッチなLISP開発環境だと
思っていただければと
30年前のCADRの時点で
かなりSLIMEみたいなことをやってるので、
割とびっくりします。
以前リンク集等作ってみてたんですが、
http://cadr.g.hatena.ne.jp/g000001/20080111/1200032115
色々集めてみました。

名無しさん 2008-06-14T21:41:30+09:00
g000001さんのブログの方でSymbolics社のLMについて知ったので、CG業界で使われていた話とか知りたいなと思いました。

g000001 2008-06-14T21:41:54+09:00
そうですねー。
どういう経緯でCGで活躍することになったのか
良く分からないのですが、活躍してたみたいなんですよねw
あと、最近Symbolicsの仮想LispMのソースが流出してるせいなのかもしれませんが、
LINUXでSymbolicsを動かすブログ記事が多くなってきましたww
ちゃんと買うと50万くらいみたいです(^^;

名無しさん 2008-06-14T21:44:23+09:00
そ、そんなに・・・
高いですねー

g000001 2008-06-14T21:44:52+09:00
そうなんですよねー。
でも、学割で9万くらいになるみたいですよww

名無しさん 2008-06-14T21:45:21+09:00
その差額は一体・・・

g000001 2008-06-14T21:45:53+09:00
http://ymeme.com/symbolics-products-price-list-august-2007.html
なんですけど、
適当なんでしょうねw

名無しさん 2008-06-14T21:46:03+09:00
すでに学生じゃないので、50万がキツイですね

g000001 2008-06-14T21:46:23+09:00
そうですね。
自分は、CADRエミュと
TI Explorerエミュで遊ぶことにしています。
CADRエミュも結構いろんなことができますので、
なかなかおもしろいかと

名無しさん 2008-06-14T21:47:30+09:00
エミュでも実用的に遊べるんですか?興味がわいてきました

g000001 2008-06-14T21:47:38+09:00
LINUXの上で動くんですが、
ホストのLINUXのファイルを読み書きできるので、
コードを書いたりできると
言う感じです。
TI Explorerもできるっぽいのですが、
ちょっと方法が分かりません(^^;
30年前の環境ですが、
エディタもEMACSのように
LISPで拡張できますし
割といじって遊ぶには良いかと。

名無しさん 2008-06-14T21:50:10+09:00
へー、ますます興味がわいてきました。調べるのも楽しそうです♪

g000001 2008-06-14T21:50:27+09:00
そうですね、ソースコードもアクセスできて、
その場で変更してコンパイルしたら結果が反映されたり
LISPらしさが出ていていいと思いますー
ちなみにソースコードのスタイルは
古いので参考にはならないかもしれませんwww
と言う感じで、LMの巻だったのですが、
では、適当に雑談や、改善点のご指摘等頂ければと思います(^^;
さっくり短くして毎週やるという試みだったのですが
30分は短すぎでしたでしょうか?w
15分ってのも
考えていたのですがw
あと、
なにか、お題がありましたら、

leque 2008-06-14T21:55:54+09:00
スライド一枚一分とすると45分くらいですかねえ

g000001 2008-06-14T21:56:13+09:00
そうですねー。
タイプしているのが
ちょっとネックにw
Skypeとか考えたんですけど、
それも大変かなと
皆さんと同期がとれてるかの
把握がなかなか難しいw
Googleのプレゼンツールだと
プレゼンしながら、
スライドが参加者で同期して、
かつチャットもできたりするんですが、
そういうのが理想なんですかねー。

名無しさん 2008-06-14T21:59:53+09:00
最近はそういうツールもあるんですね。

g000001 2008-06-14T22:00:48+09:00
便利そうではあるのですが、
LINUXだと日本語入力できなかったので、
今回は見送りましたー。
あと、なにかお題にしたいことがありましたら
教えていただければと
思いますー。
自分は、LISPとデザインパターンとか考えているんですがw
あとは、
    *  LISPの落し穴(コーディングではまるところ)
    * LISPとデザインパターン
    * LOOPマクロ入門
    * FORMAT入門
重複してますが(^^;
とかでしょうか。
CLとマルチスレッド とか
CLとライブラリの使い方 とか
JavaスタイルでCLを書いてみる とか
CLでSchemeみたいな継続 とか
30分なら単発でどうにかなりそうな
ならなそうな。

名無しさん 2008-06-14T22:06:10+09:00
Lisp初心者からすると「Lispの落し穴」とかいいですね

g000001 2008-06-14T22:06:36+09:00
そうですね、これ結構文章だとおもうんですが、

名無しさん 2008-06-14T22:07:19+09:00
#Lisp_Schemeで話があがった
S式でC言語も面白いと思います

g000001 2008-06-14T22:07:34+09:00
あ、さっき投下したやつですねw

名無しさん 2008-06-14T22:07:45+09:00
ログで拝見しました

g000001 2008-06-14T22:07:54+09:00
(%defmacro ret0 ()
  `(return 0))

(def (hello) (fn void)
  (csym::printf "Hello, World!~%"))

(def (main) (fn int)
  (hello)
  (ret0))
とか書いてみたんですが、
おもしろそうというか、
マクロ使えるのがいいですねー。
落とし穴のテキストは
http://www.aiai.ed.ac.uk/~jeff/lisp/cl-pitfalls
で、
wikiもやってるんですが、
落とし穴でまとめたページもあります
http://wiki.livedoor.jp/g000001/d/%cd%ee%a4%c8%a4%b7%b7%ea
quekさん発見の落とし穴もありますw

quek 2008-06-14T22:09:45+09:00
どもw

g000001 2008-06-14T22:09:59+09:00
よく発見しましたよねw

名無しさん 2008-06-14T22:10:11+09:00
いろいろ勉強になることばかりで、ありがたいです。

g000001 2008-06-14T22:10:35+09:00
よくみつけられるなあと感心しました(^^
いえ、いえー
wikiは編集できますので、
よかったら編集してくださいー
http://wiki.livedoor.jp/g000001/d/FrontPage
livedoorのアカウントがないといけないのがネックなんですけど…。
落とし穴は、色々収集できると
いいなあと以前から考えているんですが、
なかなか見つけられないというか
あ、
(mapcar #'funcall
	(iter (for i in '(a b))
	      (collect #'(lambda () i))))

'(B B)ですね。
Loopと一緒なのかー
という感じで、ゆるゆると
進んで参りましたが、
来週は、
Ediさんのマクロの巻と
condition systemの続きということで、
マクロは、
;;; 4. Ensuring discretion
から、
コンディションは、
3、2からということにしようかと
思います。
20時開始で、
詳細はまたブログのエントリに書かせて頂こうかと思いますー
折角ですので、ご歓談でもどうぞww

名無しさん 2008-06-14T22:24:26+09:00
owata
?

g000001 2008-06-14T22:24:29+09:00
終わってから増えてきたw
いま、ご歓談タイムに突入という
感じです

quek 2008-06-14T22:25:27+09:00
おとしあなですが、read-line が多値をかえすのではまったことがあります。

g000001 2008-06-14T22:25:38+09:00
a,
あ、そういえば、read-lineだけ多値ですよねー
あれって、
行単位で処理するからってことなんでしょうか?

quek 2008-06-14T22:27:55+09:00
たしか、最後の行が改行がついてるかどうかを知るためだったと思います。

g000001 2008-06-14T22:28:34+09:00
なるほどー
=> line, missing-newline-p
と書いてますね。

quek 2008-06-14T22:31:52+09:00
言われてみれば、そういう需要もあるのかなぁw > 最後の改行

g000001 2008-06-14T22:32:48+09:00
でも、
最後の改行を読まないと
lineの値を返さないんですかね?
ああ、改行か、EOFを境に読み込むんですねー

quek 2008-06-14T22:35:38+09:00
そうだと思います。試そうと思ったら、Emacs ったら勝手に改行を付加しちゃう。

g000001 2008-06-14T22:37:40+09:00
折角多値を返すので
有効活用してみようというエントリは
書いたことがあるんですが、
http://cadr.g.hatena.ne.jp/g000001/20080322/1206160599
これって間違ってるのかもしれないなww
Flavorsでストリームにメッセージを投げると
多値で結果を返してきてたらしいので、
それの真似だったんですが、
逆にreadとかread-charは多値を返さないので
役に立たなかったという…。

quek 2008-06-14T22:41:48+09:00
いえ、g000001 さんの方があってるっぽいです。動かしてみると EOF 検知みたいな動きです。
あれ? ごめんなさい。なんだか分かんなくなってきちゃいましたw

g000001 2008-06-14T22:43:47+09:00
複雑ですよねw
どういう状況下でか、多値じゃないといけない状況があるんでしょうねー
前に自分も考えたのですが、忘れましたw
文字単位と行単位の性質の違いで
問題になるケースというのは
どういうケースだw

quek 2008-06-14T22:52:08+09:00
http://paste.lisp.org/display/62224
with-input-from-string と with-open-file で動きが違う?

g000001 2008-06-14T22:56:03+09:00
あれ、うちは、SBCですけど、違いますねー
違うって書くと誤解を招くかw
nil t t
nil nil t
という結果の違いが
あ、clispは同じ結果になってる
SBCL固有ですかね。

quek 2008-06-14T22:58:50+09:00
ACL は両方とも nil t t ですね。Clisp と同じ。う〜む。

g000001 2008-06-14T22:59:20+09:00
LispWoksもnil t tで結果は同じですねー
SBCLのバグですかねー

quek 2008-06-14T22:59:59+09:00
ですかね。

g000001 2008-06-14T23:02:11+09:00
どっかでSBCLのwith-input-from-stringに
問題があるって読んだような
気もしたようなw
あ、違う問題でしたw

名無しさん 2008-06-14T23:07:28+09:00
問題となっている状況を理解できているか自信が無いのですが、read-lineの戻り値が多値でなければいけない状況は、read-lineを使ってフィルタプログラムを書くときに、最後に改行を付けるべきかどうかを判定できなくなるからじゃないですかね。

g000001 2008-06-14T23:08:03+09:00
なるほど!

quek 2008-06-14T23:10:08+09:00
なるほど。わかんないと無条件に改行つけるしかなですもんね。そういう需要ですね。

g000001 2008-06-14T23:10:49+09:00
いままで全然考えたことなかったwww

名無しさん 2008-06-14T23:11:58+09:00
#問題になってたことを、自分が誤解してなくて良かったですー

g000001 2008-06-14T23:12:50+09:00
勉強になりました(^^

quek 2008-06-14T23:21:32+09:00
SBCL だけ動きが違う件は stream.lisp の 271 行目を
(return-from ansi-stream-read-line-from-frc-buffer (values res (null pos)))))
とすれば nil t t と正しく(?)動きそうです。
明日にでも最新ソースで確認してから SBCL の ML にだしてみます。

g000001 2008-06-14T23:23:09+09:00
おおー、素晴らしいですね。
ちなみに自分のSBCLのバージョンは、1.0.17ですー。

quek 2008-06-14T23:24:51+09:00
同じくです。> バージョン
なんだか妙の方向にいってしまいましたねw

g000001 2008-06-14T23:26:29+09:00
1.0.12では、正常に動きましたw
同じ最新版のSBCLの問題なんですかねー。
いえいえ、おもしろいですー

quek 2008-06-14T23:27:48+09:00
おぉ、1.0.12 はOKですか。

g000001 2008-06-14T23:28:03+09:00
1.0.13はおかしいですー
1.0.14も変、ということで
1.0.13から変なのかもしれませんね、もしかすると

quek 2008-06-14T23:29:55+09:00
すごい! そんなにバージョンがそろっているなんて

g000001 2008-06-14T23:30:15+09:00
/usr/local/sbcl/1.0.xみたいにして
インストールしてたら
いつの間にか溜まってましたww
1.0.11もokで、13,14,15,16,17とダメですねー。
やっぱり13から何か変わったのかもしれませんね。

quek 2008-06-14T23:37:09+09:00
13 のリリースで
optimization: READ-LINE is significantly faster for files containing long lines.
とあるので、これなのかもしれないですね。

g000001 2008-06-14T23:38:18+09:00
なるほどー。
コンピュータを移動するので一旦抜けますー

quek 2008-06-15T00:07:48+09:00
そろそろ寝ます。みなさん、おつかれさまでした。

g000001 2008-06-15T00:08:05+09:00
おつかれさまですー

名無しさん 2008-06-15T00:32:09+09:00
お疲れ様でした。

g000001 2008-06-15T00:32:27+09:00
おつかれさまですー
なぜかMLもつくってみました
http://groups.google.co.jp/group/caddr

名無しさん 2008-06-17T16:36:14+09:00
土曜で全力出し切りすぎですね。

g000001 2008-06-17T17:13:54+09:00
はいw割と燃え尽きてますねw
次のネタどうしようかなと思ってたりはするんですけど
LISPのハマりどころ、にしとこうかなと。
(provide 'ネタ)
CLで遅延リスト -- CLAZY
http://common-lisp.net/project/clazy/

名無しさん 2008-06-19T23:45:55+09:00
ircがもりあがってるけどマシンこわれてるし寝よう…

g000001 2008-06-19T23:46:40+09:00
PCLの話とか
振ろうと思ってたのに残念ですw

名無しさん 2008-06-19T23:47:25+09:00
なんとなく常にタイミングわるいげなので
もうしわけないです。

g000001 2008-06-19T23:47:38+09:00
いえいえ、そんな。
でも、色んな人が集まり始めてて
面白くなってきましたねー

名無しさん 2008-06-19T23:48:40+09:00
こっちは勉強会用なんですかね…

g000001 2008-06-19T23:48:55+09:00
いえ、手を出しすぎて
収拾がつかなくなってるんですねw
全部メインですwww

名無しさん 2008-06-19T23:50:02+09:00
そんな…
チャットは散らない方がらくですけどね
なんのセットアップもしてない状態でircやるのは
何がらくなんすかね

g000001 2008-06-19T23:50:46+09:00
そうですね、
ウェブのクライアントありますよ、そういえば
http://www.mibbit.com/
とか、#lisp_schemeでは
よく使われてるような感じですね。

名無しさん 2008-06-19T23:52:51+09:00
ちょっと使ってみるかな…

g000001 2008-06-19T23:53:23+09:00
ですね、今CLerが沢山いるという感じで面白いというか、
Lingrはウェブから見れるってのと
伝言を書き残せるのが便利ですかねー。
そうだ、そういえば、この部屋が盛り上がる時間帯と、
#lisp_scheme
が盛り上がる時間帯が、丁度ずれてるんですね、
#lisp_schemeは、主に昼間で、
こっちは、深夜という…。
おおお、zickさん今回も予習エントリありがとうございます。
http://blog.bugyo.tk/lyrical/2008/06/4_cl.html
自分も理解できなかった場所が取り上げられているー。
読んでから分かったんですが、
CLtL時代のもので
ANSIではないので、仕様が変更になってるところがあるので、
そこに気をつけないといけないっぽいですねー。
こんばんはー。
本日もよろしくお願いしますー。
20:00-20:25
CLのコーディング上での落し穴
http://www.aiai.ed.ac.uk/~jeff/lisp/cl-pitfalls
CLでコーディングする方向け

20:30-20:55
THE POWER OF LISP MACROS (Edi Weitz氏)
CLマクロ入門者的な方向け
http://www.weitz.de/macros.lisp
4. Ensuring discretion から再開

21:00-21:25
「Common Lisp における例外処理 ~Condition System の活用~」(数理システムさん)
CLのコンディションシステム入門者的な方向け
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/tutorial/condi...
3.2章から再開 
こんな感じで進行する予定ですー。
20:00時になりましたので、開始したいと思いますー
毎週4人ずつ減ってるようなwww
よろしくお願いしますー

leque 2008-06-21T20:01:46+09:00
お願いしますー

g000001 2008-06-21T20:01:58+09:00
最初は、落とし穴からですー。

名無しさん 2008-06-21T20:02:04+09:00
初参加~

g000001 2008-06-21T20:02:12+09:00
お、onjoさんだ!
よろしくお願いします!
分からないことがあるので、
是非よろしくお願いします!
では、最初からいきますー
  * The result of many non-destructive functions such as REMOVE
    and UNION can share structure with an argument; so you can't
    rely on them to make a completely new list.

removeや、unionを初めとして多くの非破壊的関数では、引数に渡されたリスト
の構造は共有されても良いし、変更がなければ、元のリストをそのまま返して
も良い。新しくコンスされたリストが返されることを期待してはいけない。
ってことなんですけど、
自分は英語が苦手なので
まちがってるかもしれませんー。
実験してみたんですけど、
;; 実験
(let ((foo '(1 2 3 4 5)))
  (eq foo (remove 1000 foo)))

;=> tでも良い
;(SBCLではNIL clispではt)

(let ((foo '(1 2 3 4 5)))
  (setf (cdr (remove 1000 foo)) 'foo?)
  foo)

;(1 2 3 4 5)でも、(1 . FOO?)でも良い。

(let* ((foo '(1 2 3 4 5))
       (bar (cdr foo))
       baz)
  (setq baz (remove 3 foo)) ; baz =>  (1 2 4 5)
  (nconc baz (list 'foo?))
  foo)

;(1 2 3 4 5)でも;; 実験
(let ((foo '(1 2 3 4 5)))
  (eq foo (remove 1000 foo)))

;=> tでも良い
;(SBCLではNIL clispではt)

(let ((foo '(1 2 3 4 5)))
  (setf (cdr (remove 1000 foo)) 'foo?)
  foo)

;(1 2 3 4 5)でも、(1 . FOO?)でも良い。

(let* ((foo '(1 2 3 4 5))
       (bar (cdr foo))
       baz)
  (setq baz (remove 3 foo)) ; baz =>  (1 2 4 5)
  (nconc baz (list 'foo?))
  foo)

;(1 2 3 4 5)でも、(1 2 3 4 5 FOO?)でも良い。w、(1 2 3 4 5 FOO?)でも良い。w
なんで、wが
ということでした。
あれ、重複してるw
remove等は破壊的じゃなくても
結果が新しいリストを返すものじゃなければ、注意と、
いうことなんでしょうね。
これは多分問題ないと思うので
次にいこうかと思いますー。
  * APPEND copies all of its arguments _except the last_.
    CONCATENATE copies all of its (sequence) arguments.

APPENDは、最後の引数の引数を以外は、全部コピーする。
CONCATENATEは、引数を全部コピーする。
とのことですが、
(let ((foo '(1 2 3 4)))
  (nconc (append foo foo) 'foo?)
  foo)
;=> (1 2 3 4 . FOO?)

(let ((foo '(1 2 3 4)))
  (nconc (concatenate 'list foo foo) 'foo?)
  foo)(let ((foo '(1 2 3 4)))
  (nconc (append foo foo) 'foo?)
  foo)
;=> (1 2 3 4 . FOO?)

(let ((foo '(1 2 3 4)))
  (nconc (concatenate 'list foo foo) 'foo?)
  foo)
;=> (1 2 3 4)
;=> (1 2 3 4)
tte
みたいになると
いうことで、
appendの最後に注意しよう、と
ちょっと、コピペがうまくいってないなw

名無しさん 2008-06-21T20:08:37+09:00
破壊的な操作は危険っと。リテラルも破壊したら不味いんじゃないかな。

g000001 2008-06-21T20:09:10+09:00
あ、上でそういうふうに
かいちゃってますね(^^;

leque 2008-06-21T20:09:24+09:00
On Lisp にもそういう話がありましたね

g000001 2008-06-21T20:09:39+09:00
それもネタにしようと思ってたんですが、
墓穴を掘りましたwww
ちょっと横道にそれますが、
リストを返り値にするばあい、コンスタントなデータの扱いに気をつける
;==> 意図せず破壊される可能性があるため。
; コンスタントなデータなので、当然といえば、当然

(defun append-const-cons (lst)
  (append lst '(foo?)))

(let ((foo (append-const-cons '(1 2 3 4)))
      (bar (append-const-cons '(a b c d))))
  (nconc bar 'bar?)
  (values foo bar))
;=> (1 2 3 4 foo? . bar?), (1 2 3 4 foo? . bar?)

(defun append-foo (lst)
  (append lst (list 'foo?)))

(let ((foo (append-foo '(1 2 3 4)))
      (bar (append-foo '(a b c d))))
  (nconc bar 'bar?)
  (values foo bar))

;=> (1 2 3 4 foo?), (1 2 3 4 foo? . bar?)

リストを返り値にするばあい、コンスタントなデータの扱いに気をつける
;==> 意図せず破壊される可能性があるため。
; コンスタントなデータなので、当然といえば、当然

(defun append-const-cons (lst)
  (append lst '(foo?)))

(let ((foo (append-const-cons '(1 2 3 4)))
      (bar (append-const-cons '(a b c d))))
  (nconc bar 'bar?)
  (values foo bar))
;=> (1 2 3 4 foo? . bar?), (1 2 3 4 foo? . bar?)

(defun append-foo (lst)
  (append lst (list 'foo?)))

(let ((foo (append-foo '(1 2 3 4)))
      (bar (append-foo '(a b c d))))
  (nconc bar 'bar?)
  (values foo bar))

;=> (1 2 3 4 foo?), (1 2 3 4 foo? . bar?)
こういう感じのを用意してました。
On lispと同じ話ですね。
ということで、
次は
  * SORT is (usually) destructive.

    So, for instance, (SORT (REMOVE ...) ...) may not be safe.
  * SORT is (usually) destructive.

    So, for instance, (SORT (REMOVE ...) ...) may not be safe.

SORTは破壊的
SORTは破壊的
二回ずつ重複する(^^;
CLのsortは破壊的と、
いうことで
これは、そういうものだと
憶えておく程度ですね。
で、次にいきますが
これ良く分からないんですが、
* Destructive functions that you think would modify CDRs might
  modify CARs instead.  (Eg, NREVERSE.)

破壊的関数は、CDRが変更されるものと考えているかもしれないが、
しかし、CARを変更する実装かもしれない。 
ということで、
解釈が難しいのですが、
carが変更されるnreverseがあってもいいんだよ、くらいのものかと
解釈してみましたが
どうなのでしょう?
落とし穴の話題は、MLでも降ってみてるんですが、
こういう投稿をしてみました。
http://groups.google.co.jp/group/caddr/browse_frm/thread/c84fdde359f6a053

leque 2008-06-21T20:15:55+09:00
car を変更する nreverse ってちょっと想像しにくいんですが

名無しさん 2008-06-21T20:16:07+09:00
要素の方を入れ替えるってことですかね

g000001 2008-06-21T20:16:07+09:00
そうなんですよねー。
はい、上では、そういう実装を無理やり作って考えてみましたww

名無しさん 2008-06-21T20:16:53+09:00
ほんとだ。HyperSpec では car でも cdr でも書き換えて良し!と書いてありますね。

leque 2008-06-21T20:17:08+09:00
へー

g000001 2008-06-21T20:17:20+09:00
でもこれ重箱の隅すぎるようなwww
もしかしたら高速な実装が
何かあるのかもしれませんねw

名無しさん 2008-06-21T20:18:06+09:00
これにハマる人って…? cdr を eq してる人ですかw

g000001 2008-06-21T20:18:35+09:00
どうなんでしょうw
思ったのは、
carを書き換える方が、破壊度というか、
まわりへの影響度はひどいだろうなあということでしたw
いや、そうでもないのかなw
色々おもしろいですが、
とりあえず次に行きますー
  * The value of a &REST parameter might not be a newly constructed
    list.  (Remember that the function might be called using APPLY,
    and so an existing list might be available.)  Therefore it is not
    safe to modify the list, and the following is _not_ equivalent to
    the LIST function: (lambda (&rest x) x).  [See CLtL p 78, which is
    not as clear as it might be.]

&RESTによりリストでまとめて受け取る引数リストは新しくコンスされたものである必要はない。
関数内で破壊的変更をした場合、引数を破壊する可能性がある。
http://l:10081/HyperSpec/Body/03_dac.htm
&restで受ける引数リストは
破壊しないようにしよう、というものです。
最近の処理系は、破壊しても大丈夫みたいですけど、
仕様としては、破壊するとまずいということで。

leque 2008-06-21T20:22:27+09:00
Scheme だと R3RS から残余引き数は毎回新たに割り当てられることになってて対照的ですね

g000001 2008-06-21T20:22:44+09:00
これは色々議論があったみたいなんですけど、
策定当時の
処理能力を考えて等だったような
ことがどっかに書いていたような。

名無しさん 2008-06-21T20:24:08+09:00
cons-less な処理をしたい処理系が新規割り当てに反対したのかな~。

g000001 2008-06-21T20:24:21+09:00
なるほどー。
(let ((foo (list 1 2 3 4)))
  (nconc (apply (lambda (&rest x) x) foo) 'foo?)
  foo)
(1 2 3 4)でも良いし、(1 2 3 4 . FOO?)でも良い。
って感じにapplyを使うときに
まずい状況が露呈すると、
いう。

leque 2008-06-21T20:25:07+09:00
CL はそういうふうに practical なイメージが強いですね

g000001 2008-06-21T20:25:18+09:00
そうですね、割とそういう理由で
仕様が決まってるところがありますよね。

leque 2008-06-21T20:25:39+09:00
Scheme は理論的な綺麗さの方を優先していそう

g000001 2008-06-21T20:26:12+09:00
あと、互換性の確保も

名無しさん 2008-06-21T20:26:15+09:00
とりあえず新規割り当てしちゃえば安心って?

g000001 2008-06-21T20:26:51+09:00
そうですねー。

名無しさん 2008-06-21T20:27:00+09:00
プログラマに選択権を与えているんだと考えればカッコいいかも

g000001 2008-06-21T20:27:12+09:00
なるほど(^^
という感じで、
思ったより盛り上がりそうなんですけど、
1枠30分なので、

leque 2008-06-21T20:27:49+09:00
確かに、 Scheme の方が自由度はちょっと落ちる気がしますね

g000001 2008-06-21T20:27:52+09:00
30からマクロの話になりますww
やっぱり、30分枠は止めたほうが
いいんですかねw
このまま、落とし穴で突っ走るってのも

leque 2008-06-21T20:28:34+09:00
気分的にはキリのいいところまでやりたい気も

g000001 2008-06-21T20:28:34+09:00
ありな気もしてきたんですが、
参加の皆さん次第でどうにでもなりますが、
どうでしょうw
細切れなので、
いつでもお題を変えられるといえば変えられるのですが
じゃあ、予定と違いますけど、
おとしあなを
淡々といくということに
してみたいのですが、
どうでしょう?

名無しさん 2008-06-21T20:31:40+09:00
SchemeとCLの争いになる前に次でいいんじゃないですか

g000001 2008-06-21T20:31:59+09:00
そうですかwww
割と争いにはならないとは
思うんですけどw
日本は平和な気も
マクロでも大丈夫ですんで、
マクロもおもしろいので、
じゃ、マクロいっときますか。
==========================
THE POWER OF LISP MACROS
今回は続きですー
4. Ensuring discretion
からなんですけど、
ここから
On lisp等でも解説してる
ここからというより、ここは
変数補足問題ですねー。
ここでは、
REBINDING
っていうマクロになってますけど、
once-onlyという名前でも有名で、
あ、変数補足じゃなくて、
多重評価ですね、すいません。
多重評価防止のマクロですね。
多重評価と変数補足に関しては、

名無しさん 2008-06-21T20:37:52+09:00
あまり本題と関係ないんですが、「補足」じゃなくて「捕捉
」ですよね

g000001 2008-06-21T20:38:16+09:00
あ、捕捉ですね、補足ありがとうございますw
ANSI CL本とか、
On Lispとか、
マクロについての解説で必ず
紹介されてますので、
参照してみてください。
では、次で
5. To macro or not to macro
ですが、
マクロにすべきか、
すべきでない状況を
考えると、いうことになります。
あ、その前に
資料は、
http://www.weitz.de/macros.lisp
です。
(defun one+ (x)
  (1+ x))

(mapcar 'one+ '(1 2 3))
(funcall #'one+ 41)

;;; Look, ma, no function call overhead:

(defmacro one+ (x)
  `(1+ ,x))

(mapcar 'one+ '(1 2 3))
(funcall #'one+ (defun one+ (x)
  (1+ x))

(mapcar 'one+ '(1 2 3))
(funcall #'one+ 41)

;;; Look, ma, no function call overhead:

(defmacro one+ (x)
  `(1+ ,x))

(mapcar 'one+ '(1 2 3))
(funcall #'one+ 41)
41)
ということで
すが、
one+はマクロなので、
高階関数で使えないと、
いう落ちですね。
マクロのone+は、ですね。
;;; - INLINE (see ANSI standard)
;;;   
;;; - Compiler macros (see below)
ということで、インラインにしてみることを
検討してみたりしよう、と。
これも、良く考えましょうと、いうことでした。
で、次ですが、
ちょっとこれは、しんどい
6. A (well, very simple) unit test framework in 21 seconds
テストケースの作成をお題にしているのですが、
実行してみた方いらっしゃいますでしょうか?
コンパイルしつつ、
ソースコードの内容も表示しつつという
なかなか良さげな作りになっています。
ここでzickさんからの質問コーナーなのですが、
(format t "~:[ニル~;テー~]" t)
;=> テー
(format t "~:[ニル~;テー~]" nil)
;=> ニル
というformatの呪文になっています。

名無しさん 2008-06-21T20:47:53+09:00
Cの3項演算子みたいな感じですね

g000001 2008-06-21T20:48:13+09:00
なんとなくそういう感じですねー。
nilが最初にくるってのが、
自分は良く間違えますww

leque 2008-06-21T20:48:35+09:00
ふーむ、高機能

g000001 2008-06-21T20:49:00+09:00
複雑になると、
ちょっとどうかと思いますが
便利といえば便利ですよねw
で、次の質問ですが、
    ,@(when condition
       `((,condition () (format t "Test ~A passed.~%"
                                ',name))))

,@を使ってますが、内側はかならず1要素のリストなので、

    ,(when condition
       `(,condition () (format t "Test ~A passed.~%"
                                ',name)))

では駄目なんでしょうか。
ということですが、
これはイディオムで、
`(,@(member 'テー '(ニル ニル ニル ニル)))
;=> nil

`(,(member 'テー '(ニル ニル ニル ニル)))
;=> (nil)
,@はnilになると、消えてなくなるので、
消しさってしまいたいと、
いうところなんですね。

leque 2008-06-21T20:51:36+09:00
ああ、 when って test が nil だと nil を返すんですね
http://www.lispworks.com/documentation/HyperSpec/Body/m_when_.htm#when

g000001 2008-06-21T20:51:57+09:00
そうなんですね。それで、,@nilになるので、
いなくなると。
Schemeは未定義なんでしたっけ?

leque 2008-06-21T20:52:28+09:00
納得
そうですね、未定義です

g000001 2008-06-21T20:53:32+09:00
CLもCLtLには、
スタイルの問題として、
whenの返り値は
期待されないものとして書いて、
期待する場合には、
ifとか、andでかくとか書いてますが、
趣味の問題なんでしょうね。
つぎは、マクロを書くマクロですが、

名無しさん 2008-06-21T20:54:48+09:00
whenの戻り使うつもりならifで書くような…

g000001 2008-06-21T20:55:27+09:00
そうですねー。
ifとwhenの使い分けとか、また流派があるんですよねww

名無しさん 2008-06-21T20:56:00+09:00
以前のプログラミングスタイルの資料にそんな話がありましたね >when, if
それは真の問題で、 (do-something (when ...)) はイケてないってゆってるんですよね。そんなんめったに見ないよなぁ

g000001 2008-06-21T20:57:57+09:00
色々ありますねー。
ということで、
マクロを書くマクロは

名無しさん 2008-06-21T20:58:12+09:00
使う人はいるんですねー

g000001 2008-06-21T20:58:32+09:00
次回にw

名無しさん 2008-06-21T20:58:40+09:00
www
,@(when ...) は使うか…

g000001 2008-06-21T20:59:45+09:00
自分は、unlessがどうもすんなり読めないので、
and,or派で、when,unlessは使わない派ですねー。
まったく個人の趣味の話ですいませんwww

名無しさん 2008-06-21T21:00:40+09:00
(and cond (progn -- ))?

g000001 2008-06-21T21:00:40+09:00
では、次はコンディションの話なんですが、

名無しさん 2008-06-21T21:00:48+09:00
すんません

g000001 2008-06-21T21:01:01+09:00
そういう場合は、whenですねw
でも、あんまりprognが必要になることも
ないようなあるような
コンディションの前に休憩を
5分程度入れようかと思います。
今日は、突っ込んで頂けるので、
あっという間に時間が経過しますw
21:07分から再開にしようかと思います。
しばしご歓談でもwww
お、気づけば20人だ!
ありがとうございますー
コンディションの話はちょっとグダグダになりそうです(^^;
これオンラインで進めるのちょっと
大変かなとは思っているんですよね。

名無しさん 2008-06-21T21:04:53+09:00
(and cond (prong ...)) はひどいw
ホワイトボード?
だってwhen使わないっていうんですもの

g000001 2008-06-21T21:06:19+09:00
いや、気持ち的には、(and cond (prognは自分はかきかねないですねwww
多分、それよりは、(cond (pred ...))と書くとは思いますけどw
では、コンディションなんですけども、
グダグダになりましたらすいませんー。
前回からの続きってのが
厳しいんですよね。
やっぱり、一回完結がいいのかな。
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/tutorial/condition-system.pdf
がお題です。
3.2からなんですけど、
いままで、
コンディションが階層になってるというところまで
学びました
でつぎは、
コンディションの通知ということで
error
cerror
signal
warn
を順にみていくわけですね
3.2.1 error 関数
です。
これは、
ちょっと前の図の
階層の図を参照すると
上の方にあるので
重めと
でも、重いという表現はどこにもありませんがw
すいませんw
errorを使うことで発生できるんですね。
で、次にcerror
ですが、
これは、説明どおりですが、
リスタートできるという
リスタートにコンティニューをしていして
処理を継続できるという
ことです。
ここも例を試して理解するほかないですねー。
loopが多用されているので、
若干なれてないと
読みにくいコードというか
敷居が高いですよね。
3.2.3 signal関数ですが
これは、前出2つのように
デバッガが起動されないで
ハンドラーが実行されて
nilを返すものということです。
なんか、PDFの内容をそのまま
タイピングしてるだけの気がしてきましたww

名無しさん 2008-06-21T21:17:05+09:00
なるほど、こういう意味のグダグダww
error 関数を使って warning コンディションを使えば警告を通知してるのにデバッガ起動とかできるんですね。いやぁ便利だ。

g000001 2008-06-21T21:17:30+09:00
いや、どうまとめて言ったらいいのかとww
ありがとうございますww
資料をまとめるにしても
なかなか難しくてですね
どうしたもんかとw
次は、warnですが、
これもデバッガは起動されないと、
で、次に3.2.5でデバッガの強制起動なのですが、
強制起動もできるんですね!と
というかんじで、
3.2はシグナルをあげるというわけなのですが、
皆さんは、どんな感じで使い分けしてますでしょうか?
と唐突にふってみますw

名無しさん 2008-06-21T21:21:13+09:00
デバッガ起動 / デバッガ起動(継続可) / ハンドラ呼ぶだけ / 警告メッセージだすだけ、かなぁ。

g000001 2008-06-21T21:21:41+09:00
なるほど、なるほど。

名無しさん 2008-06-21T21:21:43+09:00
使うではなく使われてる気が…。
勉強しよう…

g000001 2008-06-21T21:22:16+09:00
このPDFでは、実際どういう風に
使い分けするか、
見たいなところは、あまり触れてないようなのですが、
そのあたりも勉強できたらいいなと

名無しさん 2008-06-21T21:22:50+09:00
エラーの種類を考えないといけませんよねぇ。これはもうだめだよな~はよくありますが、デバッガでちょこちょこ直して継続するエラーってのは結構珍しいんじゃないかな。

g000001 2008-06-21T21:22:57+09:00
思ってはいるのですが…。
ですねー。

名無しさん 2008-06-21T21:23:40+09:00
止めちゃいけないよなーって時にこの資料読みなおそう…って感じですかねぇ
よくあるのだと、ファイル見つからない場合とか、かわりのやつを指定してくれたら続けてもいい。

g000001 2008-06-21T21:24:21+09:00
応用事例というか、
このPDFno
の応用事例だと、
割とデバッガ、という枠を越えてるというか、
デバッガも自前で定義するといいよ、みたいな
CL節がここでも聞かれるというかw

名無しさん 2008-06-21T21:25:13+09:00
あとは一行ずつ処理するばあいにエラーのデータが入ってた場合に、止めるか無視するかをえらんでもらう、かなぁ。←そして一々指定するのが面倒になり ignore-errors

g000001 2008-06-21T21:25:38+09:00
なるほど、なるほど。
ということで、
3.2は通知だったのですが、
3.3はそれを捕捉する機構の解説です。
handler-bind
handler-case
ignore-errors
等があります。
これもPDFを良く読む他ないのかもしれないのですが
継続の仕方が若干違っていたりし枡野で、
用途に応じて選択すると
いうことになるんですね。
これも、PDFの内容を
一通り処理系に打ち込んだりして
動作を試してみるのが
一番かなと思いますー。
で、次はリスタートですが
restart-bind
restart-case
with-simple-restart
なんですが、
コードの量が多いことから分かるように
やっぱり、実際に試して使ってみないと分からなそうというwww
ここまでの例で
分かるかと思うのですが、
このPDFでは、
デバッガとしてだけでなくて
対話的操作のインターフェイスにも
使うという
例も説明してて
用途に応じてデバッガを自前で
作ってみるという方向性も提示しているような感じです。
ということで、
時間ですが、
最後がgdgdですいません(^^;
コンディションシステムは
ちょっと別に資料を作成しないと
厳しいかなー
まあ、こんなのが、CLにはあるんですよ、みたいな。
あら、奥様、それ使ってみたいわね。
みたいな。
ちょっと次回もうちょっと
方法を考えたいところです
良い方法を考えたい所です。
今日はzickさんの質問の範囲
を全部カバーできませんでした(^^;
という感じで
正味の勉強会は終了ですが、
提案、質問、関係ない質問等はなにかありますでしょうかー
30分は短い、等
もしくは、onjoさんに質問等w
自分が勉強会で今考えているところとしては、
MLで予習的なことをだらだらと展開し、
Lingrで議論に集中すると
盛り上がるのではないかと
思っていたりします。

名無しさん 2008-06-21T21:43:34+09:00
conditionはなんとなく難しい気がします…

g000001 2008-06-21T21:43:46+09:00
そうですね。非常にそう思いますw
これは、予習前提かなと

名無しさん 2008-06-21T21:44:01+09:00
興味はともかく、説明するだけの実例を考えにくいですし…

g000001 2008-06-21T21:44:16+09:00
自分が一番知りたいのは、
実際に身近な範囲で
どう使うか?なんですけど、
その辺はあまり触れられてないかも
しれないなというのが
ちょっと残念というか、
assertとerrorとか、check-typeを
どう使い分けるかみたいな

leque 2008-06-21T21:46:30+09:00
結構複雑ですよね
Java とかでもどういうふうに例外を使い分けるかとか
そういうののレシピブックみたいのが欲しい感じ

名無しさん 2008-06-21T21:47:12+09:00
身近な例か。他の言語のイメージだとデバッガでたらあきらめてしまうのでは。

g000001 2008-06-21T21:47:30+09:00
ですねー > レシピブック
そうですね、そういうおもしろいところもアピールしたいような > あきらめる
大きい規模になると、
ちゃんと設計したりして
いや、
大きい規模になると
重要なのかな。

leque 2008-06-21T21:49:59+09:00
例外から復帰できるっていうのはあんまりないですよね

名無しさん 2008-06-21T21:50:08+09:00
なんとなくswankが実現できるのもhandler-caseがちゃんと機能するからなんだなぁと思ったりしました…
先ほどの *break-on-signals* なんかはtにするとデバッガを起動するようになってますが、これは signal に(when *debug-on-signals* (restart-case ... ) という continue 付きのデバッガ呼び出しが組み込まれてるんですよね。

leque 2008-06-21T21:50:19+09:00
Scheme だと R6RS で raise-continuable っていうのが入ったのかな

名無しさん 2008-06-21T21:51:18+09:00
*break-on-俺関数* を実装してみよう!…うーむ用途が思いつかない。

g000001 2008-06-21T21:51:40+09:00
プリミティブを色々提供してあるのは、
CLの良いところなんだと思いますが、
自由度が高いけど、
迷子になる可能性も高いようなw
そういう意味で、

名無しさん 2008-06-21T21:52:35+09:00
emacs は debug-on-error よく使いますよね。あれに慣れてれば嬉しさが伝わりやすい気がする。

g000001 2008-06-21T21:52:44+09:00
なるほどー。

leque 2008-06-21T21:52:55+09:00
CLOS もそんな感じですね > プリミティブをいろいろ

g000001 2008-06-21T21:53:28+09:00
そうですねー。 CLってなんでもそうなのかなと、思い初めましたww >プリミティブ
なんていうか、
完成品を期待してたら、
組み立てキットだった、みたいなw
とりあえず、今回くらいツッコんでもらえるとすると、
一回につき一つのお題の方が良いような
気がしてきましたー
おとしあなシリーズは、
細切れになってて結構いいかなと
こういうチャット形式に向いてるかなと思いました。

名無しさん 2008-06-21T22:00:01+09:00
経験者ばかりなんですかね?入門者向けの解説もあると嬉しいような。

g000001 2008-06-21T22:00:14+09:00
そうですねー。
今のところ、対象レベルが
はっきりしてなくて、
私がおもしろいと思ったことを
適当にやってしまっているんですが、
入門者向けの、こういう形式の
オンライン勉強会って
需要はどんな感じなんでしょう。
入門者向けということで
入門者向けの回を
開催してみるってのも
良いかもしれませんねー。

名無しさん 2008-06-21T22:02:50+09:00
地方在住の身としては嬉しいなぁ。常々~読書会とかうらやましいと思ってるので。

g000001 2008-06-21T22:03:10+09:00
なるほど、なるほど。
SLIME勉強会 on Lingrとかw
無理があるかw
でも、最初にSLIMEは
良いとは思うんですが、
なんというか、

leque 2008-06-21T22:04:17+09:00
操作している様子が見れると面白いかもですねー > SLIME

g000001 2008-06-21T22:04:33+09:00
環境さえ整えば、かなりCLは快適かなと
思うのと、
初心者の方が結構苦労してるのは、
そのあたりみたいなので。
なるほど、なるほど >操作画面

名無しさん 2008-06-21T22:05:23+09:00
その辺を聞いてみたいけど、初心者の人が居なかったらどうしよう。

leque 2008-06-21T22:05:24+09:00
エディタの支援がないと括弧にも苦しめられますからねえ

g000001 2008-06-21T22:05:39+09:00
ちょっと、お題がお題だけに、
よかったらobserverの方でもご意見いただければとww
windowsで、slimeとかが、避ければ、
そういうの限定も良いかと思います。

名無しさん 2008-06-21T22:07:05+09:00
こんばんわ。

leque 2008-06-21T22:07:11+09:00
Emacs の入力支援や S 式操作コマンドがあると、逆に他の言語の方が面倒になるという

g000001 2008-06-21T22:07:14+09:00
s/避ければ/良ければ/

名無しさん 2008-06-21T22:07:20+09:00
ROM気味で参加です。

g000001 2008-06-21T22:07:22+09:00
よけるが、誤変換w
そうなんですよね、なれると非常に簡単なんですよね > emacs

名無しさん 2008-06-21T22:07:55+09:00
>エディタの支援がないと括弧にも苦しめられますからねえ
最初CLISPにシコシコ打ち込んでた時大変だったです。

g000001 2008-06-21T22:09:02+09:00
ですよねー>repl直打ち
SLIMEでなくても
まだ試してないんですが、
http://phil.nullable.eu/
ABLE
こういうのもあるみたいなので、
とりあえず、なにか便利な
敷居を下げるような
解説があれば、
いいかなと、
なんというか、普段開発してるひと

名無しさん 2008-06-21T22:10:12+09:00
あぁ、覚えがある。rlwrapとかreadlineベースの支援を見つけて喜んでいたなぁ。

g000001 2008-06-21T22:10:16+09:00
と同じくらい便利に開発できる方法というか。

leque 2008-06-21T22:11:20+09:00
開発の様子というと CLiki にこんなのが
http://www.cliki.net/Lisp%20Videos

g000001 2008-06-21T22:11:53+09:00
そうですね、とりあえず、
こういうビデオをみると
ああ、こういう便利そうな感じで
開発できるのかと、
しるきっかけにもなりますよね。

名無しさん 2008-06-21T22:13:03+09:00
DrSchemeみたいなCommonLispの統合環境って無いのかしら?

g000001 2008-06-21T22:13:17+09:00
Windowsだと、
LispWorksとか、
Allegroとか
綺麗なのはありますねー。

quek 2008-06-21T22:14:15+09:00
Eclipse で CL できる Cups というのもあるみたいです。http://journal.mycom.co.jp/articles/2006/11/09/cusp/001.html

名無しさん 2008-06-21T22:14:54+09:00
LispBoxっての初めて使ってみて、結構ビックリしたんですが、やっぱりある程度Emacsの知識が必要ですよね。

g000001 2008-06-21T22:15:06+09:00
ですねー。
CUPSはEclipseの操作になれてるかたは
結構いい感じなのでしょうか?
自分もインストールしてちょっと
試してみたんですが、
操作が分からず挫折しましたw

名無しさん 2008-06-21T22:15:45+09:00
xyzzyが入門には最適な気がしてますが。
確かに最初はxyzzyにお世話になりました。

g000001 2008-06-21T22:16:14+09:00
なるほど、なるほど。
じゃ、最初にxyzzyでlispの回をやって

名無しさん 2008-06-21T22:16:32+09:00
Lispの教科書ってエディタの事って全然書いてないんですよ(笑)。
それで凄く困った記憶があります。

g000001 2008-06-21T22:16:45+09:00
そのあとでslimeってのはどうですかね。
ですねー。開発環境は

名無しさん 2008-06-21T22:16:58+09:00
Cでエディタの話も見たことないので

g000001 2008-06-21T22:16:59+09:00
あまり解説してないですね。

名無しさん 2008-06-21T22:17:06+09:00
そんなもんじゃないでしょうか…

g000001 2008-06-21T22:17:13+09:00
でも、なんというか、

名無しさん 2008-06-21T22:17:22+09:00
あれ、やっぱり「自習向け」ではないんですよね。<プログラミング言語の教科書

g000001 2008-06-21T22:17:22+09:00
Smalltalkで開発環境の

名無しさん 2008-06-21T22:17:31+09:00
学校で使われる前提、と言うか。

g000001 2008-06-21T22:17:40+09:00
話抜きってのもないと思うんですが、

名無しさん 2008-06-21T22:17:41+09:00
その点xyzzyは大きな利点ですよね。CL覚えたらすぐ役に立つし。

g000001 2008-06-21T22:17:45+09:00
CLはその中間というかw

名無しさん 2008-06-21T22:18:15+09:00
xyzzyはいいですよね。
リリカル☆Lispにも対応してますし(笑)。
EmacsLispもそうだけど、すぐに使えないと興味が薄れちゃう

g000001 2008-06-21T22:18:52+09:00
なるほどー。

名無しさん 2008-06-21T22:19:51+09:00
どうもUNIX系の特徴なのかしら?設定がメンド臭いんですよね。<すぐに使えないと興味が薄れちゃう
まあ、Lispは実はUNIX系じゃないでしょうが。
WinでWinAPIが扱えるってところがxyzzyがemacsに対する利点なので、そこはやっておくべきと思いました>リリカル☆Lisp
対応

g000001 2008-06-21T22:21:33+09:00
なるほど、リリカル☆Lisp!

名無しさん 2008-06-21T22:21:47+09:00
'(ここは みなさん S式 で 話さないのね (笑))
(join :name yas :rom t)

g000001 2008-06-21T22:22:52+09:00
こんばんはー。

名無しさん 2008-06-21T22:23:00+09:00
連想リストとはキーと値の対を云々~とかより completing-read に突っ込んで候補から選択させる例のほうが効率がよさそう
(format t "Hello, g000001!")
(japanese "意味なくめんどいからやめません>yas")
(setf (getf (cdr *) :rom) nil)
了解. :-)

g000001 2008-06-21T22:25:35+09:00
いろいろ方法はありそうですねー

名無しさん 2008-06-21T22:25:36+09:00
チャットで*は厳しいっすね

g000001 2008-06-21T22:26:06+09:00
w
とりあえず、やってみる派なんで、
初心者の方向けってのを

名無しさん 2008-06-21T22:26:40+09:00
ブラウザなのでタイプ速度が…。リテラルの破壊という突っ込みはやめてください。

g000001 2008-06-21T22:26:40+09:00
考えてみようかと思いますが、

名無しさん 2008-06-21T22:27:01+09:00
初心者向けって嬉しいですね。

g000001 2008-06-21T22:27:24+09:00
多分、難しいので、
何かひとひねり
というか、
便利な開発環境を
提示するってのが、
現状ベストじゃないかなーと
自分は思ってるんですが、どんな感じでしょう。

名無しさん 2008-06-21T22:28:47+09:00
いまなら、web ajaxを使ったrepl環境を提供すると良いかもね。
こんばんわ、Scheme寄りの初心者です。
こんばんわ。>a-san
でも設定がもっと難しいか。。。 こんばんわa-san
[

g000001 2008-06-21T22:29:30+09:00
あ、あと思うのは、
とりあえず、初心者の方に集合してもらって
質問してもらって

名無しさん 2008-06-21T22:29:46+09:00
「入門Common Lisp」なんて結構上手くやってましたよね。<設定の説明

g000001 2008-06-21T22:29:58+09:00
即答しまくる、というのも良いんじゃないかなと
経験者の方が、即答しまくる。

名無しさん 2008-06-21T22:31:09+09:00
チャットで、ですか?それともWikiの方で?<即答

g000001 2008-06-21T22:31:21+09:00
2chの流れが異様に速いような。
あ、ここを使ってですね。
でも、2chmo

大体同じ質問が多い気がするので、
あまり効果的じゃないかな。

名無しさん 2008-06-21T22:32:56+09:00
同じ質問→FAQ行きだな。

g000001 2008-06-21T22:33:09+09:00
そういえば、FAQもあまり
まとまってないかもしれませんねー。
あんまり聞きたいことってないもんなんですかねー。
自分は結構たくさんあるんですけどw
そんなに需要ないのかな?

名無しさん 2008-06-21T22:35:08+09:00
Schemeのいいところ、CommonLISPのいいところ、って何でしょう?
Scheme寄りかぁ。Gaucheかな。PLTかなぁ。

g000001 2008-06-21T22:35:35+09:00
なるほど、

名無しさん 2008-06-21T22:36:02+09:00
Gaucheを使ってます。

g000001 2008-06-21T22:36:07+09:00
Schemeの良いところは、
自分が考えるに
Gaucheが存在することですねw
いろんな意味で
コミュニティも含めてですが。
一個人の考えですがw
PLT愛用の方には申し訳ないですけど、

名無しさん 2008-06-21T22:37:19+09:00
Scheme <-> Common Lisp ネーム空間が一番違うような気がする。小さい仕様でかい仕様と言うのもあるような気がする。
同じ事書くにしてもCommon Lispより短く済む(笑)?<Schemeの良いところ

g000001 2008-06-21T22:37:48+09:00
日本でGaucheが果たした役割は、非常に大きいと思いますー。

名無しさん 2008-06-21T22:37:55+09:00
私は、文法が簡単と聞いて、Schemeを選びました。

leque 2008-06-21T22:37:57+09:00
Scheme のいいところは、互換性を気にせずに Right Thing を追及してるところかなあ

名無しさん 2008-06-21T22:38:14+09:00
速度的なものもLLと大規模計算向けの違いもあるような気もする。

leque 2008-06-21T22:38:23+09:00
逆に Common Lisp は過去のしがらみを感じなくもないけれど、それだけの資産があるのが強みかも

名無しさん 2008-06-21T22:38:27+09:00
schemeは理学系、CLは工学系な気がする。

g000001 2008-06-21T22:38:58+09:00
自分は、そいういえば、名前空間の趣味も大きいかもしれないですね。
LISP2かLISP1かみたいな

名無しさん 2008-06-21T22:39:24+09:00
質問者にあいのていれてもらわないと
どっか翔んできそうなのですが

言語のコアの部分ではどこが違うのでしょう?
くだらない事パパっと書いて確かめるんだったらSchemeの方が便利でしょうかね?多分。
CLは関数、変数、パッケージ、…でいっぱいあるもんなぁ。でも別物なんだし別の空間でもいいじゃない。
言語のコアとか言いだすのはschemerくらいじゃないでしょうか…
いやいやよく考えてください、 ((((foo)))) こんな呼び出し嬉しくない。
(funcall (funcall (funcall (funcall foo)))) 何回呼んだかすぐわかる。カッコの数を数えるなんて苦痛。
カッコを虹色にしてればうれしくなる人もいるかもw
(((( ;゚Д゚)))) こんな関数呼び出しなら楽しそう
誰かやってた<虹色w

g000001 2008-06-21T22:42:03+09:00
vimですねー。
でも、名前の競合を気にするのが
個人的には負担なので、
LISP2は気楽で好きなところは
ありますね、個人的には。
(list list)とかなにも

名無しさん 2008-06-21T22:42:50+09:00
cond とか let とか構文で ((cond body) (cond body) ...) とかっこが連続する場合があるじゃないですか。なので funcall はそんなに苦痛じゃないなぁ。

g000001 2008-06-21T22:42:51+09:00
考えなくてもいいので

leque 2008-06-21T22:43:05+09:00
http://d.hatena.ne.jp/reinyannyan/20080615/p1 > 虹色

名無しさん 2008-06-21T22:43:44+09:00
エクセル関数だな~~。<虹色
>理系
Yes
>言語のコアとか言いだすのはschemerくらいじゃないでしょうか… 
やっぱり、私向き?
でもポール・グレアムもこだわってましたよね。<言語のコア

g000001 2008-06-21T22:45:30+09:00
そういえば、最大の関心事でしたね>arc

名無しさん 2008-06-21T22:45:55+09:00
まだ残念ながら試して無いんですが。<arc

g000001 2008-06-21T22:46:12+09:00
PGファンなら大好きかもと
思いますが、PGの体臭が
好きならばw

名無しさん 2008-06-21T22:46:35+09:00
体臭(笑)
川合史朗さんの体臭もあるのかしら(笑)。
でもそれ言っちゃうと元々は全部ガイ・スティールの体臭なのか(笑)。

g000001 2008-06-21T22:47:59+09:00
CLは割といろいろまじってるかもしれないですねー。
SchemeもGLSの考えからは、
遠くなっているのかもしれませんね

名無しさん 2008-06-21T22:48:50+09:00
clispみたいに処理系でユダヤ教の匂いがするようなものもあるよね。
javaはどれくらいGLSの考えが入ってるんでしょうかね。

g000001 2008-06-21T22:49:28+09:00
どうなんでしょうねw >java

名無しさん 2008-06-21T22:50:01+09:00
ロウソクのAAですか?宗教的な意味ないってゆってたような。

g000001 2008-06-21T22:50:03+09:00
CLは割とそれまでの

名無しさん 2008-06-21T22:50:21+09:00
何か、「かなり器用な人」って印象ですよね。<GLS

g000001 2008-06-21T22:50:25+09:00
寄せ集め的なところがあるので、
そうそう、まとめるのが
上手いらしいですよね。>GLS

名無しさん 2008-06-21T22:50:55+09:00
Scheme作った、ってのはそうなんですが、そこまでこだわりが無いような・・・・・・。<GLS
新型Fortranみたいなの設計したのもGLSでしたっけ?

leque 2008-06-21T22:51:28+09:00
Fortress でしたっけ

名無しさん 2008-06-21T22:51:41+09:00
そうそう。確かそれです。<Fortress
あれはいみないんですかぁ。<蝋燭
こっち側からすると「何で今さらFortranの改良を?」とか思うんですけど、「頼まれれば何でもやっちゃう」実は全然こだわりが無い人のような印象です。あくまで印象ですけど。<GLS
数値計算のところじゃfortranを使ってるところ想像以上におおそうだからなぁ。

g000001 2008-06-21T22:53:47+09:00
リプレースを狙ってるらしいですよね。
c++に対するjavaを提示したい、みたいなことをインタビューで

名無しさん 2008-06-21T22:54:14+09:00
多いみたいですよ。統計関係の人に「Fortran使ってる」とか自慢(?)された事あります(笑)。

g000001 2008-06-21T22:54:14+09:00
いってました。

名無しさん 2008-06-21T22:54:30+09:00
fortressはサンプルだけ動かしたけど、複数CPUにちゃんと対応しているようで、core2duoの2つのCPUが二つも100%になる時間が多かったです。<サンプル

g000001 2008-06-21T22:54:33+09:00
TOP500で稼働してるプログラムも
fortranでしょうねw

名無しさん 2008-06-21T22:54:56+09:00
fortranを使うことはある意味ステータスみたいな感じですねww
でも、割りに通常の範疇では、Schemeなんかは数値計算向いてそうですけどね。

g000001 2008-06-21T22:55:14+09:00
stalinとか
そういうのに向けた処理系もあるみたいですね

名無しさん 2008-06-21T22:55:30+09:00
大型コンピュータ上だから(笑)。<fortran&ステータス
ちゃんとしたプログラマを目指すなら一度はfortranを触れと複数人にいわれたことがあります。
気にはなるもののなかなか触る機会がないんですよねw
Octaveと言うMatlabコンパチ弄った事ありますが、Schemeの方が計算速かったです。
モンテカルロ法とか強いですよ。 でも、簡易なライブラリ・・・例えばメルセンヌ・ツイスタとか。そう言うのが見つかりづらいのが難点ですね。<Scheme

g000001 2008-06-21T22:58:38+09:00
CL/Schemeの良いところ からここまで話が展開しましたw

名無しさん 2008-06-21T22:58:43+09:00
一方、まあ、Clispで試したのが良くない、と言えば良くないのでしょうが、コンパイルしないとちょっとCommon Lispは使いづらいな、とか思いました。
gaucheはmtを使ったものを持ってたような記憶がある。
あ、Gaucheは持ってるみたいですね。ニコニコ動画で観ました(笑)。<mt

leque 2008-06-21T22:59:53+09:00
CL も数値計算は苦手じゃないみたいですよ。きちんと型指定をして最適化すれば Fortran 並になるとかどうとか

名無しさん 2008-06-21T22:59:56+09:00
何か「ライフ」プログラムしてるときmt出てきましたね。
Scheme人気はすごいなぁ

g000001 2008-06-21T23:00:28+09:00
最適化の勉強会も
いつかしたいですねー。

名無しさん 2008-06-21T23:00:40+09:00
そうだとは思います。ただ、インタプリタで適当に書いて・・・・・とか言う場合、DrSchemeとかホント良く出来てるんですよ。>lequeさん
やはりJITの威力が…
別に本質的にCLが性能が劣る、と言ってるワケじゃなくって・・・・・・あくまで「簡易性」ですね。適当にやってもそこそこ回してくれる、みたいな。<Scheme
clispはコンパイルしないと末尾再帰の最適化をやってくれなかった気がします。
doとかloop使えってことでしょうかww

leque 2008-06-21T23:02:40+09:00
処理系の癖っていうのもありますよね

名無しさん 2008-06-21T23:02:49+09:00
そうですね。<clispはコンパイルしないと末尾再帰最適化無し>zickさん
問答無用で常に最適化が良いとは限りませんよー。なんか負け惜しみっぽいな。

g000001 2008-06-21T23:04:06+09:00
w

名無しさん 2008-06-21T23:04:41+09:00
(gc) ; 意味不明
以前の勉強会の資料ではCLではむやみに再帰使うなってありましたね。

g000001 2008-06-21T23:04:43+09:00
そういえば、
schemeの処理系の速度とか
あんまり考えてなかったなー。
そうですねー。
Schemeと違うところですよね。

名無しさん 2008-06-21T23:05:31+09:00
繰り返すんだからループでいいじゃん、っていう。
あああ、それ読ましてもらいました。<zickさん

leque 2008-06-21T23:06:06+09:00
Scheme は処理系ごとの差があるのでポータブルなコードが書きにくいんですよね

名無しさん 2008-06-21T23:06:07+09:00
でもloopわかんね~~~(笑)。

g000001 2008-06-21T23:06:18+09:00
いや、でもloopなしでも

leque 2008-06-21T23:06:20+09:00
R6RS でこれがどう変わっていくのか…

g000001 2008-06-21T23:06:22+09:00
大丈夫ですよw
そのあたりが、CLです。>loopなし

名無しさん 2008-06-21T23:06:49+09:00
確かに。GaucheとPLTでは結構違いますよね。>lequeさん
loopなしはグレアム的になるかな???
どっちかというと、GaucheってCL寄りな気がします。

leque 2008-06-21T23:07:36+09:00
その点 CL は標準規格があるから、と黒田さんに言われそう(笑)

名無しさん 2008-06-21T23:07:42+09:00
Schemeやってるとdoさえツラくなるんですよ(笑)。
挙句の果てにdotimesとかdolistって何じゃらほい、みたいな(笑)。

g000001 2008-06-21T23:08:30+09:00
dotimesとかdolistはgaucheな感じw

名無しさん 2008-06-21T23:09:35+09:00
何かloopって制限受けてる気がして・・・・・・。久々に「回す」時、色々とエラー喰らいました(笑)。頑張ってるんだけど、どうもスッキリ書けない(笑)。

g000001 2008-06-21T23:10:02+09:00
いや、再帰で書けば良いとおもいますよw > loop

名無しさん 2008-06-21T23:10:04+09:00
じゃあ、全部do (何とか)で纏めちゃえば良いのかな(笑)?カッコ悪いけど(笑)。
dotimes / dolist で?

g000001 2008-06-21T23:10:11+09:00
で、ダメだったら書き直せばよいかとw

名無しさん 2008-06-21T23:10:19+09:00
そうなんだ。。。
schemeはほとんど触ってないから実感があまりない ^^;
いや、わだばLisperで刺激受けて、L-99やってるんですよ。バカみたいですが(笑)。

g000001 2008-06-21T23:11:07+09:00
恐縮ですwwww
L-99の範囲なら、
全部再帰でCLでも大丈夫じゃないでしょうか

名無しさん 2008-06-21T23:11:48+09:00
で、reverseをloopで書いたらどうなる?とか頑張ったんですが、これが難しい(苦笑)。再帰なら一発なのに、とか思って悔しかった(笑)。

g000001 2008-06-21T23:12:15+09:00
なるほどw
それは、LOOP言語をまなぶ必要があるんですねw

名無しさん 2008-06-21T23:12:30+09:00
色々なパターンを試してみたくって・・・・ってのがあったんですよ。
loopと再帰で何がかわるのかさっぱりわかりませんね…
むむむ、do ならループ変数を破壊してエラーってものわかるけど dotimes とか dolist でエラーになるかなぁ。
黒田さんも「イテレータと再帰は違う」とか書いてたじゃないですか?だからちょっとCLの基礎的な事に慣れよう、って事があったんですね。

g000001 2008-06-21T23:14:26+09:00
なるほどー、
あれは、
束縛と、代入の違いでしたでしょうか?

名無しさん 2008-06-21T23:14:56+09:00
いや、読んだけど良く分かんないです(笑)。

g000001 2008-06-21T23:15:03+09:00
schemeのdoは再帰なので、束縛で

名無しさん 2008-06-21T23:15:03+09:00
guileとgoshでdotimesをためしたけどguile1.6にはないんですね。

g000001 2008-06-21T23:15:10+09:00
CLは代入になっちゃうんですね、

名無しさん 2008-06-21T23:15:19+09:00
大体、funcallであそこは何を呼んでるんだろ?って。

g000001 2008-06-21T23:15:18+09:00
なので、結果がかわってくるという。

名無しさん 2008-06-21T23:15:45+09:00
落とし穴でもありましたね >束縛と代入
あああ、なるほど。ちょっと分かってきました。>g000001さん

g000001 2008-06-21T23:16:00+09:00
そうなんですよ!w >束縛と代入

名無しさん 2008-06-21T23:16:38+09:00
あそこで「Schemeでどう書くかは分からないから」とか投げられちゃったから(笑)、再現出来なかったのです。<黒田さん
もっともアレは多分議題はR4RSなんですよね。黒田さんはANSIの話しかしない、ってのが原則なんで。
R4RSって言うと・・・・多分Guileくらいしか知らないですし。

g000001 2008-06-21T23:17:30+09:00
いや、なんというか、

leque 2008-06-21T23:17:32+09:00
ちなみに R2RS までは代入だったそうです > do

g000001 2008-06-21T23:17:33+09:00
あの文章だけでは、
おお、そうなんですかー。>r2rs
知らなかった。

名無しさん 2008-06-21T23:18:54+09:00
同じLisp系でもアティテュード随分と違いますよねえ。<CL&Scheme

g000001 2008-06-21T23:19:08+09:00
どうなんでしょうねw
自分は、楽なんでCLですけどw
あと、SLIMEがあるからCLですかね。

名無しさん 2008-06-21T23:19:59+09:00
いや、僕もCL好きですよ(笑)。
多分分かってないのはEmacsの方なんですよね(笑)。

leque 2008-06-21T23:20:27+09:00
Scheme は修行僧みたいな感じですよね

名無しさん 2008-06-21T23:20:45+09:00
そうですね。>lequeさん

leque 2008-06-21T23:20:56+09:00
意地でも Single Namespace で Lexical scope、それから Continuation

名無しさん 2008-06-21T23:21:18+09:00
あと、やっぱりSchemeのマクロはヘンなんで、そこまでやったらCLに移った方がスムースなんじゃないのかな、とは思います。

leque 2008-06-21T23:21:43+09:00
ときどき CL の自由さがうらやましくなったりはします

g000001 2008-06-21T23:22:04+09:00
いや、どうなんでしょうねw

名無しさん 2008-06-21T23:22:08+09:00
(map (lambda (x) (x)) ...) とすると (4 3 2 1 0) になるって話ですか。やっとおいついた。

g000001 2008-06-21T23:22:27+09:00
あ、そういえば、リンクはってなかったですね、
すいません。

leque 2008-06-21T23:22:44+09:00
Scheme のマクロはむずかしいですねー
あれも色々と美学があるようなので

名無しさん 2008-06-21T23:22:58+09:00
僕の責任ですね。すいません。<ネタふったのにリンク無し
CLtLに「コンピュータで実装しにくい機能は意図的に排除した」って書いてあったのを見て、
Schemeの継続なんかはこれの真逆を行ってるよなと思いました。
CLはやっぱり速度が出てこそなんですかね。
CLならその辺は大抵意識しますからねー。(5 5 5 5 5) と (4 3 2 1 0) になるのは同じ変数をとるか、毎回別のをキャプチャするか選びますもん。

g000001 2008-06-21T23:23:57+09:00
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/three-dogmas-of-scheme
ですねー。

名無しさん 2008-06-21T23:25:35+09:00
CLtLに「コンピュータで実装しにくい機能は意図的に排除した」って書いてあった>「人間が実装しにくい量は意図的に追加した」(笑)?
と言うのは冗談ですが(笑)。

g000001 2008-06-21T23:27:48+09:00
まあ、そのあたりも美学といえば、
美学でしょうねw

名無しさん 2008-06-21T23:28:14+09:00
取りあえず、今宿題があって、Common LispのloopをSchemeのマクロで書くにはどうする?とか悩んでるんですが、かなり難しいですね。

g000001 2008-06-21T23:28:31+09:00
そんな宿題があるんですかw

名無しさん 2008-06-21T23:28:33+09:00
やっぱこの辺「書けた」Common Lispは凄いな、とか思いました。
いや、勝手に設定したんですが(笑)。<宿題

g000001 2008-06-21T23:28:46+09:00
SRFI-42も
ありますよw

名無しさん 2008-06-21T23:29:14+09:00
げ、じゃあ、カンニング可能かしら(笑)?<SRFI-42

g000001 2008-06-21T23:29:35+09:00
いや、やってることというか、
親戚的な雰囲気くらいのもんですけどw

名無しさん 2008-06-21T23:30:16+09:00
マクロとか継続とか何故学ぶのが難しいかと言うと。
まあ、個人的な観点なんですが。
「それで何書けば良いのか思いつかない」事ですね(笑)。

g000001 2008-06-21T23:31:06+09:00
まあ、それは、人生哲学の話ですねw

名無しさん 2008-06-21T23:31:20+09:00
そうですね(笑)。
と言うか、殆どの事って「それ以前で」書けちゃう、って部分もあるでしょ?使い捨ての「何かを計算しよう」的なモノだと。
んで、まあ、ネタ探してた時に「loopマクロはかなりヘンだからこれはどうだ?」みたいな(笑)。そう考えたワケなんですけど・・・・・・。
あと3週間くらいは悩む予定です(笑)。

leque 2008-06-21T23:32:52+09:00
loop とか list comprehension だと comp.lang.scheme でちょっと前にスレッドが
http://groups.google.co.jp/group/comp.lang.scheme/browse_thread/thread/4554e081de59184d

g000001 2008-06-21T23:36:21+09:00
CLでもいくつか論文があるみたいですね、
http://www.iro.umontreal.ca/~latendre/publications/listCompFinal.pdf
とか

名無しさん 2008-06-21T23:41:33+09:00
う~ん、ここでフォローするのは難しそうですね。
あとで実際打ってみて試してみます。
情報ありがとうございます。>lequeさん&g000001さん

g000001 2008-06-21T23:42:32+09:00
いえいえー
CLの方は内容は簡単だったと思います。

名無しさん 2008-06-21T23:43:41+09:00
list comprehension はなぁ。Pythonのやつになれるとやっぱりジェネレータがほしくなる…
この「制御構文」ってのがまだ良く分かってないんですよ。tagbodyとかそのテのヤツが、ですね。

g000001 2008-06-21T23:44:28+09:00
ですねー、定番のマクロが欲しいですねー > list comprehension

名無しさん 2008-06-21T23:44:58+09:00
list comprehensionって「リスト内包表記」でいいんでしょうか?
それとも別のなのかしら?

g000001 2008-06-21T23:45:21+09:00
ですね。それで通ってると
思います。
SRFI-42もそういう感じで
呼ばれてたような

名無しさん 2008-06-21T23:47:50+09:00
http://lowlife.jp/mft/weblog/2006/12/10.html
こんな話もあります >リスト内包表記

g000001 2008-06-21T23:48:20+09:00
そういえば、最近どっかで
話題になってたような

名無しさん 2008-06-21T23:51:15+09:00
なるほど。>zickさん

leque 2008-06-21T23:51:25+09:00
『ソフトウェア作法』で浮動小数点数を浮動数って訳していたのを思い出した > 内包リスト

名無しさん 2008-06-21T23:52:20+09:00
comprehensionって「分かりやすい」とかそんな意味だったと思うんですが、プログラミング用語って難しい・・・・・・(苦笑)。いまだ慣れませんね。はあ。
incomprehensive!

g000001 2008-06-22T00:01:44+09:00
コンピュータ切り替えるので、一旦抜けて入りなおしますー。

名無しさん 2008-06-22T00:02:36+09:00
落ちます。
途中からCL vs Schemeになってしまったかな。やはり一定密度集まるとこうなるのだろうかw
ああ、Schemeで話を引っ張るつもりは全然無かったんですが。マズかったですね。すいません。>onjoさん
ちょっとSchemeネタは控えます。
一旦落ちます。失礼しました。
いえいえ私は構いませんが
Schemeの人が多いみたいだし比較したほうがわかりやすいこともあるでしょう。

g000001 2008-06-22T00:16:22+09:00
いえいえ、CL vs Scheme
は面白いとおもいますよーw
とりあえず、次回どういう感じで構成するか
考えて月曜か火曜あたりに
発表したいと思いますー

名無しさん 2008-06-22T00:28:42+09:00
お疲れ様でした。次回も楽しみにしてます。

g000001 2008-06-22T00:28:58+09:00
ありがとうございますー
〆はなんとなくこういう感じで
なんとなく収束してゆくというw
お疲れ様ですー

名無しさん 2008-06-22T00:48:03+09:00
お疲れ様でした。
今回、体調不良でROMに専念してたのが残念でしたが
とても面白かったです。
次回も楽しみにしています

g000001 2008-06-22T00:48:42+09:00
ありがとうございますー。
次回もお待ちしております1

オーム社さんのページにも掲載されているのを発見!
http://ssl.ohmsha.co.jp/cgi-bin/menu.cgi?ISBN=978-4-274-06721-1
実践 Common Lisp
bk1での掲載時より値下がりしてる!w
定価:4410円(本体4200円+税)

名無しさん 2008-06-24T00:06:59+09:00
へぇ…
  * bug fix: READ-LINE always returned NIL for the last line in files.
    (reported by Yoshinori Tahara)
いつぞやのread-lineの件ですね。
今週末1.0.18リリース予定らしいです。>sbcl

g000001 2008-06-24T00:19:43+09:00
おおお、凄いですねー。

名無しさん 2008-06-25T15:35:24+09:00
こんちはー

g000001 2008-06-25T15:42:45+09:00
こんにちはー。

名無しさん 2008-06-25T21:23:56+09:00
こんばんわ

quek 2008-06-25T22:00:24+09:00
おっ、read-line ♪ ML でレポートしたらすぐに対応してくれました。

名無しさん 2008-06-25T22:06:13+09:00
お!
あれ?
ちなみにquekさん。CUSP使ったことあります?
quekさんおめでとう!?
最近あまりブログを更新してないけど、破壊的操作でのバグ取り対策におわれてしまってる。^^;
マクロは使えば使うほど威力がよく分かってきたこの頃です。

g000001 2008-06-26T22:01:40+09:00
あれ、入れ違いw
破壊的操作は厄介そうですねー。
自分は、殆ど定型パターンでしか使わないので
良くわかっていないのですが(^^;

quek 2008-06-28T01:31:44+09:00
CUSP 使ったことありません > monkichi さん
Eclipse のデバッガが使えたらいいなぁ、と時々妄想したりはするのですが
あざーす(^^; > yas さん
Common Lisp のデバッグツールでいいのないでしょうか? step は使いにくいですよね。いつも Slime のバックトレースとインスペクタ、trace、break とかで地味にデバッグやってます。

g000001 2008-06-28T01:51:32+09:00
こんばんはー。
デバッグについて情報共有できると
良さげですねー。
自分は、traceさえ使わずに行き当たりばったりでしかコードを書いたことがありません(^^;

quek 2008-06-28T01:56:35+09:00
こんばんは。Eclipse や Visual Studio でデバッグするみたにブレイクポイントをしかけて、変数の値を見ながら1行ずつ実行できたら楽なんですけど。
ACL とかだと IDE があるからできたりするのかしら?

g000001 2008-06-28T01:57:35+09:00
LispWoksとかACLとか、色々ありそうですよね
どっちも使ったことがないのですが、
eliとか凄いという話もありますねー。
試してみようとは、前から思ってるんですが、
いつの間にか忘れてます(^^;

quek 2008-06-28T01:59:27+09:00
eli というと ACL の Emacs のインターフェイス(?)でしょうか?

g000001 2008-06-28T01:59:58+09:00
ですね、slimeみたいな感じの
しかし、具体的にslimeよりどう凄いのかは、謎というw

quek 2008-06-28T02:01:33+09:00
ww

g000001 2008-06-28T02:01:46+09:00
お試し版にもついてくるのでちょっと動かしたりはするんですけど、
なかなか把握できないですねw
LWも色々ついてますよね。デバッグはどうなんでしょうー。

quek 2008-06-28T02:08:56+09:00
凄腕の Lisp ハッカーがデバッグしてるところを後から見ていたいですよね。

g000001 2008-06-28T02:09:20+09:00
ですねー。
コーディング自体みてみたいですけどw
他の人のコーディング風景をみてみたいですねー。
そういえば、lisp書いてる風景って
みたことないですねw
こんばんはー。
今日も20時からここで勉強会を
開催させていただき体と思いますー
いただきたいw
本日の時間割:
20:00-
THE POWER OF LISP MACROS (Edi Weitz氏)
CLマクロ入門者的な方向け
http://www.weitz.de/macros.lisp
7. Your HTML tutorから再開

マクロの部終り次第-21:30位まで
Common Lisp Pitfalls
CLでコーディングする方向け
http://www.aiai.ed.ac.uk/~jeff/lisp/cl-pitfalls

  * Many of the functions that treat lists as sets don't guarantee
    the order of items in the result:
から再開 

quek 2008-06-28T19:54:41+09:00
こんばんは。よろしくお願いしまーす

g000001 2008-06-28T19:55:01+09:00
よろしくお願いしますー(^^

名無しさん 2008-06-28T19:56:04+09:00
こんばんわ。今週も体調が悪いですが、よろしくお願いします

g000001 2008-06-28T19:57:29+09:00
体調悪い中ありがとうございます! よろしくお願いします。

名無しさん 2008-06-28T19:59:01+09:00
こんばんわ。

g000001 2008-06-28T19:59:38+09:00
こんばんはー^^

名無しさん 2008-06-28T20:00:14+09:00
多分いつもにまして放置プレイですけど勘弁ねがいます。

g000001 2008-06-28T20:00:31+09:00
いえいえ、ありがとうございます(^^
では、時間ですので開始したいと思いますー
まず、マクロの巻なのですが、
7. Your HTML tutor
からってことにしてましたが、
6のおいしそうなところを説明してなかったような
気がするので、
ちょっとそれの補足からという
感じで
6. A (well, very simple) unit test framework in 21 seconds
を眺めてみて頂きたいのですが、
Execute compiled code at run time and keep the source as well
と書いてるように、ここのrun-testsは
内容はコンパイルしつつ
ソースコードもつけてくれるという
結構いい感じのものなので、
そういうテクニックを盗もうという
ことが先週漏れてたので、
補足です(^^
Starting test DIVISION-BY-ZERO...
(PROGN
 (LET ((A 42) (B 41))
   (INCF B)
   (/ 1 (- A B))))

Test DIVISION-BY-ZERO passed.


Starting test SIMPLE-PLUS-TEST...
(PROGN (= (+ 1 1) 2))

Test SIMPLE-PLUS-TEST passed.
って感じの実行結果ですね。

quek 2008-06-28T20:04:50+09:00
引数の評価をコントロールできるマクロならではですね

g000001 2008-06-28T20:05:08+09:00
ですねー。
短いコードなんですけど、
色々味わい深いものになってるような気がします。
errorもチェックできますし。
6の内容で質問や、疑問があれば、
議論しましょうー
そうだ、補足としては、
rebindingや、with-unique-namesは
ASDFでlw-compatでインストールできます。
weitzさんは、lwの方みたいなので、
ここの説明は基本的にlwを使っています。
ということで、特に疑問点もないようなので、
改めて7から
7. Your HTML tutor
なのですが、
これはマクロを書くマクロという章です
例題としてhtmlを出力するマクロemit-html
をまず書いています。
これを使うと
(emit-html (hr :align "left" :noshade t))
みたいな式が


wo
を出力します。
それで、やはり色々なタグを出力できるように
拡張したいということになるのですが、
define-html-tag
というマクロを書くマクロを定義して
行くと
(define-html-tag hr no-body align noshade size)
これが、
(DEFMACRO HR ((&KEY ALIGN NOSHADE SIZE))
  `(EMIT-HTML (HR ALIGN ,ALIGN NOSHADE ,NOSHADE SIZE ,SIZE) ,@NIL))
みたいに展開されて
hrというマクロが定義されて
任意に拡張できると
言う感じです。

名無しさん 2008-06-28T20:14:07+09:00
なんかデジャブ…

g000001 2008-06-28T20:14:37+09:00
lispでのhtml生成の定番手法なんでしょうかw
これは、最初にemit-htmlが大まかな枠を提供して、
マクロを書くマクロで拡張という感じなので、

名無しさん 2008-06-28T20:16:02+09:00
名前や洗練具合はともかく、大体の作りは他に思い付かないくらいハマってますよね。

g000001 2008-06-28T20:16:18+09:00
ですねー。
自分などは、なかなか枠を大まかに定義して
拡張させる、という手法を考えつけないのですが、
こういう手法を発想できるようになりたいものですw
いろいろ定義して
(p (:align "left")
  "Part one"
  (br ())
  "Part two"
  (hr (:size (+ 40 2) :noshade t))
  "The end")
こういうのが

;;;; (emit-html (p :align "left") "Part one" (emit-html (br)) ...

Part one
Part two


The end

;;;; (emit-html (p :align "left") "Part one" (emit-html (br)) ...

Part one
Part two


The end

; compiling file "/tmp/file9ANc7b.lisp" (written 28 JUN 2008 08:12:35 PM): ; /tmp/file9ANc7b.fasl written ; compilation finished in 0:00:00 ;;;; (define-html-tag br no-body clear) ... ;;;; (define-html-tag p align) ... ;;;; (p (:align "left") "Part one" (br ()) "Part two" (hr ...

Part one
Part two; in: LAMBDA NIL ; (HR (:SIZE (+ 40 2) :NOSHADE T)) ; ; caught STYLE-WARNING: ; undefined function: HR ; (:SIZE (+ 40 2) :NOSHADE T) ; ; caught STYLE-WARNING: ; undefined function: :SIZE ; ; caught STYLE-WARNING: ; These functions are undefined: ; HR :SIZE ; ; compilation unit finished ; caught 3 STYLE-WARNING conditions ;;;; (define-html-tag hr no-body align noshade size) ... STYLE-WARNING: HR is being redefined as a macro when it was previously assumed to be a function. ; compiling file "/tmp/filedmGChA.lisp" (written 28 JUN 2008 08:13:41 PM): ; /tmp/filedmGChA.fasl written ; compilation finished in 0:00:00

Part one
Part two


The end

;;;; (p (:align "left") "Part one" (br ()) "Part two" (hr ...

Part one
Part two


The end

;;;; (p (:align "left") "Part one" (br ()) "Part two" (hr ...

Part one
Part two


The end

すいません、コピペみす(^^;

Part one
Part two


The end

このように展開されます。

名無しさん 2008-06-28T20:19:40+09:00
へー。可能性が広がりますね。

g000001 2008-06-28T20:19:57+09:00
ですねー。
ハマる場所を思いつければ、
かなりLISPらしい展開ができそうですねー。
マクロを書くマクロといえば、
他は多分、On Lispとかにたくさん載ってるんでしょうか。
上でも使ってる変数の多重評価を防止する
rebindingsとかもマクロを書くマクロですね。
別名once-only
once-onlyをマスタすれば、
マクロをマスタしたことになる、みたいなことを
どっかで見たことがあるんですが、
どこだったか(^^;
Peter Norvig氏だったと思うのですが…。
自分も暗記で書けるように練習してみたりしてますが、
時間が経つとすぐ忘れますね>once-only
と言う感じで、
マクロを書くマクロの章は終わりですが、
なにか疑問点や、質問はありますでしょうか?(^^
なさそうなので、
8. For your speed only
に移りたいと思いますー。
この章の内容ですが、
コンパイラマクロで
CLっぽいところな気がします
それで、ここでの例なのですが、
まず、普通に関数を定義して
(defun add-vat (amount &key (tax-rate .19))
  (* (+ 1 tax-rate) amount))
ます。
これは、&keyを指定できるんですが、
&keyがないバージョン
(defun add-vat% (amount tax-rate)
  (format t "Function with simple lambda list called...~%")
  (* (+ 1 tax-rate) amount))
wo
を定義してます。
で、わかりやすいように
コメントがプリントされるようになってます。
で、次に
define-compiler-macroの出番なのですが、
(define-compiler-macro add-vat (amount &key (tax-rate .19))
  `(add-vat% ,amount ,tax-rate))
と言う風になってます。
非常に微妙な例な気がするんですが、
applyに渡されて呼ばれるときに違いが出てくるようです
ということで、
(defun vat-test ()
  (format t "Test 1~%")
  (format t "=> ~A~%"
          (add-vat 30000 :tax-rate .16))
  (format t "~%Test 2~%")
  (let ((more-args (list :tax-rate .16)))
    (format t "=> ~A~%"
            (apply #'add-vat 30000 more-args))))
のようなvat-testが定義されてます。
普通に呼ぶのと、applyに渡すのを
2回実行しているんですが、
これの実行結果は、
Test 1
Function with simple lambda list called...
=> 34800.0

Test 2
=> 34800.0
みたいになります。
この場合、test1の方が&keyではなくて、
2引数のバージョンに取って代わられてます
あ、そうだ、非常に大事なことを
いい忘れてましたが、
タイトルのとおり、define-compiler-macroは
主に最適化に使われることが多いようです。
で、自分も自信がないのですが、
上の2つの違いは、
2引数を確定して与えてるか、
それとも不定かで
分岐してるようで、
applyに渡されてると引数がいくつか分からないので、
デフォルトのバージョンが呼ばれると
いうことなんだと思いますが、
どうなのでしょう?w

quek 2008-06-28T20:35:23+09:00
むずかしい。。。

g000001 2008-06-28T20:35:54+09:00
これ微妙な例ですよねー。
ちょっと、難しいので単純な例をまず
挙げると
cltlの例ですが、
(setf (symbol-function 'plus) #'+)
という+と同じ動きをするplusを定義します。
それで、
引数が0のときは、0を返すということになるので、
引数が0の場合は、関数を呼び出さないで、0に置き換えてしまい、
1の時は、その数がそのままかえるので、
引数をそのまま返します。
というのは、
(define-compiler-macro plus (&whole form &rest args) 
  (case (length args) 
    (0 0) 
    (1 (car args)) 
    (t form)))
こういう風にかけると
argsの長さをみて定数に置き換えるという

quek 2008-06-28T20:39:26+09:00
なるほど。

g000001 2008-06-28T20:39:27+09:00
こういうのが一般的みたいです。

quek 2008-06-28T20:39:46+09:00
最適化してますね。

g000001 2008-06-28T20:40:02+09:00
ですね、関数呼び出しがなくなって良かったとw

名無しさん 2008-06-28T20:40:19+09:00
効率的で面白いですね

g000001 2008-06-28T20:41:05+09:00
そうですねー、これは、結構色々パターンを
考えるのは楽しそうだなと
しかも、後でフックを掛けているようなものなので、
後付けできるので、
CLの最適化手法だなと、いう感じですよねー

quek 2008-06-28T20:42:18+09:00
ああ、本当だ。元の関数は全くそねままなんですね。これはすごい。

名無しさん 2008-06-28T20:42:36+09:00
是非とも覚えたいですね。
発動のタイミングが良くわからなくて怖いという印象なのですが、
今言うことじゃないですよね。

g000001 2008-06-28T20:43:30+09:00
ですねー、上のplusはまだ分かるという感じなのですが、
add-vatは
どういうことなのかw
自分が思うに引数が確定しないから
としか思えないのですが、
どういう流れの解釈になるのか
あ、うえの「ですねー」は「怖い」への反応です(^^
applyに渡された場合は、
実行時解釈だからですかね
コンパイルできないと

quek 2008-06-28T20:46:23+09:00
(funcall #'add-vat 30000 :tax-rate .16) だと発動するんですね。

g000001 2008-06-28T20:46:42+09:00
なるほど
コンパイルできないってのは
変だなw
funcallだと引数は確定する
からですかね?

名無しさん 2008-06-28T20:48:15+09:00
そもそもコンパイルっていつおこるんでしょ?

g000001 2008-06-28T20:49:41+09:00
これ関数に取り込んだりしないと
発動しないですね、
親関数をコンパイルした時、ですかね?(^^;

名無しさん 2008-06-28T20:51:30+09:00
親関数はいつコンパイル?

g000001 2008-06-28T20:51:47+09:00
(defun foo ()
  (add-vat 30000 :tax-rate .16))

(defun bar ()
  (funcall #'add-vat 30000 :tax-rate .16))

(defun baz ()
  (apply #'add-vat (list 30000 :tax-rate .16)))
コンパイル時ですかね(^^; >親関数
foo -> 発動
bar -> 発動
baz -> 発動せず

quek 2008-06-28T20:53:15+09:00
clisp だと (compile 'vat-test) しないと、発動しないです。

g000001 2008-06-28T20:53:23+09:00
このあたりの明確な基準って定義されてるんですかね
処理系依存?

名無しさん 2008-06-28T20:53:37+09:00
(compiled-function-p #'foo) で調べられる。

g000001 2008-06-28T20:54:13+09:00
なるほど、compiled-function-pなら
条件に応じて振り分けられると

名無しさん 2008-06-28T20:54:23+09:00
cmucl,sbclあたりってそのまま即コンパイルじゃなかったかな。

quek 2008-06-28T20:54:26+09:00
SBCL はいつもコンパイルされちゃいますよね。

g000001 2008-06-28T20:54:35+09:00
ですね。基本的に

quek 2008-06-28T20:56:01+09:00
add-vat を使っているところをコンパイルしたときが、発動のタイミングでしょうか。

g000001 2008-06-28T20:56:12+09:00
ですね、
コンパイル時に確定できるときに
add-vat%に置き換えられると、
applyの場合、
何かが確定しないということですかね?

名無しさん 2008-06-28T20:58:45+09:00
listの戻りが何になるのかがわからなさそうです。

g000001 2008-06-28T20:59:15+09:00
ですね。
コンパイル時に確定できないのかも
(defun baz ()
  (apply #'add-vat (list 30000 :tax-rate .16 'foo)))
はコンパイル時エラーになりませんが、
funcallだと、
(defun baz ()
  (funcall #'add-vat 30000 :tax-rate .16 'foo))
引数の数を勘定しているようなので、
エラーです。

名無しさん 2008-06-28T21:00:36+09:00
(apply #'add-vat 30000 :tax-rate .16 (list 'hogehoge)) だとどうっすか?

g000001 2008-06-28T21:01:08+09:00
やっぱり、通りますね。

名無しさん 2008-06-28T21:02:45+09:00
なるほど

g000001 2008-06-28T21:03:36+09:00
という感じで
深追いしてしまったのですがw
色々テクニックはありそうです。
ただこの例は、
深い洞察がないと思いつかなそうな例ですねw
補足として、
http://www.pentaside.org/paper/compilermacro-lemmens/compiler-macros-for-publication.txt
が示されてますが、
これまだ読んでないんですけど、
この手のテクニックが
たくさん提示されてるのかも。
おもしろそうなら
この勉強会でお題にしたいと思います。
マニアック過ぎる気もしますがw
と言う感じで、ちょっとapply問題が
はっきりしてないのですが、
宿題ということで、
9に移ろうかと思います。
9はリーダマクロですね。
9. What you see is not always what you get
これは、"を再定義してるんですが、
"The present-day composer refuses to die.\n\n\t\t\tEdgar Varese"
という文字列が
"The present-day composer refuses to die.

                        Edgar Varese"
と言う風に表示されるようになります。
\nと\tを解釈する内容を
盛り込んでいると
このnew-double-quote-readerは
例として
色々教えてくれるようで
いいお題ですね。
9章はこれだけど
これだけという感じです。
リーダマクロも
色々レシピ集があると
inserted by FC2 system