関数型言語ML (SML, OCaml, etc.), Part 6

■ このスレッドは過去ログ倉庫に格納されています
2009/06/15(月) 07:15:21
関数型言語MLについて語るスレッドです。

MLは、確固とした理論的背景を持つ言語でありながら、
現実的なソフトの開発にも使用できる実用性を備えた言語です。
また、プログラミングの初心者が最初に学習する言語としても優れています。

総本山
Standard ML http://www.smlnj.org/
Objective Caml http://caml.inria.fr/ocaml/

前スレ
関数型言語ML(SML, OCaml, etc.), Part 5
http://pc12.2ch.net/test/read.cgi/tech/1186292994/
170165
垢版 |
2009/08/24(月) 23:26:43
>>169
ありがとうございます。
ExtLib, Batteriesの双方に同じ名前のモジュールが含まれていたので疑問に思って
いたのですが謎が解けました。SML Basis Libraryにあるような関数は、名前違いで
大体ExtLibでサポートされているようで安心しました。

ビルドツールはGNU makeを主に使ってきたのですが、omakeはファイル更新の
チェックが素晴らしいようなので、omakeを使ってみます。
2009/08/25(火) 11:41:33
なんでもいいから早く標準に入れてくれ
追加インストールとか面倒だし
2009/08/25(火) 12:34:52
こんなとこで呟いても何も起こらんよ。
2009/09/01(火) 14:33:39
だれかOCaml Meetingいった?
2009/09/01(火) 20:45:28
いったよー

おもろかったけどgolfとかコンパイラ改造とかネタが裏街道過ぎて
実用志向のユーザー増えねえだろこれじゃ、とか思った
2009/09/01(火) 22:15:16
行かなかったが、ストリーミングでアメリカ人?の発表のところまで見た。
Golfの話は意外と参考になった。演算子定義周りとか、普段あまり使わないから。
演算子によって優先順位が固定されているの勉強になった。
あとObj.magic。あれは反則技だろw
2009/09/07(月) 05:40:38
OCamlが+-*/等の演算子をpolymorphicに出来ない理由って何?
2009/09/09(水) 17:30:37
jocamlをmingw上でコンパイルするにはどうすれば良いでしょうか。
2009/09/09(水) 17:32:57
jocamlをmingw上でコンパイルしようとするとこんなエラーが出ます。

$ ./configure
$ make world
・・・
gcc -o ocamlrun \
prims.o libcamlrun.a -lm
libcamlrun.a(main.o):main.c:(.text+0x26): undefined reference to `caml_expand_command_line'
libcamlrun.a(sys.o):sys.c:(.text+0x4ea): undefined reference to `caml_win32_random_seed'
libcamlrun.a(startup.o):startup.c:(.text+0x936): undefined reference to `caml_signal_thread'
libcamlrun.a(signals_byt.o):signals_byt.c:(.text+0x46): undefined reference to `caml_win32_signal'
libcamlrun.a(signals_byt.o):signals_byt.c:(.text+0xab): undefined reference to `caml_win32_signal'
collect2: ld returned 1 exit status
・・・
2009/09/09(水) 18:09:02
多分 configure したのが間違い。
OCaml の mingw のビルドを参考にしたら?
JoCaml には付いて無いけど OCaml の README.win32 に書いてある。

2009/09/09(水) 20:36:00
>>179
ありがとうございます。

cp config/m-nt.h config/m.h
cp config/s-nt.h config/s.h
cp config/Makefile.msvc config/Makefile

config/Makefileの中身のOTHERLIBRARIESからlabltkを削除し、PREFIXをインストールしたいディレクトリに変更し、

make -f Makefile.nt world

を実行したまでは良かったのですが、

make[1]: *** No rule to make target `win32.c', needed by `win32.o'. Stop.
make[1]: Leaving directory `/d/tmp/jocaml-3.11.1/byterun'
make: *** [coldstart] Error 2

と出てストップしてしまいます。
jocaml-3.11.1にはwin32.cが入っていないようですが、これは不具合ということでよろしいでしょうか。
2009/09/09(水) 21:23:00
mingwなんだからMakefile.mingw使わなきゃならないと
182179
垢版 |
2009/09/09(水) 21:31:19
さーねぇ、俺は JoCaml 使ったこと無いからこれ以上は判らんね。
同じバージョンの OCaml から引っ張って来たら運が良かったらビルドできるかも知れないが、
こんなトコで聞くくらいだったら JoCaml の人に win32.c 無いって聞く方がいいんじゃない?
183179
垢版 |
2009/09/09(水) 21:45:10
>>181
ん?あ、確かに。リンクエラーも判らんし README も読めんのに挑戦かよ。

2009/09/09(水) 22:30:08
OCamlから足りないソース持ってこないといかんかもね
それで動く保証はないけど
185デフォルトの名無しさん
垢版 |
2009/09/09(水) 22:31:05
unix でやるのが早いでしょ。
2009/09/09(水) 22:34:59
>>181
あ、Makefile.mingwでやりました。
上のはコピペで修正し忘れていました。
2009/09/09(水) 22:36:17
>>185
JoCamlでアプリを書くつもりなので、Windowsでないとダメなんですよ。
188デフォルトの名無しさん
垢版 |
2009/09/09(水) 22:47:01
Luc でさえ、windows で試してないって言ってるし、
イバラの道じゃないかねー。Luc に聞かんと誰もわからんよ。
ちなみに win32.c は jocaml のレポから随分前に消えてる。
189デフォルトの名無しさん
垢版 |
2009/09/09(水) 22:49:38
http://jocaml.inria.fr/
We distribute JoCaml as sources. Those sources are for Unix systems
と書いてあるが、これは読んだのか?
2009/09/11(金) 20:25:19
Batteries Included のドキュメントみてたら
リスト内包標記とか where 節とか open Module in とかあってびびった
使ってる人いる?
191デフォルトの名無しさん
垢版 |
2009/09/12(土) 11:44:43
既存のp4拡張をいろいろ集めただけでしょ。
open in はオーバーヘッドを理解してれば使える。
2009/09/17(木) 12:29:49
オーバーヘッドあるんだ。
2009/09/17(木) 12:56:31
open M in e は
let module M' = struct open M let v = e end in v
に変換されるので、ブロックを一つ作る。
普通はたいしたこと無いが、再帰関数中で open M in するのは少し考え物だ。
2009/09/17(木) 13:09:21
すまん、let module M' = struct open M let v = e end in M'v の間違い

let rec f x = open M in e (* e 中に f の再帰呼出あり *)

とか書くと f の呼出しごとにブロックが出来て、時間とメモリを食う。
2009/09/17(木) 13:13:49
M'.v ですー。
2009/09/19(土) 14:39:44
時間とメモリを食うのはコンパイル時じゃないの?
197デフォルトの名無しさん
垢版 |
2009/09/21(月) 22:22:32
実行時にもオーバーヘッドがある。気になるならベンチ取ってね。
2009/10/18(日) 14:08:13
浅井さんの「プログラミングの基礎」のサポートページって消えてる?
2009/10/31(土) 11:31:30
birdの書いたsudokuの解放プログラム面白かった。
http://www.cs.tufts.edu/~nr/comp150fp/archive/richard-bird/sudoku.pdf
200デフォルトの名無しさん
垢版 |
2009/11/09(月) 04:34:20
Practical OCaml 買おうかと思ったのですが、評判悪いのが気になりました。
実際に読んだ方いましたら、感想を聞かせてください。
201デフォルトの名無しさん
垢版 |
2009/11/09(月) 23:09:48
> Practical OCaml 買おうかと思ったのですが、評判悪いのが気になりました。
> 実際に読んだ方いましたら、感想を聞かせてください。

たった今、ゴミだからいらないという人にもらいました。確かにゴミです。ネタとしてならどうぞ。
2009/11/10(火) 00:11:27
俺はocamllex ocamlyacc の簡単なチュートリアルが欲しくて買ったけど、
そこについては別にひどくは無かったと思ったよ。
203デフォルトの名無しさん
垢版 |
2009/11/10(火) 04:23:58
コードのインデントが至るところで狂っている時点でダメでしょう。
どのページを開いても何かツッコミどころがあるというある意味貴重な本。
値段も安くはないし絶対にお薦めしない。
204デフォルトの名無しさん
垢版 |
2009/11/10(火) 21:20:02
http://d.hatena.ne.jp/camlspotter/20091110/1257833616
http://rainyday.blog.so-net.ne.jp/2006-11-25
http://shuns.sakura.ne.jp/?%BD%B5%B5%AD%2F2006-4-

これ出た当時はオライリーのフランス語のやつ(当時すでに絶版)以外ではこれしか本がなかったけど
日本語書籍がいくつもある今買う価値はないと思いますね。
205デフォルトの名無しさん
垢版 |
2009/11/12(木) 00:57:52
SML#の大堀先生は、最近、何してるの?
継続してれば、有望だと思ったんだけどな・・・ > SML#
2009/11/14(土) 00:34:44
>>201
apressの書籍ってほとんどハズレだと思う
これもハズレだったよ
2009/11/14(土) 02:34:17
【科学】道路に軍手が落ちているワケ、名城大研究チームが突き止める[09/11/05]

http://namidame.2ch.net/test/read.cgi/hidari/1257990721/


2009/11/17(火) 02:45:27
くそう軍手……気になる
2009/11/17(火) 13:34:53
推測の為の方程式として,土礼君の方程式がよく知られている.
しかし,パラメータの値には様々な見解がある.
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:道路上の軍手の寿命
2009/11/17(火) 17:11:18
靴とか靴下が落ちているワケも気になるぞ
誰か研究してくれ
2009/11/17(火) 23:27:17
そりゃ浮いてたら邪魔だからじゃないか。
2009/11/17(火) 23:53:58
軍手なんて色気のないものに血眼になるなよ。
2009/11/18(水) 00:15:00
>>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:道路上のパンティーの寿命
2009/11/18(水) 01:10:38
パンツのことをパンティと呼ぶのは40代以上。
40代未満はパンツかショーツと呼ぶ。
2009/11/18(水) 01:23:51
>>214
ウーロン知らないの?
2009/11/18(水) 02:10:39
最近は単語で会話するのが流行っているの?
例:
「お茶」→「俺は紅茶が飲みたい。お茶といえば緑茶じゃなくて紅茶でしょ。緑茶とかジジくさいし。」
2009/11/18(水) 02:30:26
>>214
類似定理に「キャロライン洋子を知っている人は1969年以前生まれ」がある。
2009/11/18(水) 03:07:49
ならばこれはどうだ

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:道路上のブラジャーの寿命
2009/11/18(水) 03:16:53
やめてけーれ
2009/11/18(水) 03:50:10
>>217
72年生まれでびっくり日本新記録を見ていた私はなんですか?
2009/11/18(水) 12:01:06
びっくり日本新記録は1975年から1985年までやっていたようだから、
72年生まれなら13歳中一まで見れていたことになる。
特別なことはなにもないと思うが。

マッハGoGoGoとか鉄腕アトムの第一作目をリアルタイムに見ていたとかいうなら驚愕ものだが。
2009/11/18(水) 19:34:27
ここに1967年生まれの俺が居るわけだが
2009/11/18(水) 20:22:40
5年前の俺なら老害呼ばわりしたかもしれないが、
最近はむしろ尊敬するようになってきた。
なんつーか、歳を重ねるってのはそれだけで立派だよ。

対して俺はゆとりに「この昭和生まれが」と言われてショックを受けた
2009/11/18(水) 20:26:52
>>223
rougai
2009/11/18(水) 21:29:42
>>223
そうは思わない

> 最近はむしろ尊敬するようになってきた。
ああ・・・ついにお前も老害の仲間入りか。
人間というのは自分の置かれた環境や立場によって考え方を変える生き物だというだけのこと。
お前が老害ジジイを擁護するようになったということは、
老害扱いされる時期がもうすぐ目の前に来ている証拠なんだよ。

たしか60歳以上の老人たちは日本が持っているカネの55%を持っているんだよな。
そしてそのカネを何に使うかというアンケートによると、
がんばってきた自分へのご褒美に贅沢するために使うのだそうだ。
若者が苦しんでいるときにそんなことを許していいわけがないだろ。
老人を過剰に保護するのをやめても老人は困らないし、
財源確保のために老人たちから搾り取ればいいと思う。
2009/11/18(水) 21:37:01
あと、就業における年齢制限もやめるべきだと思う。
定年を設けている企業や官公庁が大半だと思うけど、それって年齢差別だよね。
60歳でもまだまだ働ける人がほとんどなのに定年で辞めさせるのはどうかと思う。
そうする代わりに、経営者に自由に解雇する権利を与えて、年功上列・終身雇用も撤廃して、
終身雇用に安住している無能なやつ(老害)をどんどん解雇していけばいいと思う。
無能な奴は一生平社員の単純労働でこき使えばいいよ。
長い間単純労働してるからといって才能の無い奴を無理に昇進させる必要もないと思う。
2009/11/18(水) 21:41:57
アホかw
2009/11/18(水) 21:42:48
>>223
歳を重ねるだけで得られるようなものなら誰でも手に入るから価値は無い。
2009/11/18(水) 21:45:57
>>226
解雇すればいいのに、こき使うの?
2009/11/18(水) 21:49:56
俺も高齢者は手厚く保護されすぎているように思う。
もっと若者と同じように扱えばいいのにね。
具体的にどこか体が故障している人を障害者認定して、
障害者として文化的な生活をおくるために補助をするなら分かるけど、
高齢者だからという理由だけで保護するのは過保護というものじゃないかな。
2009/11/18(水) 21:52:31
ML と関係ない話は他所でやれ
2009/11/18(水) 21:53:24
ジジババとかマジいらねえ
団塊世代は頭が鈍くて経験も役に立たないし物事を計画的にするのも下手だし散らかすのだけは一流で後片付けのことは微塵も考えないゴミなんだよなぁ
2009/11/18(水) 21:53:31
>>225
> がんばってきた自分へのご褒美に贅沢するために使うのだそうだ。

金が回るならいいことじゃないか
2009/11/18(水) 21:54:24
そう、そのウンコどもが苦手な分野こそが関数型言語
2009/11/18(水) 21:56:33
>>233
ところが、使った分が戻っていくのが世にも奇妙な現象
2009/11/18(水) 21:57:38
さっさとMLをブームにして金を使わせろ
2009/11/18(水) 22:02:41
>>236
ダメ、ジジババはコンピュータ音痴だから。
2009/11/18(水) 22:17:02
なにやら怨念めいたものを感じるな
南無阿弥陀仏
2009/11/25(水) 12:41:38
'M`L < 新言語できたよー
2009/11/26(木) 15:44:50
団塊世代は経済の成長期に楽しくお仕事して、下向きになったらつまらないから働くのやめるとか言い出す。
おいしいところだけ食べてトンズラとかマジきめえw
自分たちの責任を後世に押し付けて、自分は今まで楽しく稼いだお金で楽しく老後を過ごす予定なのか?
そんなことが許されるわけがない。
世の中みんなが辛いと思っているんだから自分だけ良い思いをしようとするなんて許されるわけがない。
団塊世代は身勝手だ。
搾取されるべきは団塊世代だ。
金があるんだから搾取してもかまわないだろ?
2009/11/26(木) 16:25:40
一番の癌は大企業にぶらさがってる労組だな
特にJALやJRや某新聞社の労組
それから日教組
こいつらが日本のまじめな生産者の利益を貪ってる
2009/11/26(木) 16:27:14
企業経営者が自由に社員をクビにできないのが問題。
2009/11/26(木) 16:47:17
正社員を簡単にクビに出来ないから
会社は正社員じゃなくて派遣を使いたがる
派遣ピンハネ業だけが儲かる
2009/11/26(木) 16:52:24
クビにできないのを良いことに労働組合を背景にやりたい放題やって楽して金だけもらって逃げた団塊世代
2009/11/26(木) 16:53:19
良いこと考えた
正社員を派遣すればいいんじゃん
2009/11/26(木) 18:11:29
マルチのコピペにいちいち釣られてんのか
コピペした奴が自分で反応してんのか
どっちにしてもアホだ
2009/11/26(木) 18:58:16
>>245
面倒だから経営も外注するか。

労組嫌ってるやつは公務員か?死ねよ
2009/11/26(木) 19:03:43
http://pc12.2ch.net/test/read.cgi/tech/1189246532/l50
249デフォルトの名無しさん
垢版 |
2009/12/06(日) 22:09:27
>>243
欧州のどこだかは、派遣使うとそれだけ割高になるような法律になってるとか
聞いたことある。
250デフォルトの名無しさん
垢版 |
2009/12/07(月) 00:49:50
>>245
プログラマの派遣なら、正社員の派遣が主流じゃないか?

>>249
法律なんか作らなくても、市場原理に任せておけば派遣のほうが高くなる。
レンタルとリースのどっちが割高かってこと。
むしろ、法律によって市場を歪めているのが諸悪の原因。
251デフォルトの名無しさん
垢版 |
2009/12/31(木) 15:29:23
>>250
どの法律のこと?
2009/12/31(木) 19:26:50
おい、押すなよ、、絶対だぞ」
2009/12/31(木) 21:53:25
ポチっとな
2010/01/03(日) 16:49:17
val () = print "あけおめ\n"
2010/01/07(木) 21:35:11
OCaml用のlibcurlバインディングらしい、ocurlを入れようとしたのですがエラーが出ます。
curl-helper.c
主に「dereferencing pointer to incomplete type」というエラーが大量に出ます。
どうすればいいのでしょうか。
./configやlibcurlのインストールなどは済ませています。
環境はMSYS + MinGW、Windows 7です。
256デフォルトの名無しさん
垢版 |
2010/01/08(金) 18:36:46
libcurl のバージョンは。
257デフォルトの名無しさん
垢版 |
2010/01/08(金) 18:43:34
バージョンはよいみたい。一度古いので苦労した記憶がある
2010/01/09(土) 03:51:07
libcurlはWindows版では最新の7.19.7を入れました。
MinGWは最新のものを入れています。
ところで、http://jocaml.inria.fr/http://caml.inria.fr/ が落ちているのですが。
2010/01/09(土) 04:31:29
http://caml.inria.fr/pub/docs/manual-ocaml/manual032.html#toc135
ここの例通りに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でやりました。
2010/01/09(土) 08:51:21
>>259
Cランタイムのシンボルを見つけられてない、ということで
>Cygwinでocamlc -c modwrap.cすると何故かアクセスが拒否されるので modwrap.cとmod.mlのコンパイルはMinGWでやりました。
が怪しい。
この部分MinGWとCygwinの互換性はあるの?Cygwin知らんけど、全部-mnocygwinならどうだろう。
2010/01/09(土) 09:28:15
>260
>この部分MinGWとCygwinの互換性はあるの?
エラーが出てるのは正に MinGW と Cygwin で互換性のなさそうな部分だね。

>259
>何故かアクセスが拒否される
modwrap.c を Windows ネイティブのアプリで編集していたりすると発生する場合もあるので
・Cygwin アプリで編集する
・mkpasswd とか使って /etc/passwd を見直してみる
・とりあえず chown / chmod してみる
・ACL 周りの設定を変えてみる(mount とか環境変数 CYGWIN とか)
あたりはどうだろ。
2010/01/11(月) 21:48:13
>>260
>>261
助言ありがとうございます。
レスを頼りにいろいろ試してみましたが、だめでした。
OcamlもCygwinも使ってまだ日が浅いので大事なところを見落としているのかもしれません。
今忙しいのであまり時間が取れないのですが、Cygwinで揃えてまたいろいろと試してみようと思います。
本当にありがとうございました。
2010/02/06(土) 21:54:14
Moscow ML 使ってみようと思ったら、もうずっと更新されてないんだね…
2010/02/19(金) 00:01:29
SchemeとMLは、心が洗われるわー
2010/02/19(金) 23:52:14
あー汚れてるんですね
2010/02/22(月) 10:15:16
はい
2010/02/26(金) 18:43:33
        
2010/03/18(木) 02:27:03
OCamlはCにembedできますか?
2010/03/22(月) 23:27:08
Milnerが亡くなったそうだね
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況