Lisp Scheme Part23 ..
[2ch|▼Menu]
39:37
08/07/20 09:19:08
>>28
ドキュメント化されてないけど、あったんですね。
自分で書いてしまいました。
cartesian-productよりも簡単でした。

(define (cartesian-product-for-each proc los)
(let loop ((r '())
(los los))
(if (null? los)
(proc r)
(for-each (lambda(x)(loop (cons x r) (cdr los))) (car los))
)))


40:デフォルトの名無しさん
08/07/22 18:34:44
ど素人ですまないんだけど
timeを行うとreference to undefined identifier: time
となるんだけど
どうすれば使えますか?

41:デフォルトの名無しさん
08/07/22 18:42:37
ど素人は判ったから、まず自分の境遇について語ってくれないか?

42:デフォルトの名無しさん
08/07/22 18:48:38
version209でLanguage: Standard (R5RS).です。

43:デフォルトの名無しさん
08/07/22 18:49:57
plt schemeです

44:デフォルトの名無しさん
08/07/22 19:25:06
42,43ですけど言語の選択のところのPLTのところを選択すると
使えました
なぜですか?

45:デフォルトの名無しさん
08/07/22 19:58:36
timeは標準(RSR5)にはないからです。

46:デフォルトの名無しさん
08/07/22 20:37:41
version209って古いの使ってるね。Planetで使えないの多いのに。バージョンアップしたほうが幸せになれるとおもうよ。

47:デフォルトの名無しさん
08/07/22 22:05:54
新しくしてもR5RSにtimeはないですけどね、念のため。

48:デフォルトの名無しさん
08/07/23 05:27:08
>>47
せめてR6RSについて書けよw

49:デフォルトの名無しさん
08/07/23 08:36:11
Lispっぽいawkってないのかな?さくっと正規表現をワンライナーで書けるやつ知ってたら教えて。

50:デフォルトの名無しさん
08/07/23 22:54:19
>>49
Gaucheで正規表現書いたことないのか?

51:デフォルトの名無しさん
08/07/24 19:54:19
Lispっぽいシェルを作ればワンライナーいらないっぽいな

52:デフォルトの名無しさん
08/07/24 21:37:25
scshってのがあるから使えば?

53:デフォルトの名無しさん
08/07/24 22:13:55
Eshellでいいじゃん

54:デフォルトの名無しさん
08/07/24 22:23:00
どのScheme処理系でもDSLを作れるはずなのに、おかしいな

55:デフォルトの名無しさん
08/07/26 16:21:43
r6rsの日本語訳を読んでたら、
「bodyの中に挿入される」ってフレーズに遭遇した。
なんかやらしい。(><)

56:デフォルトの名無しさん
08/07/26 16:24:16
つ S式

57:デフォルトの名無しさん
08/07/26 16:44:48
コミュニケーション

58:デフォルトの名無しさん
08/07/26 19:40:27
つ M式

59:デフォルトの名無しさん
08/07/26 19:53:59
つ ネジ式

60:デフォルトの名無しさん
08/07/26 20:10:01
つ 相武紗季の始球式

61:デフォルトの名無しさん
08/07/26 21:19:36
つ 正岡子規

62:デフォルトの名無しさん
08/07/26 22:24:48
つ 両儀式

63:デフォルトの名無しさん
08/07/26 22:50:53
なにこの流れ


64:デフォルトの名無しさん
08/07/26 22:55:36
よくわからんが「やらしいもの」の列挙であろう。

65:デフォルトの名無しさん
08/07/26 23:49:16
>>56 S式もやらしいぞ
>>57 S式コミュニケーションというラノベがあるのだ
>>58 S式がやらしいと言うのならM式も忘れちゃいけねぇ
>>59-62 以降は単なる「しき」繋がり
>>63 ようやく突っ込みが入る
>>64 ちょっとピントのズレた解説
>>65 解説(解答編)

66:デフォルトの名無しさん
08/07/27 02:28:27
全レスしてる奴久々に見た。きもい・・・

67:デフォルトの名無しさん
08/07/27 02:42:56
いろんな芸風の人が来ますね

68:デフォルトの名無しさん
08/07/27 10:30:21
どうでもいいが「ねじ式」(ひらがな)だ

69:デフォルトの名無しさん
08/07/27 11:10:51
どうでもいいことは書かなくていいよ。

70:デフォルトの名無しさん
08/07/27 11:20:36
部外者の愚問ですが、Webプログラミングをする場合、Gaucheは、Ruby、Pythonなんかに比べてどんなメリットがありますか?


71:デフォルトの名無しさん
08/07/27 11:23:52
>>70
別に無いよ。

72:デフォルトの名無しさん
08/07/27 11:57:35
>>70
KahuaはGaucheを使ったフレームワークだけれど、継続を積極的に使っているところがおもしろい。
だけどメリットとして説明するのは難しいな。
ちゃんと理解すれば記述は簡潔になるんだけど、そもそも理解しにくいってのもあるからどっちもどっちって気もする。
まぁ、結局は好みとかもあるから使ってみなきゃ判断出来ねぇよ。

73:デフォルトの名無しさん
08/07/27 12:41:03
ロジックを記述するときに関数型は(比較的に)記述量が少なくて済むことぐらい。
あと、思い入れを満たしてくれるところw

74:デフォルトの名無しさん
08/07/27 12:49:05
納品用はPython, 自分用はGauche ... ああ、夢のない話をしてしまった orz

75:デフォルトの名無しさん
08/07/27 13:22:25
(A)BNF(投資家じゃない方の)からS式にマップは原理上可能ですが
そのS式とコードを食わせると構文木を作ってくれる
ような関数もschemeでは楽に書けるんでしょうか?
これができたらコンパイラのフロントエンド部分を作り放題なんですが

76:デフォルトの名無しさん
08/07/27 13:24:30
それが(いわゆる)コンパイラコンパイラって奴ですな

77:デフォルトの名無しさん
08/07/27 13:30:07
>>75
SLLGEN

78:70
08/07/27 13:39:52
>>71-74
Schemeに元々慣れていれば、って感じですね。
レスありがとうございました。


79:デフォルトの名無しさん
08/07/27 14:07:44
>>76
コンパイラコンパイラとかでぐぐったら凄い数の実例がありました
すごいですね

>>75
こんなライブラリもあるんですか
また読ませていただきます

80:デフォルトの名無しさん
08/07/27 16:35:39
>>75
Gauche の SVN Trunk に入ってる parser.peg モジュールが使えるんでね?

81:デフォルトの名無しさん
08/07/28 00:16:27
>>80
ドキュメントが無いよ…

82:デフォルトの名無しさん
08/07/28 23:45:00
分子構造をリストで表せないでしょうか?
例えば、C2H6Oだとエタノール、ジメチルエーテル。
炭素原子から手が4つ出ているのをリストで表現するには
どうしたらいいのかと...

83:デフォルトの名無しさん
08/07/28 23:54:30
>>82
CMLで書いてssax:xml->sxmlするんだ。

84:デフォルトの名無しさん
08/07/29 00:30:12
>>82
隣接リストでいいんじゃね?
>>83
CMLって使ってる人見たことないんだけど

85:デフォルトの名無しさん
08/07/29 04:38:19
>>84
ありがとうございました。隣接リストで考えてみます。

あわせて行列による分子の表現、行列演算による化学反応の表現が
できたら面白いと思いました。やってみます。

86:デフォルトの名無しさん
08/07/29 05:10:52
>>82
つXymTeX

URLリンク(oku.edu.mie-u.ac.jp)
URLリンク(www.klavis.info)
URLリンク(homepage3.nifty.com)

87:デフォルトの名無しさん
08/07/31 06:00:41
Gaucheでzlibを使うにはどうしたらいいんでしょう?
URLリンク(practical-scheme.net)
にある
Gauche-zlib-0.1.2.tgz
はリンク切れで入手できません
うーん

88:デフォルトの名無しさん
08/07/31 06:32:07
(^A^)ガウチョ

89:デフォルトの名無しさん
08/07/31 06:42:59
srfiにzipうんたらって関数なかったっけ?
それで

90:デフォルトの名無しさん
08/07/31 07:39:52
>>85
ずっと昔は化合物を扱うLispで書かれたシステムもあったらしい。
今だとPythonの方が主流?かな。
でもがんばれ。

>>86
それLaTeXだし方向性が違うと思うぞ

91:デフォルトの名無しさん
08/07/31 11:49:34
>>90
TeXだからASCII文字シリアライズwith構造の参考になるでしょ。
しかも変換できるようにしておけば、
XymTeXで分子構造図画像も作れるし。

92:デフォルトの名無しさん
08/07/31 15:34:35
schemeについての質問です。
二分木を作成、描写せよという問題で作成まではできたのですが、描写とはどうすればいいのでしょう?
初心者な質問ですいません。

93:デフォルトの名無しさん
08/07/31 18:36:34
設問した奴に聞けよw

94:デフォルトの名無しさん
08/07/31 22:05:44
>>87
あぷろだにUpっといてやったぞ。
URLリンク(www.toel.sytes.net)

95:デフォルトの名無しさん
08/07/31 22:12:03
>>87
Windows 版でよければ Gauchebox に入ってるぞ

96:デフォルトの名無しさん
08/08/02 03:52:27
>>94
>>95
ありがとうございます
win, linux両方で使用するのでどちらも利用します。

97:デフォルトの名無しさん
08/08/03 00:48:03
URLリンク(wiki.fdiary.net) ですが、一応情報を集めるサイトにしてあります。
どんどんページを追加してやってください。
comp.lang.lisp,comp.lang.schemeまで含めようとしたけど、matzlispのhikiの
プラグインがatomに対応していないためにやめました。これらはmiscに
入れておきました。

98:デフォルトの名無しさん
08/08/03 12:15:51
gauche-firebird がリンク切れかサイト死亡で見れないんですが、
firebird 用のDBDどこかにありませんか?


99:デフォルトの名無しさん
08/08/03 15:02:46
40過ぎのわしでも子供の頃(高校生くらい)に Lisp に憧れたんだから、
今の子ならそんなの普通だと思ってたが・・・

100:デフォルトの名無しさん
08/08/03 15:07:34
おっちゃん誤爆してるで

101:デフォルトの名無しさん
08/08/03 15:39:56
まあ少年がLisp触ってるぐらいでオヤジども喜びすぎと
雑誌の記事がLispかBasicだけという時代に若者だった俺は思う

102:デフォルトの名無しさん
08/08/03 18:43:30
90過ぎのワシも高校のころにLispに憧れたぞ。

103:デフォルトの名無しさん
08/08/03 19:39:04
>>102
ジジイ、いくつのとき高校行ったんだよ?

104:デフォルトの名無しさん
08/08/03 21:04:39
>>102
McCarthyより年上じゃねえかw


105:デフォルトの名無しさん
08/08/03 22:54:11
>>103
ここまでの年齢だと逆に、
中学までしか出てなくて、定年してから学業やりたくて高校行くみたいなエピソードが
想像しやすいかもしれんw

106:デフォルトの名無しさん
08/08/03 23:07:17
ラムダ計算論ができたころに高校生だったんですね、わかります。

107:デフォルトの名無しさん
08/08/04 07:18:31
日本では戦前にLispが発見されたという噂を聞いて駆けつけました。

108:デフォルトの名無しさん
08/08/04 19:08:03
lispの起源は韓国ニダ

109:デフォルトの名無しさん
08/08/05 02:13:02
日本で最初のLisperって誰?
HLISPの後藤英一先生?

110:デフォルトの名無しさん
08/08/05 02:25:12
そのあたりだろうな。あと故・中西正和先生とか。

111:デフォルトの名無しさん
08/08/05 09:39:55
竹内先生は意外と遅い組?

112:デフォルトの名無しさん
08/08/05 11:59:42
和田先生も忘れちゃいけないよね。

113:デフォルトの名無しさん
08/08/05 12:45:20
あと、その世代だと井田先生かな。

114:デフォルトの名無しさん
08/08/05 13:33:13
思えばその世代のLisperはどれも役立たずだったな

115:デフォルトの名無しさん
08/08/05 15:47:43
つまんない煽り乙

116:デフォルトの名無しさん
08/08/05 16:05:25
今の世代のLisperはどれも>>114よりは役に立ってるかな。

117:デフォルトの名無しさん
08/08/06 05:47:20
注目ワード“高階プログラミング”って何だ?
URLリンク(ascii.jp)

118:デフォルトの名無しさん
08/08/06 06:26:53
萩谷先生の関数プログラミングっていう本は
高卒レベル数学力(偏差値60切る位)でプログラミング初心者では読めませんか?
Yコンビネータなどの高度な話題にもふれてますか?

119:デフォルトの名無しさん
08/08/06 07:45:12
>>118
良い本です。だいじょうぶですよ。

途中、フィボナッチ数列の行列表現、固有値
とかでてきますけど本筋とは関係ないので
とりあえず無視してOKです。
Yコンビネーターはとりあげてないですね。

序文で萩谷先生は高校生に読んでもらいたい
と書いてます。



120:デフォルトの名無しさん
08/08/06 10:07:30
Yコンビネーターについて触れてる、高校生にも読める本って
そういえば無いような気がする。あったっけ?

121:デフォルトの名無しさん
08/08/06 11:55:39
プログラミング初心者が読んで何かを作れるようになりたいんだったら向いてないかも。

122:デフォルトの名無しさん
08/08/06 11:56:13
>>120
Little Schemer

123:デフォルトの名無しさん
08/08/06 12:00:27
あれYコンビネータまで行くのか

124:デフォルトの名無しさん
08/08/06 13:26:10
Yコンビネータって本を読むほどの物でもない気がするけど
λ記法でわかりにくければS式で書き下せばいい

125:デフォルトの名無しさん
08/08/06 14:15:05
なんでYコンビネータだけが特別扱いされてるんだろ?


126:デフォルトの名無しさん
08/08/06 14:17:50
再帰系のコンビネータの中でってこと?
そりゃ一番シンプルだし。

127:デフォルトの名無しさん
08/08/06 14:36:46
>>126
つか、やたら Y が目につくようになったのはいつ頃から?


128:デフォルトの名無しさん
08/08/06 14:39:56
今朝くらいから

129:デフォルトの名無しさん
08/08/06 17:45:17
>>128
それはテトラポッドやろ。

130:デフォルトの名無しさん
08/08/06 18:32:43
>>119
ありがとうございます。
> 途中、フィボナッチ数列の行列表現、固有値
程度なら理解できると思います。


131:lischemep ◆/uyHCgG7qA
08/08/10 23:28:50
都内で初心者向け勉強会を模索しようとしております。

以下想定です。
こうしたらいいとかありましたらどんどん提示して頂けたら幸いです。

・大学生のLisper/Schemerを先生として呼ぶ
・上記のため会費をとります。
・場所は以下を想定。(1h:1400〜2300円くらい+各自1ドリンク)
URLリンク(www.ginza-renoir.co.jp)
・スキルがバラバラになるため基本的に自習を想定
(同スキルの人と課題本を決めてチーム学習する等は自由です)
・参加条件としてキーボードがサクサク打てる程度。処理系を入れるノートパソコン等。
・開発環境構築から指導の予定


参加者希望予定者がいらっしゃいましたら、
lischemep at gmail.com
まで下記を記入して送ってください。

使用希望の
・希望日(参加頻度:必ず参加、月1希望、仕事のため不定等)
・希望参加費
・OSとバージョン
・エディタ
・処理系
(↑処理系は希望なければおまかせと書いてください)

また先生やってみたいという方は、下記を記入して送ってください。
・希望日(開催頻度も)
・希望報酬額(時給換算、月XX円等)
・対応できるOS・処理系・エディタ

132:デフォルトの名無しさん
08/08/11 00:27:37
先生のレベルを決めないで、
希望参加費を申告制にすると、
収集つかないんじゃないかな。

133:lischemep ◆/uyHCgG7qA
08/08/11 00:47:39
>>132

なるほど。
勇み足過ぎたかもしれません。

まず、参加希望者から
・自分のレベル
・どんな課題がしたいか

を送ってもらうように訂正します。
lischemep at gmail.com

134:デフォルトの名無しさん
08/08/11 07:41:42
最初の課題は開発環境構築じゃなくて処理系を選ぶこと。

135:デフォルトの名無しさん
08/08/11 08:09:45
>>131
お、面白そうだな。
確認だけど◆/uyHCgG7qAは先生じゃなくまとめ役ってこと?
「先生」の技量に全てが依存している気がする。
大学生でLisperを名乗れる奴ってどのくらいいるんだろう。

136:デフォルトの名無しさん
08/08/11 09:07:42
131です
135さん

私は先生はとても無理です。

先生は学生でなくてもいいのですが
そうすると高額なセミナーになってしまう気がして。

社会人のSchemer/Lisperなら薄謝もらってもおそらく割に合わないでしょうし。


137:デフォルトの名無しさん
08/08/11 09:55:28
>>136
スキモノならボランティアでやってくれるんじゃないの?
もっと安くあげる方法はあると思う。
URLリンク(www.javaopen.org)


138:デフォルトの名無しさん
08/08/11 09:58:28
自習じゃ駄目な理由は?

139:デフォルトの名無しさん
08/08/11 10:11:35
ここで聞けば良いのでは?
URLリンク(www.lingr.com)


140:デフォルトの名無しさん
08/08/11 12:21:10
Lisp/Schemeは人気が低いわりに実装がやたら複雑だから人手が足りない。
移植したりライブラリを増やしたりできない。
勉強会やるとしたら言語仕様だけでなく実装についてやるべきだけど、
複雑な実装が乱立しているから難しい。

もちろん単純なScheme処理系もあるが、それは人気がなさすぎる。
たとえ言語が人気でも処理系が不人気なら意味がない。
複雑さの許容度は人気に比例するのだと思う。

複雑なものもいずれ必要にはなる。
でも今は必要ないんだよ。今一番必要なのは、人気と釣り合いのとれた単純な実装。
そのためならマクロを犠牲にしてもいい。
それに気づいた人はS式から離れていく。嫌いになった訳ではないがな。

141:デフォルトの名無しさん
08/08/11 13:11:44
>>140
で?っていう

142:デフォルトの名無しさん
08/08/11 16:49:10
>>140
自分の低能ぶりを直視できない人間だということを婉曲に表現した自己紹介ですね

143:デフォルトの名無しさん
08/08/11 18:28:33
>>140
言い訳をいろいろ考える才能はありそうですねw

144:デフォルトの名無しさん
08/08/11 21:36:40
地元の大学でSchemeの授業があれば聴講したいの
だけど、残念ながら無し。
東京近辺に住んでいたら東工大の講義を聴講したい。


145:デフォルトの名無しさん
08/08/11 22:01:37
>>144
むかしなら、大学の授業の潜り込みは簡単だったんだけどね。
今は、わからない。
東工大もセキュリティは厳しくなってるからね。

146:デフォルトの名無しさん
08/08/11 22:53:18
>>140
釣られるけど、マクロの無いLispなんてLispじゃないだろ
そもそもCommonLispもSchemeもちゃんと仕様のある「まとも」な言語なんだけど。

147:デフォルトの名無しさん
08/08/11 22:58:56
Lisp 1.5 は Lisp じゃないなw

148:デフォルトの名無しさん
08/08/11 23:46:28
処理系のソースコードを気軽にいじれるならマクロなしでもいけるかも
Lisp1.5はそうだったかも

149:デフォルトの名無しさん
08/08/12 00:57:31
>>145
国立大は社会人受入れに寛容
なようなので正規に聴講生の
手続きをとって試験も受けて
単位もとりたいです。
でも、地方の大学でSchemeを
使った講義があるところは
限られてるみたいです。


150:デフォルトの名無しさん
08/08/12 01:02:10
マッカーシー博士の最初の論文
にあったLispで記述されたLisp
で仕組みがよくわかりましたよ。
故中西先生もこの論文だったか
ユーザーマニュアルだけを手がかりに
最初のLisp処理系を書いたと読んだけど。

151:デフォルトの名無しさん
08/08/12 01:05:10
マクロは無いくせにw、コンパイラは含んでいるというのは凄いと思う>LISP 1.5

152:デフォルトの名無しさん
08/08/12 01:10:57
他言語処理系に対するアドバンテージは
マクロだけだもんね

153:デフォルトの名無しさん
08/08/12 01:12:19
>>149
どうしてもね。その傾向はあるかもね。人工知能の分野もlispよりC++のほうが勢いがあったり
するらしいから、教える人が少なくなるんだろうね。筑波、東工ふくめて旧帝大あたりだったら
一つくらい授業がありそうだけど。それ以外の地方は確かに期待できないかもしれないね。

プログラムの筋はschemeをやる方が断然よくなるんだけどな。これは抽象化がうまくなるから
だろうと思う。高階関数を扱える言語をしっかりやってるかやってないかでセンスはずいぶん変
わるね。

154:デフォルトの名無しさん
08/08/12 01:12:58
>>152
んなこたあないw

155:デフォルトの名無しさん
08/08/12 01:33:56
Lispのアドヴァンテージはいくつか
考えられますが、一番はS式のもつ
プログラムとデータの同一性だと
思います。強力はマクロもその
特性のひとつでは?


156:lischemep ◆/uyHCgG7qA
08/08/12 01:37:13
>>137
いいリンク紹介ありがとうございます。
やっぱり安く上げる方法考えた方がいいんですかね。
私自身はお金は無頓着なので。場所ももう少し探してみます。
課題本はあったほうがいいんでしょうか。
「この本やりたい」とかありましたら教えてください。


>>138
>>139
自習だとつまらないことでつまづいて長い時間考えることがあるからです。
ネット上で聞くということも出来ますが、
その場合状況説明のやりとりに時間がかかります。
私はもう結構な年なので、お金を払ってでも学習速度を上げたいと思ってます。

157:デフォルトの名無しさん
08/08/12 01:51:10
(意地悪い言い方で申し訳ないけど)自分の家庭教師が欲しい、ってことなのかな?
もしそうなら「自分と同じレベル募集」とか、はっきり言っちゃったほうが良いかも。w

俺も先生は大学生とか限らないほうが良いと思う。

158:デフォルトの名無しさん
08/08/12 01:55:18
> その場合状況説明のやりとりに時間がかかります。

これを要領よくやる訓練も必要かと

159:デフォルトの名無しさん
08/08/12 02:12:45
>>151
マクロ機能は自分で好みのを書けってことだったんじゃないかな?
当時のマクロの実装は簡単だったしね。



160:デフォルトの名無しさん
08/08/12 02:42:42
>>149
私立だって簡単に聴講生になれるぞ。
金がかかるだけで。

161:デフォルトの名無しさん
08/08/12 02:47:46
>>159
最初の頃はFSUBR + EVALで一々手で書いた。
パターンが出来上がったのでdefmacroになった。

>>156
> 自習だとつまらないことでつまづいて長い時間考えることがあるからです。

本当はそれが大切なんだけどね。
より深く理解するし、それが出来る人が継続もできる。
壁に負ける人はいつも負け続ける。


162:デフォルトの名無しさん
08/08/12 02:56:09
それが大切だとしても若いうちだけだろ。
年取ってるなら金払ってでも学習速度を上げたいって言うのはわかる。

163:デフォルトの名無しさん
08/08/12 02:59:04
生涯学習だな。カルチャー教室でやらないかな?w

164:lischemep ◆/uyHCgG7qA
08/08/12 06:13:10
>>157
家庭教師。つまるところそうなのかもしれません。
Lisp/Schemeにとっつきにくさがあると思ってて
同じ状況の人がいるだろうと思ってたのですがあまりいないみたいですし。。。

状況としてはThe Little Schemerの半ばで頓挫している状況です。
他にもプログラミングGaucheやANSI Common Lispなどをつまみ食いしてますが
途中で分からなくなってます。

色々当たっているうちに少しずつ分かったりしますが
時間がかかりすぎている気がしています。
このままだと数年かけて一冊片付くペースになってしまいそうです。


>>162
三十代になるとさすがに焦ります。

165:デフォルトの名無しさん
08/08/12 08:01:59
> 三十代になるとさすがに焦ります。
俺は164がなんでLisp/Schemeをやってみようと思ったのかが気になるな。
知的興味が理由なら年齢で焦ることはないだろうし。
近い将来に仕事で使う必要があるのなら焦る気持ちもわかる。
学習する動機によっておすすめの方法も違ってくると思うんだが。どう?

166:デフォルトの名無しさん
08/08/12 09:03:44
書いてあるじゃん
挫折しそうだから
くじけそうだから
もう後がなさそうだから

167:デフォルトの名無しさん
08/08/12 09:45:28
俺なんて、40近くになってScheme始めたぞ。
独学でSICPをしこしこ解いてるよ。

同時に数学の勉強も始めたんだが、こっちがきつい。
数学基礎論のやさしい教科書はないかな。

168:デフォルトの名無しさん
08/08/12 10:56:25
目的がいまいちはっきりしない質問者はやがて身の上話を始める法則

>>167
> 同時に数学の勉強も始めたんだが、こっちがきつい。
> 数学基礎論のやさしい教科書はないかな。

数学基礎論の質問スレッド その4
スレリンク(math板)

おおかた数理論理学か集合論の教科書を薦められると思うが
計算機科学との関連で何かもくろみがあるならこっちへ
URLリンク(science6.2ch.net)

169:デフォルトの名無しさん
08/08/12 12:54:29
「数学」が何を指してるか知らんが、
基礎論は数学を勉強する支えにはならないぞ普通は。

集合論とか論理とかを学ぶなら基礎論には手を出していない
普通の教科書のほうが良い。

170:デフォルトの名無しさん
08/08/12 13:28:48
>>168
ありがとうございます。覗いてみます。

>>169
そうなんですか?
集合論とか論理学から、計算機科学方面へ進めていきたいと思っていたのですが。
私の「基礎論」という言葉の使い方がおかしいのでしょうか?
集合論や論理学そのものを学んだほうが良いということでしょうか?

171:デフォルトの名無しさん
08/08/12 18:36:29
>>146
仕様があればまともな言語なのぉ〜?


172:デフォルトの名無しさん
08/08/12 18:40:24
「まともな言語」の集合を定義してください

173:デフォルトの名無しさん
08/08/12 19:28:14
>>170
今、数学で「基礎論」といったら、逆数学とかあのへんのことを指すんじゃないかな。
少なくとも専門分野を「基礎論」と自己規定してる数学者は、だいたいそのあたりの
分野を研究してることが多い。(Harvey Friedman, Stephen Simpson, 田中一之氏, etc)
「基礎論」という分野が勃興してきた19世紀末と現在とでは、言葉のニュアンス
がかなり違ってきているので、注意が必要かと。

167氏はあるいはもっとルーズに、「基礎論」という言葉を「数理論理学」とほぼ同義で
使ってるのかもしれないが。

まあいずれにしろ、数理論理学は(少なくとも初歩の段階では)メインストリームの数学とは
直接関係しないことが多いね。幾何的モデル理論みたいに、数論への応用があったりする
分野もあることはあるけど、そういうのは非常に専門的な話題になってしまう。
(169氏が言ってる「数学を勉強する支えにはならない」というのはおそらくそういうニュアンスなのだろう。)

でも理論計算機科学に興味があるのなら、数理論理学は必須だから、(167氏言うところの)
「基礎論のやさしい教科書」を勉強するのは意味のあることだと思うよ。

とりあえずはこのあたりをご参考に。
URLリンク(www.kurims.kyoto-u.ac.jp)

174:デフォルトの名無しさん
08/08/12 20:05:34
計算機工学者のための計算機数学のとっかかりということなら、
島内さんの「数学の基礎」はどうかと思ったが、
URLリンク(www.amazon.co.jp)数学の基礎-島内-剛一/dp/4535601062
絶版で中古市場では高い!ヤフオクでも元より値が上がってる!

175:デフォルトの名無しさん
08/08/12 20:22:59
竹内外史とかのは基礎論だよな?

と板違いか。

176:lischemep ◆/uyHCgG7qA
08/08/13 06:23:48
>>165
はじめのきっかけは、「普通のやつらの上を行け」を学生時代に読んでです。

知的興味もありますが、将来的には仕事で使いたいと思っています。
また、なるべくLisp/Schemeを広めていきたいと思っています。
それで初学者向けの勉強会が出来ないかと思いました。

目標としては、AllegroServeを使えるようになること、
On Lispを理解できるようになることです。

177:デフォルトの名無しさん
08/08/13 07:40:49
>>176
まだ、shemeやcommon lispに馴れていないならば、SICPよりもう少し簡単なもの
からお勧めするよ。
schemerなら、gauche本でもいいし、common lisperならAnsi Common Lispや岩波
の本でもいいし。

178:デフォルトの名無しさん
08/08/13 11:16:10
>>176
ポールグレアムって結局SchemeにもCLにも否定的じゃないか?

179:デフォルトの名無しさん
08/08/13 14:30:39
>>178
どちらかといえばSchemeにもCLにも肯定的だと思うよ。
(Lisp族以外の言語に比べれば)

180:デフォルトの名無しさん
08/08/13 16:20:52
PG
javaには否定的というのははっきりしてるし、C系に苛立ちを持ってるような記述も
みかけたことはあるかな。

181:デフォルトの名無しさん
08/08/13 16:46:20
CとPerlは人気の言語として色々条件を満たしているみたいな話があったような

182:デフォルトの名無しさん
08/08/13 18:55:38
40年も前から存在するのに
lispが全く存在感無い事について
想像力を働かせてみた方がいいと思うね

183:デフォルトの名無しさん
08/08/13 20:29:28
>>182
どれだけの世界を見て生きてきたか知らんが、
あなたのちっぽけな経験で感じた存在感なんて
なんだというのだ
ふしあなか?


184:デフォルトの名無しさん
08/08/13 20:42:17
>>183
頑張ってそれか?
「viaweb以外のインストールベースの例を教えてください」
って聞かれたらどうするの?
はいやりなおし!

185:デフォルトの名無しさん
08/08/13 20:44:57
「実用性なんて飾りです。偉い人にはそれがわからんのですよ。」
くらい言わないと。

186:デフォルトの名無しさん
08/08/13 21:16:40
>「viaweb以外のインストールベースの例を教えてください」

なんか薄っぺらいなぁ。

187:デフォルトの名無しさん
08/08/13 21:37:39
>>170
皆言ってるように「数学基礎論」そのものに首を突っ込む必要はない。
集合というのはただのモノで、ただのモノについての議論を深めていくと
濃度がどうとか数学基礎論の方へ行く。

そっちではなくて数学の基礎と言うか数学村の言葉使いに慣れておく必要がある。
つまり集合と言うただのモノに必要な性格付けをして数学的な実質のある体系を
作っていく手順を自分なりに一度は体験しておく必要がある。

入り易いのは数の構成で、島内氏のとか岩波新書に「数の体系」とかいろいろある。
そんなことは分かってるというのであれば不要だが、単に実数も複素数も知ってるというのではだめ。

次にやっておくべきは代数かな。計算機科学との相性も良いし、暗号等での応用もあって本もたくさんある。

あとは必要と興味に応じてやっていけば良い。ひとつ注目したいのは圏(カテゴリー)論。
ひと昔前はGAN(GENERAL ABSTRACT NONSENSE)とか揶揄されたが様変わりで、
Haskellで圏論と言う言葉を知る人も増えたらしい。


188:デフォルトの名無しさん
08/08/13 22:43:56
昔の本だと「数学基礎論」となっていても
真偽関数から始めて命題論理・モデル理論・述語論理・帰納的関数・・・と続き
最後にちょこっと公理的集合論が出てくる、というような感じで
>>170のやりたそうなことに内容的にはちょうどよかったんじゃないかと思うが
今はもっと効率的にやる方法もあるだろう

189:デフォルトの名無しさん
08/08/14 00:16:28
>> 173, 187, 188
ご教示、ありがとうございます。

そもそもの動機なのですが、ただいま「論理と計算のしくみ」を読んでいまして、
ちょっと展開が速すぎて着いていけないので、もうすこし詳しく、さらに言えば
演習もあるような書籍は無いかと思ったしだいです。
証明の仕方に慣れていないせいか、結論はともかく過程に納得ができなくて。

とりあえず、「論理学をつくる」を入手しましたので、これをみっちりやってみます。

圏論も視野には入っています。ちょっと遠そうですが。

一番初めの目的はプログラミングや設計に役立てるためだったのですが、
いつのまにか、数学を学ぶこと自体が楽しくなってきてしまいました。
脱線して、計算機科学と関係ない方向に行ってしまいそうです。

190:デフォルトの名無しさん
08/08/14 00:18:15
>>184
はいさようなら!

191:176
08/08/14 08:39:29
177さん

助言ありがとうございます。

やっぱりLispかSchemeどっちを学ぶか決めた方がいいのでしょうか。今は両方手をつけてます。

それと最近翻訳された実践Common Lispは初学者向けですか?

192:デフォルトの名無しさん
08/08/14 09:00:16
>>191
そこは自分で考える部分だよ。

言語の取得って基本的に同時に複数をやるのはあまりよいとは思えないですね。
ゴールがなにか?を考えたら使用する言語は決まってくると思うけど。
LLな活動ならgauche で充分だけど、重い計算をさせるならcommon lispのほうが
当然向いてるし。

193:デフォルトの名無しさん
08/08/14 10:15:16
>>192
同時にやるのが〜といったのは
(defun foo (arg1 arg2) ....)
(define (foo arg1 arg2) ....)
と微妙な違いの1例だけど、この違いがなれないうちは混乱に結びつくからだよ。
(defun foo (arg1 arg2)
....
(cond
[(= a b) ...]
....))

みたいになっちゃいけないし。

194:デフォルトの名無しさん
08/08/14 10:18:31
>>193
それはcommon schemeだ。

195:デフォルトの名無しさん
08/08/14 17:48:19
>>191
『プログラミングGauche』で「途中で分からなくなって」るんだったら、
『実践CL』も同じ結果になる可能性が高いんじゃないかと。

とりあえず「AllegroServeを使えるようになる」という目標があるのなら、
CL一本に絞って、もっと懇切丁寧な初学者向け教科書で勉強してみるのが
一番じゃないでしょうか。

Peter Norvigもたしか「まったくの初心者にはこれが一番いい」と言ってたと
思いますが、TouretzkyのGentle Introductionが非常に丁寧でいいと思います。
こちらから全文が無料でダウンロードできます。

URLリンク(www.cs.cmu.edu)

196:デフォルトの名無しさん
08/08/14 20:27:19
「リスト遊び」とかどうだろう。Emacsが動けばすぐ試せるし。

197:デフォルトの名無しさん
08/08/14 21:32:19
「プログラミングGauche」は全部理解する必要はないだろう。
特に第3部は必要な箇所だけ読めば良い。

198:lischemep ◆/uyHCgG7qA
08/08/14 23:53:22
皆様、色々と助言ありがとうございます。

>>195さん、
よさそうですね。後で印刷して通勤の合間に読んでみます。

>>196
Emacs Lispの本も持ってます。そちらにも手を付けてみます。

>>197
それを聞いて少し安心しました。

199:デフォルトの名無しさん
08/08/15 00:10:04
AllegroServeを使えるようになるにしろ、On Lispを読めるようになるにしろ、
実践Common Lispは良いテキストだと思うけどなあ。

漏れは、リスト遊びや、Elispの勉強は、上二つの目的には直接関係してこないと思う。

200:デフォルトの名無しさん
08/08/15 07:36:30
>>199
禿同。実践本がマスターできたら、あとは自分で調べながら何でもやれるよ。
マクロもCLOSも書いてある本は他にないと思う。実践本のFOO言語の下りは
本当に素晴しい。

ちなみにAllegroServeは使うだけなら全然難しくないよ。
S式でややこしいListの構築の練習に良いかもね。
リスト遊びは名著だけど、泥臭くなさすぎる。

201:デフォルトの名無しさん
08/08/15 21:17:10
教えてください.R5RSに記述されている手続き/シンタックスはすべて
syntax, library syntax, procedure, library procedure, optional procedureのいずれかに
分類されていますが,define, define-syntax, syntax-rulesに関しては上の分類別の記述がありません.
どのように考えれば良いでしょうか.すべて定義に必要なものですから基本的なものだとは思うのですが
単純にsyntaxの部類に属するとしてよいのでしょうか.

202:デフォルトの名無しさん
08/08/15 22:01:12
define、define-syntaxは式ではないのでsyntaxではない
syntax-rulesは式ではないのでsyntaxではない

たぶん


203:デフォルトの名無しさん
08/08/15 22:15:19
CLで言う所の特別式は値のある式だけど
R5RSではたとえば
(define x (define y 100))
などは許されない

204:デフォルトの名無しさん
08/08/15 22:16:49
値のない式もあるから203の例は不適当だったか

205:デフォルトの名無しさん
08/08/15 22:59:38
>>201
define, define-syntax, syntax-rulesは確かに書いてないねえ。
でも、こいつらはどう考えても手続きじゃないから分類するならsyntaxなんじゃないの?


206:デフォルトの名無しさん
08/08/15 23:14:59
CLみたいに特別式、関数、マクロに単純に分類できないからねぇ
beginの扱いも微妙だし

207:デフォルトの名無しさん
08/08/21 16:12:21
svnから引っ張ってきた最新版のgaucheをVCでコンパイルすると
実行時にしょっぱなのScm_Initでこけます。

どうもvminsn.cの SCM_VM_LOCAL_ENV_CALL ラベルに来たとき
vm->val0に値が設定されていないことが原因っぽいのですが、
これの解決策分かる方いませんか?

スレチなら、適切な場所に誘導してもらえると嬉しいです。

208:デフォルトの名無しさん
08/08/21 16:17:07
>>207
> スレチなら、適切な場所に誘導してもらえると嬉しいです。
URLリンク(www.lingr.com)

209:デフォルトの名無しさん
08/08/21 16:21:22
>>201
自分はsyntaxだと理解してきました。

ちなみにR6RSではsyntaxと明記です。

210:デフォルトの名無しさん
08/08/21 16:32:12
>>208
ありがとうございます。

211:デフォルトの名無しさん
08/08/22 10:08:30
URLリンク(natu.txt-nifty.com)

センスのないネタやね。この手の奴にlispを語ってほしくないな。sicpを
やってた奴みたいだが。

212:デフォルトの名無しさん
08/08/22 11:21:48
どうでもいいものを、ここに張る奴もどうかしてる。

213:201
08/08/23 02:28:49
>>みなさま
いろいろお教えいただきましてありがとうございます
>>209 さんのご意見に従い
割り切ってsyntaxに入れてしまったのが簡単で良いかなと思っています
しかしこれらをあえてsyntaxから外してあるということは
R5RSはそれだけ厳密に定義されているということなんでしょうか

214:デフォルトの名無しさん
08/08/23 14:07:51
R5RSは結構いい加減w
それ系のMLでも解釈について議論になってる。

もちろん仕様がないような言語とは比較になりませんが。

どういう言語でも↓こういうことがあるもんなんです。
URLリンク(www.open-std.org)
そういうレベルの意味において「いい加減」

215:デフォルトの名無しさん
08/08/23 14:32:15
静的型と仕様は頭の中にあればいいよ

216:デフォルトの名無しさん
08/08/24 13:16:35
お前は頭の中で済むほど頭がいいのか?

217:デフォルトの名無しさん
08/08/24 13:41:23
お前は頭の中で済むと思い込むほど頭がわるい人は多い。


218:デフォルトの名無しさん
08/08/24 14:11:09
worse is betterを思い出した
頭のいい奴は複雑なものを作るから困る

219:デフォルトの名無しさん
08/08/24 14:17:34
日本語は難しくてかなわん
S式で説明してくれ

220:デフォルトの名無しさん
08/08/24 16:58:12
(define (難しい? 言語) (eq? 言語 '日本語))
(if (難しい? '日本語) 'S式でおk)

221:デフォルトの名無しさん
08/08/24 18:06:39
>>220
コラコラw


222:デフォルトの名無しさん
08/08/24 19:41:38
>>220
#<undef>

223:デフォルトの名無しさん
08/08/24 21:16:28
ところでSchemeの仕様にむやみと未定義が多いのは何でなの?
なにかに決めりゃいいじゃん、nil でもいいからさぁ。
とりあえず決めた方が実用的になると思うんだけど。

224:デフォルトの名無しさん
08/08/24 21:24:42
>>223
決めちゃったらもう変えれないだろ。
議論が尽くされてないところは決めるべきじゃないし、
実用のために不格好になるのは CommonLisp だけで十分。

225:デフォルトの名無しさん
08/08/24 21:53:41
common lispが不恰好とな?

226:デフォルトの名無しさん
08/08/24 22:26:38
少し認める

227:デフォルトの名無しさん
08/08/24 22:44:55
>>223
決めちゃうことが(例えば性能的な)制約になる実装があり得るから

228:デフォルトの名無しさん
08/08/25 00:15:13
rubyとか酷いよね

229:デフォルトの名無しさん
08/08/25 00:26:43
gauche上の話なのですが、

(definc-syntax member
 (syntax-rules () ((_ name) (name :init-value 0))))

(define-class <test> ()
 (member X))

こうすると、どうも(member X)の展開が上手くいかないようなのです。
これを上手く展開させる方法はありますか?

230:デフォルトの名無しさん
08/08/25 00:29:57
>>229
本質的にマクロをわかってない。
あくまでもそういう書き方で展開させたいなら結構めんどいことになるよ。

231:デフォルトの名無しさん
08/08/25 00:31:15
評価される場所でないと、マクロは展開されない。
define-class ごと再定義するのが良いだろう。

232:デフォルトの名無しさん
08/08/25 00:46:58
>>230-231
ありがとうございます。
他のやり方を考えてみます。

233:デフォルトの名無しさん
08/08/25 13:14:13
writeとかdisplayが真値を返さない可能性があるので
and-let*とかで処理をつなぐ時にいちいち
(begin (write obj) #t)とか書くのは不恰好な気がする。
せめて#<undef>は#fにはなりえない、くらいの制約は欲しい

(とはいえ、未規定の値を返す手続きが#fを(返す|返しうる)処理系は見たことないけど)

234:デフォルトの名無しさん
08/08/25 20:56:28
* が前置されていたら次の式は #t を返したものとして扱う、てな
自分用and-letを定義したらどうよ。

235:デフォルトの名無しさん
08/08/25 21:23:18
意味的に and じゃないとこで andなんちゃら を使っているのだから仕方ない

236:デフォルトの名無しさん
08/08/25 22:07:51
letをネストしたくないのと、いちいち継続を捕捉して脱出したくないだけだろ
戻り値が未定義だというのは問題の本質ではないな

237:デフォルトの名無しさん
08/08/25 22:13:41
朝起きたらLISPになっていますように

238:デフォルトの名無しさん
08/08/25 22:22:37
つまり括弧を書きたくないだけだね。
フロントエンドでも作れば?

239:デフォルトの名無しさん
08/08/25 22:43:16
HaskellのMaybeモナドっぽく使いたいわけですよ
いろいろマクロを書いて試してます

>>238
括弧を書きたくないのではなくて
beginで値を捨てるのが好きじゃないんです

未規定値は#fかもしれないし真値かもしれないというのも気持ちが悪いです
もしかしたら(eq? (write obj1) (write obj2)) -> #fかもしれませんし

240:デフォルトの名無しさん
08/08/25 23:00:06
個人的には、未規定値は使ったとたんにエラーになる処理系が好ましいな

241:デフォルトの名無しさん
08/08/25 23:34:49
0個の多値を返せばいいじゃない

242:デフォルトの名無しさん
08/08/25 23:54:07
and-let*の中で返り値が未規定な手続きを使ったり、
未規定値を比較する、といった発想が理解できない

243:デフォルトの名無しさん
08/08/25 23:57:40
他コンピュータとの通信プログラムなどで
画面出力するというのが主ですね
クライアントプログラムなどでREPLの介入が出来ない場合
デバッグのための出力を埋め込んだりもします

244:デフォルトの名無しさん
08/08/25 23:59:29
未規定値の比較は実際には行いませんよ
ただ真理値も同一性も規定されていないから
どうなるかはわからないといいたかっただけです

245:デフォルトの名無しさん
08/08/26 00:46:26
なぬ? (begin (write "hoge") #t) が恰好悪いですと?
そんな時こそマクロ〜

246:デフォルトの名無しさん
08/08/26 08:15:32
>>244
プログラミング向いてないのでは?

247:デフォルトの名無しさん
08/08/26 19:11:39
(define (tree-count elem tree)
(let f ((rest tree) (count 0))
(cond
((null? rest) count)
((list? (car rest)) (f (append (car rest) (cdr rest)) count))
(else (if (eq? elem (car rest))
(f (cdr rest) (+ 1 count))
(f (cdr rest) count))))))
(= 6 (tree-count '<> '(A B C <> (A <> (X <>)) <> (<> <>))) ; => #t
こういうのでも末尾再帰になってるんでしょうか?

248:デフォルトの名無しさん
08/08/26 20:17:38
fの呼出しは末尾呼出しになってますね

249:デフォルトの名無しさん
08/08/27 09:03:03
>>239
ほんとにMaybeモナドみたいにしたいなら、そのように書くしか無いと思うよ
(有効な値は全部Justでくるむとか、逆に「有効な返り値と決してeq?にならない
値」を失敗を表すのに使うとか)。and-let*で#fを特別扱いしてるのは
「大抵の場合うまくいく」っていう一種の妥協で、>>239のアプリは
その「大抵の場合」から外れているってことだと思う。



250:デフォルトの名無しさん
08/09/01 23:00:41
絶版になったと思ってたディヴィグ翻訳本
いつの間にかまた売られるようになってますね
3版ではなさそうですが

251:デフォルトの名無しさん
08/09/02 19:44:54
little schemerの継続の所が凄くわかり辛い(関数名からして意味不)
今の段階ではこういうのもあるって知っておく程度で詳細は他の本でカバーしろって事かな?

252:デフォルトの名無しさん
08/09/02 21:00:46
頑張れ、ここで派を食いしばれってこと。
ドリルみたいなもんだから、逃避したら身には付かない。

253:デフォルトの名無しさん
08/09/02 21:07:49
何の発見もない精神論だな

254:デフォルトの名無しさん
08/09/02 21:15:31
結局shiroさんの記事とwikipediaとprogramming language schemeを参考にしましたけどね

255:デフォルトの名無しさん
08/09/02 21:15:31
ドリルでルンルンクルルンルン

256:デフォルトの名無しさん
08/09/04 15:02:19
>>251
具体的にどのページのどれが分からないか書かないとまともなレスは来ないよ常考。

257:デフォルトの名無しさん
08/09/04 23:09:46
継続渡しのネタはP.137-147ですね
あとP.160ー173のYコンビネータのネタもややこしいですね
初見では10章よりも難しく思えましたまる

258:デフォルトの名無しさん
08/09/05 15:46:59
P.137の multirember&co の定義で2つコレクター出てくる。
ひとつは

(lambda (newlat seen)
(col newlat
(cons (car lat) seen)))

もうひとつは

(lambda (newlat seen)
(col (cons (car lat) newlat)
seen))

実は2つとも無名関数で再帰をしている。このコレクターが再帰のたびに別な関数になっていることをちゃんと理解できてるかな?
これが分かるならP.140までは理解できているはず。つまりTenth Commandmentはコレクターを作れってことだよね。実行してみるとこうなる。

URLリンク(codepad.org)

8章のテーマは確かに継続渡しなんだけど、無名関数で再帰することを上手にやるのがコレクターってこと。
9章のネタではさらに再帰のさせ方を工夫してやるとYコンビネータを作れるというお話。

P.137からP.140が理解できればコレクターとYコンビネータを両方とも理解できます。頑張れ。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5387日前に更新/75 KB
担当:undef