16/09/02 10:19:54.63 75SbB3DN.net
OCaml勉強しはじめの初心者の質問なんですが、どなたか教えてください
URLリンク(ocaml.org)
ここの説明によると、行末の;;を避けるためみんなこう書く
open Amodule
let () = hello ()
ってあるんですが、これがまず理解できない
()ってunitの定数値というかリテラルみたいなものなのではないですか?
letで束縛する的なコードが書けることが腑に落ちないのですが・・・
951:デフォルトの名無しさん
16/09/02 13:34:30.13 xfbClL/y.net
() って C の void みたいなもんやろ。
hello() の戻り値が void で両辺 void = void で OK みたいな。
952:デフォルトの名無しさん
16/09/02 18:21:07.36 anKFyHj7.net
=が等号ならそんな感じってするのですが、
let 変数名 = 値 って形に当てはまると
unitの()って変数名であり値でもあるってこと?
とか考え出すと混乱して�
953:オまいます・・・
954:デフォルトの名無しさん
16/09/02 18:22:47.76 h+44ee0t.net
>>939
その用途の場合単なるエントリポイントなので()にそんなに意味はない。
let _ =~でも動作するよ。
955:デフォルトの名無しさん
16/09/02 19:39:25.71 MnPjnRyk.net
>>941
letは代入ではなくパターンマッチ
普段は let パターン = 式 のパターンのところに新規の束縛(変数名)を一個置いてるだけ
let 1 =2 とか書けてMatch_failureになるよ
956:デフォルトの名無しさん
16/09/02 21:44:32.31 TuW8Vb/N.net
皆さんありがとう、何となく分かりました
実際に「let x::xs = [1;2;3;4];;」とかやるとx=1、xs=[2;3;4]とかなりますね
letってのはmatchの単独パターンバージョンみたいな感じなんですね、きっと
957:デフォルトの名無しさん
16/09/03 14:38:27.01 xDozGH3Q.net
OCamlも捨てがたい
URLリンク(qiita.com)
958:デフォルトの名無しさん
16/09/04 01:00:38.68 m/Nfzz4G.net
たびたび初心者的質問ですいません
OCamlにはListやArrayに対するgroup by関数って無いんでしょうか?
標準ライブラリ(ideoneやyukicoderで利用可能)の範囲内で存在すれば嬉しいんですが・・・
959:デフォルトの名無しさん
16/09/04 21:14:26.78 ZFd7dRv3.net
List.filter : ('a -> bool) -> 'a list -> 'a list ならある。
Arrayにはないから自力で実装するかExtLibでも使おう。
っていうか標準ライブラリだったら自分で検索しようね。
馬鹿なの?
960:デフォルトの名無しさん
16/09/04 21:40:33.19 m/Nfzz4G.net
>>947
標準ライブラリは探したけど、無かったから自作したよ
最近だとF#にしろscalaにしろgroupbyがあるのが当たり前だから、確認のため聞いてみた
その程度の事情も察せないお前が馬鹿じゃねw
961:デフォルトの名無しさん
16/09/05 20:50:26.74 uZnwqH5s.net
宿題や競プロでもやるんじゃなきゃCoreかBatteries入れないとやってられない
962:デフォルトの名無しさん
16/09/10 11:17:54.65 hxR4/XV4.net
標準ライブラリゴミすぎ
963:デフォルトの名無しさん
16/09/10 20:27:19.82 vL431mpn.net
map reduceに相当するもんがあればいけるんじゃね
964:デフォルトの名無しさん
17/02/27 20:54:32.60 nBcs47LL.net
「プログラミングの基礎」を買ってきてOcamlを始めようとしたのですがインタプリタが日本語を表示してくれません。ぐぐっても知識が足らず解決法がわからなくて途方に暮れています。誰か助けて…
965:デフォルトの名無しさん
17/02/27 21:06:38.41 nBcs47LL.net
使ってる環境はubuntu16.10です。
966:デフォルトの名無しさん
17/02/28 21:46:08.53 hBxDt9/3.net
>>952解決しました
967:デフォルトの名無しさん
17/03/01 12:55:25.91 jLbNtrZK.net
どのようにして解決したのか書いてもらえると
同じ状況に陥った人の助けになるかも知れないわけだが…
968:デフォルトの名無しさん
17/03/01 16:07:29.52 ZtKy2rs9.net
>>955
解決策を2つ試しました
まず、著者のサポートサイト(URLリンク(pllab.is.ocha.ac.jp))を見て、
①端末起動→上部メニューバーの端末タブ→文字コードの設定→日本語(EUC-JP)に設定してから
②LANG=en_US.ISO88591 ocamlを実行しましたが解決しませんでした。
次に、URLリンク(qiita.com)を参考にして、
①任意テキストエディタで~/(ホームディレクトリ配下の意味)に.ocamlinitというファイルを作り、
②「let printer ppf = Format.fprintf ppf "\"%s\"";;
#install_printer printer」と記述した所、解決しました。
コンピュータやプログラミングに詳しい方にはかなりくどいと思いますが、多分自分のようなプログラミング初心者が読む本だと思うので念入りに書いておきます。
969:デフォルトの名無しさん
17/03/01 16:10:35.17 ZtKy2rs9.net
というか、誰も見てないと思ってた・・・
970:デフォルトの名無しさん
17/03/01 16:46:02.21 8oSlLlXA.net
乙
971:デフォルトの名無しさん
17/05/01 06:16:47.63 Cn5FkhjE.net
純粋関数型データ構造が発売されたってのに盛り上がってないな
972:デフォルトの名無しさん
17/05/01 08:26:08.29 X5RvQ3AI.net
>>959
あれを読むような層は、既に原書で読んでるから気にもしないのでは。
973:デフォルトの名無しさん
17/05/30 11:59:51.61 heN7Y+lD.net
Real World OCaml で OCaml入門中です。
URLリンク(realworldocaml.org)
... 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) にそうなってるのはしょうがないとして、ユーザーは不満だったりしないんですかね?
仕様変えてどこでも順序気にしなくてよくなるようにするのは何か不都合があるんでしょうか?
974:デフォルトの名無しさん
17/05/31 12:35:03.09 nyiBm3r5.net
はい
975:デフォルトの名無しさん
17/06/02 14:10:54.16 v4wV8DId.net
>>959
書店で立ち読みしてみたんだけど微妙に扱っているデータ構造少なくね?
サンプルコードがStandard MLというのは驚いたが。
976:デフォルトの名無しさん
17/06/09 03:43:45.31 Z/PWf/cV.net
末尾再帰がイメージできないんだけど
977:デフォルトの名無しさん
17/06/09 10:56:43.72 jgO9PNm3.net
「なんでも再帰」や「なんでも継続」を読んでみたら?例はSchemeだが
978:デフォルトの名無しさん
17/06/09 13:37:56.60 3OdcZ+id.net
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に変えたループで実行できる.
こんな感じでイメージできる?
979:デフォルトの名無しさん
17/06/09 14:50:46.84 rw1qC18c.net
f_outer(n){
f_inner(n, accumulator){
if 1 == n
accumulator
else
f_inner(n - 1, n * accumulator)
}
}
accumulator に蓄積すれば?
980:965
17/06/09 14:56:24.07 rw1qC18c.net
f_outer(n){
f_inner(n, accumulator){
if 1 == n
accumulator
else
f_inner(n - 1, n * accumulator)
}
return f_inner(n, 0)
}
修正。
内部関数を、return するのが抜けていた
981:デフォルトの名無しさん
17/06/09 16:51:44.77 VCuqCK40.net
おおおわかった気がする
ありがとう!
なんでも再起とやらも読んで見ることにする
982:デフォルトの名無しさん
17/06/09 17:05:35.04 3Dqy8l+L.net
>>968
return f_inner(n, 1)
じゃない?
983:デフォルトの名無しさん
17/06/25 18:30:26.47 v1ZjLLZV.net
OcamlとかCoqって名古屋以外でも大学での授業とか研究に使われているの?
一時期のブームは去ったみたいだけど。
大学の情報学部とかの現状にはちょっとだけ興味がある。
そして流行に後れて今頃勉強している40代のオレ。
984:デフォルトの名無しさん
17/07/03 09:21:46.88 ipQv+IYB.net
東大東北大お茶の水では使ってた
985:デフォルトの名無しさん
17/07/03 17:44:24.93 /M1wO8+Z.net
授業で使ったのに広まらなかったということか。
つまり啓蒙に失敗したと。
986:デフォルトの名無しさん
17/07/04 13:46:26.44 VgVQ93XC.net
Occamなら知っとるぞよ?
987:デフォルトの名無しさん
17/07/12 14:21:04.56 06OhWRFP.net
>973
広まらなかったというかキラーアプリがなかったというか…
結局Ocamlで作られたアプリで唯一プログラマ間で流行ったのがCoqなんじゃね?
988:デフォルトの名無しさん
17/07/12 14:33:02.68 bLDjTsNM.net
OCaml は金融とかで使われてるんじゃ無かったか。
そういや Rust も最初は OCaml でコンパイラー書かれてたんだよな。
989:デフォルトの名無しさん
17/07/14 23:08:50.92 UJz0OWoz.net
俺がocaml覚えたきっかけはとあるエロゲーのチートツールなんだが
あれの作者がなぜそれを採用したかにはずごい興味ある
990:デフォルトの名無しさん
17/07/15 12:06:36.80 03i9G/wL.net
>>977
どっかの学生だったんじゃないの?兄妹ものエロゲだけに京大とか。
991:デフォルトの名無しさん
17/08/16 21:00:55.34 H/HIEf+2.net
(*´・ω・`*)
992:デフォルトの名無しさん
17/08/17 13:02:39.82 5mQoD0+b.net
(´・ω・`)
993:デフォルトの名無しさん
17/09/01 18:43:59.45 RxXe6GrD.net
8月はちょっと纏まった時間がとれたので、
「ソフトウェアの基礎」日本語訳の練習問題を解きすすめてみた。
まだPoly.vが終わった序盤だけどだいぶCoqに慣れてきた。
星三つrecommendedでもたまに難しい問題があるなー、というのが感想。
論理学の命題というのは高校・大学教育で慣れているだけで
見直してみると思ったよりも複雑な構造をしていたのだと今更ながらに感じた。
実務でCoqが要求されることは当分ないと思うけど、
逆変換の関数は少なからず実装することがあるので
ときどき「Coq使って証明したい」という気分にはなるんだよなー。
994:デフォルトの名無しさん
17/09/05 11:03:28.55 a/Cb1ZW9.net
URLリンク(ocaml.jp)
死んでるな……
> ( ! ) Parse error: syntax error, unexpected 'new' (T_NEW) in /virtual/osiire/public_html/lib/func.php on line 531
995:デフォルトの名無しさん
17/09/08 14:02:07.35 swD2wqBn.net
ocaml.jpは息してる?
996:デフォルトの名無しさん
17/09/24 12:35:45.27 VL5Szw+L.net
いつまで死んでるんだよ
997:デフォルトの名無しさん
17/10/03 00:31:09.35 JZnIdnEQ.net
復活した
998:デフォルトの名無しさん
17/10/03 02:20:47.65 upqeSfz9.net
復活したのは良いけど、一言何か無いのかよ。誰が管理してるんだ。
999:979
17/10/05 12:08:08.18 SZzrAZT5.net
日本語訳の古さに苦戦しつつLogic.vまで進めていたところ……
久しぶりに英語の本家を見たら、
なんかVol.1 ~ Vol.3に増えてるー!?
あまりの道のりの遠さに絶望しつつ内容を見ると、
旧版からホーア理論まわりをVol..2に分離し、
Vol.3は赤黒木等の少し高度なデータ構造について色々とCoqで証明して感じらしい(新規)。
……く、面白そうじゃないか。
1000:デフォルトの名無しさん
17/10/05 19:45:51.56 72rIdNeW.net
>>981
リンクpls
1001:デフォルトの名無しさん
17/10/07 12:06:25.63 689sKi0/.net
>>988
URLリンク(softwarefoundations.cis.upenn.edu)
1002:979
17/10/30 19:39:25.32 asGH9s/c.net
ここ一ヶ月、旧くなった日本語版を捨て英語版に再挑戦してみた。
以前は出来るだけ写経していたが時間がかかり過ぎるので、
付属の.vファイルを直接書き換える方針に変更。
結構章立てと共に内容変わってるなぁ……追加された良問も多いし。
英語の非形式的証明は書く機会もなさそうだし、パスするか。
しかし、答えがWeb上に転がってないのは自習者には正直辛い。
どうもSICPみたいな標準教科書を目指してるっぽい?
こーゆうの(coq)を国立研究所で作れる国はやっぱり凄いと思う今日この頃。
1003:デフォルトの名無しさん
17/11/01 07:27:01.78 wuKEf1Sh.net
a
1004:デフォルトの名無しさん
17/11/01 07:27:36.60 wuKEf1Sh.net
sit
1005:デフォルトの名無しさん
17/11/01 07:27:56.41 wuKEf1Sh.net
dot
1006:デフォルトの名無しさん
17/11/01 07:28:13.79 wuKEf1Sh.net
egg
1007:デフォルトの名無しさん
17/11/01 07:28:31.25 wuKEf1Sh.net
nø
1008:デフォルトの名無しさん
17/11/01 07:28:48.81 wuKEf1Sh.net
this
1009:デフォルトの名無しさん
17/11/01 07:29:26.33 wuKEf1Sh.net
combi
1010:デフォルトの名無しさん
17/11/01 07:30:08.09 wuKEf1Sh.net
it
1011:デフォルトの名無しさん
17/11/01 07:30:42.85 wuKEf1Sh.net
2
1012:デフォルトの名無しさん
17/11/01 07:31:16.98 wuKEf1Sh.net
ping
1013:デフォルトの名無しさん
17/11/01 07:32:05.81 wuKEf1Sh.net
pong
1014:デフォルトの名無しさん
17/11/01 07:32:32.73 wuKEf1Sh.net
wild
1015:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 3061日 0時間 17分 11秒
1016:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています