関数型言語ML (SML, OCaml, etc.), Part 6at TECH
関数型言語ML (SML, OCaml, etc.), Part 6 - 暇つぶし2ch200:デフォルトの名無しさん
09/09/21 22:22:32 .net
実行時にもオーバーヘッドがある。気になるならベンチ取ってね。

201:デフォルトの名無しさん
09/10/18 14:08:13 .net
浅井さんの「プログラミングの基礎」のサポートページって消えてる?

202:デフォルトの名無しさん
09/10/31 11:31:30 .net
birdの書いたsudokuの解放プログラム面白かった。
URLリンク(www.cs.tufts.edu)

203:デフォルトの名無しさん
09/11/09 04:34:20 .net
Practical OCaml 買おうかと思ったのですが、評判悪いのが気になりました。
実際に読んだ方いましたら、感想を聞かせてください。

204:デフォルトの名無しさん
09/11/09 23:09:48 .net
> Practical OCaml 買おうかと思ったのですが、評判悪いのが気になりました。
> 実際に読んだ方いましたら、感想を聞かせてください。

たった今、ゴミだからいらないという人にもらいました。確かにゴミです。ネタとしてならどうぞ。


205:デフォルトの名無しさん
09/11/10 00:11:27 .net
俺はocamllex ocamlyacc の簡単なチュートリアルが欲しくて買ったけど、
そこについては別にひどくは無かったと思ったよ。

206:デフォルトの名無しさん
09/11/10 04:23:58 .net
コードのインデントが至るところで狂っている時点でダメでしょう。
どのページを開いても何かツッコミどころがあるというある意味貴重な本。
値段も安くはないし絶対にお薦めしない。


207:デフォルトの名無しさん
09/11/10 21:20:02 .net
URLリンク(d.hatena.ne.jp)
URLリンク(rainyday.blog.so-net.ne.jp)
URLリンク(shuns.sakura.ne.jp)

これ出た当時はオライリーのフランス語のやつ(当時すでに絶版)以外ではこれしか本がなかったけど
日本語書籍がいくつもある今買う価値はないと思いますね。


208:デフォルトの名無しさん
09/11/12 00:57:52 .net
SML#の大堀先生は、最近、何してるの?
継続してれば、有望だと思ったんだけどな・・・ > SML#


209:デフォルトの名無しさん
09/11/14 00:34:44 .net
>>201
apressの書籍ってほとんどハズレだと思う
これもハズレだったよ

210:デフォルトの名無しさん
09/11/14 02:34:17 .net
【科学】道路に軍手が落ちているワケ、名城大研究チームが突き止める[09/11/05]

スレリンク(hidari板)




211:デフォルトの名無しさん
09/11/17 02:45:27 .net
くそう軍手……気になる

212:デフォルトの名無しさん
09/11/17 13:34:53 .net
推測の為の方程式として,土礼君の方程式がよく知られている.
しかし,パラメータの値には様々な見解がある.
N = R_s * f_p * n_e * f_l * f_i * f_c * L
N:道路に落ちている軍手の数
R_s:軍手の年間生産量
f_p:軍手を使用する作業の割合
n_e:軍手を屋外で使用する割合
f_l:軍手が使用される作業の割合
f_i:軍手を着脱する回数
f_c:軍手の移動距離
L:道路上の軍手の寿命


213:デフォルトの名無しさん
09/11/17 17:11:18 .net
靴とか靴下が落ちているワケも気になるぞ
誰か研究してくれ


214:デフォルトの名無しさん
09/11/17 23:27:17 .net
そりゃ浮いてたら邪魔だからじゃないか。

215:デフォルトの名無しさん
09/11/17 23:53:58 .net
軍手なんて色気のないものに血眼になるなよ。

216:デフォルトの名無しさん
09/11/18 00:15:00 .net
>>212
ほらよ。

N = R_s * f_p * n_e * f_l * f_i * f_c * L
N:道路に落ちているパンティーの数
R_s:パンティーの年間生産量
f_p:パンティーを使用する作業の割合
n_e:パンティーを屋外で使用する割合
f_l:パンティーが使用される作業の割合
f_i:パンティーを着脱する回数
f_c:パンティーの移動距離
L:道路上のパンティーの寿命

217:デフォルトの名無しさん
09/11/18 01:10:38 .net
パンツのことをパンティと呼ぶのは40代以上。
40代未満はパンツかショーツと呼ぶ。

218:デフォルトの名無しさん
09/11/18 01:23:51 .net
>>214
ウーロン知らないの?

219:デフォルトの名無しさん
09/11/18 02:10:39 .net
最近は単語で会話するのが流行っているの?
例:
「お茶」→「俺は紅茶が飲みたい。お茶といえば緑茶じゃなくて紅茶でしょ。緑茶とかジジくさいし。」


220:デフォルトの名無しさん
09/11/18 02:30:26 .net
>>214
類似定理に「キャロライン洋子を知っている人は1969年以前生まれ」がある。

221:デフォルトの名無しさん
09/11/18 03:07:49 .net
ならばこれはどうだ

N = R_s * f_p * n_e * f_l * f_i * f_c * L
N:道路に落ちているブラジャーの数
R_s:ブラジャーの年間生産量
f_p:ブラジャーを使用する作業の割合
n_e:ブラジャーを屋外で使用する割合
f_l:ブラジャーが使用される作業の割合
f_i:ブラジャーを着脱する回数
f_c:ブラジャーの移動距離
L:道路上のブラジャーの寿命

222:デフォルトの名無しさん
09/11/18 03:16:53 .net
やめてけーれ

223:デフォルトの名無しさん
09/11/18 03:50:10 .net
>>217
72年生まれでびっくり日本新記録を見ていた私はなんですか?


224:デフォルトの名無しさん
09/11/18 12:01:06 .net
びっくり日本新記録は1975年から1985年までやっていたようだから、
72年生まれなら13歳中一まで見れていたことになる。
特別なことはなにもないと思うが。

マッハGoGoGoとか鉄腕アトムの第一作目をリアルタイムに見ていたとかいうなら驚愕ものだが。

225:デフォルトの名無しさん
09/11/18 19:34:27 .net
ここに1967年生まれの俺が居るわけだが

226:デフォルトの名無しさん
09/11/18 20:22:40 .net
5年前の俺なら老害呼ばわりしたかもしれないが、
最近はむしろ尊敬するようになってきた。
なんつーか、歳を重ねるってのはそれだけで立派だよ。

対して俺はゆとりに「この昭和生まれが」と言われてショックを受けた

227:デフォルトの名無しさん
09/11/18 20:26:52 .net
>>223
rougai

228:デフォルトの名無しさん
09/11/18 21:29:42 .net
>>223



229:そうは思わない > 最近はむしろ尊敬するようになってきた。 ああ・・・ついにお前も老害の仲間入りか。 人間というのは自分の置かれた環境や立場によって考え方を変える生き物だというだけのこと。 お前が老害ジジイを擁護するようになったということは、 老害扱いされる時期がもうすぐ目の前に来ている証拠なんだよ。 たしか60歳以上の老人たちは日本が持っているカネの55%を持っているんだよな。 そしてそのカネを何に使うかというアンケートによると、 がんばってきた自分へのご褒美に贅沢するために使うのだそうだ。 若者が苦しんでいるときにそんなことを許していいわけがないだろ。 老人を過剰に保護するのをやめても老人は困らないし、 財源確保のために老人たちから搾り取ればいいと思う。



230:デフォルトの名無しさん
09/11/18 21:37:01 .net
あと、就業における年齢制限もやめるべきだと思う。
定年を設けている企業や官公庁が大半だと思うけど、それって年齢差別だよね。
60歳でもまだまだ働ける人がほとんどなのに定年で辞めさせるのはどうかと思う。
そうする代わりに、経営者に自由に解雇する権利を与えて、年功上列・終身雇用も撤廃して、
終身雇用に安住している無能なやつ(老害)をどんどん解雇していけばいいと思う。
無能な奴は一生平社員の単純労働でこき使えばいいよ。
長い間単純労働してるからといって才能の無い奴を無理に昇進させる必要もないと思う。

231:デフォルトの名無しさん
09/11/18 21:41:57 .net
アホかw

232:デフォルトの名無しさん
09/11/18 21:42:48 .net
>>223
歳を重ねるだけで得られるようなものなら誰でも手に入るから価値は無い。

233:デフォルトの名無しさん
09/11/18 21:45:57 .net
>>226
解雇すればいいのに、こき使うの?

234:デフォルトの名無しさん
09/11/18 21:49:56 .net
俺も高齢者は手厚く保護されすぎているように思う。
もっと若者と同じように扱えばいいのにね。
具体的にどこか体が故障している人を障害者認定して、
障害者として文化的な生活をおくるために補助をするなら分かるけど、
高齢者だからという理由だけで保護するのは過保護というものじゃないかな。

235:デフォルトの名無しさん
09/11/18 21:52:31 .net
ML と関係ない話は他所でやれ

236:デフォルトの名無しさん
09/11/18 21:53:24 .net
ジジババとかマジいらねえ
団塊世代は頭が鈍くて経験も役に立たないし物事を計画的にするのも下手だし散らかすのだけは一流で後片付けのことは微塵も考えないゴミなんだよなぁ

237:デフォルトの名無しさん
09/11/18 21:53:31 .net
>>225
> がんばってきた自分へのご褒美に贅沢するために使うのだそうだ。

金が回るならいいことじゃないか

238:デフォルトの名無しさん
09/11/18 21:54:24 .net
そう、そのウンコどもが苦手な分野こそが関数型言語

239:デフォルトの名無しさん
09/11/18 21:56:33 .net
>>233
ところが、使った分が戻っていくのが世にも奇妙な現象

240:デフォルトの名無しさん
09/11/18 21:57:38 .net
さっさとMLをブームにして金を使わせろ

241:デフォルトの名無しさん
09/11/18 22:02:41 .net
>>236
ダメ、ジジババはコンピュータ音痴だから。

242:デフォルトの名無しさん
09/11/18 22:17:02 .net
なにやら怨念めいたものを感じるな
南無阿弥陀仏

243:デフォルトの名無しさん
09/11/25 12:41:38 .net
'M`L < 新言語できたよー

244:デフォルトの名無しさん
09/11/26 15:44:50 .net
団塊世代は経済の成長期に楽しくお仕事して、下向きになったらつまらないから働くのやめるとか言い出す。
おいしいところだけ食べてトンズラとかマジきめえw
自分たちの責任を後世に押し付けて、自分は今まで楽しく稼いだお金で楽しく老後を過ごす予定なのか?
そんなことが許されるわけがない。
世の中みんなが辛いと思っているんだから自分だけ良い思いをしようとするなんて許されるわけがない。
団塊世代は身勝手だ。
搾取されるべきは団塊世代だ。
金があるんだから搾取してもかまわないだろ?

245:デフォルトの名無しさん
09/11/26 16:25:40 .net
一番の癌は大企業にぶらさがってる労組だな
特にJALやJRや某新聞社の労組
それから日教組
こいつらが日本のまじめな生産者の利益を貪ってる

246:デフォルトの名無しさん
09/11/26 16:27:14 .net
企業経営者が自由に社員をクビにできないのが問題。

247:デフォルトの名無しさん
09/11/26 16:47:17 .net
正社員を簡単にクビに出来ないから
会社は正社員じゃなくて派遣を使いたがる
派遣ピンハネ業だけが儲かる

248:デフォルトの名無しさん
09/11/26 16:52:24 .net
クビにできないのを良いことに労働組合を背景にやりたい放題やって楽して金だけもらって逃げた団塊世代

249:デフォルトの名無しさん
09/11/26 16:53:19 .net
良いこと考えた
正社員を派遣すればいいんじゃん

250:デフォルトの名無しさん
09/11/26 18:11:29 .net
マルチのコピペにいちいち釣られてんのか
コピペした奴が自分で反応してんのか
どっちにしてもアホだ

251:デフォルトの名無しさん
09/11/26 18:58:16 .net
>>245
面倒だから経営も外注するか。

労組嫌ってるやつは公務員か?死ねよ

252:デフォルトの名無しさん
09/11/26 19:03:43 .net
スレリンク(tech板)l50

253:デフォルトの名無しさん
09/12/06 22:09:27 .net
>>243
欧州のどこだかは、派遣使うとそれだけ割高になるような法律になってるとか
聞いたことある。


254:デフォルトの名無しさん
09/12/07 00:49:50 .net
>>245
プログラマの派遣なら、正社員の派遣が主流じゃないか?

>>249
法律なんか作らなくても、市場原理に任せておけば派遣のほうが高くなる。
レンタルとリースのどっちが割高かってこと。
むしろ、法律によって市場を歪めているのが諸悪の原因。

255:デフォルトの名無しさん
09/12/31 15:29:23 .net
>>250
どの法律のこと?


256:デフォルトの名無しさん
09/12/31 19:26:50 .net
おい、押すなよ、、絶対だぞ」

257:デフォルトの名無しさん
09/12/31 21:53:25 .net
ポチっとな

258:デフォルトの名無しさん
10/01/03 16:49:17 .net
val () = print "あけおめ\n"

259:デフォルトの名無しさん
10/01/07 21:35:11 .net
OCaml用のlibcurlバインディングらしい、ocurlを入れようとしたのですがエラーが出ます。
curl-helper.c
主に「dereferencing pointer to incomplete type」というエラーが大量に出ます。
どうすればいいのでしょうか。
./configやlibcurlのインストールなどは済ませています。
環境はMSYS + MinGW、Windows 7です。

260:デフォルトの名無しさん
10/01/08 18:36:46 .net
libcurl のバージョンは。


261:デフォルトの名無しさん
10/01/08 18:43:34 .net
バージョンはよいみたい。一度古いので苦労した記憶がある


262:デフォルトの名無しさん
10/01/09 03:51:07 .net
libcurlはWindows版では最新の7.19.7を入れました。
MinGWは最新のものを入れています。
ところで、URLリンク(jocaml.inria.fr)URLリンク(caml.inria.fr) が落ちているのですが。

263:デフォルトの名無しさん
10/01/09 04:31:29 .net
URLリンク(caml.inria.fr)
ここの例通りにCでOcamlのモジュール使おうと試してるんだけどうまくいかない。
最後の手順の cc -o prog main.c mod.a -lcurses で詰まっています。
mod.a(startup.o):startup.c:(.text+0x9e): undefined reference to `__lseeki64'
mod.a(startup.o):startup.c:(.text+0x240): undefined reference to `__lseeki64'
mod.a(startup.o):startup.c:(.text+0x2e7): undefined reference to `__lseeki64'
mod.a(startup.o):startup.c:(.text+0x93b): undefined reference to `__beginthread'
mod.a(sys.o):sys.c:(.text+0x7): undefined reference to `__errno'
mod.a(sys.o):sys.c:(.text+0xf7): undefined reference to `__errno'
mod.a(sys.o):sys.c:(.text+0x101): undefined reference to `__errno'
mod.a(str.o):str.c:(.text+0x30f): undefined reference to `__imp___pctype'
mod.a(str.o):str.c:(.text+0x32c): undefined reference to `__isctype'
こんなエラーが大量に出る。
libcamlrun.aが怪しいと思うのだけれどどうすればいいかわからない。

環境はXPでCygwin Ocamlは3.10.2
Cygwinでocamlc -c modwrap.cすると何故かアクセスが拒否されるので modwrap.cとmod.mlのコンパイルはMinGWでやりました。


264:デフォルトの名無しさん
10/01/09 08:51:21 .net
>>259
Cランタイムのシンボルを見つけられてない、ということで
>Cygwinでocamlc -c modwrap.cすると何故かアクセスが拒否されるので modwrap.cとmod.mlのコンパイルはMinGWでやりました。
が怪しい。
この部分MinGWとCygwinの互換性はあるの?Cygwin知らんけど、全部-mnocygwinならどうだろう。

265:デフォルトの名無しさん
10/01/09 09:28:15 .net
>260
>この部分MinGWとCygwinの互換性はあるの?
エラーが出てるのは正に MinGW と Cygwin で互換性のなさそうな部分だね。

>259
>何故かアクセスが拒否される
modwrap.c を Windows ネイティブのアプリで編集していたりすると発生する場合もあるので
・Cygwin アプリで編集する
・mkpasswd とか使って /etc/passwd を見直してみる
・とりあえず chown / chmod してみる
・ACL 周りの設定を変えてみる(mount とか環境変数 CYGWIN とか)
あたりはどうだろ。

266:デフォルトの名無しさん
10/01/11 21:48:13 .net
>>260
>>261
助言ありがとうございます。
レスを頼りにいろいろ試してみましたが、だめでした。
OcamlもCygwinも使ってまだ日が浅いので大事なところを見落としているのかもしれません。
今忙しいのであまり時間が取れないのですが、Cygwinで揃えてまたいろいろと試してみようと思います。
本当にありがとうございました。

267:デフォルトの名無しさん
10/02/06 21:54:14 .net
Moscow ML 使ってみようと思ったら、もうずっと更新されてないんだね…

268:デフォルトの名無しさん
10/02/19 00:01:29 .net
SchemeとMLは、心が洗われるわー

269:デフォルトの名無しさん
10/02/19 23:52:14 .net
あー汚れてるんですね


270:デフォルトの名無しさん
10/02/22 10:15:16 .net
はい

271:デフォルトの名無しさん
10/02/26 18:43:33 .net
        

272:デフォルトの名無しさん
10/03/18 02:27:03 .net
OCamlはCにembedできますか?

273:デフォルトの名無しさん
10/03/22 23:27:08 .net
Milnerが亡くなったそうだね

274:デフォルトの名無しさん
10/03/22 23:32:10 .net
URLリンク(lambda-the-ultimate.org)

ホントだ。ご冥福をお祈りします。
ML は勉強していて楽しかったです。

275:デフォルトの名無しさん
10/03/28 22:50:27 .net
『プログラミングの基礎』 浅井健一著 を買ってポチポチ楽しく
やってるんですが、著者のサポートサイトに書いてあるように
やっても、未だに日本語の表示が出来ません。

URLリンク(pllab.is.ocha.ac.jp)

環境はWinXPのVMPlayer上のDebian(lenny)でやってます。
端末でインタープリタ走らせてる場合も、Emacs上でtuareg-
modeでやってる場合も文字コードが表示されてしまいます。

助けてけろ~

276:デフォルトの名無しさん
10/03/28 23:42:03 .net
分からんけど、なんでLANG=en_USのISOなんとかなんだろ?ja_JP.eucJPとかじゃないのか

277:デフォルトの名無しさん
10/04/09 23:58:56 .net
OCamlはoreilly本来ないね

278:デフォルトの名無しさん
10/04/11 20:56:52 .net
>>270
奥さん亡くなった三日後に心筋梗塞か。

279:デフォルトの名無しさん
10/04/11 21:10:03 .net
ご冥福をお祈りします。

280:デフォルトの名無しさん
10/04/12 22:51:23 .net
あの世で福??

281:デフォルトの名無しさん
10/04/21 21:04:50 .net
signatureのfunctorの使い方がよくわかりません。

signatureを受け取ってstructureを返すfunctor Aと、
signatureを受け取ってsignatureを返すfunctor Bを定義したとします。

signature CにAとBを適用したものをA(C), B(C)としたとき、
A(C)にB(C)を適用したstructureはどうしたら使えますか?

282:277
10/04/21 21:06:26 .net
言い忘れました。OCamlの話です。

283:277
10/04/21 22:56:41 .net
すみません、自己解決しました。

284:デフォルトの名無しさん
10/04/22 01:34:18 .net
あれ?OCamlのfunctorってsignatureを受け取ったり返したり出来るの?
受け取るのも返すのstructureだけだと思ってた

285:デフォルトの名無しさん
10/04/22 01:38:21 .net
ドキュメント読んでみたけど、
URLリンク(caml.inria.fr)
やっぱりfunctorがsignatureを受け取れるようには見えないなぁ

286:デフォルトの名無しさん
10/04/25 12:26:40 .net
質問していいですか。
'a * 'bの値を受け取り、型'aと'bが等しいか否かを判定する関数はo'camlで書けますか?

287:デフォルトの名無しさん
10/04/25 22:33:07 .net
>>283

288:デフォルトの名無しさん
10/04/25 22:54:26 .net
>>284

289:デフォルトの名無しさん
10/04/26 00:03:13 .net
>>282
何がしたいのか分からないけど
OCamlでは型情報は実行時には残っていないので
そういう型を扱うプログラムは一切かけないとおもう

290:デフォルトの名無しさん
10/04/26 21:09:56 .net
OCamlってなんで最上位ビットをゴミ集め様に使っちゃうようにしたのかな。
なんか、これが凄くアダになってるように思えるのだが

291:デフォルトの名無しさん
10/04/27 20:51:34 .net
Lisp系含めてわりと見かける仕様なんじゃ

292:デフォルトの名無しさん
10/04/29 20:07:48 .net
$ sudo aptitude install ocaml
 …
以下の新規パッケージがインストールされます:
camlp4{a} ledit{a} libdrm2{a} libgl1-mesa-glx{a} libpthread-stubs0{a}
libpthread-stubs0-dev{a} libx11-dev{a} libxau-dev{a} libxaw7{a}
libxcb-xlib0-dev{a} libxcb1-dev{a} libxdmcp-dev{a} libxext-dev{a}
libxi-dev{a} libxmu6{a} libxpm4{a} libxtst6{a} libxv1{a} libxxf86dga1{a}
libxxf86vm1{a} ocaml ocaml-base{a} ocaml-base-nox{a} ocaml-interp{a}
ocaml-nox{a} tcl8.4{a} tk8.4{a} x11-utils{a} x11proto-core-dev{a}
x11proto-input-dev{a} x11proto-kb-dev{a} x11proto-xext-dev{a} xbitmaps{a}
xterm{a} xtrans-dev{a}
0 個のパッケージを更新、 35 個を新たにインストール、 0 個を削除予定、0 個が更新されていない。
29.4MB のアーカイブを取得する必要があります。 展開後に 97.0MB のディスク領域が新たに消費されます。

(#^ω^)ピキピキ

293:デフォルトの名無しさん
10/04/29 20:14:14 .net
>>288
ocaml-nox

294:デフォルトの名無しさん
10/04/30 12:32:47 .net
こそは自分でMakeだろJK

295:デフォルトの名無しさん
10/05/01 16:43:51 .net
SML#は生きていた

296:デフォルトの名無しさん
10/05/02 01:19:01 .net
音沙汰なくてちょっと諦めかけてたから新バージョンリリースめでたい

297:デフォルトの名無しさん
10/05/05 04:16:18 .net
OCamlの型で 'a. 'a list というのを見たんですけど、この「.」って何ですか?

298:デフォルトの名無しさん
10/05/05 07:24:38 .net
「.」が何かと言われるとむずいな
「'a.」は「任意の型パラメータを'aとし、その'aついて...(for all)」の意味
例えば、
type 'a t = { e : 'a }
は'aを型パラメータに取るけど、
type 'a t = { e : 'a; p : 'b. 'b list }
とすると、任意の型'bをパラメータに持つ型をレコードの要素にできる
もちろん
type 'a t = { a : 'a; p : 'b list }
は'bがunboundだからエラー

299:デフォルトの名無しさん
10/05/05 15:33:12 .net
>>294
ありがとうございます

300:デフォルトの名無しさん
10/05/15 22:35:32 .net
SMLにはレコード更新の機能がなく、日常的に苦労しているので、ネイティブコードが
はけるSML#のリリースは待ち遠しかった。
ただ、欲を言うと、レコード拡張も言語としてサポートして欲しかった。


301:デフォルトの名無しさん
10/05/16 08:50:49 .net
>SMLにはレコード更新の機能がなく、日常的に苦労している
すげえ、日常的にか。仕事に使ってるの?
>ただ、欲を言うと、レコード拡張も言語としてサポートして欲しかった。
レコード拡張って?

302:デフォルトの名無しさん
10/05/17 17:27:31 .net
MLton って無限ストリーム使ったプログラムも最適化してくれるの?

303:デフォルトの名無しさん
10/05/18 22:20:33 .net
>>297
小規模な数値計算をしているだけで、すごいことはしていません。
Fortranで十分ですが、いくつかの部品を定義して、NJの対話環境
で評価することで、試行錯誤できて重宝してます。

レコードの拡張
連結と言うべきだった。
{a=1,b=2}#{c=3}
val it={a=1,b=2,c=3}
ができると嬉しい。

304:デフォルトの名無しさん
10/05/21 01:51:26 .net
Vimのインデントファイルで
ocaml.vimやomlet.vimより
いいものありませんか?

305:デフォルトの名無しさん
10/05/21 21:02:03 .net
MLで書くときはスタイルに悩むね。
inの前で改行すべきか?
連続するletはインデントすべきか?
などなど


306:デフォルトの名無しさん
10/05/22 23:36:50 .net
スタイルは悩みますね。
今のところ連続するletもinの後も
インデントしないようにしています。

ただ、こう書きたいという思いがあっても
Vimのインデントファイルでは
うまくいかないことがあって困ります。

ユーザーの多そうなEmacsを使った方が
いいのかもしれません。ま、それを
言ったら関数型言語もHaskellということ
になるかもしれませんが…

307:デフォルトの名無しさん
10/06/04 16:33:24 .net
Ocamlで
let plus x y = x + y があるとき
xより先にyに代入する方法はあるますか?

308:デフォルトの名無しさん
10/06/04 20:40:08 .net
λ式を使えば良いのでは。
すでに、y = aの代入が決まっているときは、
(fun x -> plus x a)
まだのときは、
(fun y -> fun x -> plus x y)
を使う。
※SML使いなので、構文上の間違いはあるかもしれぬ。


309:デフォルトの名無しさん
10/06/04 20:44:13 .net
これも、一種のスタイル問題だが、
列挙型を定義するときに、
datatype X = X1 | X2 | X3 | ...
とするか
type X = int
val X1 = 1
val X2 = 2
...
とするかで悩んでしまう。最初は、vector (ランダムアクセス)を使わない
見込みだったのだが、必要になったときのことを心配してしまう。

310:デフォルトの名無しさん
10/06/04 22:34:46 .net
そういう心配をしなくていいくらいコンパイラの最適化は賢いから安心して代数データ型を使えという話をどこかで見た気がするのだがどこだか忘れてしまったな。

311:デフォルトの名無しさん
10/06/04 22:41:07 .net
succ X1が欲しいという話だと思ったんだが。

……俺ならObj.magicしちゃうな

312:デフォルトの名無しさん
10/06/04 22:44:58 .net
URLリンク(d.hatena.ne.jp)
これだった。あんまり突っ込んだこと書かれてなかったな。でもこういう話じゃないの?

313:デフォルトの名無しさん
10/06/05 18:55:54 .net
>>304
ありがとうございます。

314:デフォルトの名無しさん
10/06/05 23:46:13 .net
>> 308, 307
ありがとうございます。そうです、O(1)で整数に変換できるかを心配していました。


315:デフォルトの名無しさん
10/06/10 00:10:32 .net
O(1)での変換速度を気にしなきゃいけないくらい沢山定義するなら、
DEFINEマクロ使った方がいいんじゃないかなぁ。あ、OCamlの場合だけど。

(* compile with -pp "camlp4orf" *)
DEFINE A = 1
let _ = print_int A

316:デフォルトの名無しさん
10/06/14 19:50:39 .net
>> 311
Ocamlマクロ使えましたね。いいなぁ~

317:デフォルトの名無しさん
10/06/14 19:54:03 .net
破壊的代入(参照型)の利用はひかえめに、とはいろんなガイド/教科書に書いて
あるけど、どの程度が許容範囲なんだろう。

与えられたリストの部分和を要素とするリストを返す関数を書いてみると、
破壊的代入を使ったバージョンが一番短く直観的に思う。

fun series xs =
(fn s => map (fn i => i + !s before s := !s + i) xs) (ref 0)

fun series2 xs =
(rev o #2) (foldl (fn (i,(s,ys)) => (i+s,(i+s)::ys)) (0,nil) xs)

fun series3' s (i::is) = (i+s) :: series3' (i+s) is
| series3' s nil = nil;
val series3 = series3' 0

関数プログラマ的には、どれがいいのだろう。
(もっといい書き方もあるかもしれない)



318:デフォルトの名無しさん
10/06/14 19:58:31 .net
個人的にはこだわらずに破壊的代入もがんがん使えって思うけど、その前にmapの捜査順は前からって保証されてるのか?

319:デフォルトの名無しさん
10/06/14 21:34:29 .net
確かに、一般的には規格違反かもしれない。ちなみに
URLリンク(www.smlnj.org)
には
map f l
 applies f to each element of l from left to right, returning the list of results.
と書かれているが、"from left to right"を副作用を持つfを考慮して、そう書いているのか
は不明。

320:デフォルトの名無しさん
10/06/16 05:25:03 .net
>>313
効率気にしないなら下のようにも.
fun series nil = nil
  | series (h::t) = h :: map (fn x => x + h) (series t)
効率を気にするなら,series3がいいと思った.
refを使うと現在の変数の状態を気にする必要があって大変.
series2はやってることはわかったけど,コードがなんとなく見づらい.

321:デフォルトの名無しさん
10/06/16 12:11:01 .net
>現在の変数の状態を気にする必要があって大変
refが大変で、引数変数が大変でないと思う辺り、関数型言語プログラマだなあ。
俺はまだそこまでの境地には達してないや

322:デフォルトの名無しさん
10/06/16 18:09:00 .net
「こんなこともあろうかと」いいながら、用意しておいたscanlを使うのが一番直感的。

323:デフォルトの名無しさん
10/06/16 20:47:50 .net
なるほど scanl か
mapAccumL で満足しそうになっていた

324:デフォルトの名無しさん
10/06/17 21:08:40 .net
>> 316
ひさしぶりに何か美しいものを見た気がします。
>> 318,319
HaskellのData.Listにある関数ですね。GHCは入れてあるが、ほとんど使って
いないので、知らなかったのですが、いっぱい関数が用意されてますね。




325:デフォルトの名無しさん
10/06/18 19:16:35 .net
NJに付属するCMLって、multicore対応じゃないみたいですね。
(tar ballのToDoに書いてあった)
ノード内並列には使えない。残念。

326:デフォルトの名無しさん
10/06/18 19:31:43 .net
SML なら Poly/ML がネイティブスレッドに対応してるよ

327:デフォルトの名無しさん
10/06/18 20:52:49 .net
>>322
ありがとうございます。
ここを URLリンク(www.polyml.org) さらっと見てみましたが、
結構しっかりした実装のようですね。
これは、SML/NJからの移行を検討する価値がある。
他に、
- Windowsプログラミング
- FFIが簡単(のように見える)
が気に入った。

328:デフォルトの名無しさん
10/06/18 21:45:31 .net
MLでGUIプログラミング、って時々やろうとするんだけど準備が面倒で挫折する。
lablgtk2とその依存ライブラリを標準で取り込んでくれ~

329:デフォルトの名無しさん
10/07/04 19:42:48 .net
ファンクターでモジュールを作ったときに実行される関数がほしいんだけど
OOのコンストラクタみたいなの

330:デフォルトの名無しさん
10/07/05 12:51:06 .net
 V V
(´・ω・`) うさちゃんピース

331:デフォルトの名無しさん
10/07/05 15:03:08 .net
長澤うさみ

332:デフォルトの名無しさん
10/07/09 01:03:21 .net
>>325
module F (A : sig val x : int end) = struct
let _ = print_int A.x
end

このファンクターに適当なモジュールを適用してごらん

333:デフォルトの名無しさん
10/07/09 22:25:03 .net
MLが関数型言語とか、最初に言い出したのは誰なのかしら

334:名無しさん@そうだ選挙に行こう
10/07/11 11:47:27 .net
 \                    /
   \  丶       i.   |      /     ./       /
    \  ヽ     i.   .|     /    /      /
      \  ヽ    i  |     /   /     /
   \
                                  -‐
  ー
 __          わ た し で す            --
     二          / ̄\           = 二
   ̄            | ^o^ |                 ̄
    -‐           \_/                ‐-

    /
            /               ヽ      \
    /                    丶     \
   /   /    /      |   i,      丶     \
 /    /    /       |    i,      丶     \ 

335:デフォルトの名無しさん
10/07/23 23:57:35 .net
プログラミング言語ML
URLリンク(www.amazon.co.jp)

J. D. Ullmanのこの本絶版になってたのか。
11年前に図書館で世話になったときは、面白かった。

336:デフォルトの名無しさん
10/08/06 17:34:51 .net
3.12.0来たのか

337:デフォルトの名無しさん
10/08/14 16:35:21 .net
OCaml出たばっかりなのに人が少ないってどういうことなの

338:デフォルトの名無しさん
10/08/16 01:05:07 .net
平和ってすばらしい

339:デフォルトの名無しさん
10/08/16 01:22:01 .net
windows用の最新版は3.11.0ってことですか?公式のリンクが切れてるという。。

340:デフォルトの名無しさん
10/08/16 12:57:13 .net
自分でビルドすればいいし、URLの修正ぐらい自分でやればいいし

341:デフォルトの名無しさん
10/08/21 23:26:49 .net
windows 3.11.0

URLリンク(ocaml.jp)

>threads ライブラリを使用するプログラムは以下のようにリンクしてください:
>ocamlc -thread other options unix.cma threads.cma other files

って書いてあるのに

ocamlc -thread unix.cma threads.cma thread.ml
File "thread.ml", line 7, characters 8-21:
Error: Unbound value Thread.create

Threadはどこにあるんだ・・・


342:デフォルトの名無しさん
10/08/22 01:37:10 .net
いっこうにMacPortsにこねえ>3.12.0
なんか既存アプリ壊してるとかあるのかね

>>337
志村ー、"thread.ml"ー

343:デフォルトの名無しさん
10/08/22 02:53:00 .net
>>337
圧倒的感謝
悩んでた自分が馬鹿らしい つーか馬鹿だった

344:デフォルトの名無しさん
10/08/22 02:54:15 .net
ミス
>>338

345:デフォルトの名無しさん
10/08/23 01:39:58 .net
unitをどうやって代入させるかで数分悩んでしまった。

346:デフォルトの名無しさん
10/08/30 15:11:49 .net
可読なCに変換してくれるコンパイラはないのか


347:デフォルトの名無しさん
10/09/19 08:18:17 .net
これはOCamlの仕様書と思って良いのでしょうか?
URLリンク(caml.inria.fr)

348:デフォルトの名無しさん
10/09/19 22:05:30 .net
仕様なんてない

349:デフォルトの名無しさん
10/09/21 22:59:45 .net
最近SML#が活発に更新されているようなので、0.56インストールしてみました。

集合演算を使ったプログラムを書こうとしているのですが、
CM周りの問題のせいか上手く動きません。

例えば、sml#では、

# structure SSet = RedBlackSetFn(struct type ord_key = string; val compare = String.compare end);
stdIn:1.18-1.94 Error: unbound functor: RedBlackSetFn

となります。smlだと、

- structure SSet = RedBlackSetFn(struct type ord_key = string; val compare = String.compare end);
[autoloading]
[library $SMLNJ-BASIS/basis.cm is stable]
[library $SMLNJ-LIB/Util/smlnj-lib.cm is stable]
[autoloading done]
structure SSet : ORD_SET?

と上手く動いています。

どのあたりを調べれば良いかのポインタだけでも構いませんので、
解決方法ご存知の方、教えていただけますでしょうか。

350:デフォルトの名無しさん
10/09/21 23:10:05 .net
SML#ってMSの.Net系言語だと思って無視してたんだけど、
全然関係無しなんだね。まぎらわしすぎw

解決方法でないレスでゴメソ >>345

351:デフォルトの名無しさん
10/09/22 02:13:02 .net
>>345
SML/NJだと自動でライブラリを読み込むようだが,SML#ではそうでないみたいね.
ソースの smlsharp-0.56/smlnj-lib/Util/redblack-set-fn.sml
にRedBlackSetFnが入ってるから,必要なファイル込みでuseすればいいんじゃないかな.

352:345
10/09/22 21:06:32 .net
>>347
$prefix/lib/smlsharp/smlnj-lib/Util 以下に各set用のfunctorが
あったので、こちらをuseしてみたところ、
上手く動くようになりました。
ありがとうございます。

sml#ではCM上手く動かないのはやっぱり嫌だなぁ。
なんとかならないものか…

353:デフォルトの名無しさん
10/09/26 18:45:17 .net
初歩の初歩ですいません、symbolic nameって何?

ML for the working programmerを読み始めて早速引っ掛かってしまいました。

354:デフォルトの名無しさん
10/09/28 01:50:38 .net
alphabeticでない名前

355:デフォルトの名無しさん
10/10/16 00:36:53 .net
Jane StreetのCoreってOCaml 3.12に対応してる?
コンパイルに失敗する

356:デフォルトの名無しさん
10/10/24 18:34:30 .net
エディタの桁数はいくつに設定していますか?

357:デフォルトの名無しさん
10/11/10 00:02:31 .net
遅レスだけど、桁数は80でインデントは4。

:se nu ai sw=4 ts=4

358:デフォルトの名無しさん
10/11/10 23:06:49 .net
私も桁は80(インデントは2)。
でも無名関数を多用すると桁が足りなくなるので
増やすべきか悩む。横長モニタ買いたくなる。


359:デフォルトの名無しさん
10/11/11 21:11:38 .net
通常は80に設定しているが、MLを編集するときは、120に増す。
とはいえ、100を超えると読みにくくなるので、適当に折り返すことにしている。
ただ、このコーディングルールに従えばOK、というようなのがないので、
毎回困っている。

360:デフォルトの名無しさん
10/11/11 21:19:26 .net
>>305 解決策(SML/NJの場合の)が見つかった。
data label = A | B | C
Unsafe.cast A: int;
Unsafe.cast B: int;
Unsafe.cast C: int;
とすると、それぞれ0,1,2になる。


361:デフォルトの名無しさん
10/11/11 21:49:53 .net
>>356
MLは初心者だけど、>>305は(コードの問題ではなく)設計の問題だと思う。

代数構造として、直積(組型やレコード型)と列(リスト型や配列型)は全く別の概念。
コンパイルの前に要素の数が決定できるなら直積を使うべきだし、
実行してみないと決定できないのなら列を使う。あるいは動的なシンボルで
ランダムアクセスしたいならハッシュ型を、更に順序性が必要ならB木型を。

これらすべてはプログラムの設計工程で決定しておくべきもの。
設計工程での不具合をコーディング工程で取り返そうとするのは、よくある過ち。
>>356の解決策というのは、いわゆる「泥縄」的手法。いずれ破綻する。

いくらMLが美しい言語でも、設計が汚ければコードはグチャグチャになるよ。
逆に、設計が適切であれば手続き型言語であっても美しいコードは書ける。

362:デフォルトの名無しさん
10/11/11 21:54:05 .net
そんな大仰な話でもないだろ。
Pascal、Modula系からMLやら(その他EiffelやらOberonやら)への流れで、
なぜか列挙型を配列のインデックスに使う機能が捨てられた悲しいね、ってだけの話だ。

363:デフォルトの名無しさん
10/11/11 22:25:29 .net
だから「なぜ列挙型を配列のインデックスに使う機能が捨てられたのか?」と


364:いう 疑問の答えを考えなさい、と言ってる。 列挙型(特に関数型言語の直和、MLのdatatype定義)というのは、要素を数え上げることで 集合を定義している。いわゆる「内包的定義」だ。集合なのだから、その要素間に順序性は無い。 もし要素間に順序性が求められるのなら、列として(集合とは別に)それら要素を定義する。 そしてそれらの間の関係を写像(関数あるいはハッシュ型などで)させることで対応づける。 こういった考え方(設計技術)無しに、力任せのコーディングテク(技法)で解決しようとするのでは、 (特にMLのような明瞭な型体系を持つ)関数型言語の利点は、全く生きないよ。 型をわずらわしく感じるうちは、いつまでたってもIT土方のままだ。(型定義 = 設計なのに....。) 結果的に「関数型言語を使っても美しい(高品質な)コードは書けなかった。チクショウ騙された。」 という誤解が生まれる。



365:デフォルトの名無しさん
10/11/11 22:25:48 .net
>>357
305が既にコーディング工程まで来ているという根拠は?

366:デフォルトの名無しさん
10/11/11 22:29:03 .net
>>359とか自分で読み返して恥ずかしくないのか?
列挙型がインデックスの配列なんて、単にmapの効率的な表現でしかないだろ……。

367:デフォルトの名無しさん
10/11/11 22:33:39 .net
あと「なぜ列挙型を配列のインデックスに使う機能が捨てられたのか?」は
単純に(非常に残念ながら)固定長配列型が採用されなかったからだろうね。
全部可変長配列ならインデックスに演算不可能な型を使えてもしょうがないから。

368:デフォルトの名無しさん
10/11/11 22:39:12 .net
>>357
根拠は、>>305が使った「スタイル」と言う言葉。

>>361
>単にmapの効率的な表現でしかないだろ……。
その通り。より正確には「写像の効率的な実装(コード化)」だね。
>>357で書いたのは、実装(コード化)で解決しようとせずに設計に立ち返りなさい、という話。

369:デフォルトの名無しさん
10/11/11 22:44:09 .net
正直「いちいちmap作るの効率悪い&めんどくさいからちゃっちゃとUnsafe.castしてしまえ」ってだけの話なのに
設計どうこうの話で絡む理由がわからんな。
それこそ言語機能の問題でしか無いんだから、実装の詳細もいいとこだろうに。

370:デフォルトの名無しさん
10/11/11 22:52:14 .net
そうだね。プログラミング言語なんて道具にすぎないんだから、本人がどう使おうが自由だし。
下流工程で延々とモガき続ける、いわゆる土方から抜け出せるよう助言したつもりだったが、
余計なお世話だったかもしれない。これで落ちるよ。

371:デフォルトの名無しさん
10/11/11 22:57:51 .net
だから、その本人が今現在下流工程にいるという根拠はなんなの?

372:デフォルトの名無しさん
10/11/11 22:59:31 .net
大体設計としてはインデックス値集合からのmap確定で、見直す要素なんて全く無いだろ。
余計なお世話どころか、勘違い甚だしすぎる。

SML使う土方現場なんて日本にあったら俺が行きてーよw

373:365
10/11/11 23:14:44 .net
落ちたつもりだったけど、自分のカキコにアンカ間違いがあったから、そこだけ訂正。

>>366
スマン。>>363

 >>>357
 >根拠は、>>305が使った「スタイル」と言う言葉。

という部分の>>357というアンカは間違いだった。>>360宛のレスとして読み直してくれ。

374:デフォルトの名無しさん
10/11/11 23:22:16 .net
今ひどい泥縄を見た。

375:デフォルトの名無しさん
10/11/11 23:27:02 .net
こんなに人いたんだな

376:デフォルトの名無しさん
10/11/12 00:43:43 .net
305&356です。
私はただの数値計算屋なので、このような助言はありがたい。
型の設定は大切にしています。ただ、研究用のプログラムなの
で、予想外の変更が生じるし、過剰に一般的に作ると使いにくく
なるので、なかなか難しいところです。

いまの問題でゆうと、対象の要素数が100とか1000であれば、
ハッシュを使う選択をしますが、当面の問題では、10以下の
固定個なので、列挙子を使いたい訳です。これは、NJの対話型
環境で式を評価したときに、
列挙子名が表示されるためです。
※NJのハッシュは組み込み型であるvectorほど使いやすくはない
ので、ハッシュを避けがちになるという別の問題はある。

なおUnsafe.castは前にOcamlにはmagicがあるという話が出たの
で、備忘録的に書いただけです。    

377:デフォルトの名無しさん
10/11/13 19:02:17 .net
SML# 0.60 は大堀先生からアナウンス


378:デフォルトの名無しさん
10/11/13 21:11:23 .net
いらねー

379:デフォルトの名無しさん
10/11/16 01:51:58 .net
ML が研究されているという情報。
それも国内で。
結構なことじゃないの。


380:デフォルトの名無しさん
10/11/17 03:57:12 .net
ようやくMPIを使っての並列起動に成功した……。Intel MPIの32bit版
が使えることのに気付くのにも時間が掛かったが、まさか、.cm/への
書きこみで競合が起こるとは想像だにできなかった。

381:デフォルトの名無しさん
10/12/07 20:39:56 .net
なにこれ?
From: Julian Assange <proff@i...>
Subject: call for ocaml volunteers

URLリンク(caml.inria.fr)


382:デフォルトの名無しさん
10/12/17 00:13:19 .net
windowsでグラフィックスを扱うライブラリ
としてsml_tkがあるようだが、Posixストラクチャ
とか使っててコンパイルできない。

383:デフォルトの名無しさん
11/02/11 13:52:35 .net
standard MLとかって、もう終わった言語なの?

384:デフォルトの名無しさん
11/02/16 22:27:36 .net
NJのバージョンはときどき上がっているようだが、64bit版の開発が着手される
気配はないねぇ。

385:デフォルトの名無しさん
11/02/17 00:06:39 .net
Objective SML とかあればなあ・・・

386:デフォルトの名無しさん
11/02/17 00:16:06 .net
ええ。
ocamlのobject的な機能って使ってる人いるのかね?

387:デフォルトの名無しさん
11/02/17 00:31:11 .net
Ocaml みたいな奴だったらイラン

388:デフォルトの名無しさん
11/02/27 19:00:35.30 .net
なんでCoqのスレとかないの?

389:デフォルトの名無しさん
11/02/28 06:23:51.79 .net
>>384
あなたやその他の人が誰も立てないから。

390:デフォルトの名無しさん
11/03/02 23:24:04.60 .net
>> 383
先日のRuby会議でCoqの話題が多かったようです。
URLリンク(partake.in)

391:デフォルトの名無しさん
11/03/03 07:11:19.47 .net
またITプランニングのやつらか!

392:デフォルトの名無しさん
11/03/11 15:27:53.72 .net
「最近、関数型言語が流行ってんだってね?」
私にそう言ったのは、大法螺吹きの異名で名高い営業マン。
もちろん、彼はプログラミングのことは全然知らない。
たぶん関数型言語のこともどっかのポルノ雑誌ででも読んだのだろう。やれやれだ。
「岡村ってのが新しいらしいね。」
なんだよ、その岡村って…。もしかして日本人の開発した関数型言語か?岡村って誰だよ。
「やねさんなら、当然、岡村、使ったことあるよね?」
使ったことあるどころか、名前すら知らんよ。なんだよ、岡村って…。
「あれー?やねさんともあろう御人が、岡村も知らないとは…」
いや、マジで知らんよ。なんなんだよ、それ。
「そうかー。知らないのかー。やねさんでも知らないのかー。」
そう言われて「なんだかなぁ」と思いながら帰ってきて、「関数型言語 岡村」でググって見たけど、そんなの出てこねーよ。
「なんだよ、また、いつもの大法螺かよ!」と思って、布団に入って寝てたら、深夜の三時に、「もしかして、岡村ってOCamlのことじゃね?」と夢のなかで気づいて、いま悔しくて壁を思いっきりグーパンチで殴ってるところ。

393:デフォルトの名無しさん
11/03/11 19:43:34.45 .net
おいおい、岡村!アラン、見ランダ?
Yacc束してたのに、Matlab。

あだー。アラン、隙間フェチ、すから。
見つけるのは一苦労じゃろーね。Sque無い
嗚呼、くっ。一�


394:盾ノエイダみる予定だったのに・・ 遅coqしたら理彩のレイジがMaximaになる メーリングリストで蓮家等に聞いてミルか Amigaとう。んじゃ,またAgda! Orc、またAgdaな



395:デフォルトの名無しさん
11/03/11 21:16:39.93 .net
おつかれ~

396:デフォルトの名無しさん
11/03/13 21:05:50.23 .net
たててやったぞ

Coqスレ
スレリンク(tech板)


397:デフォルトの名無しさん
11/04/02 19:12:41.89 .net
>>388
ワロタwww

398:デフォルトの名無しさん
11/04/04 00:00:15.57 .net
NJのUnsafe.castのあまり意味のない使い道
(fn x => x (Unsafe.cast x)) (fn x => (Unsafe.cast x))


399:デフォルトの名無しさん
11/04/04 00:35:09.27 .net
type 'a safe = Safe of ('a safe -> 'a);;
let safe (Safe x) = x;;

print_char((fun x -> safe x x) (Safe (fun x -> safe x x)));;

400:デフォルトの名無しさん
11/04/05 21:49:01.21 .net
>>392
OCamlならこんなかんじ?
(fun x -> x (Obj.magic x))(fun x -> x (Obj.magic x));;

401:デフォルトの名無しさん
11/04/14 09:44:35.08 .net
OCamlに興味が湧いてとりあえず五十嵐某の書籍買ってみた。
で、技術書買って真っ先にやることと言えば正誤チェック。

つ・・つかえねぇ・・・この本
誤謬の嵐だぜこりゃw
量がハンパネェ
本として機能してない

残念だがゴミ箱へ

402:デフォルトの名無しさん
11/04/14 21:22:48.50 .net
>>395
そんなにひどいの?

403:デフォルトの名無しさん
11/04/15 00:44:37.03 .net
>>395
うん?
自分にとっては、haskellの学習に大きく寄与したぞ?

コラムの再帰に関する格言と、その本質に言及した言葉が無かったら、関数型言語を挫折してた
(関数型言語の魅力が解らなかっただろう)

自分は、この人にhaskell版を書いて欲しいぞ

今なら言える

手続き型言語は全体的に(それをするには)「どうする」で作り、関数型言語は、全体的に(それは)「何か(あるいは、どんなものか)」で作る言語だと


404:デフォルトの名無しさん
11/04/16 12:37:58.03 .net
>>395
俺も最近買ってしまって読んでるんだが、誤植の場所を教えてくれ。
素人でもわかるものなのか?

405:デフォルトの名無しさん
11/04/16 12:57:42.57 .net
あれってネット上で読めなかったか

406:デフォルトの名無しさん
11/04/16 13:50:43.61 .net
>>395
> 誤謬の嵐だぜこりゃw
>>398
> 俺も最近買ってしまって読んでるんだが、誤植の場所を教えてくれ。

「誤謬」のある本と「誤植」のある本の違いは大きい。
本当はどっち?


407:398
11/04/16 17:02:39.70 .net
>>400
すまん。ちゃんと見てなかった。誤植じゃなくて誤謬か。
で、どこなんだろう。

408:デフォルトの名無しさん
11/04/17 20:32:04.80 .net
>>401
両方。誤植も誤謬もある。

URLリンク(www.sato.kuis.kyoto-u.ac.jp)
技術書でこれだけの間違いがあったら、どうやって本として機能するんだろう?





409:デフォルトの名無しさん
11/04/17 21:40:45.30 .net
>>402
そのページ印刷して本に挟んどけよ

410:デフォルトの名無しさん
11/04/17 22:50:12.49 .net
間違いは無いに越したことはないけれど、
これぐらいの量の間違いは大したことないと思う。

411:デフォルトの名無しさん
11/04/17 22:51:29.38 .net
十分大した事あるな

412:デフォルトの名無しさん
11/04/18 00:31:01.42 .net
技術書読んだことあんのか?

413:デフォルトの名無しさん
11/04/18 08:22:14.27 .net
技術書は静的型付けじゃないからな

414:デフォルトの名無しさん
11/04/18 11:08:36.97 .net
コーダとベリファイヤの性能が低い

415:デフォルトの名無しさん
11/04/20 18:55:51.89 .net
> 自分は、この人にhaskell版を書いて欲しいぞ

アマゾンで下のレビュー書いた人かいw

416:デフォルトの名無しさん
11/04/20 20:57:40.94 .net
ちょっと困っていることがあるので、助けてください。

ヨウ素がリストの参照になっているようなベクトルを用意して、各要素に
データを追記していくような処理


417:をさせると(具体的には、複数の時系列を記録 したファイルがあって、これを時間順に読む)、追記回数の自乗のオーダの 処理時間が掛る。リストの先頭に追加しているだけなので、線形時間でやって ほしい。



418:デフォルトの名無しさん
11/04/20 20:58:06.52 .net
(* コード例)
val bigV = Vector.tabulate(1000000, fn _ => ref (nil:int list))
val dat = Vector.tabulate(1000000, fn i => i)

val t0 = Time.now();
val tLast = ref (Time.-(t0,t0));
fun showTime() = let
val tLast' = !tLast
val () = tLast := Time.- (Time.now(), t0)
val dt = Time.-(!tLast, tLast')
in
Time.toString (!tLast)^","^ Time.toString dt
end

fun append k =
(print (Int.toString k ^ "," ^ showTime()^ "\n")
;Vector.app (fn box => box := k :: !box) bigV
)

val () = Vector.app append dat


419:デフォルトの名無しさん
11/04/20 21:15:18.30 .net
ヨウ素とかベクレルの話かとオモタ

420:sage
11/04/20 21:46:08.88 .net
辞書(と見逃した自分も)がそっち方向に過学習してしまったらしい。すまん。

421:デフォルトの名無しさん
11/04/21 00:19:44.70 .net
自分の環境ではサンプルプログラムの実行に二乗オーダは見られなかった。
bigVの大きさを一桁下げると速度がぐっと変わるし、GCとかのせいな気がする。

422:デフォルトの名無しさん
11/04/26 20:50:17.84 .net
SMLの勉強していて思ったけど、最初に学ぶ言語として関数型言語はやはり難しいかも知れない。
C言語だとHello Worldから始まって、リスト処理は構造体とポインタの応用問題という位置づけだった。
SMLはいきなりリストと再帰の話から始まるw

BASICは、LISPよりも後から開発されて、しかも同じダートマス大学発祥だけど、
リスト処理が実装されていないのもそれなりの理由があったのかなと思う。

423:デフォルトの名無しさん
11/04/26 21:56:29.55 .net
奥さん、そこで Factorですよ。

424:デフォルトの名無しさん
11/04/26 22:12:07.58 .net
>>415
> BASICは、LISPよりも後から開発されて、しかも同じダートマス大学発祥だけど、
> リスト処理が実装されていないのもそれなりの理由があったのかなと思う。

LISPとBASICじゃ作られた目的が全然違う
それに当時の計算機の性能ではリスト処理は時間的にもメモリ的にも大変重い処理だった
今の感覚や価値観は60年代の計算機や言語・ソフトの評価や判断には全く通用しない


425:デフォルトの名無しさん
11/04/27 00:17:49.66 .net
最初は易しい言語で、ってことが重要に思えるところ、
その信念に基づいた妄想を長々と書きこむところ、
これはその人の性質をよく表していると思う。
こういうひとのためにも緩い言語は必要。
ML系はそういうのとは全然違う。

426:デフォルトの名無しさん
11/04/27 14:00:52.81 .net
>> 415
ポインタ+構造体+慎重な操作を免除して、いきなりリストが使えるのが
売りだと思うのだけれど。

また、MLは破壊的代入+whileループが特別な儀式をしなくても使えるの
で、再帰を学ばなくてもある程度は使える。



427:デフォルトの名無しさん
11/05/18 01:03:29.10 .net
眉間のτとλ皺が特徴。
                            やつを追う前に言っておくッ!
                    おれは今やつのStateTをほんのちょっぴりだが体験した
                  い…いや…体験したというよりはまったく理解を超えていたのだが……
         ,. -‐'''''""¨¨¨ヽ
         (.___,,,... -ァァフ|          あ…ありのまま 今 起こった事を話すぜ!
          |i i|    }! }} //|
         |l、{   j} /,,ィ//|       『おれは奴の前で階層を lift していたと
        i|:!ヾ、_ノ/ u {:}//ヘ        思ったらいつのまにか lift が消えていた』
        |リ u' τ ,ノ _,!V,ハ |
       /´fト、_{λ{,ィ'eラ , タ人        な… 何を言ってるのか わからねーと思うが
     /'   ヾ|宀| {´,)⌒`/ |<ヽトiゝ        おれも何をされたのかわからなかった…
    ,゙  / )ヽ iLレ  u' | | ヾlトハ〉
     |/_/  ハ !ニ⊇ '/:}  ∀:::ヽ        頭がどうにかなりそうだった…
    // 二二二7'T'' /u' __ /:::::::/`ヽ
   /'´r -―一ァ‐゙T´ '"´ /::::/-‐  \    キャストだとかサブタイピングだとか
   / //   广¨´  /'   /:::::/´ ̄`ヽ ⌒ヽ    そんなチャチなもんじゃあ 断じてねえ
  ノ ' /  ノ:::::`ー-、___/::::://       ヽ  }
_/`丶 /:::::::::::::::::::::::::: ̄`ー-{:::...       イ  もっと恐ろしいものの片鱗を味わったぜ…

428:デフォルトの名無しさん
11/06/08 22:38:54.29 .net
保守

429:デフォルトの名無しさん
11/06/20 02:35:53.95 .net
Ocamlとか関数型言語とか難しいことはよくわからないが
ターミナルでTwitterクライアントが動くらしいので
Ocamltterに手を出してみる。
そういえば親父がLISP好きだったのを思い出す。

430:デフォルトの名無しさん
11/06/20 02:43:18.06 .net
フランス人と日本人って意外に共通点があるよな

431:デフォルトの名無しさん
11/06/20 02:48:34.90 .net
皇女様をギロチンにかけたりな

432:デフォルトの名無しさん
11/06/20 07:42:00.20 .net
OcamltterあきらめてOcaml入門やってるんだが再起呼び出しとかちょっと難しいな。
for文と違う。

数学者にやらせると面白いことになりそうな謎のワクワク感を感じる言語ではある。

433:デフォルトの名無しさん
11/06/30 22:40:46.75 .net
みんな Haskell に移行してしまったんかいなぁ

434:天使 ◆uL5esZLBSE
11/07/05 04:45:54.85 .net
2011年、Ruby,Perl,PHP,Pythonって並べたときにさ
ここで、Ruby以外を選ぶ奴ってマジでなんなんだろうな


ゴミの分際でw

435:デフォルトの名無しさん
11/07/05 11:37:20.29 .net
>>427
科学計算を主に念頭においてるものだったら、Python一択になってくるよ。
それだけライブラリが充実している。scipy,numpy,matplotlib,mayaviなんて
のがあるからね。

>>415
手続き脳から見れば当然難しいけど、数学の漸化式を知ってれば再帰は
馴染みやすいし問題ないよ。難しくしてるのは頭の中で無理やり手続き型
に想定して理解しようとする癖があるからだよ。手続き型に染まった連中が
苦労するのはその悪癖が抜けないから。
リストとか関数の取り扱い(Cでいうと関数ポインタだな。)は手続きにとって
みれば高嶺の花だけど、そこが一番簡単にさせている要因なんだよね。
手続きに染まった人ってただ頭が硬直しただけなんだよ。

436:デフォルトの名無しさん
11/07/05 11:40:45.99 .net
ファーストクラスの関数を、関数ポインタのようなもの、とかいうのは、
誤解を招くだけでないかな。

437:デフォルトの名無しさん
11/07/05 12:09:28.96 .net
>>429
じゃあどう簡潔に言えばいいか示してくれ。それだけでいいよ。

438:デフォルトの名無しさん
11/07/05 12:14:26.97 .net
「ファーストクラスの関数」

439:デフォルトの名無しさん
11/07/05 12:20:26.45 .net
>>431
手続き脳の人相手に話をする場合、それで通じれば問題がないけど
彼らの試行の中で比較的近いものを取り上げて説明しようとしないと
たぶん、言葉が通じないと思うよ。CS専攻の連中相手に話をするならば
それで問題はないよ。もし知らなければ不勉強だってことだからさ。

440:デフォルトの名無しさん
11/07/05 19:57:30.54 .net
環境をキャプチャした関数ポインタのようなもの?

441:デフォルトの名無しさん
11/07/05 20:12:36.48 .net
それはもうポインタでも何でもねぇw

クロージャは、下手にCの概念で説明するよりは、定義をしっかり伝えたほうが、
相手に伝わりやすい代表例じゃないかな。モナドとか継続とかと一緒で。

442:デフォルトの名無しさん
11/07/05 20:37:31.44 .net
一応Cでもgcc拡張ならクロージャはある
C++ユーザならC++用語で言うファンクタ(関数オブジェクト)を結構使うはずなので、
ただの関数ポインタとの違いはわかっていると思う
クロージャが近いのは勿論ファンクタのほうだけど、C++のようにいちいち
classやstructでそれを記述する必要がない
もっともC++のそれがあまりに面倒くさかったので、C++でも0xでついにlambdaが
導入されたわけだけど

443:デフォルトの名無しさん
11/07/07 11:04:09.84 .net
他のスレでやれ

444:デフォルトの名無しさん
11/07/07 13:02:54.88 .net
>>427
誤爆?

445:デフォルトの名無しさん
11/07/09 19:06:45.30 .net
>>435
>一応Cでもgcc拡張ならクロージャはある

nested function の事なら、内部関数から参照している変数のスコープの
外からは使えないのでクローズしているとは言えないんじゃないかな。

URLリンク(gcc.gnu.org)

C なら Blocks を使う方が良さそう。

446:デフォルトの名無しさん
11/07/12 19:45:27.51 .net
>>438
そこを読むとinner functionのアドレスを取れると書いてあるけど、
upward funarg problemを解決しているわけではないの?


447:デフォルトの名無しさん
11/07/12 20:32:45.49 .net
>>439
環境を保存しておいてくれる訳じゃないからね

448:デフォルトの名無しさん
11/07/12 22:06:56.99 .net
>>440 なるほど。危険ではあるが役に立つかも知れないから機能は提供する
ということか。

449:デフォルトの名無しさん
11/07/30 19:06:44.85 .net
OCamlにしようか、それともHaskellにしようか迷ってます。
こういう用途ならこっちのほうがいいとか、なんかアドバイスお願いします。

450:デフォルトの名無しさん
11/07/30 19:45:47.15 .net
>>442
では、用途を教えてくだしあ

451:デフォルトの名無しさん
11/07/30 20:08:56.47 .net
>>443
こーいうやつはプログラミングの勉強自体が目的だろ。

452:デフォルトの名無しさん
11/07/30 20:16:25.35 .net
>>444
プログラミングの勉強自体が目的ならhaskell一択


453:デフォルトの名無しさん
11/07/30 20:42:08.59 .net
>>444
はい、その通りです。
PHPとJavaとJavaScriptはある程度書けますが、関数型言語をなにかひとつみにつけようと思います。

>>445
よろしければ理由を教えてください。
ぐぐった感じでは、haskellはモナドというのが難しくて多くの人が挫折しているようので、OCamlに傾いてます。

454:デフォルトの名無しさん
11/07/30 20:52:58.37 .net
>>446
勉強ってことだし、関数な考え方を得ようってなら純粋なHaskellの方を推奨

455:デフォルトの名無しさん
11/07/30 20:54:22.93 .net
勉強自体が目的ならなんで両方やらないのっていう

456:デフォルトの名無しさん
11/07/30 20:56:02.64 .net
あと入門用に、英語読めるなら、比較的平易な英文で書いてある

URLリンク(learnyouahaskell.com)

を挙げておきます。下の方にあるonlineを選ぶと、売っているものに近い内容が読めますよ。

457:デフォルトの名無しさん
11/07/30 21:05:00.48 .net
OCamlの入門書が1冊、Haskellの入門書が数冊出てるからどれか1つ、
とりあえず借りるか買うかして、それぞれ第1章ぐらいやってみなさい。

458:デフォルトの名無しさん
11/07/30 21:05:33.97 .net
>>446
関数型言語の特徴が余す事なく取り入れられてる
モナドは使う分には難しくない
使う分にはシンプル イズ ベストな書き方がやり易い言語

モナドを分からないと使えるようにならないと勘違いして脱落する人多いけど、モナドの理論的背景を理解する必要は無い
気になるなら気長に勉強しなされ

OCamlはループも有るし、副作用対策諦めてるし、手続き型言語に限りなく近い関数型言語って感じ

速いコード吐けるけど、昨今の関数型言語の特徴取り入れた手続き型言語が多い時代に勉強する意味は薄い


459:デフォルトの名無しさん
11/07/30 21:07:10.73 .net
手続きばっかだっし、古典のschemeでいいんじゃねーの?

460:デフォルトの名無しさん
11/07/30 21:10:08.69 .net
Lisp族はLisp族で悪くないけど、関数型プログラミングを今時勉強するならその選択はない。

461:デフォルトの名無しさん
11/07/30 21:16:22.99 .net
>>452
カリー分と遅延評価がデフォルトで付いてない
自分で同じ事を再現とかは出来るけど、それじゃ関数型言語の学習とは違う


462:デフォルトの名無しさん
11/07/30 21:20:58.25 .net
>>449
haskellスレで翻訳中って聞いたぞ
あと、kindleでサンプル読んだ限りじゃプログラミングhaskellの内容を砕けた言葉とイラストで書いてるだけに見える
内容的にはすでに翻訳されてるプログラミングhaskellで十分


463:デフォルトの名無しさん
11/07/30 21:28:52.08 .net
みなさん、ありがとうございます。
OCamlスレなのにHaskell勧める人ばかりなので、OCamlに未練はあるけど、思い切ってHaskellやってみようと思います。

464:デフォルトの名無しさん
11/07/30 21:34:22.91 .net
>>456
いや。。。
haskellもMLの子孫なんだが。。。


465:デフォルトの名無しさん
11/07/30 21:36:14.27 .net
>>456
俺はHaskell→OCamlと来た。
どっち先でもいいし、両方やればいいんじゃないだろうか。
片方しかやっちゃいけない決まりはないんだし。
面白いことは何でもやるべきだよ。
ミニ四駆だって、マグナムセイバーを買う傍ら、ソニックセイバーも買っただろ。それと同じ。

466:デフォルトの名無しさん
11/07/30 22:15:41.84 .net
そんなことはどうでもいい。OCamlのサイトが404だ。
URLリンク(caml.inria.fr)

467:デフォルトの名無しさん
11/07/30 23:17:43.26 .net
げ、ほんとだ

468:デフォルトの名無しさん
11/07/30 23:23:32.07 .net
すごいタイミング
>>456にはOCamlと縁が無かったんだな。。。


469:デフォルトの名無しさん
11/07/30 23:29:26.27 .net
ついにオワコンか

470:デフォルトの名無しさん
11/07/30 23:50:18.39 .net
OCamlがOCamlとして生まれ変わった際のゴタゴタだそうだよ

471:デフォルトの名無しさん
11/07/31 21:38:50.21 .net
URLリンク(twitter.com)
>描いたのは俺!
>RT @y_echo
>RT @kinaba: なにがあったのwww
>RT @kikx これは変わりすぎだろ!
>RT @yoshihiro503 ちょ、 OCaml のサイトが激しくイメチェンしてる caml.inria.fr

472:デフォルトの名無しさん
11/08/01 08:56:35.19 .net
OCamlってもう手に入らないん?

473:デフォルトの名無しさん
11/08/01 10:15:28.29 .net
>>465
URLリンク(twitter.com)
>一つだけ皆さんに言っておきます。毎年この時期には OCaml には何かが起きます。
>それはリア充関係者がバカンスに行ってしまって連絡が取れなくなるからです。
> RT @ytomino ocamlがついに滅んだと聞いて(遅い
URLリンク(twitter.com)
>てか週末にサーバ不調になったら48時間止まるのあたりまえやろ?人間として。
URLリンク(twitter.com)
>と haskell.org が落ちたときには wktk してた人が言っても説得力ありませんな

とりあえずフランスの月曜日昼(日本時間21時ごろ)まで待ちましょう。
それまでに復旧しなければ長期化確定ですね。

474:デフォルトの名無しさん
11/08/01 10:34:00.78 .net
URLリンク(proofcafe.co.cc)

475:デフォルトの名無しさん
11/08/01 22:02:08.55 .net
>>466
直らんね。もうしばらく待つか。

476:デフォルトの名無しさん
11/08/01 22:10:14.76 .net
復活したね

477:デフォルトの名無しさん
11/08/02 18:02:01.87 .net
Lisp族はいいぞ。でもclojureを触っているとhaskellの影響がかなり大きい。

ocamlも触ってみたいけど、いまHaskell勉強中なんだ。たぶん、来年くらいには
やれればな。HaskellってLispと同じでプログラム作成までの抽象化も含めた
戦略を練るのに時間がかかる言語って感じがしました。Ocamlも同じなんだろうね。


478:デフォルトの名無しさん
11/08/02 20:08:11.41 .net
haskellはデータ構造を作るプログラミングになるって、山本和彦さんが言ってた

479:デフォルトの名無しさん
11/08/02 20:23:02.98 .net
>>470
Haskell影響は並列周りでしょ。
そもそもSTMはHaskell由来じゃないし。
他はもろLisp直系じゃん。

480:デフォルトの名無しさん
11/08/02 21:58:52.67 .net
>>472
見た目だけで話してるでしょ?
実際に触ってみればわかるけど、無限ストリーム近辺の関数はHaskellと
かなり近いよ。takeとかその辺のことね。common lispでも自作する方法は
あってもこの手の物は標準でないしね。
だから、リストの取り扱いってがhaskellに近くなってる。
>>471
なるほど

481:デフォルトの名無しさん
11/08/02 23:33:03.74 .net
takeはHaskell以前からある。

482:デフォルトの名無しさん
11/08/03 02:04:20.65 .net
>>472
> そもそもSTMはHaskell由来じゃないし。

でも中興の祖はHaskellの人(Tim Harris)じゃないっけ?

483:デフォルトの名無しさん
11/08/03 02:21:43.19 .net
それはそう。Monadの経験が役に立った。

484:デフォルトの名無しさん
11/08/03 09:37:38.27 .net
>>474
ミランダとかなの?よくしらないけど(wikiでちょっと見たけど、
haskellの親玉っぽかった。)
それはともかく、Clojureが関数型の大きな影響をかんじるのは
イミュータブルなところかも。あれのお陰で、副作用をもたせようと
思ったら基本的にSTMの部分を活用しなきゃならない。(java固有の
ライブラリは例外的なんだけど。)それと遅延評価言語だって
ところがcommon lisp を触ってる時よりhaskellの影響を感じやすいのかも。
あとは内包表記かな。wikiにはlisp,ML, haskell erlangが影響を受けた言語
とかかれている。

485:デフォルトの名無しさん
11/08/19 10:50:16.31 .net
R診たいなことが全部できるMLないのかよ。

486:デフォルトの名無しさん
11/09/19 21:56:29.91 .net
卒業研究でOCamlのライブラリ作ってます。
おもしろいことありますでしょうか?

487:デフォルトの名無しさん
11/09/19 23:59:49.52 .net
SML#の新verがひっそり出てた


488:デフォルトの名無しさん
11/09/24 23:23:23.61 .net
>>479
どんなライブラリでしょうか?

489:デフォルトの名無しさん
11/09/25 11:44:54.04 .net
>>479
どんなライブラリをつくったら面白いでしょうか?
なのか
ライブラリを作ることはテーマとして面白味があるでしょうか?
なのか。

490:デフォルトの名無しさん
11/09/27 20:28:58.48 .net
^^;

491:デフォルトの名無しさん
11/09/27 20:52:03.96 .net
OpenFlow コントローラのライブラリなどはいかが?
比較的、ホットなトピックだと思うけど。

URLリンク(www.google.co.jp)


492:デフォルトの名無しさん
11/09/29 14:23:07.44 .net
MLの型推論の部分だけ「俺言語」の中に取り込みたい
型推論の部分だけ分かりやすくコンパクトにまとめられたコードどこかにないでしょうか

493:デフォルトの名無しさん
11/09/29 15:11:00.44 .net
>>485
URLリンク(en.wikipedia.org)

494:デフォルトの名無しさん
11/09/29 15:56:30.36 .net
>>485
このテキストの17章
URLリンク(www.scala-lang.org)
タイガー本の16章
URLリンク(www.cs.princeton.edu)

495:365
11/09/29 18:07:57.87 .net
>>485
Prolog で型チェック:Rainy Day Codings:So-net blog
 URLリンク(rainyday.blog.so-net.ne.jp)

題名は型チェックだけど、コードはまぎれもなく型推論

496:デフォルトの名無しさん
11/09/29 19:09:02.35 .net
ああPrologだから単一化で型推論が起きるのか。

497:デフォルトの名無しさん
11/10/04 18:43:07.61 .net
prologで型推定が一番楽にできそう
しかし返値しか推定してないね


498:デフォルトの名無しさん
11/10/06 15:33:53.10 .net
SMLやろうと思うんだけど、関数書いたファイルはどこ入れときゃいいの?

499:デフォルトの名無しさん
11/10/06 19:31:29.68 .net
WinにもOCaml3.12.1きてるー
URLリンク(gallium.inria.fr)

500:sage
11/10/06 20:07:16.49 .net
>>492
SML/NJの場合だと、適当なファイル(例えばhoge.sml)に保存して、保存した
フォルダでNJの対話環境を起動して、
use "hoge.sml"
とすればよい。useはカレントディレクトリからソースを読み込む関数で、
カレントディレクトリの取得/変更は、
OS.FileSys.getDirとOS.FileSys.chDirでできる。






501:デフォルトの名無しさん
11/10/06 21:24:34.13 .net
>>493
ありがとう!

502:デフォルトの名無しさん
11/10/11 22:10:01.73 .net
URLリンク(queue.acm.org)

これみるとC#とかやってられんな

503:デフォルトの名無しさん
11/10/13 22:44:28.70 .net
型推論があるから簡潔になるのか
パターンマッチがあるから簡潔になるのか

504:デフォルトの名無しさん
11/10/13 22:47:43.98 .net
両方

505:デフォルトの名無しさん
11/10/13 23:19:58.73 .net
高階関数とカリー化も簡潔に書くのに一役買ってる


506:デフォルトの名無しさん
11/10/14 07:40:42.96 .net
>>495
ひどいよな。C#じゃ複雑なデータ構造を扱おうなんてすると沼じゃないか!
今Haskellの勉強をしててOcamlは読んだことはなかったんだけど
読めるもんだなとも思った。

507:デフォルトの名無しさん
11/10/14 07:48:35.09 .net
The C# code, while functionally equivalent, looks cluttered,
with the real structure obscured by syntactic noise.

事実だけど、辛辣だな。

508:デフォルトの名無しさん
11/10/14 11:38:18.36 .net
>>499
関数型言語群はMLの影響が強いからね。
C言語系という言い方では、ML系と言ってしまってもいい。

509:デフォルトの名無しさん
11/10/14 21:38:01.24 .net
>>501
なるほど、ML系かぁ。そういわれれば納得です。

510:デフォルトの名無しさん
11/10/14 22:41:41.95 .net
C#とかJavaとかはジェネリックが狂ってるな

511:デフォルトの名無しさん
11/10/16 05:15:33.48 .net
js_of_ocaml が面白そうだな

512:デフォルトの名無しさん
11/10/19 21:52:08.21 .net
ocamlてmain関数的なエントリポイントって無いの?
Pythonみたいな泥臭い方法でもいいんだけど.

513:デフォルトの名無しさん
11/10/20 12:56:49.09 .net
具体的に OCaml で何をしたいのか、Python のどこがダサいのか
書いた方が答をもらいやすいよ

514:デフォルトの名無しさん
11/10/20 14:05:46.81 .net
>>505
OCamlにエントリポイントはないです。__main__とかないです。
ocamlc -o a.out a.ml b.ml c.mlとしてコンパイルすると、
a.outの動きとしてはmodule A,B,Cの順番で評価されるイメージになります。


515:デフォルトの名無しさん
11/11/06 03:27:50.02 .net
最近HaskellからOCamlに興味を持って少し触り始めたんですが,OCamlの対話環境にはghciの「:i 」みたいなものは無いんでしょうか?

516:デフォルトの名無しさん
11/11/06 06:11:24.22 .net
「なぜ次に学ぶ言語は関数型であるべきか」
URLリンク(d.hatena.ne.jp)
原文: URLリンク(queue.acm.org)

517:デフォルトの名無しさん
11/11/06 22:31:50.25 .net
toplevel の pretty printer を普通のプログラム内で使う方法ってありますか。

518:デフォルトの名無しさん
11/11/07 22:42:07.36 .net
>>509
どしょっぱつの,Sometimes, が訳されていないとか,いろいろと
気になるところはあるけれど,大意は伝わった。うむうむ。

519:デフォルトの名無しさん
11/11/12 05:42:33.31 .net
>>510 #install_printer のやつ?

520:デフォルトの名無しさん
11/11/12 05:53:40.36 .net
>>510 言語は?

521:デフォルトの名無しさん
11/11/19 10:47:17.91 .net
URLリンク(scan.netsecurity.ne.jp)
tokuhirom、ma.la?っていう人の話だけ聞きたい
色々なスレで見かけるけどWEB業界で有名らしいね
動画ありませんか?

522:デフォルトの名無しさん
11/11/23 00:53:05.05 .net
The little MLerの情報って調べたけど少ないね。大学の図書館
とかなら有りそうに思うけど、今は大学と関係ないから探せんわ。
SML中心で書いてるようだ。Ocamlへの改変の仕方ものってる
というのはgoogle booksでわかった。
使って学習した人っておらんの?

523:デフォルトの名無しさん
11/11/23 09:07:06.79 .net
NACSIS Webcatで検索するか買えば?
面白いよ。

524:デフォルトの名無しさん
11/11/23 14:49:34.72 .net
NACSIS Webcatか
URLリンク(webcat.nii.ac.jp)
意外とおいてるところ少ないね。今学習してる本が片付いたら
購入検討するわ。

525:デフォルトの名無しさん
11/11/23 15:07:11.14 .net
URLリンク(www.d12k.org)

526:デフォルトの名無しさん
11/12/10 10:15:38.86 .net
age

527:デフォルトの名無しさん
11/12/18 01:18:07.20 .net
MLってCACHEに使われてるんだっけ?
RDBでないDBに興味を持ったので調べ始めたんだけど、 ML、CACHEとも事例が中々見つからない...

528:デフォルトの名無しさん
12/01/02 00:09:12.82 .net
OCaml のモジュールについて質問です.
たとえば
A.B
A.C
A.D
みたいにネストしたモジュールをそれぞれ分割されたファイル(a/b.ml, a/c.ml, a/d.ml など階層化されたディレクトリに分けられる?)に書くには OCaml ではどういう方法が一般的でしょうか?


529:デフォルトの名無しさん
12/01/19 07:56:03.89 .net
ocamlc -pack

530:営利利用に関するLR審議中@詳細は自治スレへ
12/03/29 00:44:48.75 .net
SML#
URLリンク(partake.in)

531:デフォルトの名無しさん
12/04/22 14:29:24.78 .net
MLの無名関数 (fn x => x + 1 みたいなの)って再帰的な定義をする記法はないのですか?
fn n => n * (fn n-1) みたいな感じで。

532:デフォルトの名無しさん
12/04/22 17:17:03.18 .net
>>524
どうしてもやりたいならY combinatorを定義して使うとか:
let rec y f x = f (y f) x;;
(y (fun f x -> match x with 0 -> 1 | n -> n * f (n-1))) 10;;


533:デフォルトの名無しさん
12/04/23 08:12:58.62 .net
>>524 そのため(名前を付けて循環定義にするため)に let rec があるので
let rec と組み合わせればいいと思うんだけど、let rec と組み合わせたくない
理由とかある?

534:デフォルトの名無しさん
12/04/23 20:37:41.35 .net
SML/NJでdatatype 'a tree = Empty | Node of 'a * 'a tree * 'a treeとかやっといて、適当な深い木を定義してやると
表示が"Node #"と出てきて省略されてしまうんだけど、略記せずに全部出力させる方法があれば教えて。

535:デフォルトの名無しさん
12/04/23 21:20:09.21 .net
自分でプリンタ書けよ

536:デフォルトの名無しさん
12/04/27 00:54:20.88 .net
camlp4 使った奴でよくみる pa_* な名前の奴の pa って何の略なんだ?

537:デフォルトの名無しさん
12/04/29 02:59:34.92 .net
PArsing
URLリンク(mjambon.com)

538:デフォルトの名無しさん
12/04/30 15:05:27.19 .net
>>530
おお、ありがとう!

539:デフォルトの名無しさん
12/05/08 20:26:45.44 .net
>>527
以下2つに適当に大きな数字を書き込む。
Control.Print.printLength;
Control.Print.printDepth;
あと、
Control.Print.out
も便利。何もしない関数に置き換えると、エコーバックを消せる。


540:デフォルトの名無しさん
12/06/07 13:35:08.25 .net
URLリンク(www.amazon.co.jp)

www

541:デフォルトの名無しさん
12/06/07 13:40:40.11 .net
どこからつっこめばいいの…w

542:デフォルトの名無しさん
12/06/07 17:40:09.00 .net
> 掲載画像とお届けする商品の表紙が異なる場合があります。ご了承ください。

とあるけど、どういうことだろう

543:デフォルトの名無しさん
12/06/07 21:01:28.02 .net
オリンピックをもう一回

544:デフォルトの名無しさん
12/06/11 15:25:00.19 .net
300?

545:デフォルトの名無しさん
12/07/25 19:10:23.62 .net
>>534
>出版社: Addison-Wesley (2017/11/20)

2017年・・・

546:デフォルトの名無しさん
12/07/25 20:56:09.52 .net
OCamlで
 int_of_float -0.7;;
がエラーになるんですが、どうして?

Error: This expression has type float -> int
but an expression was expected of type int

ちなみに、、
# int_of_float 0.7;;
- : int = 0

# -0.7;;
- : float = -0.7

-0.7はfloatじゃないの?何がダメなの?

547:デフォルトの名無しさん
12/07/25 21:13:02.20 .net
中置関数 (-) : int -> int -> int
ががっつり int_of_float を引数に取っているわけで。
int_of_float (-0.7) で使ってください。

548:デフォルトの名無しさん
12/07/25 22:13:31.14 .net
>>540
そういうことでしたか!
ありがとうございます

549:デフォルトの名無しさん
12/07/28 13:56:10.63 .net
>>541
~-.0.7 と書いても良いね

550:デフォルトの名無しさん
12/07/29 11:24:50.70 .net
いつの間にか OCaml4.00.0

551:デフォルトの名無しさん
12/07/29 12:34:47.25 .net
岡村4.00.0

552:デフォルトの名無しさん
12/07/30 17:15:20.50 .net
OCaml
コンパイルして、nativeなコード吐いて、不思議な実行のさせかたしてるのね

553:デフォルトの名無しさん
12/07/30 22:50:31.73 .net
どのへんが不思議なんだ?

554:デフォルトの名無しさん
12/08/12 14:06:23.13 .net
わからない?

555:デフォルトの名無しさん
12/08/12 23:04:07.50 .net
わからない。教えて下さい。お願いします。

556:デフォルトの名無しさん
12/08/13 00:04:10.53 .net
#!/usr/bin/ocamlrun

557:デフォルトの名無しさん
12/08/13 01:29:14.36 .net
nativeの意味を取り違えてない?

558:デフォルトの名無しさん
12/08/13 03:03:42.64 .net
スクリプトじゃないのはdumpすればわかるでしょ

559:デフォルトの名無しさん
12/08/13 11:53:42.11 .net
URLリンク(www002.upp.so-net.ne.jp)

560:デフォルトの名無しさん
12/08/29 23:04:20.96 .net
ねんがんのLittle MLerをてにいれたぞ

OCamlの場合の読み替え方法も載ってるけど、素直にSMLでやった方が良いのかな
てか読んでる人はいるんだろうか・・・

561:デフォルトの名無しさん
12/09/02 03:59:59.39 .net
以下の関�


562:狽ナprint_int x という文を入れると構文エラーになってしまうのですが、何がいけないのでしょうか? let hoge x = print_int x ← これ if x=0 then 0 else x + 10 let test1 = hoge 0 = 0 let test2 = hoge 10 = 20 # #use "printtest.ml";; File "printtest.ml", line 3, characters 4-6: Error: Syntax error ← 原因は?



563:デフォルトの名無しさん
12/09/02 08:57:34.05 .net
print_int x;

564:デフォルトの名無しさん
12/09/02 10:39:53.93 .net
>>555
Thx!出来ました
セミコロンを使うのはインタプリタだけなのかと思っていました
調べてみたら、配列の区切りでも使われるんですね

565:デフォルトの名無しさん
12/09/02 10:47:02.65 .net
ocamlか。おかのコードはごみごみしくて醜いな

566:デフォルトの名無しさん
12/09/02 10:53:23.84 .net
print_string "あ、OCamlです。言ってませんでしたね。すいません¥n";

567:デフォルトの名無しさん
12/09/02 15:19:34.02 .net
>>556
インタプリタの文の区切りは ;; (セミコロンが2つ)
逐次実行は ; (この場合セミコロンの前の式の型が unit でない場合警告が出る)
配列の区切りも ; (これは配列の括弧 [ ] の中でのみ出現する)

568:デフォルトの名無しさん
12/09/28 23:37:26.16 .net
.net におけるOcamlがF#ですが、
JVM上でのOcaml相当のものはないのでしょうか?

569:デフォルトの名無しさん
12/09/29 11:26:57.28 .net
OCaml-Javaは? URLリンク(ocamljava.x9c.fr)

570:デフォルトの名無しさん
12/09/30 17:21:46.18 .net
>>561
おお、これってチラ見したときは単なるライブラリレベルでのサポートかと
思ってましたが、完全なJVM実装なんですね。

571:デフォルトの名無しさん
12/10/03 00:49:32.12 .net
URLリンク(www.lexifi.com)
今年のMLワークショップでもocaml-javaの紹介してたみたい。
どのぐらい出来てるんだろう。
パフォーマンスの話も載ってた。
1/3ぐらい?

572:デフォルトの名無しさん
12/10/12 11:22:15.18 .net
# type t = int * t;;
Error: The type abbreviation u is cyclic
# type t = { x: int; y: t };;
type t = { x : int; y : t; }

# type u = u option;;
Error: The type abbreviation u is cyclic
# type u = Some of u | None;;
type u = Some of u | None

だれか解説してくれ。

573:デフォルトの名無しさん
12/10/12 12:17:07.41 .net
>>563
URLリンク(shootout.alioth.debian.org)
の中くらいのサイズのやつを8つベンチマーク。
0.96倍から7.14倍の実行速度。
3倍内に収まったのが6つあるぜ。

intを扱うベンチが遅い。boxingされちゃうから。
そういうベンチを省くと平均で倍は遅くない。

574:デフォルトの名無しさん
12/10/12 12:26:46.91 .net
>>564
最初のやつは値を作れないし、三番目の型パラメータとして渡すようなのもoptionの中身次第では同じ事になるからじゃね?
と思ったが二番目が通るのがよくわからん。

575:デフォルトの名無しさん
12/10/12 17:55:16.91 .net
>>564
(**** スマンがOCamlは久しく触っていないので、SMLで解説してみる -- 処理系は SML/NJ ****)
- type t = int * t;
Error: unbound type constructor: t
  (* まだ束縛されていない型構成子 t を右辺の型式内で参照しているからエラー *)
- type t = { x: int, y: t};
Error: unbound type constructor: t
  (* 最初の例と同様に、型構成子 t はまだ束縛されていないのでエラー *)
- type u = u option;
Error: unbound type constructor: u
  (* これも同じ理由でエラー *)
- datatype u = Some of u | None;
datatype u = None | Some of u
  (* 上記のtype宣言文とは異なり、datatype宣言文であれば再帰的なデータ型定義が許されている *)
(**** 以上だけど、SMLなら不可解な振る舞いは無く、現象を明解に説明できるよ.... ****)

576:デフォルトの名無しさん
12/10/12 18:44:39.63 .net
>>564
abbreviationではない新しい型がcyclicかどうかは仕様を決める人が自由に決める

一方、タプルとoptionがcyclicではないという仕様は既に決まっているので
タプルのabbreviationとoptionのabbreviationはcyclicではないはず

577:デフォルトの名無しさん
12/10/12 19:52:28.31 .net
>>565
おお、ちゃんと動くもんなんだね!

578:デフォルトの名無しさん
12/10/13 10:18:23.39 .net
おお。皆さん回答ありがとう。

>> 566
値を作れないわけではなかったりする。

# type t = { x: int; y: t };;
type t = { x : int; y : t; }
# let rec loop () = loop ();;
val loop : unit -> 'a = <fun>
# { x = 0; y = { x = 1; y = loop () } };;

いや、作れてはいないんだけど、型は付く。
CPS っぽい感じのプログラムで最後に exit するような場合、こういう型が出現することもある…気がする。
tuple で許されず、 record で許されるのに何か理由があるのかと思ったけど、
>>567 さんの通り、 SML ではどちらも許されないそうだし、あんまり深い意味はないのかな。

>>568
人(言語仕様)が自由に決めるとして、なんでこんなチグハグに(素人目には)見える仕様に
なってるのかなーという。 record が通るってことは、どっちの仕様でも型安全性は保証されるのだよね?
それぞれの仕様の pros/cons が知りたい。

あと、 option の方は、処理系が option の内容を辿るように頑張って実装すればイケるのか、
型理論的になにか問題があるのかよく分からない。

579:デフォルトの名無しさん
12/10/13 10:30:56.43 .net
ああ書いていて気づいた。 record は mutable なフィールドを許すから、

# type t = { x: int; mutable y: t };;
type t = { x : int; mutable y : t; }
# let rec v = { x = 0; y = v };;

こういう循環している値を使うことが普通にあるわけで、 cyclic な型を認めておいた方が便利なのだ。
一方で tuple は常に immutable だから、無限ループになるような通常は起こりにくい状況でしか
cyclic な型が出てこない。

たぶん。

580:デフォルトの名無しさん
12/11/03 17:26:40.17 .net
久々にtuareg-mode使ったけど、インデントが変わったのな。
昔のはletをネストするとだんだん右に行って見づらかった

581:デフォルトの名無しさん
12/11/07 04:55:27.01 .net
Ocaml関数引数の省略説明って簡単に嵌ってしまた
let plus x y = x + y
let incr = plus 1
incr 1
2

let minus x y = x - y
let decr = minus 1
decr 2
-1 ????
let decr = plus -1
error
let decr = plus (-1)
decr 2
1

let decr x = minus x 1
decr 2
1
こんな感じww
途中で
val incr : int -> int = <fun>
こんな説明出てくるけど、何それ?ってw

582:デフォルトの名無しさん
12/11/07 19:10:06.18 .net
そうですね。

583:デフォルトの名無しさん
12/11/08 20:48:16.69 .net
例えばこの例は間際らしい
let capitalize = function
| 'a' .. 'z' as letter -> Char.uppercase letter
| 'A' .. 'Z' as letter -> letter
| _ -> failwith "Not a valid letter"

これを、こう書き換えても問題ない
let capitalize = function
| 'a' .. 'z' as lett -> Char.uppercase lett
| 'A' .. 'Z' as lette -> lette
| _ -> failwith "Not a valid letter"
何が言いたいかと言うと、初見の場合as letter が何か特別な予約語に思えて混乱する(letterの綴りが省略されていないため)
で、下のように書き換えて動作を確認した

584:デフォルトの名無しさん
12/11/11 07:45:41.63 .net
これ
let head_head = function
| [] -> failwith "the list is empty"
| []::_ -> failwith "the head is the empty list"
| (h::_)::_ -> h

head_head [[1;2;3];[4;5;6]]
1
とか、listのlistから、頭のlistの頭を取り出す関数なんだけど
head_head []
head_head [[];[1]]
とかはエラーを返すけど
head_head [1;2;3]
とかするとlistの要素がlistじゃないってエラーが出てくる
この場合を検出してエラーを返す書き方が思いつかない
検出する意味も必要もないのかどうかも


585:分からない



586:デフォルトの名無しさん
12/11/11 08:04:45.04 .net
head_headの型を理解してるか?

587:デフォルトの名無しさん
12/11/11 09:47:55.90 .net
はい、たぶん
基本[[];[]]な形式、list のlist構造
でも、なんか色々自由がありそうと感じる分、制約とか制限についての認識が欠落してしまう
制約制限がないと意味不明のバクが爆発するから必須なんだけど
なのに、魂が叫ぶ、もっと自由にやらせろ
間違って[1;2;3]な通常のlistを渡したときなんとか出来そうな思い込みをしてしまう。

[]要素のないlist
[[];[1;]] listの最初のlistが[]なlist
[[];[]]   同上
[1;2;3] 必要な要件を全然満たさないlist構造

588:デフォルトの名無しさん
12/11/11 14:45:44.54 .net
型が違えば処理系に弾かれてお終い

589:デフォルトの名無しさん
12/11/11 18:10:18.79 .net
考え方が動的型付けに染まってる印象。

590:デフォルトの名無しさん
12/11/12 02:30:05.37 .net
>>579,580
すいません
その通りで御座います。

591:デフォルトの名無しさん
12/11/17 14:20:04.43 .net
let f = function
| [] -> failwith "empty list"
| [| _; (_, x) |]::_ -> x
| _ -> failwith "the first array should be of size two"

f [[|(1,2);(3,4)|];[|(5,6);(7,8)|]];;
でint = 4の結果が得られる
でも、 エラー"the first array should be of size two"が表示される引数が上手く作れない
システムが先にエラーを吐き出す。

592:デフォルトの名無しさん
12/11/17 18:42:30.31 .net
# f [[|(1,2)|];[|(5,6);(7,8)|]];;
Exception: Failure "the first array should be of size two".

いかんのか?

593:デフォルトの名無しさん
12/11/17 19:34:18.32 .net
>>583
ありがとうございます。
出来ました。
関数fの受け付ける
('a * 'b) array list -> 'b = <fun>
の形式がどの様な表現なのか直感的に理解できなかったので助かりました。
('a * 'b) array list形式の引数が与えられると
2番目の条件にマッチングできなくて、3つ目の条件で"the first ~~ two"が表示されるんですね。
[[|(1,2)|]] の様に表現するとタイプミスマッチとか処理系がエラーを出すと思っていました。
でも、('a * 'b) array list形式なので引数としては間違っていない。

594:デフォルトの名無しさん
12/11/19 03:26:09.19 .net
結局、[1,2]と入力すると[(1,2)]と返ってくるのでlistの要素構造を勘違いしてた(この部分"[(1,2)]"を見落とし)
[1;2]は整数1と2によるlist、これと[(1,2)]の省略した入力[1,2]と混同してた
だから、[1;(2,3)]とか入力してエラー出されて??な感じ。
正しくは、[(1,4);(2,3)]と表現しないといけない。
[1,4;2,3]とタイプしても正しく[(1,4);(2,3)]と返ってくる
こんな初歩的な部分で躓くとは、これではソースが読めないわけだ。

595:デフォルトの名無しさん
12/12/02 17:11:41.64 .net
URLリンク(caml.inria.fr)
には書いてないけど、+ や +. って - -. と同じく二項演算子かつ単項演算子じゃないのか?
+. (1.0 + 2.0);; とか通るし。

596:デフォルトの名無しさん
12/12/02 17:46:32.55 .net
Characters 4-7:
+. (1.0 + 2.0);;
^^^
Error: This expression has type float but an expression was expected of type
int

597:デフォルトの名無しさん
12/12/02 17:57:04.40 .net
+. (1.0 +. 2.0);;

598:デフォルトの名無しさん
12/12/03 01:35:54.04 .net
Characters 0-2:
+. (1.0 +. 2.0);;
^^
Error: Syntax error

599:デフォルトの名無しさん
12/12/03 01:37:54.28 .net
parsing/parser.mliを見ると確かにそうらしい

| subtractive expr %prec prec_unary_minus
{ mkuminus $1 $2 }
| additive expr %prec prec_unary_plus
{ mkuplus $1 $2 }

600:デフォルトの名無しさん
12/12/03 16:07:32.97 .net
pervasives.mliにこんなん書かれてた
147 external ( ~- ) : int -> int = "%negint"
148 (** Unary negation. You can also write [- e] instead of [~- e]. *)

601:デフォルトの名無しさん
12/12/03 17:08:25.93 .net
むしろ、
URLリンク(caml.inria.fr)

> val (~+) : int -> int
> Unary addition. You can also write + e instead of ~+ e.
> Since 3.12.0

> val (~+.) : float -> float
> Unary addition. You can also write +. e instead of ~+. e.
> Since 3.12.0

言語拡張が間に合わなかった感じだねこれ
Ad-hockぽいし

602:デフォルトの名無しさん
12/12/03 17:48:39.20 .net
なるほど。+. が単項opとして機能するのは Since 3.12.0 からの拡張なのか。
で間に合ってないというのは 589 の環境のことか。最新の ocaml では通る。

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

603:デフォルトの名無しさん
13/02/10 19:42:11.39 .net
最近、OCamlを勉強し始めたんだけど、標準関数で int listを印字する方法ってありますか?
REPLの出力みたいのを求めているんですが。

604:デフォルトの名無しさん
13/02/28 00:26:28.39 .net
>>594 コンパイラ内部の関数をごにょごにょすれば別かもしれないけど基本的にない。
対象がint listって決まってるなら、自分で書いたほうが楽だと思う。

605:デフォルトの名無しさん
13/02/28 01:13:07.87 .net
REPL環境に限定すれば実はREPLのプリティプリンタを使えたりするんだけど、
使ってしまうと単独の実行ファイルにできなくなる罠。

606:デフォルトの名無しさん
13/03/24 17:14:56.10 .net
OCamlで、(=)等を渡す
let check b f = if b then f 1 1 else f 1.0 1.0
みたいな関数を定義したいんですけど、こういったやり方は駄目ですか?
そのままだとfはintを取ると推論されて?エラーになるので、
型を(f: 'a -> 'a -> bool)と指定してみたんですが変わりませんでした。

607:デフォルトの名無しさん
13/04/20 01:56:05.49 .net
>>597
よくわからないけど、型環境に intかつfloat みたいなのが積めないからだめなんじゃない?
確かこういうときはヴァリアントを使えばよかったはず
type intfloat = E | I of int | F of float
let check b (f: intfloat -> intfloat -> bool) = if b then f (I 1) (I 1) else f (F 1.0) (F 1.0)

608:デフォルトの名無しさん
13/06/09 21:47:36.26 .net
OCaml のはなしです。

module type IO =
sig
 type 'a t
 val write: string -> unit t
 val read: string t
 val run: 'a t -> 'a
 val bind: 'a t -> ('a -> 'b t) -> 'b t
end

module MyIO : IO =
struct
 type 'a t = unit -> 'a
 let read = read_line
 let write str = fun () -> print_string str
 let run m = m ()
 let bind m f = fun () -> (run (f (run m)))
end

で Haskell の IO monad 風にできるのはわかったけど、
'a t を x -> b という関数の形じゃなくて、バリアント型で実現したい。
read に対応したアクションまたは write に対応したアクション、という感じで。
けど、どうやってもうまくいかない。誰か教えてくださいませ。

609:デフォルトの名無しさん
13/06/16 21:34:59.42 .net
opamを導入して適当なモジュール(今回はextlib)をインストールして
ソースコードにopen Extlibと書いたところExtlibが見つからないと言われてしまいました
何かパス通しのようなものが必要なのでしょうか
OSはmacでhomebrewを使っています

610:デフォルトの名無しさん
13/06/16 22:08:09.11 .net
よくわかりませんがOCamlFindを使えば良いのですね
ocamlfind ocamlc -package extlib -linkpkg test.ml
で通りました


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