関数型言語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/
探検
関数型言語ML (SML, OCaml, etc.), Part 6
■ このスレッドは過去ログ倉庫に格納されています
2009/06/15(月) 07:15:21
244デフォルトの名無しさん
2009/11/26(木) 16:52:24 クビにできないのを良いことに労働組合を背景にやりたい放題やって楽して金だけもらって逃げた団塊世代
245デフォルトの名無しさん
2009/11/26(木) 16:53:19 良いこと考えた
正社員を派遣すればいいんじゃん
正社員を派遣すればいいんじゃん
246デフォルトの名無しさん
2009/11/26(木) 18:11:29 マルチのコピペにいちいち釣られてんのか
コピペした奴が自分で反応してんのか
どっちにしてもアホだ
コピペした奴が自分で反応してんのか
どっちにしてもアホだ
247デフォルトの名無しさん
2009/11/26(木) 18:58:16248デフォルトの名無しさん
2009/11/26(木) 19:03:43249デフォルトの名無しさん
2009/12/06(日) 22:09:27250デフォルトの名無しさん
2009/12/07(月) 00:49:50251デフォルトの名無しさん
2009/12/31(木) 15:29:23252デフォルトの名無しさん
2009/12/31(木) 19:26:50 おい、押すなよ、、絶対だぞ」
253デフォルトの名無しさん
2009/12/31(木) 21:53:25 ポチっとな
254デフォルトの名無しさん
2010/01/03(日) 16:49:17 val () = print "あけおめ\n"
255デフォルトの名無しさん
2010/01/07(木) 21:35:11 OCaml用のlibcurlバインディングらしい、ocurlを入れようとしたのですがエラーが出ます。
curl-helper.c
主に「dereferencing pointer to incomplete type」というエラーが大量に出ます。
どうすればいいのでしょうか。
./configやlibcurlのインストールなどは済ませています。
環境はMSYS + MinGW、Windows 7です。
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 バージョンはよいみたい。一度古いので苦労した記憶がある
258デフォルトの名無しさん
2010/01/09(土) 03:51:07 libcurlはWindows版では最新の7.19.7を入れました。
MinGWは最新のものを入れています。
ところで、http://jocaml.inria.fr/ や http://caml.inria.fr/ が落ちているのですが。
MinGWは最新のものを入れています。
ところで、http://jocaml.inria.fr/ や http://caml.inria.fr/ が落ちているのですが。
259デフォルトの名無しさん
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でやりました。
ここの例通りに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でやりました。
260デフォルトの名無しさん
2010/01/09(土) 08:51:21 >>259
Cランタイムのシンボルを見つけられてない、ということで
>Cygwinでocamlc -c modwrap.cすると何故かアクセスが拒否されるので modwrap.cとmod.mlのコンパイルはMinGWでやりました。
が怪しい。
この部分MinGWとCygwinの互換性はあるの?Cygwin知らんけど、全部-mnocygwinならどうだろう。
Cランタイムのシンボルを見つけられてない、ということで
>Cygwinでocamlc -c modwrap.cすると何故かアクセスが拒否されるので modwrap.cとmod.mlのコンパイルはMinGWでやりました。
が怪しい。
この部分MinGWとCygwinの互換性はあるの?Cygwin知らんけど、全部-mnocygwinならどうだろう。
261デフォルトの名無しさん
2010/01/09(土) 09:28:15 >260
>この部分MinGWとCygwinの互換性はあるの?
エラーが出てるのは正に MinGW と Cygwin で互換性のなさそうな部分だね。
>259
>何故かアクセスが拒否される
modwrap.c を Windows ネイティブのアプリで編集していたりすると発生する場合もあるので
・Cygwin アプリで編集する
・mkpasswd とか使って /etc/passwd を見直してみる
・とりあえず chown / chmod してみる
・ACL 周りの設定を変えてみる(mount とか環境変数 CYGWIN とか)
あたりはどうだろ。
>この部分MinGWとCygwinの互換性はあるの?
エラーが出てるのは正に MinGW と Cygwin で互換性のなさそうな部分だね。
>259
>何故かアクセスが拒否される
modwrap.c を Windows ネイティブのアプリで編集していたりすると発生する場合もあるので
・Cygwin アプリで編集する
・mkpasswd とか使って /etc/passwd を見直してみる
・とりあえず chown / chmod してみる
・ACL 周りの設定を変えてみる(mount とか環境変数 CYGWIN とか)
あたりはどうだろ。
262デフォルトの名無しさん
2010/01/11(月) 21:48:13263デフォルトの名無しさん
2010/02/06(土) 21:54:14 Moscow ML 使ってみようと思ったら、もうずっと更新されてないんだね…
264デフォルトの名無しさん
2010/02/19(金) 00:01:29 SchemeとMLは、心が洗われるわー
265デフォルトの名無しさん
2010/02/19(金) 23:52:14 あー汚れてるんですね
266デフォルトの名無しさん
2010/02/22(月) 10:15:16 はい
267デフォルトの名無しさん
2010/02/26(金) 18:43:33268デフォルトの名無しさん
2010/03/18(木) 02:27:03 OCamlはCにembedできますか?
269デフォルトの名無しさん
2010/03/22(月) 23:27:08 Milnerが亡くなったそうだね
270デフォルトの名無しさん
2010/03/22(月) 23:32:10271デフォルトの名無しさん
2010/03/28(日) 22:50:27 『プログラミングの基礎』 浅井健一著 を買ってポチポチ楽しく
やってるんですが、著者のサポートサイトに書いてあるように
やっても、未だに日本語の表示が出来ません。
ttp://pllab.is.ocha.ac.jp/~asai/book/Linux.html
環境はWinXPのVMPlayer上のDebian(lenny)でやってます。
端末でインタープリタ走らせてる場合も、Emacs上でtuareg-
modeでやってる場合も文字コードが表示されてしまいます。
助けてけろ〜
やってるんですが、著者のサポートサイトに書いてあるように
やっても、未だに日本語の表示が出来ません。
ttp://pllab.is.ocha.ac.jp/~asai/book/Linux.html
環境はWinXPのVMPlayer上のDebian(lenny)でやってます。
端末でインタープリタ走らせてる場合も、Emacs上でtuareg-
modeでやってる場合も文字コードが表示されてしまいます。
助けてけろ〜
272デフォルトの名無しさん
2010/03/28(日) 23:42:03 分からんけど、なんでLANG=en_USのISOなんとかなんだろ?ja_JP.eucJPとかじゃないのか
273デフォルトの名無しさん
2010/04/09(金) 23:58:56 OCamlはoreilly本来ないね
274デフォルトの名無しさん
2010/04/11(日) 20:56:52 >>270
奥さん亡くなった三日後に心筋梗塞か。
奥さん亡くなった三日後に心筋梗塞か。
275デフォルトの名無しさん
2010/04/11(日) 21:10:03 ご冥福をお祈りします。
276デフォルトの名無しさん
2010/04/12(月) 22:51:23 あの世で福??
277デフォルトの名無しさん
2010/04/21(水) 21:04:50 signatureのfunctorの使い方がよくわかりません。
signatureを受け取ってstructureを返すfunctor Aと、
signatureを受け取ってsignatureを返すfunctor Bを定義したとします。
signature CにAとBを適用したものをA(C), B(C)としたとき、
A(C)にB(C)を適用したstructureはどうしたら使えますか?
signatureを受け取ってstructureを返すfunctor Aと、
signatureを受け取ってsignatureを返すfunctor Bを定義したとします。
signature CにAとBを適用したものをA(C), B(C)としたとき、
A(C)にB(C)を適用したstructureはどうしたら使えますか?
278277
2010/04/21(水) 21:06:26 言い忘れました。OCamlの話です。
279277
2010/04/21(水) 22:56:41 すみません、自己解決しました。
280デフォルトの名無しさん
2010/04/22(木) 01:34:18 あれ?OCamlのfunctorってsignatureを受け取ったり返したり出来るの?
受け取るのも返すのstructureだけだと思ってた
受け取るのも返すのstructureだけだと思ってた
281デフォルトの名無しさん
2010/04/22(木) 01:38:21 ドキュメント読んでみたけど、
http://caml.inria.fr/pub/docs/manual-ocaml/manual019.html#toc67
やっぱりfunctorがsignatureを受け取れるようには見えないなぁ
http://caml.inria.fr/pub/docs/manual-ocaml/manual019.html#toc67
やっぱりfunctorがsignatureを受け取れるようには見えないなぁ
282デフォルトの名無しさん
2010/04/25(日) 12:26:40 質問していいですか。
'a * 'bの値を受け取り、型'aと'bが等しいか否かを判定する関数はo'camlで書けますか?
'a * 'bの値を受け取り、型'aと'bが等しいか否かを判定する関数はo'camlで書けますか?
283デフォルトの名無しさん
2010/04/25(日) 22:33:07284デフォルトの名無しさん
2010/04/25(日) 22:54:26285デフォルトの名無しさん
2010/04/26(月) 00:03:13286デフォルトの名無しさん
2010/04/26(月) 21:09:56 OCamlってなんで最上位ビットをゴミ集め様に使っちゃうようにしたのかな。
なんか、これが凄くアダになってるように思えるのだが
なんか、これが凄くアダになってるように思えるのだが
287デフォルトの名無しさん
2010/04/27(火) 20:51:34 Lisp系含めてわりと見かける仕様なんじゃ
288デフォルトの名無しさん
2010/04/29(木) 20:07:48 $ 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 のディスク領域が新たに消費されます。
(#^ω^)ピキピキ
…
以下の新規パッケージがインストールされます:
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 のディスク領域が新たに消費されます。
(#^ω^)ピキピキ
289デフォルトの名無しさん
2010/04/29(木) 20:14:14 >>288
ocaml-nox
ocaml-nox
290デフォルトの名無しさん
2010/04/30(金) 12:32:47 こそは自分でMakeだろJK
291デフォルトの名無しさん
2010/05/01(土) 16:43:51 SML#は生きていた
292デフォルトの名無しさん
2010/05/02(日) 01:19:01 音沙汰なくてちょっと諦めかけてたから新バージョンリリースめでたい
293デフォルトの名無しさん
2010/05/05(水) 04:16:18 OCamlの型で 'a. 'a list というのを見たんですけど、この「.」って何ですか?
294デフォルトの名無しさん
2010/05/05(水) 07:24:38 「.」が何かと言われるとむずいな
「'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だからエラー
「'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だからエラー
295デフォルトの名無しさん
2010/05/05(水) 15:33:12 >>294
ありがとうございます
ありがとうございます
296デフォルトの名無しさん
2010/05/15(土) 22:35:32 SMLにはレコード更新の機能がなく、日常的に苦労しているので、ネイティブコードが
はけるSML#のリリースは待ち遠しかった。
ただ、欲を言うと、レコード拡張も言語としてサポートして欲しかった。
はけるSML#のリリースは待ち遠しかった。
ただ、欲を言うと、レコード拡張も言語としてサポートして欲しかった。
297デフォルトの名無しさん
2010/05/16(日) 08:50:49 >SMLにはレコード更新の機能がなく、日常的に苦労している
すげえ、日常的にか。仕事に使ってるの?
>ただ、欲を言うと、レコード拡張も言語としてサポートして欲しかった。
レコード拡張って?
すげえ、日常的にか。仕事に使ってるの?
>ただ、欲を言うと、レコード拡張も言語としてサポートして欲しかった。
レコード拡張って?
298デフォルトの名無しさん
2010/05/17(月) 17:27:31 MLton って無限ストリーム使ったプログラムも最適化してくれるの?
299デフォルトの名無しさん
2010/05/18(火) 22:20:33 >>297
小規模な数値計算をしているだけで、すごいことはしていません。
Fortranで十分ですが、いくつかの部品を定義して、NJの対話環境
で評価することで、試行錯誤できて重宝してます。
レコードの拡張
連結と言うべきだった。
{a=1,b=2}#{c=3}
val it={a=1,b=2,c=3}
ができると嬉しい。
小規模な数値計算をしているだけで、すごいことはしていません。
Fortranで十分ですが、いくつかの部品を定義して、NJの対話環境
で評価することで、試行錯誤できて重宝してます。
レコードの拡張
連結と言うべきだった。
{a=1,b=2}#{c=3}
val it={a=1,b=2,c=3}
ができると嬉しい。
300デフォルトの名無しさん
2010/05/21(金) 01:51:26 Vimのインデントファイルで
ocaml.vimやomlet.vimより
いいものありませんか?
ocaml.vimやomlet.vimより
いいものありませんか?
301デフォルトの名無しさん
2010/05/21(金) 21:02:03 MLで書くときはスタイルに悩むね。
inの前で改行すべきか?
連続するletはインデントすべきか?
などなど
inの前で改行すべきか?
連続するletはインデントすべきか?
などなど
302デフォルトの名無しさん
2010/05/22(土) 23:36:50 スタイルは悩みますね。
今のところ連続するletもinの後も
インデントしないようにしています。
ただ、こう書きたいという思いがあっても
Vimのインデントファイルでは
うまくいかないことがあって困ります。
ユーザーの多そうなEmacsを使った方が
いいのかもしれません。ま、それを
言ったら関数型言語もHaskellということ
になるかもしれませんが…
今のところ連続するletもinの後も
インデントしないようにしています。
ただ、こう書きたいという思いがあっても
Vimのインデントファイルでは
うまくいかないことがあって困ります。
ユーザーの多そうなEmacsを使った方が
いいのかもしれません。ま、それを
言ったら関数型言語もHaskellということ
になるかもしれませんが…
303デフォルトの名無しさん
2010/06/04(金) 16:33:24 Ocamlで
let plus x y = x + y があるとき
xより先にyに代入する方法はあるますか?
let plus x y = x + y があるとき
xより先にyに代入する方法はあるますか?
304デフォルトの名無しさん
2010/06/04(金) 20:40:08 λ式を使えば良いのでは。
すでに、y = aの代入が決まっているときは、
(fun x -> plus x a)
まだのときは、
(fun y -> fun x -> plus x y)
を使う。
※SML使いなので、構文上の間違いはあるかもしれぬ。
すでに、y = aの代入が決まっているときは、
(fun x -> plus x a)
まだのときは、
(fun y -> fun x -> plus x y)
を使う。
※SML使いなので、構文上の間違いはあるかもしれぬ。
305デフォルトの名無しさん
2010/06/04(金) 20:44:13 これも、一種のスタイル問題だが、
列挙型を定義するときに、
datatype X = X1 | X2 | X3 | ...
とするか
type X = int
val X1 = 1
val X2 = 2
...
とするかで悩んでしまう。最初は、vector (ランダムアクセス)を使わない
見込みだったのだが、必要になったときのことを心配してしまう。
列挙型を定義するときに、
datatype X = X1 | X2 | X3 | ...
とするか
type X = int
val X1 = 1
val X2 = 2
...
とするかで悩んでしまう。最初は、vector (ランダムアクセス)を使わない
見込みだったのだが、必要になったときのことを心配してしまう。
306デフォルトの名無しさん
2010/06/04(金) 22:34:46 そういう心配をしなくていいくらいコンパイラの最適化は賢いから安心して代数データ型を使えという話をどこかで見た気がするのだがどこだか忘れてしまったな。
307デフォルトの名無しさん
2010/06/04(金) 22:41:07 succ X1が欲しいという話だと思ったんだが。
……俺ならObj.magicしちゃうな
……俺ならObj.magicしちゃうな
308デフォルトの名無しさん
2010/06/04(金) 22:44:58 http://d.hatena.ne.jp/sumii/20060918/1158537612
これだった。あんまり突っ込んだこと書かれてなかったな。でもこういう話じゃないの?
これだった。あんまり突っ込んだこと書かれてなかったな。でもこういう話じゃないの?
309デフォルトの名無しさん
2010/06/05(土) 18:55:54 >>304
ありがとうございます。
ありがとうございます。
310デフォルトの名無しさん
2010/06/05(土) 23:46:13 >> 308, 307
ありがとうございます。そうです、O(1)で整数に変換できるかを心配していました。
ありがとうございます。そうです、O(1)で整数に変換できるかを心配していました。
311デフォルトの名無しさん
2010/06/10(木) 00:10:32 O(1)での変換速度を気にしなきゃいけないくらい沢山定義するなら、
DEFINEマクロ使った方がいいんじゃないかなぁ。あ、OCamlの場合だけど。
(* compile with -pp "camlp4orf" *)
DEFINE A = 1
let _ = print_int A
DEFINEマクロ使った方がいいんじゃないかなぁ。あ、OCamlの場合だけど。
(* compile with -pp "camlp4orf" *)
DEFINE A = 1
let _ = print_int A
312デフォルトの名無しさん
2010/06/14(月) 19:50:39 >> 311
Ocamlマクロ使えましたね。いいなぁ〜
Ocamlマクロ使えましたね。いいなぁ〜
313デフォルトの名無しさん
2010/06/14(月) 19:54:03 破壊的代入(参照型)の利用はひかえめに、とはいろんなガイド/教科書に書いて
あるけど、どの程度が許容範囲なんだろう。
与えられたリストの部分和を要素とするリストを返す関数を書いてみると、
破壊的代入を使ったバージョンが一番短く直観的に思う。
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
関数プログラマ的には、どれがいいのだろう。
(もっといい書き方もあるかもしれない)
あるけど、どの程度が許容範囲なんだろう。
与えられたリストの部分和を要素とするリストを返す関数を書いてみると、
破壊的代入を使ったバージョンが一番短く直観的に思う。
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
関数プログラマ的には、どれがいいのだろう。
(もっといい書き方もあるかもしれない)
314デフォルトの名無しさん
2010/06/14(月) 19:58:31 個人的にはこだわらずに破壊的代入もがんがん使えって思うけど、その前にmapの捜査順は前からって保証されてるのか?
315デフォルトの名無しさん
2010/06/14(月) 21:34:29 確かに、一般的には規格違反かもしれない。ちなみに
http://www.smlnj.org/doc/basis/pages/list.html
には
map f l
applies f to each element of l from left to right, returning the list of results.
と書かれているが、"from left to right"を副作用を持つfを考慮して、そう書いているのか
は不明。
http://www.smlnj.org/doc/basis/pages/list.html
には
map f l
applies f to each element of l from left to right, returning the list of results.
と書かれているが、"from left to right"を副作用を持つfを考慮して、そう書いているのか
は不明。
316デフォルトの名無しさん
2010/06/16(水) 05:25:03 >>313
効率気にしないなら下のようにも.
fun series nil = nil
| series (h::t) = h :: map (fn x => x + h) (series t)
効率を気にするなら,series3がいいと思った.
refを使うと現在の変数の状態を気にする必要があって大変.
series2はやってることはわかったけど,コードがなんとなく見づらい.
効率気にしないなら下のようにも.
fun series nil = nil
| series (h::t) = h :: map (fn x => x + h) (series t)
効率を気にするなら,series3がいいと思った.
refを使うと現在の変数の状態を気にする必要があって大変.
series2はやってることはわかったけど,コードがなんとなく見づらい.
317デフォルトの名無しさん
2010/06/16(水) 12:11:01 >現在の変数の状態を気にする必要があって大変
refが大変で、引数変数が大変でないと思う辺り、関数型言語プログラマだなあ。
俺はまだそこまでの境地には達してないや
refが大変で、引数変数が大変でないと思う辺り、関数型言語プログラマだなあ。
俺はまだそこまでの境地には達してないや
318デフォルトの名無しさん
2010/06/16(水) 18:09:00 「こんなこともあろうかと」いいながら、用意しておいたscanlを使うのが一番直感的。
319デフォルトの名無しさん
2010/06/16(水) 20:47:50 なるほど scanl か
mapAccumL で満足しそうになっていた
mapAccumL で満足しそうになっていた
320デフォルトの名無しさん
2010/06/17(木) 21:08:40 >> 316
ひさしぶりに何か美しいものを見た気がします。
>> 318,319
HaskellのData.Listにある関数ですね。GHCは入れてあるが、ほとんど使って
いないので、知らなかったのですが、いっぱい関数が用意されてますね。
ひさしぶりに何か美しいものを見た気がします。
>> 318,319
HaskellのData.Listにある関数ですね。GHCは入れてあるが、ほとんど使って
いないので、知らなかったのですが、いっぱい関数が用意されてますね。
321デフォルトの名無しさん
2010/06/18(金) 19:16:35 NJに付属するCMLって、multicore対応じゃないみたいですね。
(tar ballのToDoに書いてあった)
ノード内並列には使えない。残念。
(tar ballのToDoに書いてあった)
ノード内並列には使えない。残念。
322デフォルトの名無しさん
2010/06/18(金) 19:31:43 SML なら Poly/ML がネイティブスレッドに対応してるよ
323デフォルトの名無しさん
2010/06/18(金) 20:52:49 >>322
ありがとうございます。
ここを http://www.polyml.org/Doc.html さらっと見てみましたが、
結構しっかりした実装のようですね。
これは、SML/NJからの移行を検討する価値がある。
他に、
- Windowsプログラミング
- FFIが簡単(のように見える)
が気に入った。
ありがとうございます。
ここを http://www.polyml.org/Doc.html さらっと見てみましたが、
結構しっかりした実装のようですね。
これは、SML/NJからの移行を検討する価値がある。
他に、
- Windowsプログラミング
- FFIが簡単(のように見える)
が気に入った。
324デフォルトの名無しさん
2010/06/18(金) 21:45:31 MLでGUIプログラミング、って時々やろうとするんだけど準備が面倒で挫折する。
lablgtk2とその依存ライブラリを標準で取り込んでくれ〜
lablgtk2とその依存ライブラリを標準で取り込んでくれ〜
325デフォルトの名無しさん
2010/07/04(日) 19:42:48 ファンクターでモジュールを作ったときに実行される関数がほしいんだけど
OOのコンストラクタみたいなの
OOのコンストラクタみたいなの
326デフォルトの名無しさん
2010/07/05(月) 12:51:06 V V
(´・ω・`) うさちゃんピース
(´・ω・`) うさちゃんピース
327デフォルトの名無しさん
2010/07/05(月) 15:03:08 長澤うさみ
328デフォルトの名無しさん
2010/07/09(金) 01:03:21 >>325
module F (A : sig val x : int end) = struct
let _ = print_int A.x
end
このファンクターに適当なモジュールを適用してごらん
module F (A : sig val x : int end) = struct
let _ = print_int A.x
end
このファンクターに適当なモジュールを適用してごらん
329デフォルトの名無しさん
2010/07/09(金) 22:25:03 MLが関数型言語とか、最初に言い出したのは誰なのかしら
2010/07/11(日) 11:47:27
\ /
\ 丶 i. | / ./ /
\ ヽ i. .| / / /
\ ヽ i | / / /
\
-‐
ー
__ わ た し で す --
二 / ̄\ = 二
 ̄ | ^o^ |  ̄
-‐ \_/ ‐-
/
/ ヽ \
/ 丶 \
/ / / | i, 丶 \
/ / / | i, 丶 \
\ 丶 i. | / ./ /
\ ヽ i. .| / / /
\ ヽ i | / / /
\
-‐
ー
__ わ た し で す --
二 / ̄\ = 二
 ̄ | ^o^ |  ̄
-‐ \_/ ‐-
/
/ ヽ \
/ 丶 \
/ / / | i, 丶 \
/ / / | i, 丶 \
331デフォルトの名無しさん
2010/07/23(金) 23:57:35 プログラミング言語ML
http://www.amazon.co.jp/dp/4756116418
J. D. Ullmanのこの本絶版になってたのか。
11年前に図書館で世話になったときは、面白かった。
http://www.amazon.co.jp/dp/4756116418
J. D. Ullmanのこの本絶版になってたのか。
11年前に図書館で世話になったときは、面白かった。
332デフォルトの名無しさん
2010/08/06(金) 17:34:51 3.12.0来たのか
333デフォルトの名無しさん
2010/08/14(土) 16:35:21 OCaml出たばっかりなのに人が少ないってどういうことなの
334デフォルトの名無しさん
2010/08/16(月) 01:05:07 平和ってすばらしい
335デフォルトの名無しさん
2010/08/16(月) 01:22:01 windows用の最新版は3.11.0ってことですか?公式のリンクが切れてるという。。
336デフォルトの名無しさん
2010/08/16(月) 12:57:13 自分でビルドすればいいし、URLの修正ぐらい自分でやればいいし
337デフォルトの名無しさん
2010/08/21(土) 23:26:49 windows 3.11.0
http://ocaml.jp/Chapter%2024%20The%20threads%20library
>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はどこにあるんだ・・・
http://ocaml.jp/Chapter%2024%20The%20threads%20library
>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はどこにあるんだ・・・
338デフォルトの名無しさん
2010/08/22(日) 01:37:10339デフォルトの名無しさん
2010/08/22(日) 02:53:00340デフォルトの名無しさん
2010/08/22(日) 02:54:15 ミス
>>338
>>338
341デフォルトの名無しさん
2010/08/23(月) 01:39:58 unitをどうやって代入させるかで数分悩んでしまった。
342デフォルトの名無しさん
2010/08/30(月) 15:11:49 可読なCに変換してくれるコンパイラはないのか
343デフォルトの名無しさん
2010/09/19(日) 08:18:17 これはOCamlの仕様書と思って良いのでしょうか?
ttp://caml.inria.fr/pub/docs/manual-ocaml/index.html
ttp://caml.inria.fr/pub/docs/manual-ocaml/index.html
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 中国高官と話す外務省局長の表情、やばい [175344491]
- 【悲報】あまりにも高市早苗の頭が悪過ぎて「これは確かに野党が配慮して質問するべきだったのでは」と結論が出てしまう [517791167]
- 【正論】木原官房長官「高市さんの答弁は従来の政府の立場を変えるものではない。撤回には応じられない」特定野党を完全論破 [519511584]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 中国と戦争になったら高市早苗が外患誘致で死刑になるの? [809488867]
- 【悲報】安倍晋三と高市早苗、どっちがヤベーの🤔 [616817505]
