CommonLisp Scheme Part10at TECH
CommonLisp Scheme Part10 - 暇つぶし2ch899:デフォルトの名無しさん
04/07/28 07:40
Common Lispは、関数、変数、クラス、パッケージ、型、リスタート、メソッド
などを別の名前空間(symbolからobjectへの関連を集めたもの)を使って管理して
いるけど、Schemerから見ると、これらを全て1つの名前空間で管理するのがいいと思う?

900:デフォルトの名無しさん
04/07/28 08:09
全部一緒にしちゃうのはやりすぎだけど、関数と変数くらいは一緒であって欲しい。

901:デフォルトの名無しさん
04/07/28 09:41
>>899
リスタートってこの文脈では聞いたことないんですが何ですか?

>>900
関数と変数だけ一緒で他は別々がいいってことだと
「シンプルに統一された美しいルール」にはならないけどいいの?


902:デフォルトの名無しさん
04/07/28 10:53
現在AI関係ではばをきかせているのはCommonLisp? Scheme? ほかの方言? それとも、まったくほかの言語?

903:デフォルトの名無しさん
04/07/28 12:56
>>901
リスタートはコンディション機構に用意されている機能。
名前と関数群(主処理、説明表示、ユーザとの対話)を動的に結びつけるマクロrestart-bind
が基本機能。よくあるのはrestart-caseマクロで、名前やいくつかの機能が付いた大域ジャンプの
着地点として使う場合。

デバッガに入ったときに、
"変数fooの値としてcons型が期待されていたのに、1が入っていますた。
次の選択肢から選んでね。
1: fooに値を入れ直す(store-value)。
2: 無視して進む(continue)。
3: トップレベルに戻る(abort)。"
なんて、メニューがでるでしょう。これは、そのときアクティブなリスタートを
検索して、それぞれの説明表示関数を呼び出して、動的に生成されたメニューだったり
します。各選択肢が1つのリスタートによって実現されているのね。そんで、
ある選択肢が選ばれたら、そのリスタートの対話用関数が呼ばれると。


名前空間が別に用意されているのは、あと、method-combinationもそうだね。


>>902
日本では、人工知能といえばPrologが有力だと聞きました。ICOTも並列Prolog
を開発していたよね。現在のAI関連のことは知らないけど。

904:デフォルトの名無しさん
04/07/28 13:51
私は >>899 あたりは全部一緒にしちゃいたいな。
なるべく統一したい。

905:デフォルトの名無しさん
04/07/28 15:11
CommonLispの仕様って今後変わったりするの?
いままで仕様変更ってあった?

906:デフォルトの名無しさん
04/07/28 15:44
ANSI X3.226-1994 が最初かつ最新

907:デフォルトの名無しさん
04/07/28 19:24
>>899
symbol から object へ対応させるとき、object の種類による複数の対応はいらないけど、
symbol から object への対応表は複数あってもよいと思う。
簡単に言えば、モジュールとかパッケージシステムのようなもののこと。

908:デフォルトの名無しさん
04/07/29 10:05
(assoc :key alist) の cdr を取るの マンドクサ

909:デフォルトの名無しさん
04/07/29 13:19
plistなら?

910:デフォルトの名無しさん
04/07/29 15:21
assocdr でも作っとけ。

911:デフォルトの名無しさん
04/07/29 15:41
cdassoc

912:デフォルトの名無しさん
04/07/29 18:16
独習LISPとかでないかなーw

913:デフォルトの名無しさん
04/07/29 18:47
nil

914:デフォルトの名無しさん
04/07/29 22:17
#f

915:デフォルトの名無しさん
04/07/29 22:20
*** ERROR: unbound variable: 独習LISP


916:デフォルトの名無しさん
04/07/30 00:46
(define (独習LISP) (独習LISP))

917:デフォルトの名無しさん
04/07/30 01:06
Paul Graham の "ANSI Common Lisp" は「独習 Lisp」みたいな感じじゃないか。

918:デフォルトの名無しさん
04/07/30 01:26
nil

919:デフォルトの名無しさん
04/07/30 02:08
名前空間に付いて興味深い話が聞けたんで避けてたけど、CMUCL Mac OS X 版がマージされますた。
これで世代別 GC の (非 SPARC) RISC CPU への移植 --> (SBCL で) スレッドの実装と行くと嬉しいな。

920:デフォルトの名無しさん
04/07/30 09:22
>>917
amazonの書評では2人とも「入門向きではない」的なことを書いているけど。。。。

921:デフォルトの名無しさん
04/07/30 10:16
>>907
>symbol から object への対応表は複数あってもよいと思う。
>簡単に言えば、モジュールとかパッケージシステムのようなもののこと。
Common Lispのパッケージシステムは、文字列からシンボルへの複数の対応表を
扱う仕組みだけど、Schemeのモジュールはシンボルからオブジェクトへの複数の
対応表を扱う仕組みとして理解していい?

つまり、シンボルのバリューセルがモジュール毎に切り替わるということかな。
Emacsのバッファローカル変数みたいな感じかな。

922:デフォルトの名無しさん
04/07/30 14:24
Schemeにはまだ標準となるモジュールシステムがありませんよね

923:デフォルトの名無しさん
04/07/30 15:21
R6RSにはモジュールが入るとか入らないとかいう噂があったな。SRFIにはなってるの?
あと既存の処理系が独自に実装しているモジュールシステムはあるよね。

924:デフォルトの名無しさん
04/07/30 19:39
(新しいエッセイの翻訳が来ましたage)

925:デフォルトの名無しさん
04/07/30 19:59
>>921
Scheme の symbol 自体には value cell は無いと考えた方がいい。
モジュールというか「環境」は、symbol をキーとし object を値とするハッシュテーブルのようなもの。

926:デフォルトの名無しさん
04/07/30 20:03
変数なんかないんだ。環境だけがある。

927:デフォルトの名無しさん
04/07/30 23:28
Schemeのマクロよく知らないんですけど、再帰的にマクロ定義するにはどうしたらいいんでしょう。
とりあえず macroexpand使ったらできたんですけど、CommonLispならそんなことしなくても
いいんですよね。

928:デフォルトの名無しさん
04/07/31 00:16
Schemeのsymbol自体にvalue cellがないというのはR5RSから導かれること?
Hyper Static Environmentなら確かにvalue cellは完全に不要だけど、
R5RSのあいまいなtop levelの定義ではどうも混乱してしまう。
URLリンク(c2.com)


929:デフォルトの名無しさん
04/07/31 00:51
>>920
確かにあの本だけで入門は難しいかも。最初に読んだ Common Lisp 本が ANSI Common Lisp
だったけど、その時は既に CLHS とか CLtL とか知ってたからなぁ。

930:デフォルトの名無しさん
04/07/31 01:32
>>920 >>929
私はANSI Common Lispで入門しましたが、あれでよかったと思っています
(さすがにあれでCommon Lispを第一言語とするのは無理でしょうけど)。
Lispで何ができるのかを教えてもらったので、
今では必要に応じてHyperSpecを調べれば何とかなるようになりました。
;; と言っても学生なのでリアルの「仕事」をしたことはないし、
;; そもそもまだレベルの低いプログラムしか書いたことがありませんが...

でも、その後に学んだ関数型言語の知識も大きいかも知れません。
やはり純粋な関数型言語は(マルチパラダイムのLispと違って)前面に押し出す特徴があるから、
「ここは関数的に書くべきだな」という感覚とか、イディオムなんかはそっちの方が学びやすかったです。
;; もちろん、マルチパラダイムで柔軟なLispだからこそそういう知識が役立つんですが。


Grahamの新しいエッセイ、考えさせられることが多くてためになります。
URLリンク(www.shiro.dreamhost.com)
> 私が思い付く全ての偉大なプログラマのうち、進んでJavaを書いている人物は一人しかいない。
Goslingのことかぁぁぁ!?

931:デフォルトの名無しさん
04/07/31 02:01
Steele でしょ。Richard P Gabriel も Sun に居たと思ったけど。

932:デフォルトの名無しさん
04/07/31 06:03
XPでSLIMWを使おうとするとどういう方法がありますか?
いろいろやったができないよ。

933:デフォルトの名無しさん
04/07/31 09:14
>>930
エッセイっていうか、OSCON 2004 の基調講演だよね。
言ってることはわからなくもないけど、ちょっと電波飛ばしてねーか? と
思ってしまった俺は、きっとハッカーではないのだろう。

934:デフォルトの名無しさん
04/07/31 11:12
>ちょっと電波飛ばしてねーか?
どの辺?

935:デフォルトの名無しさん
04/07/31 11:59
>>934
すごいハッカーになることが、人生の勝者であるかのように語っているところ。

確かにそういう面もあるかもしれないけど、そのハッカーってのはかなり特殊な
人種なわけで、彼等の特殊性は as is のまま、周囲が彼等に合わせるべき、
理解すべきとしている論調がちょっとね。

> 実際、CobolやJavaが最も人気ある言語だというような統計は誤解のもとでさえ
> ある。 何が最高の道具かを知りたいなら、我々が見なければならないのは、
> ハッカーが自由に選べる際に、つまり、彼ら自身のプロジェクトに、 何を選ぶ
> かということだ。この質問をしてみれば、既にオープンソースのOSが 圧倒的
> なシェアを占めており、一番の言語はたぶんPerlだということに気づくだろう。

こんな馬鹿げたことを書いてるのにもゲンナリした。最高だろうが最低だろうが、
道具は道具に過ぎない。問題は何を作るか、だと思うんだけどねぇ...

936:デフォルトの名無しさん
04/07/31 12:17
一番のOS アセンブラで作った自作のOS
一番の言語 アセンブラで作った自作の言語

937:デフォルトの名無しさん
04/07/31 12:24
「うんうん、そうだ」と自己満足的に共感するか、
「あっそう」で済ませてほっぽりだすかの
二通りしか感想のでてこない文章だな。

938:デフォルトの名無しさん
04/07/31 12:34
>>935
論点そのものを否定してどうするw

ま、言いたいことは分かるけどね。
だいたいハッカーってのは

「手段のためなら目的を選ばないという、どうしようもない奴」

が多いからな。何を作るかなんて眼中に無いのよ。
強いて言えば「手段=道具」を作りてえなとなるわけで。

939:デフォルトの名無しさん
04/07/31 12:37
人気のない言語を使ってるor作ってる奴の自己弁護なだけでは?

940:デフォルトの名無しさん
04/07/31 13:18
手段の目的化、それ即ち趣味なり

941:デフォルトの名無しさん
04/07/31 13:27
>>935
>すごいハッカーになることが、人生の勝者であるかのように語っているところ。
実際Paul Grahamにとってはそうなのだと思う。

URLリンク(www.blog.net)
ここでもオタクのが偉い、みたいなこと言ってるけど、実際アメリカに住んでたら、
そういう価値観持って胸張ってないとやってけなかったのかも。

942:デフォルトの名無しさん
04/07/31 14:30
>>938
そうだよね。それでも喰って行けるくらい飛び抜けていればいいんじゃない?

Lispじゃ喰って行けないっていうけど、実際はshiroさんや黒田さんみたいに仕事にでき
ちゃう人もいる。大学勤めならどんな言語をつかって研究しようが教えようが誰にも文句は
言われない(言わせない)しね。ふふ。

943:デフォルトの名無しさん
04/07/31 16:58
>>942 研究の方はまだ大丈夫だけど、教える方は就職率という錦の御旗で…。

944:デフォルトの名無しさん
04/07/31 16:59
>>942
>誰にも文句は言われない(言わせない)しね。

そしてある日、それは単なる自分の思い過ごしだった事に
気づかされる日が来るんだよね。ふふ。


945:デフォルトの名無しさん
04/07/31 21:38
お、日本でも出版されるみたいだね。

>なお、書籍版"Hackers and Painters"の邦訳はオーム社より刊行予定。

>>944
気付かなかった振りではダメですか?

946:デフォルトの名無しさん
04/07/31 22:21
>>945
まじっすか!
なんだよshiroさん。あなうんすshiroよ。

947:デフォルトの名無しさん
04/07/31 23:51
CMU CL の19aリリースのアナウンスってないのでしょうか?
ディレクトリ下にブツはあるようですが・・・
fURLリンク(ftp.common-lisp.net)


948:デフォルトの名無しさん
04/08/01 22:28
なぜ S 山 euske というお方の日記には,変わった用語が使われているのでしょうか.
Lisp で悟るとあのような日記を自然と書くことができますか?
コンピュータサイエンスの教授にはなぜあのような人が多いのでしょうか?

949:デフォルトの名無しさん
04/08/01 22:41
>>947
7/31 ころアナウンスするよって書いてあった気がするけど、まだみたいね。
バイナリはそれでオケなはず。

950:デフォルトの名無しさん
04/08/02 10:10
AS/400なんて、モノとしては非常に素晴らしい製品なのに、
なぜ悪い道具というレッテルを貼られてしまっているのだろう。

単に、自分たちが慣れ親しんでいるUNIX Like OSと似ていないから
というだけ?


951:デフォルトの名無しさん
04/08/02 10:49
URLリンク(www.cons.org) にアナウンス出てますね。

952:デフォルトの名無しさん
04/08/02 11:07
もうすぐ次スレか。

【普通のやつらの】CommonLisp Scheme Part11【上を逝け】

でどうよ。

953:デフォルトの名無しさん
04/08/02 11:20
変なコメント付けて厨臭くしなくてもいいよ

954:デフォルトの名無しさん
04/08/02 12:29
>>952
かっこ悪すぎ。

955:デフォルトの名無しさん
04/08/02 12:39
>>950
自分で底の底までいじれないからじゃない?
AS/400の中の人になれば別なんだろうけどさ。


956:デフォルトの名無しさん
04/08/02 16:19
MacもPCに比べればクローズドだよな。

やっぱりあれだよ。70年代からコンピュータに
どっぷり浸かってた人ならIBMをよく思うのは無理だろ。
またIBMがLinux担いだところで、その魂胆の方が先に見えて
しまうんだろうな。

957:デフォルトの名無しさん
04/08/02 20:10
【普通のスレの】CommonLisp Scheme Part11【上を逝け】


958:デフォルトの名無しさん
04/08/02 20:39
Lisp Scheme Part11

959:デフォルトの名無しさん
04/08/02 21:36
>>957
かっこ悪すぎ。

960:デフォルトの名無しさん
04/08/02 22:00
11traP emehcS psiL

961:デフォルトの名無しさん
04/08/02 22:52
(thread '((common lisp) (scheme)) :part 11)

962:デフォルトの名無しさん
04/08/02 22:54
>>961
あー、先を越されてしまったが、もっとシンプルに
'(Lisp Scheme Part11)

963:デフォルトの名無しさん
04/08/02 22:55
common-lisp-&-scheme-part-11

964:デフォルトの名無しさん
04/08/02 22:58
Revised^11 Thread on Scheme

965:デフォルトの名無しさん
04/08/02 22:58
'(thread (Lisp . Scheme) (part . 11))

966:デフォルトの名無しさん
04/08/02 23:14
CommonLisp Scheme Part11でいいんじゃないの?スレタイは式じゃなくて文字列じゃん。
;;「キターっ」て、>>947のこと?

967:デフォルトの名無しさん
04/08/02 23:36
次スレ
CommonLisp Scheme Part11
スレリンク(tech板)


968:デフォルトの名無しさん
04/08/03 00:56
clisp の win32 版を,日本語ディレクトリ以下で使う方法を教えてくだされ.
ext:cd とか load ができないのだよ.
OS は WindozeXP.いちおう lisp で書いとけば
環境に依存しないだろうと思ったのに,
windoze で日本語ユーザー名で My DQNments しか使えないので...

969:デフォルトの名無しさん
04/08/03 13:21
>>968 文字コードの設定はちゃんとしている?

970:デフォルトの名無しさん
04/08/04 09:32
Graham氏はJavaに対して対抗意識剥き出しにしてるが、
CommonLispやSchemeの普及を阻害してるのは、本当は
PerlやPythonだと思う。現代版Cobolに対してLispの
優位性をアピールすることにどんだけの意味があるのか。

971:デフォルトの名無しさん
04/08/04 09:47
>>970
それがねぇ。Scheme教えようとしても、「就職に役立つのはJava」なんて
言われちゃう世の中なんですよ。


972:デフォルトの名無しさん
04/08/04 23:35
>>971
最強の言語というのがあって,それは使っている人が多いはずで,
それさえ身に付ければ十分,という伝説のせいでしょうか.

973:デフォルトの名無しさん
04/08/05 00:34
Javaは平均的プログラマー向けにデザインされた言語。
そうゴスたんが言ってたよ。

974:デフォルトの名無しさん
04/08/05 00:58
URLリンク(groups.google.co.jp)

Franz のセミナーのやつだよね。

975:デフォルトの名無しさん
04/08/05 23:28
>>974
すげ…書いてあることがサッパリ理解できんが
何か格好良い事だけはわかった
これが Lisper の考えるレベルかしら…おれには無理かしら


976:デフォルトの名無しさん
04/08/06 22:40
UFFI が clisp に対応していないとは,一体どういうことかね?

977:デフォルトの名無しさん
04/08/07 01:42
>>971
就職の面接で「Scheme使えますよ」と言ってみたら
「Lispみたいなやつだっけ?」ぐらいの反応しか帰ってきませんでした。orz

978:デフォルトの名無しさん
04/08/07 10:22
>>977
その答えが返ってくるだけまだよい方では・・・

979:デフォルトの名無しさん
04/08/07 13:34
>>976 「clispのFFIがUFFIよりもっと抽象化されているから」という答えをclispの
作者がしていました。
が、clisp と UFFI でぐぐるとたしかpascalさんという人が書きかけたclisp用UFFIが
あったとおもう。

980:デフォルトの名無しさん
04/08/07 14:48
>>979
( ・∀・)つ〃∩ヘェーヘェーヘェー.サンクスコ.

981:デフォルトの名無しさん
04/08/08 22:45
埋まる前に落ちそうだね。

(call/cc (lambda (c)
(スレリンク(tech板) c)))

982:デフォルトの名無しさん
04/08/09 00:33
むしろ新スレの方が落ちそう。


983:デフォルトの名無しさん
04/08/09 14:20
埋め質問。
Scheme(Gauche)でCのsizeof相当の処理は可能ですか?
表面的にはchar/short/long/多倍長の違いが見えないので難しそうですが。

984:デフォルトの名無しさん
04/08/09 19:32
何の size のことなのか?
それをどう使おうというのか?

985:デフォルトの名無しさん
04/08/09 23:51
>>983 意味と意図がボクもよく分からない。

とりあえず Gauche での扱いを説明しておくと、文字と小さな整数は即値。
文字は wchar だと思っとけばいい。小さな整数の範囲は、long の範囲より
若干狭い。

昔の scheme では、文字が整数だったけど、今は別。

(char? #\a) => #t (char? 100) => #f (char? 1000000000) => #f
(fixnum? #\a) => #f (fixnum? 100) => #t (fixnum? 1000000000) => #f
(exact? #\a) => #f (exact? 100) => #t (exact? 1000000000) => #t

もしかして、ユニフォームベクタ使いたいのかな?

986:デフォルトの名無しさん
04/08/10 04:23
ユニフォームベクタで解決しました。
URLリンク(www.shiro.dreamhost.com)
もろにこの部分。すんません、次からはちゃんとマニュアル内探します。

987:968
04/08/10 22:55
>>969
文字コードのちゃんとした設定というのが分かりません.
とりあえず思いついたコーディング名を引数にしたりしました.
自宅のマシンではないのでメモがないんです.
lisp がないと私はただの豚なんです教えてくださいぃぃ.m(__)m

988:デフォルトの名無しさん
04/08/10 23:31
>>987
URLリンク(clisp.cons.org)

このへんでしょうか。


989:デフォルトの名無しさん
04/08/11 13:13
Windows cygwin版clisp 2.31での話。
clisp -E ASCII は認識されて*default-file-encoding*, *pathname-encoding*,
などが、デフォルトの#<ENCODING CHARSET:ISO-8859-1 :DOS>から#<ENCODING CHARSET:ASCII :DOS>に
変更されました。

しかし
clisp -E ja_JP.SJIS
は何の効果もないもよう。

トップレベルで
(setq shift-jis (make-encoding :charset 'charset:shift-jis :line-terminator :dos))
(setq *default-file-encoding* shift-jis)
(setq *pathname-encoding* shift-jis)
(setq *terminal-encoding* shift-jis)
として、
(ext:cd "/cygdrive/c/マイ ミュージック")
とすると、
*** - PARSE-NAMESTRING: syntax error in filename "/cygdrive/c/マイ ミュ/" at position 12
とエラー。

(parse-namestring "マイ ミュージック")とすると
*** - PARSE-NAMESTRING: syntax error in filename "マイ ミュージック" at position 0
とエラー。
"マイ ミュージック"はちゃんと9文字として認識されています。

また、(setq *terminal-encoding* shift-jis)をすると、
(format t "~S~%" 'a) => ~S~%
というバグが発現しました。

イヤ~ンな感じ。俺のやり方がタコなだけだといいんだけど。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch