関数型言語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
レス数が1000を超えています。これ以上書き込みはできません。
2009/06/15(月) 07:15:21
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 に蓄積すれば?
966965
2017/06/09(金) 14:56:24.07ID:rw1qC18c f_outer(n){
f_inner(n, accumulator){
if 1 == n
accumulator
else
f_inner(n - 1, n * accumulator)
}
return f_inner(n, 0)
}
修正。
内部関数を、return するのが抜けていた
f_inner(n, accumulator){
if 1 == n
accumulator
else
f_inner(n - 1, n * accumulator)
}
return f_inner(n, 0)
}
修正。
内部関数を、return するのが抜けていた
967デフォルトの名無しさん
2017/06/09(金) 16:51:44.77ID:VCuqCK40 おおおわかった気がする
ありがとう!
なんでも再起とやらも読んで見ることにする
ありがとう!
なんでも再起とやらも読んで見ることにする
968デフォルトの名無しさん
2017/06/09(金) 17:05:35.04ID:3Dqy8l+L969デフォルトの名無しさん
2017/06/25(日) 18:30:26.47ID:v1ZjLLZV OcamlとかCoqって名古屋以外でも大学での授業とか研究に使われているの?
一時期のブームは去ったみたいだけど。
大学の情報学部とかの現状にはちょっとだけ興味がある。
そして流行に後れて今頃勉強している40代のオレ。
一時期のブームは去ったみたいだけど。
大学の情報学部とかの現状にはちょっとだけ興味がある。
そして流行に後れて今頃勉強している40代のオレ。
970デフォルトの名無しさん
2017/07/03(月) 09:21:46.88ID:ipQv+IYB 東大東北大お茶の水では使ってた
971デフォルトの名無しさん
2017/07/03(月) 17:44:24.93ID:/M1wO8+Z 授業で使ったのに広まらなかったということか。
つまり啓蒙に失敗したと。
つまり啓蒙に失敗したと。
972デフォルトの名無しさん
2017/07/04(火) 13:46:26.44ID:VgVQ93XC Occamなら知っとるぞよ?
973デフォルトの名無しさん
2017/07/12(水) 14:21:04.56ID:06OhWRFP >971
広まらなかったというかキラーアプリがなかったというか…
結局Ocamlで作られたアプリで唯一プログラマ間で流行ったのがCoqなんじゃね?
広まらなかったというかキラーアプリがなかったというか…
結局Ocamlで作られたアプリで唯一プログラマ間で流行ったのがCoqなんじゃね?
974デフォルトの名無しさん
2017/07/12(水) 14:33:02.68ID:bLDjTsNM OCaml は金融とかで使われてるんじゃ無かったか。
そういや Rust も最初は OCaml でコンパイラー書かれてたんだよな。
そういや Rust も最初は OCaml でコンパイラー書かれてたんだよな。
975デフォルトの名無しさん
2017/07/14(金) 23:08:50.92ID:UJz0OWoz 俺がocaml覚えたきっかけはとあるエロゲーのチートツールなんだが
あれの作者がなぜそれを採用したかにはずごい興味ある
あれの作者がなぜそれを採用したかにはずごい興味ある
976デフォルトの名無しさん
2017/07/15(土) 12:06:36.80ID:03i9G/wL >>975
どっかの学生だったんじゃないの?兄妹ものエロゲだけに京大とか。
どっかの学生だったんじゃないの?兄妹ものエロゲだけに京大とか。
977デフォルトの名無しさん
2017/08/16(水) 21:00:55.34ID:H/HIEf+2 (*´・ω・`*)
978デフォルトの名無しさん
2017/08/17(木) 13:02:39.82ID:5mQoD0+b (´・ω・`)
979デフォルトの名無しさん
2017/09/01(金) 18:43:59.45ID:RxXe6GrD 8月はちょっと纏まった時間がとれたので、
「ソフトウェアの基礎」日本語訳の練習問題を解きすすめてみた。
まだPoly.vが終わった序盤だけどだいぶCoqに慣れてきた。
星三つrecommendedでもたまに難しい問題があるなー、というのが感想。
論理学の命題というのは高校・大学教育で慣れているだけで
見直してみると思ったよりも複雑な構造をしていたのだと今更ながらに感じた。
実務でCoqが要求されることは当分ないと思うけど、
逆変換の関数は少なからず実装することがあるので
ときどき「Coq使って証明したい」という気分にはなるんだよなー。
「ソフトウェアの基礎」日本語訳の練習問題を解きすすめてみた。
まだPoly.vが終わった序盤だけどだいぶCoqに慣れてきた。
星三つrecommendedでもたまに難しい問題があるなー、というのが感想。
論理学の命題というのは高校・大学教育で慣れているだけで
見直してみると思ったよりも複雑な構造をしていたのだと今更ながらに感じた。
実務でCoqが要求されることは当分ないと思うけど、
逆変換の関数は少なからず実装することがあるので
ときどき「Coq使って証明したい」という気分にはなるんだよなー。
980デフォルトの名無しさん
2017/09/05(火) 11:03:28.55ID:a/Cb1ZW9 http://ocaml.jp/
死んでるな……
> ( ! ) Parse error: syntax error, unexpected 'new' (T_NEW) in /virtual/osiire/public_html/lib/func.php on line 531
死んでるな……
> ( ! ) Parse error: syntax error, unexpected 'new' (T_NEW) in /virtual/osiire/public_html/lib/func.php on line 531
981デフォルトの名無しさん
2017/09/08(金) 14:02:07.35ID:swD2wqBn ocaml.jpは息してる?
982デフォルトの名無しさん
2017/09/24(日) 12:35:45.27ID:VL5Szw+L いつまで死んでるんだよ
983デフォルトの名無しさん
2017/10/03(火) 00:31:09.35ID:JZnIdnEQ 復活した
984デフォルトの名無しさん
2017/10/03(火) 02:20:47.65ID:upqeSfz9 復活したのは良いけど、一言何か無いのかよ。誰が管理してるんだ。
985979
2017/10/05(木) 12:08:08.18ID:SZzrAZT5 日本語訳の古さに苦戦しつつLogic.vまで進めていたところ……
久しぶりに英語の本家を見たら、
なんかVol.1 〜 Vol.3に増えてるー!?
あまりの道のりの遠さに絶望しつつ内容を見ると、
旧版からホーア理論まわりをVol..2に分離し、
Vol.3は赤黒木等の少し高度なデータ構造について色々とCoqで証明して感じらしい(新規)。
……く、面白そうじゃないか。
久しぶりに英語の本家を見たら、
なんかVol.1 〜 Vol.3に増えてるー!?
あまりの道のりの遠さに絶望しつつ内容を見ると、
旧版からホーア理論まわりをVol..2に分離し、
Vol.3は赤黒木等の少し高度なデータ構造について色々とCoqで証明して感じらしい(新規)。
……く、面白そうじゃないか。
986デフォルトの名無しさん
2017/10/05(木) 19:45:51.56ID:72rIdNeW >>979
リンクpls
リンクpls
987デフォルトの名無しさん
2017/10/07(土) 12:06:25.63ID:689sKi0/988979
2017/10/30(月) 19:39:25.32ID:asGH9s/c ここ一ヶ月、旧くなった日本語版を捨て英語版に再挑戦してみた。
以前は出来るだけ写経していたが時間がかかり過ぎるので、
付属の.vファイルを直接書き換える方針に変更。
結構章立てと共に内容変わってるなぁ……追加された良問も多いし。
英語の非形式的証明は書く機会もなさそうだし、パスするか。
しかし、答えがWeb上に転がってないのは自習者には正直辛い。
どうもSICPみたいな標準教科書を目指してるっぽい?
こーゆうの(coq)を国立研究所で作れる国はやっぱり凄いと思う今日この頃。
以前は出来るだけ写経していたが時間がかかり過ぎるので、
付属の.vファイルを直接書き換える方針に変更。
結構章立てと共に内容変わってるなぁ……追加された良問も多いし。
英語の非形式的証明は書く機会もなさそうだし、パスするか。
しかし、答えがWeb上に転がってないのは自習者には正直辛い。
どうもSICPみたいな標準教科書を目指してるっぽい?
こーゆうの(coq)を国立研究所で作れる国はやっぱり凄いと思う今日この頃。
989デフォルトの名無しさん
2017/11/01(水) 07:27:01.78ID:wuKEf1Sh a
990デフォルトの名無しさん
2017/11/01(水) 07:27:36.60ID:wuKEf1Sh sit
991デフォルトの名無しさん
2017/11/01(水) 07:27:56.41ID:wuKEf1Sh dot
992デフォルトの名無しさん
2017/11/01(水) 07:28:13.79ID:wuKEf1Sh egg
993デフォルトの名無しさん
2017/11/01(水) 07:28:31.25ID:wuKEf1Sh nø
994デフォルトの名無しさん
2017/11/01(水) 07:28:48.81ID:wuKEf1Sh this
995デフォルトの名無しさん
2017/11/01(水) 07:29:26.33ID:wuKEf1Sh combi
996デフォルトの名無しさん
2017/11/01(水) 07:30:08.09ID:wuKEf1Sh it
997デフォルトの名無しさん
2017/11/01(水) 07:30:42.85ID:wuKEf1Sh 2
998デフォルトの名無しさん
2017/11/01(水) 07:31:16.98ID:wuKEf1Sh ping
999デフォルトの名無しさん
2017/11/01(水) 07:32:05.81ID:wuKEf1Sh pong
1000デフォルトの名無しさん
2017/11/01(水) 07:32:32.73ID:wuKEf1Sh wild
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 3061日 0時間 17分 11秒
新しいスレッドを立ててください。
life time: 3061日 0時間 17分 11秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… [BFU★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★2 [BFU★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★2 [BFU★]
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 [Hitzeschleier★]
- 政府、株式の配当など金融所得を高齢者の医療保険料や窓口負担に反映する方針を固めた [バイト歴50年★]
- 【維新】吉村知事「中国人観光客だけに頼るビジネスモデル変えていかないといけない」「高市総理の発言は撤回する必要はない」 [Hitzeschleier★]
- 中国高官と話す外務省局長の表情、やばい [175344491]
- 【高市速報】明日から中国からの輸入が停止すれば2ヵ月で国内の生産業に53兆円の損失発生 [931948549]
- 中国外務省「日中関係の悪化は高市早苗首相が原因」と名指しで強く非難。キタ━(゚∀゚)━! [153490809]
- 日本政府「高市総理の発言は問題ないと伝え、中国総領事のSNS投稿は問題があると中国に伝えました😊」 [931948549]
- 維新の吉村代表「高市総理に中国総領事の国外退去を要請した。今後、知事として中国イベントには出席しない」 [359572271]
- 【悲報】日本人「俺以外の日本人が中国と戦ってくれるぞ!」 [616817505]
