関数型言語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
レス数が950を超えています。1000を超えると書き込みができなくなります。
2009/06/15(月) 07:15:21
866デフォルトの名無しさん
2014/08/30(土) 23:41:43.96ID://K1VbLN test
867デフォルトの名無しさん
2014/09/02(火) 08:32:32.40ID:3nEDqgz+ OCamlのマニュアルにocamlbrowserがまだあるのはバグっすな
ocamldoc/trunk/manual/cmds/Makefile line#2
remove "browser.tex "
ocamldoc/trunk/manual/cmds/Makefile line#2
remove "browser.tex "
868デフォルトの名無しさん
2014/09/02(火) 22:57:08.51ID:h4iRRc1G ocaml標準のlexでは日本語が扱えないのでulexに差し替えたらparserが死んだでござる。
ダメだこりゃ
ダメだこりゃ
869デフォルトの名無しさん
2014/09/16(火) 16:34:15.58ID:smkPtKEd870デフォルトの名無しさん
2014/09/24(水) 22:11:44.77ID:ChDiOOXp ocaml 4.01.0で
# Obj.size @@ Obj.repr 1
がバグるんだけど、理由わかる?
# Obj.size @@ Obj.repr 1
がバグるんだけど、理由わかる?
871デフォルトの名無しさん
2014/09/24(水) 23:08:38.11ID:wtmzOZEz 仕様です。
ソースはおろかドキュメントすら読まずにObjを使うとはアホの極みです。
Chapter "Interfacing C with OCaml", Section 2..3
ソースはおろかドキュメントすら読まずにObjを使うとはアホの極みです。
Chapter "Interfacing C with OCaml", Section 2..3
872デフォルトの名無しさん
2014/09/26(金) 02:16:11.74ID:63HfXufw OCamlのすごさはもっと知られるべき #オブジェクト指向 や #関数型 は「敗者の道具」である http://itpro.nikkeibp.co.jp/atcl/watcher/14/334361/092200062/?ST=develop&P=3
873デフォルトの名無しさん
2014/09/26(金) 11:58:16.90ID:p4JSIuT/ >>872
これタイトルで損してる記事だろ
これタイトルで損してる記事だろ
874デフォルトの名無しさん
2014/09/26(金) 11:59:36.06ID:LJo7FzMV みかかデータ、マンセー記事っぽかったけど
875デフォルトの名無しさん
2014/09/26(金) 12:42:39.46ID:/S6uCtFc 関数型とかマルチパラ代務とかドカタには無理。オブジェクトだって散々語られてようやく、いや未だ、か
一部の突出した集団以外は、ほかにどうしようもない人が沈殿する職業になってるイメージ
一部の突出した集団以外は、ほかにどうしようもない人が沈殿する職業になってるイメージ
876デフォルトの名無しさん
2014/09/26(金) 20:12:51.02ID:+dkMIegW do構文の使用禁止の規約って全部>>=で書くってことなのだろうか。理由も含めて気になる。
877デフォルトの名無しさん
2014/09/26(金) 20:54:07.13ID:mU/FSdzC >>872
前半で散々オブジェクト指向をこきおろしておきながら、
中盤でOCamlを推すという意味不明な文章の論理の展開がある
ML族を推すのなら Caml か SML にしないと一貫性が無いし、
Caml にオブジェクト指向を後付けした "O"Caml 開発時の判断は
今となっては流行に踊らされた大きな失敗であったと断罪すべき
おまけに「個人的にOCamlがすごいと思う」とあるから何かと読んでみたら、
単なるパラメタ型多相の話でしかないことに笑ってしまった
「とがった」とか「すごい」とか、小学生の感想文とレベルは変わらない
こんなポエム記事で給料をもらえるのだから、日経ITproの記者とは楽な職業だね
>>873
タイトル以前の問題で、記事に中身が無くて話にならん
>>876
ソースコード解析ツールなら言語処理系と似た構造になるから、
(一般的には副作用を模倣するために使われる)do記法を使う必要性は無いと思われ
前半で散々オブジェクト指向をこきおろしておきながら、
中盤でOCamlを推すという意味不明な文章の論理の展開がある
ML族を推すのなら Caml か SML にしないと一貫性が無いし、
Caml にオブジェクト指向を後付けした "O"Caml 開発時の判断は
今となっては流行に踊らされた大きな失敗であったと断罪すべき
おまけに「個人的にOCamlがすごいと思う」とあるから何かと読んでみたら、
単なるパラメタ型多相の話でしかないことに笑ってしまった
「とがった」とか「すごい」とか、小学生の感想文とレベルは変わらない
こんなポエム記事で給料をもらえるのだから、日経ITproの記者とは楽な職業だね
>>873
タイトル以前の問題で、記事に中身が無くて話にならん
>>876
ソースコード解析ツールなら言語処理系と似た構造になるから、
(一般的には副作用を模倣するために使われる)do記法を使う必要性は無いと思われ
878デフォルトの名無しさん
2014/09/26(金) 21:11:21.88ID:+dkMIegW ちょっとぐぐってみたらこういうページがあった。
http://www.haskell.org/haskellwiki/Do_notation_considered_harmful
http://www.haskell.org/haskellwiki/Do_notation_considered_harmful
879デフォルトの名無しさん
2014/09/26(金) 21:24:18.32ID:rzI+KhbO たしかにタイトルで損したみたいだな
880デフォルトの名無しさん
2014/09/27(土) 09:02:30.03ID:aRJ76A2x ああいう煽り記事読んでドキドキするのは思春期の子供だけ
もっと大人向けの真面目に面白い記事は無いのか?
もっと大人向けの真面目に面白い記事は無いのか?
881デフォルトの名無しさん
2014/09/27(土) 09:08:36.15ID:V9AoMXji もし完全無欠のプログラマが存在するのであれば、そうした方法論に頼らなくても、
完全に意図通りに動作するプログラムを頭から書き下していけばいいのです。
オブジェクト指向プログラミングや関数型プログラミングは、不完全な人間のために用意されたもの、
いわば「敗者の道具」といえます。
もちろん、これは極端すぎる表現です。例えば、人は空を飛べないので飛行機に乗ります。
このことをもって「飛行機は敗者の道具である」と言う人はいません。
そうした意味では、オブジェクト指向プログラミングや関数型プログラミングを敗者の道具と呼ぶのは、
単なる言葉遊びにすぎません。人間が全知全能でないのは当たり前ですから。
完全に朝日脳だな
完全に意図通りに動作するプログラムを頭から書き下していけばいいのです。
オブジェクト指向プログラミングや関数型プログラミングは、不完全な人間のために用意されたもの、
いわば「敗者の道具」といえます。
もちろん、これは極端すぎる表現です。例えば、人は空を飛べないので飛行機に乗ります。
このことをもって「飛行機は敗者の道具である」と言う人はいません。
そうした意味では、オブジェクト指向プログラミングや関数型プログラミングを敗者の道具と呼ぶのは、
単なる言葉遊びにすぎません。人間が全知全能でないのは当たり前ですから。
完全に朝日脳だな
882デフォルトの名無しさん
2014/09/27(土) 17:11:59.10ID:lJpImKEe 産経信者も一緒に死ねカス
883デフォルトの名無しさん
2014/09/28(日) 11:09:58.25ID:yTX/1oq/ 今回朝日がしでかしたことを誰かまとめてくれ
884デフォルトの名無しさん
2014/09/28(日) 12:21:46.09ID:MFWVwvB9 スレ違いカスはお引き取り下さい
885デフォルトの名無しさん
2014/09/28(日) 12:22:16.97ID:/z7vQ2zP >>883
どいたかこ死亡
どいたかこ死亡
886デフォルトの名無しさん
2014/09/28(日) 12:38:21.08ID:3fm9b2hk 土井たか子がリアルに退いた過去になったのか
887デフォルトの名無しさん
2014/09/28(日) 12:39:24.70ID:/z7vQ2zP 土井がどいた過去
888デフォルトの名無しさん
2014/09/28(日) 12:40:25.54ID:/z7vQ2zP おんたけさんが噴火して
おたけさんが逝った
おたけさんが逝った
889デフォルトの名無しさん
2014/10/07(火) 01:19:25.02ID:RDe60glL 対話環境を再起動せずに、リコンパイルしたライブラリをロードし直す方法ってありますか?
#load でもう一度ロードすると、シグニチャが異なると怒られてしまいます
#load でもう一度ロードすると、シグニチャが異なると怒られてしまいます
890デフォルトの名無しさん
2014/11/07(金) 22:47:28.24ID:jjvVlXlA OCamlで型クラスを実現する方法ある?
あとカインドも
あとカインドも
891デフォルトの名無しさん
2014/12/28(日) 01:38:33.30ID:t9XFY33G モジュールで型クラス的なものを作ることができる。便利とは言いがたいが
892デフォルトの名無しさん
2015/02/05(木) 08:14:28.48ID:0RN82SQI Haskell より OCaml の方が部分部分で好みなんだけど、
OCaml は最近何か進展とか発展とか無いのかな。
OCaml は最近何か進展とか発展とか無いのかな。
893デフォルトの名無しさん
2015/02/05(木) 13:15:20.83ID:tkrhoEGU 4.0出たばっかじゃなかったっけ
894デフォルトの名無しさん
2015/02/05(木) 14:50:21.24ID:j+EW35P1 岡村はソース醜いのがなあ
895デフォルトの名無しさん
2015/02/05(木) 19:17:09.87ID:Omd6cUWA >>894
たとえば?
たとえば?
896デフォルトの名無しさん
2015/02/05(木) 20:40:25.53ID:SFYHhnYx 上から読んでいけば何しているのか分かるOCamlのソースは読みやすい部類
batteriesとかcoreといった大きいライブラリでも、モジュールと同名のファイル見ればいいだけなので、
どこに何があるのか探しやすい
基本的に手続き脳なので、haskellはどこから読めばいいのか分からない
悪名高いimport文のおかげでもっと読めない
batteriesとかcoreといった大きいライブラリでも、モジュールと同名のファイル見ればいいだけなので、
どこに何があるのか探しやすい
基本的に手続き脳なので、haskellはどこから読めばいいのか分からない
悪名高いimport文のおかげでもっと読めない
897デフォルトの名無しさん
2015/02/05(木) 21:27:52.95ID:uGoWQo5h OCamlなんとなくソースの見た目のバランスが悪いっていうのはなんかわかるわ。
899デフォルトの名無しさん
2015/02/06(金) 11:46:04.54ID:qvKWViHE ソースが読みにくい言語は致命的に生産&保守効率が悪い。
900デフォルトの名無しさん
2015/02/06(金) 11:56:15.06ID:uqQOSJHn901デフォルトの名無しさん
2015/02/19(木) 21:32:44.77ID:VWBqr6Q7 レコード型ある言語、多相レコードある言語、フィールドがファーストクラスにできる言語
おしえて。
ぜんぶもってるのがいい。
おしえて。
ぜんぶもってるのがいい。
902デフォルトの名無しさん
2015/02/19(木) 22:31:13.58ID:/rXoqLFu >>901
SML# という Standard ML の処理系は「ぜんぶもってる」よ
# fun get_x {X = x, ...} = x;
val get_x = fn : ['a#{X: 'b}, 'b. 'a -> 'b]
# val point_2d = {X=1.0, Y=2.0};
val point_2d = {X = 1, Y = 2} : {X: real, Y: real}
# val point_3d = {X=10.0, Y=20.0, Z=15.0};
val point_3d = {X = 10, Y = 20, Z = 15} : {X: real, Y: real, Z: real}
# get_x point_2d;
val it = 1 : real
# get_x point_3d;
val it = 10 : real
Standard ML の場合、前2つは言語仕様で規定されているからすべての処理系で利用できるけど、
最後の「フィールドがファーストクラス」であることは仕様では要求されていない
たとえば SML/NJ という処理系だと、上記のコードはエラーになる
- fun get_x {X = x, ...} = x;
stdIn:1.2-1.28 Error: unresolved flex record
(can't tell what fields there are besides #X)
SML# が独自に拡張したレコード型に関しては、SML# プロジェクトのホームページに
日本語の解説があるから、まず最初に読んでみるのがいいと思う
・SML#の拡張機能:レコード多相性 in プログラミング言語SML#解説
http://www.pllab.riec.tohoku.ac.jp/smlsharp/docs/2.0/ja/Ch7.xhtml
SML# という Standard ML の処理系は「ぜんぶもってる」よ
# fun get_x {X = x, ...} = x;
val get_x = fn : ['a#{X: 'b}, 'b. 'a -> 'b]
# val point_2d = {X=1.0, Y=2.0};
val point_2d = {X = 1, Y = 2} : {X: real, Y: real}
# val point_3d = {X=10.0, Y=20.0, Z=15.0};
val point_3d = {X = 10, Y = 20, Z = 15} : {X: real, Y: real, Z: real}
# get_x point_2d;
val it = 1 : real
# get_x point_3d;
val it = 10 : real
Standard ML の場合、前2つは言語仕様で規定されているからすべての処理系で利用できるけど、
最後の「フィールドがファーストクラス」であることは仕様では要求されていない
たとえば SML/NJ という処理系だと、上記のコードはエラーになる
- fun get_x {X = x, ...} = x;
stdIn:1.2-1.28 Error: unresolved flex record
(can't tell what fields there are besides #X)
SML# が独自に拡張したレコード型に関しては、SML# プロジェクトのホームページに
日本語の解説があるから、まず最初に読んでみるのがいいと思う
・SML#の拡張機能:レコード多相性 in プログラミング言語SML#解説
http://www.pllab.riec.tohoku.ac.jp/smlsharp/docs/2.0/ja/Ch7.xhtml
903デフォルトの名無しさん
2015/02/19(木) 22:34:08.05ID:VWBqr6Q7 ↑ありがと。
ほんとにぜんぶ!? フィールドファーストクラスなのその言語?
ほんとにぜんぶ!? フィールドファーストクラスなのその言語?
904デフォルトの名無しさん
2015/02/19(木) 22:35:11.19ID:VWBqr6Q7 あ、かいてあった、ごめん。
905デフォルトの名無しさん
2015/02/19(木) 22:37:49.31ID:VWBqr6Q7906デフォルトの名無しさん
2015/02/20(金) 03:39:21.83ID:V63A/fo0 1.レコード型、あるいは、それに類する型を持つ
2.レコード型(or それに類する型)の構造的部分型関係を扱える
3.できれば、多相レコード型とかそれと同様なのを持つ
4.できれば、レコードのフィールド名がファーストクラス
( x = [name = 3] : [name : int] なら nameがファーストクラス)
これカバーできる言語ない?
うえでおしえてもらったのしらべてみたけど
SML/NJってのは1,2を満たしてそう
SML#ってのが1,2,3を満たしてそう、
あと
scalaが無名オブジェクトみたいなやつで1,2,3を満たしてそう?
型を一部か書かないとダメだけど
ほかにこの辺でなんかいい言語ない?
clojure? ってのが4みたして相だけどコンパイル時に型ちぇっくしてくれないよねそれ?
うーんなんかない?
2.レコード型(or それに類する型)の構造的部分型関係を扱える
3.できれば、多相レコード型とかそれと同様なのを持つ
4.できれば、レコードのフィールド名がファーストクラス
( x = [name = 3] : [name : int] なら nameがファーストクラス)
これカバーできる言語ない?
うえでおしえてもらったのしらべてみたけど
SML/NJってのは1,2を満たしてそう
SML#ってのが1,2,3を満たしてそう、
あと
scalaが無名オブジェクトみたいなやつで1,2,3を満たしてそう?
型を一部か書かないとダメだけど
ほかにこの辺でなんかいい言語ない?
clojure? ってのが4みたして相だけどコンパイル時に型ちぇっくしてくれないよねそれ?
うーんなんかない?
907デフォルトの名無しさん
2015/02/20(金) 09:34:49.39ID:vrO8Sxqb 1
908デフォルトの名無しさん
2015/02/20(金) 10:31:17.89ID:N6pKHonh じゃあ俺は2
909デフォルトの名無しさん
2015/02/20(金) 10:55:47.88ID:sOgXDRpH 宿題は自力でやれw
910デフォルトの名無しさん
2015/02/21(土) 00:55:59.35ID:KgB/c0aN >>906
Standard ML のレコード型は構造的部分型関係を持たないよ
構造的部分型関係を持つレコード型に類する型を持つのは OCaml や Java
いわゆるオブジェクト指向におけるクラスとそれらの間の継承関係のこと
また「多相レコード型」という用語の意味が「パラメタ型多相なレコード型」
であるならば、Standard ML は多相レコード型を持つことになる
ここでパラメタ型多相は、Java だとジェネリクス(総称型)と呼ばれている
結論として、Standard ML(とその処理系 SML/NL および SML#)は1と3を満たす
次にファーストクラスについて、>>902 のコードにおける関数 get_x の定義だけど、
「フィールドとはレコード値からフィールド値への写像(関数)である」
という関係に気付けば、その定義は以下のように簡潔になる
# val get_x = #X;
val get_x = fn : ['a#{X: 'b}, 'b. 'a -> 'b] (* SML/# *)
つまりフィールド #X は(val宣言で)識別子に束縛したり、他の関数へ適用したり。
ある関数の評価結果として返すことができる
こうした数値や文字列といった値と同等に扱える性質を指してファーストクラスと呼ぶ
さらに上記の例は SML# だけど、SML/NJ も型システムが単純たから型推論に失敗するだけで、
データ型を明示的に宣言すれば関数 get_x を定義できる
- val get_x = #X : {X: real, Y: 'a} -> real;
val get_x = fn : {X:real, Y:'a} -> real (* SML/NJ *)
型システムの制約とファーストクラスという性質をごっちゃにすべきではない
まとめると、Standard ML(とそのすべての処理系)のフィールドはファーストクラスである
Standard ML のレコード型は構造的部分型関係を持たないよ
構造的部分型関係を持つレコード型に類する型を持つのは OCaml や Java
いわゆるオブジェクト指向におけるクラスとそれらの間の継承関係のこと
また「多相レコード型」という用語の意味が「パラメタ型多相なレコード型」
であるならば、Standard ML は多相レコード型を持つことになる
ここでパラメタ型多相は、Java だとジェネリクス(総称型)と呼ばれている
結論として、Standard ML(とその処理系 SML/NL および SML#)は1と3を満たす
次にファーストクラスについて、>>902 のコードにおける関数 get_x の定義だけど、
「フィールドとはレコード値からフィールド値への写像(関数)である」
という関係に気付けば、その定義は以下のように簡潔になる
# val get_x = #X;
val get_x = fn : ['a#{X: 'b}, 'b. 'a -> 'b] (* SML/# *)
つまりフィールド #X は(val宣言で)識別子に束縛したり、他の関数へ適用したり。
ある関数の評価結果として返すことができる
こうした数値や文字列といった値と同等に扱える性質を指してファーストクラスと呼ぶ
さらに上記の例は SML# だけど、SML/NJ も型システムが単純たから型推論に失敗するだけで、
データ型を明示的に宣言すれば関数 get_x を定義できる
- val get_x = #X : {X: real, Y: 'a} -> real;
val get_x = fn : {X:real, Y:'a} -> real (* SML/NJ *)
型システムの制約とファーストクラスという性質をごっちゃにすべきではない
まとめると、Standard ML(とそのすべての処理系)のフィールドはファーストクラスである
911デフォルトの名無しさん
2015/02/21(土) 01:03:27.14ID:KaIHMFIz > - val get_x = #X : {X: real, Y: 'a} -> real;
でもこの get_x って、>>902 の point_3d には使えないよね。
でもこの get_x って、>>902 の point_3d には使えないよね。
912デフォルトの名無しさん
2015/02/21(土) 01:45:43.43ID:KgB/c0aN うん、使えない
それが >>910 で書いた(Standard ML言語仕様における)「型システム」の制約だね
その制約を無くした SML# が特異なだけで、SML/NJ 以外の大半の SML 処理系に同じ制約がある
それが >>910 で書いた(Standard ML言語仕様における)「型システム」の制約だね
その制約を無くした SML# が特異なだけで、SML/NJ 以外の大半の SML 処理系に同じ制約がある
913デフォルトの名無しさん
2015/02/21(土) 20:03:59.94ID:KgB/c0aN >>910
>Standard ML のレコード型は構造的部分型関係を持たないよ
>構造的部分型関係を持つレコード型に類する型を持つのは OCaml や Java
>いわゆるオブジェクト指向におけるクラスとそれらの間の継承関係のこと
自己レスだけど、この段落は間違いが含まれていたので訂正する
まず:
>Standard ML のレコード型は構造的部分型関係を持たないよ
この文章は正しいけど、SML# は「構造的」部分型関係に類する型を持つ
だから >>902 の関数 get_x は point_2d とpoint_3d のどちらにも適用できる(>>911)
そして SML# だと、point_2d と point_3d のそれぞれの型について、
{X: real, Y:real} >= {X: real, Y:real, Z: real} という部分型関係を持ち、
ここで 関係 a >= b は「a の部分型が b である」ことを意味する
次に:
>構造的部分型関係を持つレコード型に類する型を持つのは OCaml や Java
>いわゆるオブジェクト指向におけるクラスとそれらの間の継承関係のこと
この文章は完全な間違いで、正しくは
「「非構造的」部分型関係を持つレコード型に類する型を持つのは OCaml や Java (...後略)」になる
たとえば(架空言語で)二次元座標上の点として 抽象クラス {} を定義し、その具象クラスとして
{X軸: real, Y軸: real} および(原点からの相対的な) {角度: real, 距離: real} を定義できる
ここで、2つの具象クラスのフィールド構成(=内部的構造)は全く異なるけれど、
{} >= {X軸: real, Y軸: real} および {} >= {角度: real, 距離: real} という部分型関係を持つ
>Standard ML のレコード型は構造的部分型関係を持たないよ
>構造的部分型関係を持つレコード型に類する型を持つのは OCaml や Java
>いわゆるオブジェクト指向におけるクラスとそれらの間の継承関係のこと
自己レスだけど、この段落は間違いが含まれていたので訂正する
まず:
>Standard ML のレコード型は構造的部分型関係を持たないよ
この文章は正しいけど、SML# は「構造的」部分型関係に類する型を持つ
だから >>902 の関数 get_x は point_2d とpoint_3d のどちらにも適用できる(>>911)
そして SML# だと、point_2d と point_3d のそれぞれの型について、
{X: real, Y:real} >= {X: real, Y:real, Z: real} という部分型関係を持ち、
ここで 関係 a >= b は「a の部分型が b である」ことを意味する
次に:
>構造的部分型関係を持つレコード型に類する型を持つのは OCaml や Java
>いわゆるオブジェクト指向におけるクラスとそれらの間の継承関係のこと
この文章は完全な間違いで、正しくは
「「非構造的」部分型関係を持つレコード型に類する型を持つのは OCaml や Java (...後略)」になる
たとえば(架空言語で)二次元座標上の点として 抽象クラス {} を定義し、その具象クラスとして
{X軸: real, Y軸: real} および(原点からの相対的な) {角度: real, 距離: real} を定義できる
ここで、2つの具象クラスのフィールド構成(=内部的構造)は全く異なるけれど、
{} >= {X軸: real, Y軸: real} および {} >= {角度: real, 距離: real} という部分型関係を持つ
914片山博文MZ ◆T6xkBnTXz7B0
2015/03/06(金) 00:20:10.28ID:Utx2vhNJ MLで株取引してるヤツおる?
915デフォルトの名無しさん
2015/03/06(金) 19:18:02.97ID:z8rf25M9916デフォルトの名無しさん
2015/04/11(土) 09:23:04.09ID:4MGH5loU 『関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間』
http://www.amazon.co.jp/dp/4798043761/
なんか面白そう。
ベストセラー1位だし。
http://www.amazon.co.jp/dp/4798043761/
なんか面白そう。
ベストセラー1位だし。
917デフォルトの名無しさん
2015/04/11(土) 11:09:33.39ID:6e+Pm3/z 著者名みてどん引き
918デフォルトの名無しさん
2015/04/11(土) 14:52:19.95ID:kM0sKeAC >>916
まーたハゲの人バカやってるのか
まーたハゲの人バカやってるのか
919デフォルトの名無しさん
2015/04/30(木) 22:13:28.21ID:CyAc4DaC これあわせで、qiitaで何ヶ月か前に宣伝始めたんだよな。
今回のMSの開発者向けイベントで、マルチプラットフォームアピールしてたから、F#にもチャンスが増えるかも。
今回のMSの開発者向けイベントで、マルチプラットフォームアピールしてたから、F#にもチャンスが増えるかも。
920デフォルトの名無しさん
2015/06/21(日) 14:35:56.40ID:jZdgW1bu ML系でマルチスレッドプログラミングってどうやるの?
できれば、プリエンプティブで。
ノンプリなら、バインディングさえ準備できればpthreadとか使うだけで出来る?
あと、マルチコアで動く処理系ってどんなのがありますか?
できれば、プリエンプティブで。
ノンプリなら、バインディングさえ準備できればpthreadとか使うだけで出来る?
あと、マルチコアで動く処理系ってどんなのがありますか?
921デフォルトの名無しさん
2015/06/21(日) 15:56:19.44ID:h+2IwqsQ ノンプリエンプティブな並行のフレームワークとしてはConcurrent ML、
マルチコアでプリエンプティブで動く処理系は…MultiMLton?使ったことないけど
マルチコアでプリエンプティブで動く処理系は…MultiMLton?使ったことないけど
922デフォルトの名無しさん
2015/06/21(日) 21:09:48.45ID:jZdgW1bu >>921
ありがとう!参考にしてみます。
ありがとう!参考にしてみます。
923デフォルトの名無しさん
2015/06/22(月) 21:17:40.35ID:NI+fH6po SML/NJにCMLが入ってるみたいだけど
呼び出しかた自体が良く分かりませんでした,,,
呼び出しかた自体が良く分かりませんでした,,,
924デフォルトの名無しさん
2015/06/22(月) 22:19:01.14ID:OHI7eLtz まだバイトコードだけなんで処理速度的にはメリット薄いがocaml-multicoreも開発中
https://github.com/ocamllabs/ocaml-multicore
諦めてF#が一番楽そう
https://github.com/ocamllabs/ocaml-multicore
諦めてF#が一番楽そう
925デフォルトの名無しさん
2015/07/04(土) 11:48:28.89ID:D//5Uocc 新潮10月号(9/7発売)に最新長編『モナドの領域』330枚一挙掲載
926デフォルトの名無しさん
2015/07/19(日) 15:49:50.98ID:1yK25cK1 Haskell ガチムチいい男
F# タマもサオも取ったニューハーフ
OCaml タマは摘出、サオは残したオカマ
Java ノン気の一般人
C 古風な一般人
C++ 団塊の世代の一般人
C# ゆとり世代
F# タマもサオも取ったニューハーフ
OCaml タマは摘出、サオは残したオカマ
Java ノン気の一般人
C 古風な一般人
C++ 団塊の世代の一般人
C# ゆとり世代
927デフォルトの名無しさん
2015/08/01(土) 08:14:56.43ID:keSdeN9Q Ocamlってschemeのvaluesに相当するのないのですか?
928デフォルトの名無しさん
2015/08/02(日) 05:19:00.73ID:OeY6iFU6 + と+. って絶対に区別しないといけないのです?浮動小数と整数でコードわけるのめんどくさい
929デフォルトの名無しさん
2015/11/01(日) 12:21:17.11ID:FL14q5P6 min-camlを読み解こうと思ってできれば小さく分けてコンパイルして確かめたいです
parser.mly/lexer.mll/id.ml/syntax.ml/type.ml
ここまでが最初の塊のようなのでocamlyacc/ocamllexしたあとインタプリタで
#use "type.ml"
#use "id.ml"
#use "syntax.ml"
#use "parser.ml"
#use "lexer.ml"
までやるとlexer.mlを読み込んでいるのにlexer.mllでエラーがでます
どうやってインタプリタに読み込めばいいのでしょうか
parser.mly/lexer.mll/id.ml/syntax.ml/type.ml
ここまでが最初の塊のようなのでocamlyacc/ocamllexしたあとインタプリタで
#use "type.ml"
#use "id.ml"
#use "syntax.ml"
#use "parser.ml"
#use "lexer.ml"
までやるとlexer.mlを読み込んでいるのにlexer.mllでエラーがでます
どうやってインタプリタに読み込めばいいのでしょうか
930デフォルトの名無しさん
2016/03/06(日) 17:23:06.30ID:LFfI8YF2 C++11とboostでmlと等価なこと出来るようになってない?
931デフォルトの名無しさん
2016/03/07(月) 12:29:48.85ID:IQOnvxBL 楽にはなっても等価にはなってない
932デフォルトの名無しさん
2016/06/16(木) 23:45:45.68ID:ogi8+DdB OCaml覚えてHaxeのターゲット自分で書けるようになったらなあって思ったけど
パット見何が書いてあるのか良くわからない
パット見何が書いてあるのか良くわからない
933デフォルトの名無しさん
2016/07/09(土) 07:50:35.12ID:lXAilHyr >>926
JavaScript 苦労人
JavaScript 苦労人
934デフォルトの名無しさん
2016/07/22(金) 00:00:06.57ID:Zm57F0sF OCaml インストールしてたら が出てきた。
絵文字がこんなところにも進出してるとは……
絵文字がこんなところにも進出してるとは……
935デフォルトの名無しさん
2016/07/23(土) 20:35:22.56ID:K/hEThar F#はいまいち盛り上がらんのでOCamlに戻るか
936デフォルトの名無しさん
2016/07/31(日) 08:26:29.15ID:FitcqrL7 OCamlには関数合成がないと訊くんですが、@@は合成ではないのですか
937デフォルトの名無しさん
2016/09/02(金) 10:19:54.63ID:75SbB3DN OCaml勉強しはじめの初心者の質問なんですが、どなたか教えてください
https://ocaml.org/learn/tutorials/modules.ja.html
ここの説明によると、行末の;;を避けるためみんなこう書く
open Amodule
let () = hello ()
ってあるんですが、これがまず理解できない
()ってunitの定数値というかリテラルみたいなものなのではないですか?
letで束縛する的なコードが書けることが腑に落ちないのですが・・・
https://ocaml.org/learn/tutorials/modules.ja.html
ここの説明によると、行末の;;を避けるためみんなこう書く
open Amodule
let () = hello ()
ってあるんですが、これがまず理解できない
()ってunitの定数値というかリテラルみたいなものなのではないですか?
letで束縛する的なコードが書けることが腑に落ちないのですが・・・
938デフォルトの名無しさん
2016/09/02(金) 13:34:30.13ID:xfbClL/y () って C の void みたいなもんやろ。
hello() の戻り値が void で両辺 void = void で OK みたいな。
hello() の戻り値が void で両辺 void = void で OK みたいな。
939デフォルトの名無しさん
2016/09/02(金) 18:21:07.36ID:anKFyHj7 =が等号ならそんな感じってするのですが、
let 変数名 = 値 って形に当てはまると
unitの()って変数名であり値でもあるってこと?
とか考え出すと混乱してしまいます・・・
let 変数名 = 値 って形に当てはまると
unitの()って変数名であり値でもあるってこと?
とか考え出すと混乱してしまいます・・・
940デフォルトの名無しさん
2016/09/02(金) 18:22:47.76ID:h+44ee0t941デフォルトの名無しさん
2016/09/02(金) 19:39:25.71ID:MnPjnRyk >>939
letは代入ではなくパターンマッチ
普段は let パターン = 式 のパターンのところに新規の束縛(変数名)を一個置いてるだけ
let 1 =2 とか書けてMatch_failureになるよ
letは代入ではなくパターンマッチ
普段は let パターン = 式 のパターンのところに新規の束縛(変数名)を一個置いてるだけ
let 1 =2 とか書けてMatch_failureになるよ
942デフォルトの名無しさん
2016/09/02(金) 21:44:32.31ID:TuW8Vb/N 皆さんありがとう、何となく分かりました
実際に「let x::xs = [1;2;3;4];;」とかやるとx=1、xs=[2;3;4]とかなりますね
letってのはmatchの単独パターンバージョンみたいな感じなんですね、きっと
実際に「let x::xs = [1;2;3;4];;」とかやるとx=1、xs=[2;3;4]とかなりますね
letってのはmatchの単独パターンバージョンみたいな感じなんですね、きっと
943デフォルトの名無しさん
2016/09/03(土) 14:38:27.01ID:xDozGH3Q944デフォルトの名無しさん
2016/09/04(日) 01:00:38.68ID:m/Nfzz4G たびたび初心者的質問ですいません
OCamlにはListやArrayに対するgroup by関数って無いんでしょうか?
標準ライブラリ(ideoneやyukicoderで利用可能)の範囲内で存在すれば嬉しいんですが・・・
OCamlにはListやArrayに対するgroup by関数って無いんでしょうか?
標準ライブラリ(ideoneやyukicoderで利用可能)の範囲内で存在すれば嬉しいんですが・・・
945デフォルトの名無しさん
2016/09/04(日) 21:14:26.78ID:ZFd7dRv3 List.filter : ('a -> bool) -> 'a list -> 'a list ならある。
Arrayにはないから自力で実装するかExtLibでも使おう。
っていうか標準ライブラリだったら自分で検索しようね。
馬鹿なの?
Arrayにはないから自力で実装するかExtLibでも使おう。
っていうか標準ライブラリだったら自分で検索しようね。
馬鹿なの?
946デフォルトの名無しさん
2016/09/04(日) 21:40:33.19ID:m/Nfzz4G >>945
標準ライブラリは探したけど、無かったから自作したよ
最近だとF#にしろscalaにしろgroupbyがあるのが当たり前だから、確認のため聞いてみた
その程度の事情も察せないお前が馬鹿じゃねw
標準ライブラリは探したけど、無かったから自作したよ
最近だとF#にしろscalaにしろgroupbyがあるのが当たり前だから、確認のため聞いてみた
その程度の事情も察せないお前が馬鹿じゃねw
947デフォルトの名無しさん
2016/09/05(月) 20:50:26.74ID:uZnwqH5s 宿題や競プロでもやるんじゃなきゃCoreかBatteries入れないとやってられない
948デフォルトの名無しさん
2016/09/10(土) 11:17:54.65ID:hxR4/XV4 標準ライブラリゴミすぎ
949デフォルトの名無しさん
2016/09/10(土) 20:27:19.82ID:vL431mpn map reduceに相当するもんがあればいけるんじゃね
950デフォルトの名無しさん
2017/02/27(月) 20:54:32.60ID:nBcs47LL 「プログラミングの基礎」を買ってきてOcamlを始めようとしたのですがインタプリタが日本語を表示してくれません。ぐぐっても知識が足らず解決法がわからなくて途方に暮れています。誰か助けて…
951デフォルトの名無しさん
2017/02/27(月) 21:06:38.41ID:nBcs47LL 使ってる環境はubuntu16.10です。
952デフォルトの名無しさん
2017/02/28(火) 21:46:08.53ID:hBxDt9/3 >>950解決しました
953デフォルトの名無しさん
2017/03/01(水) 12:55:25.91ID:jLbNtrZK どのようにして解決したのか書いてもらえると
同じ状況に陥った人の助けになるかも知れないわけだが…
同じ状況に陥った人の助けになるかも知れないわけだが…
954デフォルトの名無しさん
2017/03/01(水) 16:07:29.52ID:ZtKy2rs9 >>953
解決策を2つ試しました
まず、著者のサポートサイト(http://pllab.is.ocha.ac.jp/~asai/book/Linux.html)を見て、
@端末起動→上部メニューバーの端末タブ→文字コードの設定→日本語(EUC-JP)に設定してから
ALANG=en_US.ISO88591 ocamlを実行しましたが解決しませんでした。
次に、http://qiita.com/KenjiYamauchi/items/40aaab56b65777950877を参考にして、
@任意テキストエディタで~/(ホームディレクトリ配下の意味)に.ocamlinitというファイルを作り、
A「let printer ppf = Format.fprintf ppf "\"%s\"";;
#install_printer printer」と記述した所、解決しました。
コンピュータやプログラミングに詳しい方にはかなりくどいと思いますが、多分自分のようなプログラミング初心者が読む本だと思うので念入りに書いておきます。
解決策を2つ試しました
まず、著者のサポートサイト(http://pllab.is.ocha.ac.jp/~asai/book/Linux.html)を見て、
@端末起動→上部メニューバーの端末タブ→文字コードの設定→日本語(EUC-JP)に設定してから
ALANG=en_US.ISO88591 ocamlを実行しましたが解決しませんでした。
次に、http://qiita.com/KenjiYamauchi/items/40aaab56b65777950877を参考にして、
@任意テキストエディタで~/(ホームディレクトリ配下の意味)に.ocamlinitというファイルを作り、
A「let printer ppf = Format.fprintf ppf "\"%s\"";;
#install_printer printer」と記述した所、解決しました。
コンピュータやプログラミングに詳しい方にはかなりくどいと思いますが、多分自分のようなプログラミング初心者が読む本だと思うので念入りに書いておきます。
955デフォルトの名無しさん
2017/03/01(水) 16:10:35.17ID:ZtKy2rs9 というか、誰も見てないと思ってた・・・
956デフォルトの名無しさん
2017/03/01(水) 16:46:02.21ID:8oSlLlXA 乙
957デフォルトの名無しさん
2017/05/01(月) 06:16:47.63ID:Cn5FkhjE 純粋関数型データ構造が発売されたってのに盛り上がってないな
958デフォルトの名無しさん
2017/05/01(月) 08:26:08.29ID:X5RvQ3AI >>957
あれを読むような層は、既に原書で読んでるから気にもしないのでは。
あれを読むような層は、既に原書で読んでるから気にもしないのでは。
959デフォルトの名無しさん
2017/05/30(火) 11:59:51.61ID:heN7Y+lD Real World OCaml で OCaml入門中です。
https://realworldocaml.org/v1/en/html/variables-and-functions.html
... As a result, when passing labeled functions as arguments,
you need to take care to be consistent in your ordering of labeled arguments.
要は、ラベル付引数持ちの関数 は 引数の順序気にしなくて良くなるので便利だねって話だったのに、
そういう関数を 他の関数に引数として渡す時は 順序気にしないと型エラーになるかもよ、と。
現 (OCaml ver. 4.04.1) にそうなってるのはしょうがないとして、ユーザーは不満だったりしないんですかね?
仕様変えてどこでも順序気にしなくてよくなるようにするのは何か不都合があるんでしょうか?
https://realworldocaml.org/v1/en/html/variables-and-functions.html
... As a result, when passing labeled functions as arguments,
you need to take care to be consistent in your ordering of labeled arguments.
要は、ラベル付引数持ちの関数 は 引数の順序気にしなくて良くなるので便利だねって話だったのに、
そういう関数を 他の関数に引数として渡す時は 順序気にしないと型エラーになるかもよ、と。
現 (OCaml ver. 4.04.1) にそうなってるのはしょうがないとして、ユーザーは不満だったりしないんですかね?
仕様変えてどこでも順序気にしなくてよくなるようにするのは何か不都合があるんでしょうか?
960デフォルトの名無しさん
2017/05/31(水) 12:35:03.09ID:nyiBm3r5 はい
961デフォルトの名無しさん
2017/06/02(金) 14:10:54.16ID:v4wV8DId962デフォルトの名無しさん
2017/06/09(金) 03:43:45.31ID:Z/PWf/cV 末尾再帰がイメージできないんだけど
963デフォルトの名無しさん
2017/06/09(金) 10:56:43.72ID:jgO9PNm3 「なんでも再帰」や「なんでも継続」を読んでみたら?例はSchemeだが
964デフォルトの名無しさん
2017/06/09(金) 13:37:56.60ID:3OdcZ+id fact 0 = 1
fact n = n * (fact (n-1))
だと,fact (n-1)の再帰呼出の後で nとの掛け算を
しなければならない.計算の最後(=末尾)が再帰では
なく乗算となる.
fact2 0 n = n
fact2 n k = fact2 (n-1) (n*x)
として
fact1 n = fact2 n 1
としておけば,fact2の計算の最後はfact2の
再帰呼出で,callをgotoに変えたループで実行できる.
こんな感じでイメージできる?
fact n = n * (fact (n-1))
だと,fact (n-1)の再帰呼出の後で nとの掛け算を
しなければならない.計算の最後(=末尾)が再帰では
なく乗算となる.
fact2 0 n = n
fact2 n k = fact2 (n-1) (n*x)
として
fact1 n = fact2 n 1
としておけば,fact2の計算の最後はfact2の
再帰呼出で,callをgotoに変えたループで実行できる.
こんな感じでイメージできる?
965デフォルトの名無しさん
2017/06/09(金) 14:50:46.84ID:rw1qC18c f_outer(n){
f_inner(n, accumulator){
if 1 == n
accumulator
else
f_inner(n - 1, n * accumulator)
}
}
accumulator に蓄積すれば?
f_inner(n, accumulator){
if 1 == n
accumulator
else
f_inner(n - 1, n * accumulator)
}
}
accumulator に蓄積すれば?
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 新米の予想収穫量、1割増 746万8000トン―農水省 [蚤の市★]
- 高市「発言は撤回しない。謝罪もするな。外務省局長!任せたぞ。」👈なにをさせたかったの?😲 [826239858]
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【悲報】『岡田が日和って逃げたのに高市が自分から突っ込んだ発言をして自爆した』⬅国会答弁、実際はこれだった…… [158478931]
- 自分に自信がない女の子、陽キャ美容室で80cmのエクステを付けた結果wwwwwwwwwwwwwwwwwww [329329848]
- 【実況】博衣こよりのえちえち歌枠🧪
- 外務省局長、よくわからないまま帰国へ [834922174]
