Lisp Scheme Part21 ..
[2ch|▼Menu]
159:デフォルトの名無しさん
08/04/13 16:44:08
>>152
解説もあったよ
URLリンク(en.wikipedia.org)

Little Schemerは謎解き本だと思うので
いま九章読んでる人は読まないほうがいいかも

160:デフォルトの名無しさん
08/04/13 16:46:43
>>158
古いと灰色や金色の表紙のものがある。amazon.co.jpは古い表紙のpicを使いまわしてると思われ

161:デフォルトの名無しさん
08/04/13 16:48:15
>>160
実際は赤なんだけど灰色の画像使ってるだけかと思ってました。

162:デフォルトの名無しさん
08/04/13 16:51:26
ISBNが古いのと同じなのかぁ。出版社のHPで確認するのって大事だな。
amazon.co.jp見ただけじゃそんなことわからないYO!

163:デフォルトの名無しさん
08/04/13 16:56:34
SICMオンライン
URLリンク(mitpress.mit.edu)

164:デフォルトの名無しさん
08/04/13 16:57:04
>>159
そのページの対応する言語を見ると日本語がないw

165:デフォルトの名無しさん
08/04/13 17:00:19
SICM 持ってる。けど、自分はラグランジュアンがよくわかってないので
宝の持ち腐れだ。先に数学、勉強するよ。

166:デフォルトの名無しさん
08/04/13 17:00:30
和田訳のSICPがあれだけグダグダなのを考えるとSICMを翻訳できるとは思えんなw

167:デフォルトの名無しさん
08/04/13 17:07:18
>>164
これじゃ違うかな。
Wikipedia項目リンク

168:デフォルトの名無しさん
08/04/13 17:10:16
>>167
d。部分写像(partial mapping)がpartial functionに近い。

169:デフォルトの名無しさん
08/04/13 17:23:20
いいなあ、学生は暇があって

170:デフォルトの名無しさん
08/04/13 17:25:01
SICMのユーティリティープログラムのページ (Linux用)

URLリンク(www-swiss.ai.mit.edu)

171:デフォルトの名無しさん
08/04/13 17:26:16
学生じゃないし暇じゃないけど、ゴロゴロしてる。

172:デフォルトの名無しさん
08/04/13 17:27:32
>169

先週から仕事中の現実逃避に>163読み始めたよ
出来れば日本語訳が( ゚Д゚)ホスィ・・・

173:デフォルトの名無しさん
08/04/13 17:38:30
さーてそろそろLittle Schemer読んじゃわないと````````````y

174:デフォルトの名無しさん
08/04/13 17:42:20
8章くらいから難しくなって涙目

175:デフォルトの名無しさん
08/04/13 17:44:33
もれも8章涙目だったけど、何度も読み返して何とか理解した。
まだちょっともやもや残ってるけど、、、、

今9章だお。

176:デフォルトの名無しさん
08/04/13 17:45:57
>>138
HtDPより同じ著者のEOPLの方がいい。
Little Schemerシリーズもいいけど、SICPとEOPLは体系的な知識が得られる。

177:デフォルトの名無しさん
08/04/13 17:46:34
Simply Schemeは?

178:デフォルトの名無しさん
08/04/13 17:48:01
EOPLってナーヌ?

179:デフォルトの名無しさん
08/04/13 17:48:55
しばらく英語に触れてなかったので、Littleで一杯一杯なんだ。
Simply→SICPという意図で書かれているらしいけど、英語読めるか心配。

>>178
おそらくEssential Of Programing Languageかと。

180:デフォルトの名無しさん
08/04/13 17:53:22
Simply SchemeはLittle Schemerに近い内容をもっとページ数をかけて説明してる。
表計算プログラムを作る演習などのfinger practiceが充実してるけど理論的には浅い。
Haskellで言えばCraftみたいな内容。
HtDPも理論的なレベルは同程度。こっちはプログラミング作法にページを費やしている。

181:デフォルトの名無しさん
08/04/13 17:54:16
>>179d

182:デフォルトの名無しさん
08/04/13 17:57:20
>>180
ありがとう。
退屈させないように色々やってみて、プログラミングに馴染んで来たら、
さてそこから深くするには何が困難か?と考えさせて
SICPにつなげる感じなんですかね。

183:デフォルトの名無しさん
08/04/13 18:04:13
>>182
そんな感じ。Littleの8章で困るのも演習でなれることが出来ないからじゃないかい?
SICPに取り組むには、他の言語経験があればLittleぐらい難しくても短期間に十分なレベルに達するけど、
全くの初心者には大量のfinger practiceで経験を積ませないと理論の良さが実感できないから壁を感じるんだと思う。

184:デフォルトの名無しさん
08/04/13 18:05:35
>>183
まさにそんな感じです。Simplyいっといたほうが良かったかな・・・・
プログラミングGaucheで代わりになります?

185:デフォルトの名無しさん
08/04/13 18:21:41
>>184
Gauche本もってるかな?リファレンス的でfinger practiceはあまりないよ。
SimplyはSICPの前に必要な知識をうまく選んで入れてると思う。
でも Little Schemer ⇒ Seasoned Schemer と読んで、ネット上の他人のプログラムを読むのも面白い。
楽しんで継続できるのが一番いい方法だと思う。

186:デフォルトの名無しさん
08/04/13 18:25:27
これ行った人、報告よろ

Continuation Fest 2008
URLリンク(logic.cs.tsukuba.ac.jp)


187:デフォルトの名無しさん
08/04/13 18:29:36
>>185
持ってないです。ネットの立ち読み版は眺めましたけど。
折角Little読み終わりそうだから続けてSeasoned読んじゃおう。
どうもありがとう。

188:デフォルトの名無しさん
08/04/13 18:44:45
>>186
おれも内容知りたいなぁ>>継続フェスタ。

189:デフォルトの名無しさん
08/04/13 19:02:27
>>187
Seasonedをしっかり理解するとSICPの山場といえる3・4章が簡単になるからガンガレ。
特に継続(callcc)がSICP3.5ストリームで利用されるのは面白い。
これがわかるとSICMの入門準備も完了。runge-kutta4(つまり微分方程式)とか出来るとシミュレーションの幅がちょっと広がるし。
ストリームで無限リストが作れるのも目からうろこの体験だった。
これ位はできないとHaskellerに馬鹿にされるしw

190:デフォルトの名無しさん
08/04/13 19:03:30
xyzzyの独自機能をcommon lispで読み代えるmacroみたいなのないでしょうか?

191:デフォルトの名無しさん
08/04/13 19:12:15
Little Schemerな連中は、はてなとかで、グループ作って
活動すれば良いんじゃないかと思った。

192:デフォルトの名無しさん
08/04/13 19:22:24
まああれだ
コンパイラといえばyacc
OSといえばブートローダー
SchemeといえばLittle Schemer

193:デフォルトの名無しさん
08/04/13 19:33:26
Little Schemer 何度でも読んでいいですか?

194:デフォルトの名無しさん
08/04/13 19:37:18
いいですよ

195:デフォルトの名無しさん
08/04/13 19:43:04
何度も読むと理解がさらに深まりますか?

196:デフォルトの名無しさん
08/04/13 19:44:33
少なくとも浅くなることは無いから安心して読め

197:デフォルトの名無しさん
08/04/13 19:50:30
じゃあ毎日音読する。

198:デフォルトの名無しさん
08/04/13 20:04:50
>>190
どういうものをイメージしてるのかよく分からないよ……

199:デフォルトの名無しさん
08/04/13 20:33:16
何と言ってもSICPだ。俺はあれを読んで人生が変わった気分だよ。

プログラマは皆SICP必須だな。あれを読めば、場当たり的なコーディングから
完全に開放されるよ。

200:デフォルトの名無しさん
08/04/13 20:34:24
読むなら、やっぱり英語版?

201:デフォルトの名無しさん
08/04/13 20:49:26
>>200
俺は英語版を読んだ。最初翻訳本買おうかと思ってAmazon見たらあのコメントの
群れを見て引いちゃったよw。「超循環評価機」とかのタイトル見ても???だったしね。

英語は教科書だからか、受験英語やってりゃ普通に読める英文だよ。ネイティブ風な
言い回しは一切無い。多少英語が読めるんだったら、タダでネットで見れるんだし、
原語でいいんじゃないか。

ちなみに俺はあまりの感動にハードカバーの洋書を買ってしまった。9000円ぐらい
したかな。ただ、持ち運びにはペーパーバックのほうがいいし、値段も半額以下なので
これについては激しく後悔しているw

202:デフォルトの名無しさん
08/04/13 21:06:57
昔のマグロウヒル日本語版から比べたら、現行日本語版なんて天国みたいなもんだよ。

203:デフォルトの名無しさん
08/04/13 21:10:17
別に悪い訳じゃないと思うけどなぁ。
超循環評価機をメタサーキュラ〜とかカタカナで書かれたら死ぬ。

204:デフォルトの名無しさん
08/04/13 21:12:16
Amazonの書評は異常だね。攻撃的な人って居るんだなと感心する。

205:デフォルトの名無しさん
08/04/13 21:21:20
ニヤニヤ

206:デフォルトの名無しさん
08/04/13 22:46:13
>204
あれは読んでない奴の戯言だ
Amazonのあの手の書き込みは鵜呑みにしない事にしている

207:デフォルトの名無しさん
08/04/13 23:14:33
単語まで全て逐語訳にしないで
->計算機(computer)
みたいな感じで元の英単語も書けば良かったんだよな。

208:デフォルトの名無しさん
08/04/13 23:17:09
字幕の最初の方が出来上がったてるみたいだ。

209:デフォルトの名無しさん
08/04/13 23:28:31
>>207
英語版はLaTeXだけど、日本語版は組版でやってるからちょっとした修正が出来ない。
もとの単語を書くと文字数が増えるからページ数を抑えるためにポイント数を抑えざるを得ない。
でもそれは技術的に難しい。かといってページ数を増やすと\5,000以上になってしまう。
つまりピアソンがコストダウンできる技術力を持っていないことにもそういう工夫を出来ない原因がある。
かといってムリをすればマグロウヒルみたいに倒産して書物が入手できなくなってしまう。
良い本なら買い支えるというのも消費者の選択なんジャマイカ?

210:デフォルトの名無しさん
08/04/14 00:28:47
>>152
total functionは、全ての実引数に対して値が定義されている関数。
partial functoinは、値の定義されてない実引数のある関数。

具体例は、
(define (f x)
 (if (= x 1) 1
   (f (- x 1))))

定義域を自然数だとするとtotal function。
整数だとするとpartial function。
負の数の時に停らないあるいは値が未定義だから。

(define (f x) (/ 1 x))もxが0だと駄目だからpartial function。

211:デフォルトの名無しさん
08/04/14 01:22:42
それじゃ数学関数の定義で駄目。152はそこは判ってるようだ。これを関数型での関数の引数でイパーン的に説明汁

212:デフォルトの名無しさん
08/04/14 01:25:17
>>152
>>155が説明して>>156で納得して終了済。

213:デフォルトの名無しさん
08/04/14 01:44:48
>>210の方が合ってるぞ。
URLリンク(foldoc.org)

> 関数が計算を終了するかどうかでpartialと区別する。

これは間違い。例えばSMLのような例外のある計算系では、
関数の値が未定義の場合も停止する。Liftされているから。
表示的意味論の本を読めばちゃんと書いてあるよ。

214:デフォルトの名無しさん
08/04/14 01:56:14
Dを意味関数だとしたら、
∃x (x≠⊥ & D[f(x)] = ⊥) なら、fはpartial functionってことだよな。

215:デフォルトの名無しさん
08/04/14 02:03:05
>>214を見た漏れの脳にはテトリスが浮かんだ
とりあえず泣いてくる

216:デフォルトの名無しさん
08/04/14 02:03:58
>>215
ああ俺もギャル文字を思い出した。一緒に泣こうぜ。

217:152
08/04/14 02:08:46
>>210
なんかいろんな意見が飛んでますが、、ありがとう。

>>215-216
漏れもれも。

218:デフォルトの名無しさん
08/04/14 05:09:54
戸田山和久の「論理学を作る」はよかったな
大学に対しては良書を教えてくれた事に関しては感謝してる

219:デフォルトの名無しさん
08/04/14 06:46:38
そういう感じで「計算論 計算可能性とラムダ計算 著高橋 正子」とかが
self-containedで読めるようになる本教えてください。

220:デフォルトの名無しさん
08/04/14 12:54:26
他言語で書かれたプログラムのメタ制御したいのだけど
適切なbindingがない場合はxml-rpcが一番簡単なのかな?

221:デフォルトの名無しさん
08/04/14 13:30:46
いいえ

222:デフォルトの名無しさん
08/04/14 17:56:28
計算理論の基礎 シプサ
てのが気になってる。
アマゾンによると翻訳がすこぶる良いという。

223:デフォルトの名無しさん
08/04/14 19:17:52
>>218-222
スレチ。移動ヨロ。
スレリンク(tech板)

224:デフォルトの名無しさん
08/04/14 21:58:52
こっちじゃない?
スレリンク(informatics板)

225:デフォルトの名無しさん
08/04/14 22:23:08
すまんがちょっと教えてくれ。

Chiken Schemeは簡単に実行形式ファイルが作れるんかの?

226:デフォルトの名無しさん
08/04/14 22:29:51
Reasoned SchemerのPrologもどきって、本当に動くんだなw
URLリンク(codepad.org)

KANREN : a declarative logic programming system
URLリンク(kanren.sourceforge.net)

227:デフォルトの名無しさん
08/04/14 22:48:17
>>225
お前のことなんぞ知らんからお前にとって簡単かどうかはお前が判断しろ。
マニュアル通りやってみてできたならお前にも簡単にできるってことだ。
そうでなければ難しいんだろう。

228:デフォルトの名無しさん
08/04/14 22:52:39
KANRENって「関連」なのかな。
Oleg Kiselyovって日本と研究してるのか?
URLリンク(okmij.org)

229:デフォルトの名無しさん
08/04/14 23:26:02
Reasoned Schemer
1. Playthings
URLリンク(codepad.org)

230:デフォルトの名無しさん
08/04/15 01:58:12
HtDPの目次見たけど継続とかlet、letrecは出てこないんだね。Schemerシリーズのほうが
難しそうだ。

231:デフォルトの名無しさん
08/04/15 03:03:41
>>227
ふむ、chicken schemeっての初めて見てみたけど簡単に実行ファイルが作れるんだな。

232:デフォルトの名無しさん
08/04/15 06:20:53
>>207
そうそう、和田先生が翻訳メモとして技術用語の翻訳対照表をつけてくれれば、
読みやすかったのに。

233:デフォルトの名無しさん
08/04/15 11:15:30
schemeをC++プロジェクトに組み込みたいのですが、
組み込みやC++クラスのエクスポートが簡単にできる
ポータブルな処理系ってありますか?

234:デフォルトの名無しさん
08/04/15 12:10:18
libgaucheとCで書いてextern "C"ってすればいいんじゃね
俺もほとんど知らない。教えてほしい

235:デフォルトの名無しさん
08/04/15 14:27:24
Chickenはsyntax-caseが使えるんだけど
有理数がないのと多倍長数がないのが残念。
biglooもそうだったような気がするけど
Cにコンパイルする処理系はCの整数型、浮動小数型に縛られる物が多い。
Gambit-CはCコンパイルタイプには珍しく
多倍長数、有理数と正確数表現の複素数(これはGaucheにもない!)があるんだけど
SRFI周りが互換性の無い独自の実装なのが残念。
(たとえばSRFI-22の引数にスクリプトファイル名を含めない、文字列ポートを読み込むと空になる等)
>>233
組み込み系UnixライクOSでも動くとなればguileかScheme48でしょう。
Cでプログラムを書くのも容易だし
ソースに手を入れなくてもターゲットで動く。
但し前者は遅い上にR5RS準拠ではない。(R5RS手続きは網羅してるけど)
後者はR5RS準拠で完成度は高いけどやや重くてやや遅い。
処理系ソースに手を入れる事を厭わないのであればGaucheかGambit-C。
前者は軽くてそこそこ速い。後者はそこそこ軽くて(コンパイルすれば)かなり速い。
PLTScheme(MzScheme)がUnix系全般で動くようになれば最強っぽいんだけど
BoehmGCを移植しただけじゃ動かないのが×。
さらにコンパイルしなくても速いのにコンパイルしても(そんなに)速くならないのはご愛嬌。

236:デフォルトの名無しさん
08/04/15 15:16:12
>>235
>複素数(これはGaucheにもない!)

あるっしょ

237:デフォルトの名無しさん
08/04/15 15:18:45
正確数表現の複素数(これはGaucheにもない!)

238:デフォルトの名無しさん
08/04/15 15:52:35
> (exact? (sqrt -1024))
#t

これはいいsqrt

239:デフォルトの名無しさん
08/04/15 16:03:30
R5RS-6.2.3
sqrtのような潜在的に不正確な演算は、正確引数に適用されたとき、
可能ならばいつでも正確な答えを算出することが望ましい(が要求はされていない)。
なので処理系依存。

240:225
08/04/15 20:40:37
>227
参考になった。ありがとう。

241:デフォルトの名無しさん
08/04/15 23:24:29
>>225
Linuxだと簡単にバイナリ作れた。
winだとコンパイルも通らなかった orz
mingwin32嫌いだ!


242:デフォルトの名無しさん
08/04/15 23:35:56
>241
あれ、出来なかったっけ?
ちょっと今MinGW環境壊しちゃったので手元で確認できないけど

243:デフォルトの名無しさん
08/04/15 23:40:20
>>242
できたらgccのバージョンとかライブラリのバージョンさらしてください。

しょぼーん。

#共通環境はsbclが一番良いんじゃないかと思うようになっちゃったのでscheme嫌いになりそう


244:デフォルトの名無しさん
08/04/16 00:14:09
>>243
Makefile.mingwを使うとchicken-config.hの作成に失敗する。
そこだけ手作業でやったらあとは普通にmakeが走ってる。
今ビルド中。っていうか本家に最新版のWindowsバイナリ置いて無いな。

245:デフォルトの名無しさん
08/04/16 00:30:12
みんな苦労してでもWindowsdで使いたいんだな。
Windowsは偉大だな。


246:デフォルトの名無しさん
08/04/16 00:43:18
自分が使いたいというより、より広く使われるものを作りたい、そういうものを作る
ために使いたい、という動機が大きいのでは?
趣味にしても、仕事にしても。

247:デフォルトの名無しさん
08/04/16 00:53:25
>>228
URLリンク(scheme2006.cs.uchicago.edu)

KANRENって「関連」みたいだけど中国語。
Chung-chieh Shan(單中杰)というハーバード出身でラトガース大学のAssistant Prof.の人とやった仕事。

248:244
08/04/16 00:55:30
よくみたらMakefile.mingw-msysってのがあったな。
こっちでやれば一発でいけたのかも。
まぁ、gcc3.4.5で普通にコンパイルはできたよ。

249:242
08/04/16 02:07:59
>248
漏れもgcc4.3.0 & Makefile.mingw-msysでやってみたけど問題なさそう

250:デフォルトの名無しさん
08/04/16 02:18:42
>>246
処理系はとりあえずUNIX系の上でつくられて、
そういう尊い方々がWinに移植なさるのですね。
感動しました。
漏れはWinでないと使う気にならないから使ってるだけだが、
いつかそうなりたいね。

251:デフォルトの名無しさん
08/04/16 02:23:10
とりあえずUNIX上に作られるのはそのほうが楽だからだな。
WindowsのAPIってなんか例外事項が多くてごちゃごちゃしてる感じ。

252:231
08/04/16 03:00:47
>>248
俺はgcc3.4.2+msysでうまくいったみたい

253:デフォルトの名無しさん
08/04/16 12:42:00
>簡単に実行形式ファイルが作れる
という観点では
エンドユーザが自分でMinGWを入れるという前提はおかしい

普通の人はVisual C++とMzSchemeを使えばいい

254:デフォルトの名無しさん
08/04/16 13:28:11
>>253
「エンドユーザ」はMinGWを入れる必要は無いだろ

255:デフォルトの名無しさん
08/04/16 13:47:15
じゃあ「簡単に実行ファイルを作りたいWindowsユーザ」に訂正

256:デフォルトの名無しさん
08/04/16 13:54:12
簡単だけど話題としてはスレ違いだね。

257:デフォルトの名無しさん
08/04/16 15:26:31
簡単だから得意げに説明するのが恥ずかしい気がするけど、注意点を

・ソースファイルと同じ名前のモジュールで包む
 たとえば hello.scm なら
(module hello mzscheme
 (display "Hello, world!")
 (newline))
・--exeオプション
 たとえば mzc --exe hello hello.scm
・bccに対応していると書いてあるが無償版のbccでは失敗するみたい

258:デフォルトの名無しさん
08/04/16 19:15:29
>>235
とりあえず、いろいろ試してみました。

guile)
・GPLライセンス
・試してないがVCでコンパイルできなさそう

Scheme48)
・VCでもコンパイル可能
・ただ、実行の際に〜.imageファイルが必要なのと、
 その作成にScheme48インストールディレクトリのフルパスが必要・・・
・(美学の問題だが)関数名がおかしいのと、コンパイル時に
 「○○関数は未定義です」「○○は初期化されていません」みたいな警告が普通に出てくる。

chiken)
・VCでもコンパイル可能のはず。自分には無理だった。
・(pcreを使っているので多分)正規表現がマルチバイトをサポートしていない。

Gauche)
・コアはVCでコンパイル可能だが、拡張ライブラリが全滅
・クラス登録機構がGNUのリンカの実装に依存している。VCだと拡張ライブラリを作ること自体が難しそう。
・基本的にposixべったり
・デフォルトで日本語が使える。ドキュメントも日本語

259:デフォルトの名無しさん
08/04/16 19:16:14
Gambit-C)
・VCでコンパイル可能
・自動生成されたソースが長すぎるため、IntelliSenseの更新に長大な時間がかかる。たまに開発環境自体が落ちる
・(サイズが)すごく大きいです・・・

総括)
こうやって並べてみると、日本語が使えるGaucheか、Gambit-Cが問題が少なさそうですね。
自分は多分、gaucheをstatic libraryで使うことにすると思います。
個人的にはluaのようにもっと手軽に組み込める処理系があると嬉しいのですが、文句ばっかり言ってもしょうがないですよね。
>>235さん、ライブラリの紹介どうもありがとうございました。

260:デフォルトの名無しさん
08/04/16 21:36:34
Windowsで動かしたいというのは判るが、VCでコンパイルしたいという理由がよくわらかん。
MinGWじゃ駄目なのかい。

261:デフォルトの名無しさん
08/04/16 21:42:41
IntelliSenseが使いたいのか
頭のとんがった上司がいるのか
その両方か

262:デフォルトの名無しさん
08/04/16 22:09:15
>>259
Gauche-win32-0.8.13.exeじゃだめなの?


263:デフォルトの名無しさん
08/04/16 22:16:20
exeがつくれないとプログラムをしている気にならないんじゃないかな?
Windowsしか知らなかったころはexeをつくれて一人前の開発環境というイメージだった。

264:デフォルトの名無しさん
08/04/16 22:21:32
>>263
自分で使うコードなら別にexeにする必要ないんだけど、ちょいと配布したりするのに実行環境必要とか言うと困るからじゃないの?

どんなプログラムだかしらないけど。


265:233
08/04/16 22:28:13
>>260
理由1、VCの便利な機能が使いたい
理由2、schemeという小さな言語がVCでコンパイルできない理由がわからない
仕様も小さいんだしVCでもコンパイルさせてくれよ・・・
というのが本音です。

>>261
> IntelliSenseが使いたいのか
どちらかというとこっちです。
でも後者の方が面白いので、できればこっちを強弁したいですねw

>>262
すみません、書いてませんでしたが自分は>>233です。
C++に組み込むので、別途インストールというのはちょっと考えられないのです。

266:デフォルトの名無しさん
08/04/16 22:33:41
>>260
MinGWはMSYSが要るのか要らないのかはっきりしてほしいw

267:デフォルトの名無しさん
08/04/16 22:39:02
POSIX べったりという表現が面白かった
確かに逆から見たらそう感じても不思議じゃないね

268:デフォルトの名無しさん
08/04/16 22:47:21
>>266
実行だけなら要らない。ランタイムのDLLさえも要らない場合が多い。
最近のVCはRuntime(もちろん自由に再配布できるが)を入れないといけないことが多い。
VCじゃなきゃ嫌んの人はMinGWをよく知らないだけではないかと思う。

269:デフォルトの名無しさん
08/04/16 22:51:25
Schemeは実はC及びC++(のスタックフレーム)とは相性が悪い。
ファーストクラスの継続があるため
関数からreturnする時に
単純にスタックフレームを開放できない。
また、末尾呼び出しの最適化は
C及びC++では行えない。
(だからSchemeの場合はバイトコードインタプリタの方が
効率が良かったりする。)
これらの理由により、ネイティヴコードをポータブルに吐く方法がない為
GCC用のソースは手を入れない限り他の処理系でコンパイルできない場合が多い。

270:デフォルトの名無しさん
08/04/16 22:58:01
>>265
> 理由2、schemeという小さな言語がVCでコンパイルできない理由がわからない
> 仕様も小さいんだしVCでもコンパイルさせてくれよ・・・
君がScheme処理系を書けば良いのでは?


271:デフォルトの名無しさん
08/04/16 23:43:31
ちなみにschemeは仕様がすっきりしているだけで、
実行環境はさほど小さくない。処理系もけっこう大きい。


272:デフォルトの名無しさん
08/04/17 00:18:53
書けねえよ

273:233
08/04/17 00:22:42
>>268
自分のプログラムでは外部ランタイムは無用です。
あと全く別の問題として、schemeのために開発環境を変えるということ自体がちょっと嫌なんです。

>>269
・ネイティブスタックを使わず、自前のスタックかメモリを確保すれば
 継続でもコルーチンでもポータブルに作れます(作れるはずです)
・バイトコードを採用すれば、処理系のコードは自然とポータブルになります
・ネイティブコードをポータブルに吐く方法なんて自分は一つも知りません

って、あまり面白くないツッコミですみません。
あと、schemeがポータブルに実装できないわけではですよ。
実際、明らかにwindowsのようなマイナーな環境(?)を無視した作りのgaucheでも、
コア部分はコンパイルできるわけですし。

>>270
今までは、あまり実用にならなそうなマイ言語を作っている人を、
内心バカにしたりもしていたのですが(すみません)
schemeでも他の言語でも、自作の処理系が一つあると意外なところで使えたりするのかもしれませんね。
scheme作るのも面白そうなので、時間があれば是非やってみたいです。

274:デフォルトの名無しさん
08/04/17 00:27:05
スキルないのが丸分かりの自己紹介ありがとう。

275:デフォルトの名無しさん
08/04/17 00:44:29
漏れも学生時代はMacではHyperCardを必要とするスタックは軟弱物。Pascal or Cで実行形式をつくるのがカコイイだと思っていたし、
Win32でもランタイムを必要とするVBを見下し、CをつかってもMSVCRTの依存すら排除しようとしていた経験のある俺には233の気持がわかる気がする。

276:デフォルトの名無しさん
08/04/17 01:44:38
ゲーム作るときはマシン語モニタをBASICで自作することから始める時代の話だな。
そんなMSXが許されるのは小学生までだよねー

277:デフォルトの名無しさん
08/04/17 01:49:42
>>273
GaucheはWindowsを無視はしてないよ。
多少なりともVC++を意識した変更が入っていたはず。

URLリンク(practical-scheme.net)

を参照するといいと思う。マンパワーが足りないから進捗が遅いだけで。

成果をフィードバックしてくれるなら、向こうにとっても渡りに船だろうし、
本気でやる気があるなら、WiLiKiに書き込んでみればいいんじゃない?
上手く協力できれば、双方にとって良い結果になると思うけど。

278:デフォルトの名無しさん
08/04/17 02:12:31
スキームの質問

今、手元にThe Little Schemerがあるんだけど
この本に書いてある例題は全部
Dr.schemeで実行できるの?

279:デフォルトの名無しさん
08/04/17 03:33:26
1行で全部の処理をするんでなくて、
まずcdrする
次にcarする、
最後にcdrする、
と3段階に分けて処理をしたいんだけど、
どうすればいいの?
BASICみたいに
a=(a,b,c)
みたいにリストを変数に代入して、
ってできるの?

280:デフォルトの名無しさん
08/04/17 04:21:40
(let* ((a '(a b c))
(a (cdr a))
(a (car a))
(a (cdr a)))
a)

281:デフォルトの名無しさん
08/04/17 04:27:41
(progn
(setq a '(a b c))
(setq a (cdr a))
(setq a (car a))
(setq a (cdr a))
)
Lispならこんなのでいいんでないの

282:デフォルトの名無しさん
08/04/17 06:53:06
CL全然知らないんだけど手続きぽく書きやすいのかな。

283:デフォルトの名無しさん
08/04/17 07:11:22
端っこに括弧がいるから慣れない人は書きにくいと思う。
Lisp脳が育つと括弧を空気のように感じるようになる。

284:デフォルトの名無しさん
08/04/17 07:41:53
いや、Schemeにくらべてってこと。

285:デフォルトの名無しさん
08/04/17 07:43:50
再帰じゃなくloop使うと手続き型っぽくなるよ。(カッコだらけだけど)

286:デフォルトの名無しさん
08/04/17 08:00:11
>>273
> あと全く別の問題として、schemeのために開発環境を変えるということ自体がちょっと嫌なんです。
いずれEmacs+Schemeに慣れればVisual Studioには戻りたくなくなる。
そうでなければそもそもSchemeには縁がない。

287:デフォルトの名無しさん
08/04/17 08:21:30
>>284
SICPやSchemerシリーズやっている人は、
schemeが手続き型っぽく書けないと思い込んでいる人が多い。
ただそれらのテキストが関数型っぽく書いているというだけなのに。
Common Lispとさほど変わらない。

288:デフォルトの名無しさん
08/04/17 08:57:25
>>287
本当?かなり違うと思ってた。

例外とかgotoとかを手続型と
さほどかわらないように書くにはどうするの?


289:デフォルトの名無しさん
08/04/17 09:32:52
手続き型っぽいのがgoto?

290:デフォルトの名無しさん
08/04/17 09:34:13
つ loopマクロ

291:デフォルトの名無しさん
08/04/17 09:43:41
つ 継続

292:デフォルトの名無しさん
08/04/17 10:06:59
; f(g(h(x)))
(apply (fcompose f g x) x)
みたいなものができる筈なんで>>279の処理も
(fcompose-and-apply cdr car cdr a)
みたいにできるfcompose-and-apply(仮)が書ける気がせんでもない



293:デフォルトの名無しさん
08/04/17 10:08:35
tagbody は?

294:デフォルトの名無しさん
08/04/17 10:13:13
emacs lispならconditon-case(try..catch)とかsignall, error(throw)とか
unwind-protect(finally)とかあるから殆んど手続き型と同じように書けるよ
R6RSにも似たようなものがあるはず

295:デフォルトの名無しさん
08/04/17 11:43:51
>>288
例外はr6rsに入ってただろ。手軽にやりたいなら継続呼べばいいし。
goto相当のジャンプも継続が使えるけど、
継続はラベルじゃなくてオブジェクトなので使い勝手をgotoみたいにしたいなら
自前でラップしなきゃ駄目かもな。

296:デフォルトの名無しさん
08/04/17 13:01:50
S式でいいならマクロでなんでもできる。CLならCインタープリタの実装まであるくらいだ。

297:デフォルトの名無しさん
08/04/17 14:51:41
Google Apps APIs をlispから使う方法ないのでしょうか?

298:デフォルトの名無しさん
08/04/17 17:02:27
>>297
使えよ

299:デフォルトの名無しさん
08/04/17 17:08:01
ないならnilを、あるなら使い方を返していただきたいのですが。

300:デフォルトの名無しさん
08/04/17 17:32:41
>>299
(values nil
"URLリンク(www.cliki.net)"
"Clikiにはズバリはないみたいだけど、
cl-ajaxとかでできるのかな。"
"よくわからない。")

301:デフォルトの名無しさん
08/04/17 21:12:46
>>247
d。miniKANRENは徐々に進化しているようでした。
leanTAP⇒KANREN⇒miniKANREN⇒alphaKANREN
URLリンク(www.cs.indiana.edu)
URLリンク(kanren.sourceforge.net)

ParentheCというパーサー(c⇒scheme)を見つけました。
パターンマッチはolegのものを流用してます。
URLリンク(www.cs.indiana.edu)
URLリンク(www.cs.indiana.edu)

Prologもどきと軽く思ってたけどReasoned Schemerって意外に深いのかな。
型推論のHindley-Milner type inferenceとかOCAMLみたいw

302:デフォルトの名無しさん
08/04/17 21:27:16
CPSによるパターンマッチのマクロ by Oleg Kiselyov.
URLリンク(www.cs.indiana.edu)

303:277
08/04/17 23:07:24
>>233の人ー、WiLiKiで、VC++の項目とか、
Windows向けインストーラの話とか、
色々更新されたから行っといでー。

釣りじゃないなら、話し合う絶好の機会だよー。

304:デフォルトの名無しさん
08/04/17 23:33:37
>>286
schemeの処理系を書く環境と
schemeを書く環境はちょっと違うと思うぞ。

305:デフォルトの名無しさん
08/04/17 23:35:06
>>304
SchemeでSchemeを書けばいいジャマイカ

306:デフォルトの名無しさん
08/04/17 23:42:20
いまおれいいこといった
と思ってるに違いない
空気読めない奴の発言は反吐が出る

307:デフォルトの名無しさん
08/04/17 23:49:17
>>306
何でそんな事でいきなりヒートアップするんだよ。

まあ、元の話題はC++にSchemeを組み込みたい、って話だったから、
>>286のレスが明後日の方向を向いてるとは、俺も思うけどさ。

308:デフォルトの名無しさん
08/04/18 00:21:32
>>307
きっと胃が悪いんだよ<反吐が出る

309:デフォルトの名無しさん
08/04/18 00:53:51
SchemeでSchemeの処理系を書いてParentheCでCにポートすればC++にSchemeを組み込めるな。
Cで書かれたTinySchemeをマージするほうが簡単かもしれないがw

310:デフォルトの名無しさん
08/04/18 00:59:13
SchemeでSchemeの処理系を書くならLisp in Small Piecesのサポートページに色々情報がある。
URLリンク(pagesperso-systeme.lip6.fr)

311:デフォルトの名無しさん
08/04/18 01:12:59
なんか知らんが1人イラついてる人が居るな。
本当に自分の方がレベルが高いなら、
別に同じレベルと思われても構わないという態度で
淡々としてれば良いのさ。

あるいはそんなものスルーして自分の興味のある別の、
レベルの高い話を振ればいいよ。

312:デフォルトの名無しさん
08/04/18 01:15:14
(eval (read))ですね、わかります

313:デフォルトの名無しさん
08/04/18 01:16:33
>>278
本の中に動かない例があるけどw
それ以外は全部動くよ。当然だけど。


DrSchemeのライブラリって面白いのが結構あるなぁ
URLリンク(planet.plt-scheme.org)

HtDPやEOPLだけじゃなくSICPやSimplyのためのpltがちゃんとある。
でもLittle用はない。なくても動くから。

314:sage
08/04/18 11:25:53
MOP レシピ集みたいなページはありませんか?

315:デフォルトの名無しさん
08/04/18 12:00:39
XML-MOPのコードはどうよ?

316:デフォルトの名無しさん
08/04/18 17:50:13
ソケット関係で挫折しそうなんだけど、苦労するといいことあるのかな
同じ内容のpythonのプログラムは動くこと確認したんだけど

317:デフォルトの名無しさん
08/04/18 18:04:18
仕事じゃないなら好きにすればいい。

318:デフォルトの名無しさん
08/04/18 18:36:08
>>316
pythonでやれば?

319:デフォルトの名無しさん
08/04/19 01:40:56
URLリンク(www.cs.indiana.edu)
ここのpmatchを、define-macroで書き直すとどうなるでしょうか。
syntax-rules内の'...'の展開のされ方がよく判らんのです。
1つのパターン内に'...'が複数使われているのがあって、
これは残りの同一のパターンにマッチするという事なんでしょうか。

例えばこの部分とか
((_ (rator rand ...) cs ...)
(let ((v (rator rand ...)))
(pmatch v cs ...)))


320:デフォルトの名無しさん
08/04/19 01:53:38
それぞれに(別々に)マッチするって感じだね。
これだから衛生的なマクロは嫌いなのだ。

321:デフォルトの名無しさん
08/04/19 01:54:12
質問が判りにくいですね。つまり上のrandの後の ...と、
csの後の ... の中身は違っててもいいのかどうか?
ってことです。
'...'はその文脈の残り((car . cdr)のcdr)という意味しかない
と考えてよいのでしょうか?

322:デフォルトの名無しさん
08/04/19 01:54:44
>>320
やはりそうですか。
だとするとまぎらわしいですね。

323:デフォルトの名無しさん
08/04/19 02:00:14
あと1つ確認したいのですが、>>319の意味を変えずに
((_ (rator rand . rest1) cs . rest2)
(let ((v (rator rand . rest1)))
(pmatch v cs . rest2)))
こういう風に書き直す事は可能でしょうか?
リストじゃないからできないとか昔どこかで見たような気がするのですが。


324:デフォルトの名無しさん
08/04/19 02:21:56
rand ... の部分は0個でもマッチする
rand . rest1 と書くと1個以上になるから意味が変わってしまう

325:デフォルトの名無しさん
08/04/19 02:30:39
そうだったんか…
キモイなそれ

326:デフォルトの名無しさん
08/04/19 02:53:15
>>324
つまり書き直すなら
((_ (rator . rand) . cs)
(let ((v (rator . rand)))
(pmatch v . cs)))
という事でしょうか?

327:デフォルトの名無しさん
08/04/19 03:00:02
そうだけど実際に使って確認するのが一番いいね

(define-syntax hoge
(syntax-rules ()
((_ x ...) (list x ... x ...))))
デフォルトで ,@ がついてるようなイメージ

(defmacro hoge (&rest x)
`(list ,@x ,@x))

328:デフォルトの名無しさん
08/04/19 03:15:54
((_ ((symbol value) ...) . body)
((lambda (symbol ...) . body) (+ value 1) ...))

とか、すごい展開をするんだよね、 ... って。

329:デフォルトの名無しさん
08/04/19 11:00:44
Commom LISPの方はSchemeのそういうコードを移植したい時
どうしてます?defmacroに変換するようなのないかな。

330:デフォルトの名無しさん
08/04/19 13:00:59
これですね
Scheme Macros for Common Lisp
URLリンク(www.ccs.neu.edu)

331:デフォルトの名無しさん
08/04/19 22:50:21
TinyScheme
URLリンク(tinyscheme.sourceforge.net)

TinyScheme Extensions
URLリンク(heras-gilsanz.com)

OOPS Tiny Scheme Extension
URLリンク(aladdin.sourceforge.net)

TinyScheme for Zaurus
URLリンク(www.alphageeksinc.com)

332:デフォルトの名無しさん
08/04/19 22:53:44
>>309
ParentheCってlambdaすら処理できないみたいだよ。
これでCにポートしろなんて詐欺もいいとこ。

333:デフォルトの名無しさん
08/04/19 23:29:28
使い方を理解しないで使うからジャマイカ?

334:デフォルトの名無しさん
08/04/19 23:56:39
トランスレータに使い方も糞もあるか

335:デフォルトの名無しさん
08/04/20 00:29:25
Scheme処理系は腐るほどある
ライブラリも (C/C++なら) たくさんある
後はそれを組み合わせることを考えよう

336:デフォルトの名無しさん
08/04/20 00:34:22
コイツ>>334、なんでこう喧嘩腰なんだろな。氏ね。


337:デフォルトの名無しさん
08/04/20 00:36:49
糞チョンとシナチク氏ね。

338:デフォルトの名無しさん
08/04/20 01:09:37
ジャマイカ発言の後は荒れるんだよ。

339:デフォルトの名無しさん
08/04/20 01:32:46
とりあえず>>334はいっぺん氏ね

340:デフォルトの名無しさん
08/04/20 03:36:46
>>333
あれって使い方でどうにかなるもんなの?

341:デフォルトの名無しさん
08/04/20 09:17:16
DRAKMAがubuntu 7.10 sbclのasdf-installでこけて止まる

342:デフォルトの名無しさん
08/04/20 12:11:37
>>341
SBCL 1.0.16
DRAKMA 0.11.5
ubuntu 7.10
で今試したけど大丈夫だった。

343:デフォルトの名無しさん
08/04/20 18:55:28
psyntaxがGaucheでも使えるって書いてあるけど、使い方わかんねー。
と思ってたら一発で使えるように同梱されたビルドがあった。
URLリンク(saito.s4.xrea.com)
psyntax.exeってのがそうみたい。
exeにするのってどうやったんだろ?

344:デフォルトの名無しさん
08/04/20 20:35:00
どうでもいい

345:デフォルトの名無しさん
08/04/20 20:42:29
またexe厨か…

346:デフォルトの名無しさん
08/04/20 21:38:38
schemeでなくてlispでexe作ったら?
newlispなんかだと簡単だよ
SBClやCormanLispなんてのもあるけど

347:デフォルトの名無しさん
08/04/20 22:05:06
別に言語まで変える必要もないと思うけど。
処理系のソースがあるんならschemeのソースを埋め込んで
スタートアップで呼び出すようにすれば完成でしょ。
VMで動くようなのはコンパイル後のやつ入れとく。
これだからオプソって意味ないんだよな。

348:デフォルトの名無しさん
08/04/20 22:10:07
>>343
Gaucheのtarball落としたら中にgencompってのがある。
それでVM用コードにして適当なmainだけ書いてgccでコンパイル。

349:デフォルトの名無しさん
08/04/20 22:24:02
「プログラミングGauche」でSchemeデビューしようとしていきなりつまずいてます。
(define 'a #f)
(set! a 1)
(display a)

これは

gosh> quote
gosh> 1
gosh> 1#<undef>

となって動くんですが

(define 'line #f)
(set! line "foo\n")
(display line)

と変えるとエラーになります。

gosh> quote
gosh> *** ERROR: symbol not defined: #<id 0x80eb100 user::line>
Stack Trace:
_______________________________________
gosh> *** ERROR: unbound variable: line
Stack Trace:
_______________________________________

どこが間違ってるんでしょうか?


350:デフォルトの名無しさん
08/04/20 22:32:39
ワロタ
(define 'a
(define 'line
ここが間違ってる。それぞれ
(define a
(define line
が意図するものだと思う。

(define 'a

(define quote (lambda(a)〜
と解釈される。

351:デフォルトの名無しさん
08/04/20 22:38:57
>>350
多分 *scheme* バッファの中で一度 (define a なんとか) を
実行してたから、a が定義されていたんですね。
*scheme* バッファを再起動してたら両方とも動かなくなって
気付いたと思うのですが。

ありがとうございました。


352:デフォルトの名無しさん
08/04/20 22:46:14
こういう記述間違いは処理系作者からは斜め上で予測不可能なんだよな。
quoteを再定義したいなんて思わんし、エラーにすべきか。

353:デフォルトの名無しさん
08/04/20 23:51:39
Gauche scheme interpreter, version 0.8.3 [utf-8,pthreads]
という環境で、
#!/usr/bin/gosh
(define (main args)
  (while (not (eof-object? (set! line (read-line))))
  (print line))
  0)
というスクリプトを書いて euc-jp なテキストファイルを読み込ませたら
~$ gosh test.scm <text.txt
*** READ-ERROR: Read error at "(stdin)":line 2: read-line: encountered illegal byte sequence: #*"\xc1\xcf\xc0\xa4\xb5\xad\t1\t1\t"
Stack Trace:
_______________________________________
  0 (read-line)
  At line 3 of "./test.scm"
  1 (letrec ((do (lambda () (if (not (not (eof-object? (set! line (rea ...
  [unknown location]
というエラーになりました。
euc-jpなままで読んでeuc-jpのまま書き出すにはどうすればいいのでしょうか?

354:デフォルトの名無しさん
08/04/21 00:20:03
>>353 gauche.charconv

355:デフォルトの名無しさん
08/04/21 00:46:50
こうなりました。with-ports を使おうとしたら、
*** ERROR: unbound variable: with-ports
となりました。何故?

#!/usr/bin/gosh
(use gauche.charconv)

(define raw-in (current-input-port))
(define raw-out (current-output-port))
(define in (wrap-with-input-conversion raw-in "eucjp"))
(define out (wrap-with-output-conversion raw-out "eucjp"))

(define line #f)

(define (main args)
  (while (not (eof-object? (set! line (read-line in))))
  (display (string-append line "\n") out))
  0)


356:デフォルトの名無しさん
08/04/21 03:59:58
何故?とか言う前にフォルダ内検索しろよ

357:デフォルトの名無しさん
08/04/21 05:06:07
slimeで対応する() に自動で色がつかなくなることがあるのだけど
どうすればもどるの?
他に開いてるlispのバッファーを全部kill bufferすれば直るけど
buff殺さないで直したい

358:デフォルトの名無しさん
08/04/21 05:38:24
>>357
どういう環境だとそうなるの?
漏れはそんな現象に遭遇したことない。
show-paren-modeがなんらかのタイミングでoffになったとか?

359:デフォルトの名無しさん
08/04/21 06:30:08
C-c C-p
を何度もしてるといつのまにかなる

360:デフォルトの名無しさん
08/04/21 08:21:48
>>356のヒントをもとに検索してみた。
/usr/share/gauche/0.8.3/lib$ find . -type f | xargs grep with-ports
/usr/share/gauche/0.8.3/lib$
なにもみつからなかった。


361:デフォルトの名無しさん
08/04/21 13:05:06
lispの場合、どのぐらいの大きさのprogramになったらファイルを分けるの?


362:デフォルトの名無しさん
08/04/21 14:45:07
大きさを基準にしては分けない

363:デフォルトの名無しさん
08/04/21 16:52:39
>>361
package毎に分割しない?

364:デフォルトの名無しさん
08/04/21 19:36:23
日本語の正規表現処理はできないと思っていいのでしょうか?
sbclなのですがどの日本語コードを使うのがお勧めなのでしょうか?

365:デフォルトの名無しさん
08/04/21 20:48:56
cp932と言ってみるテスト

366:デフォルトの名無しさん
08/04/21 21:02:05
Schemeのオブジェクト指向

BOS (Bryan's Object System)
MEROON ・・・Christian Queinnecによる。情報があまり無いけど有限要素法とかつかえるらしい。runge-kutta-4にあきたらやってみる。
SCOOPS (Scheme Object Oriented Programming System)
Tiny CLOS ・・・なんとたったの850行!"The Art of the Metaobject Protocol"に出てくるsimple CLOSよりコンパクトな学習用。
YASOS (Yet Another Scheme Object System)

367:デフォルトの名無しさん
08/04/21 21:16:55
>>364
UTF-8で普通に使える処理系が多い(または増える)と思う

368:デフォルトの名無しさん
08/04/21 21:26:01
>>367
BOMあり?8Nでおk?

369:デフォルトの名無しさん
08/04/21 21:29:06
処理系によるんじゃね?

370:デフォルトの名無しさん
08/04/21 21:49:45
>>355
with-portsは組み込み手続きだから見つからないって変だな。
プラットフォームは何? インストールはどうやった?


371:デフォルトの名無しさん
08/04/21 22:38:45
一方exe厨はバイナリを配った

372:355
08/04/21 22:53:03
>>370
Debian sarge(3.1)で、aptitudeからインストールしました。
Gaucheのバージョン(0.8.3)が古過ぎるんでしょうか。

~$ aptitude show gauche
パッケージ: gauche
ステータス: インストール済み
自動的にインストールされる: no
バージョン: 0.8.3-3
優先度: 任意
分類: interpreters
保守担当者: Hatta Shuzo <hattas@debian.org>
展開サイズ: 4096k
依存: libc6 (>= 2.3.2.ds1-4)
提案: slib
推奨: r5rs-doc, gauche-doc
詳細: A Scheme implementation designed for script writing
Gauche is a Scheme implementation developed to be a handy script interpreter, which
allows programmers and system administrators to write small to large scripts for their
daily chores. Quick startup, built-in system interface, native multilingual support are
some of the author's goals.
~$ gosh -V
Gauche scheme interpreter, version 0.8.3 [utf-8,pthreads]
~$ gosh -i
gosh> with-input-from-port
#<subr with-input-from-port>
gosh> with-ports
*** ERROR: unbound variable: with-ports
Stack Trace:
_______________________________________




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

5371日前に更新/111 KB
担当:undef