関数型言語ML (SML, OCaml, etc.), Part 6
レス数が1000を超えています。これ以上書き込みはできません。
関数型言語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/ どのようにして解決したのか書いてもらえると
同じ状況に陥った人の助けになるかも知れないわけだが… >>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」と記述した所、解決しました。
コンピュータやプログラミングに詳しい方にはかなりくどいと思いますが、多分自分のようなプログラミング初心者が読む本だと思うので念入りに書いておきます。 純粋関数型データ構造が発売されたってのに盛り上がってないな >>957
あれを読むような層は、既に原書で読んでるから気にもしないのでは。 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) にそうなってるのはしょうがないとして、ユーザーは不満だったりしないんですかね?
仕様変えてどこでも順序気にしなくてよくなるようにするのは何か不都合があるんでしょうか? >>957
書店で立ち読みしてみたんだけど微妙に扱っているデータ構造少なくね?
サンプルコードがStandard MLというのは驚いたが。 「なんでも再帰」や「なんでも継続」を読んでみたら?例はSchemeだが 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に変えたループで実行できる.
こんな感じでイメージできる? f_outer(n){
f_inner(n, accumulator){
if 1 == n
accumulator
else
f_inner(n - 1, n * accumulator)
}
}
accumulator に蓄積すれば? f_outer(n){
f_inner(n, accumulator){
if 1 == n
accumulator
else
f_inner(n - 1, n * accumulator)
}
return f_inner(n, 0)
}
修正。
内部関数を、return するのが抜けていた おおおわかった気がする
ありがとう!
なんでも再起とやらも読んで見ることにする >>966
return f_inner(n, 1)
じゃない? OcamlとかCoqって名古屋以外でも大学での授業とか研究に使われているの?
一時期のブームは去ったみたいだけど。
大学の情報学部とかの現状にはちょっとだけ興味がある。
そして流行に後れて今頃勉強している40代のオレ。 授業で使ったのに広まらなかったということか。
つまり啓蒙に失敗したと。 >971
広まらなかったというかキラーアプリがなかったというか…
結局Ocamlで作られたアプリで唯一プログラマ間で流行ったのがCoqなんじゃね? OCaml は金融とかで使われてるんじゃ無かったか。
そういや Rust も最初は OCaml でコンパイラー書かれてたんだよな。 俺がocaml覚えたきっかけはとあるエロゲーのチートツールなんだが
あれの作者がなぜそれを採用したかにはずごい興味ある >>975
どっかの学生だったんじゃないの?兄妹ものエロゲだけに京大とか。 8月はちょっと纏まった時間がとれたので、
「ソフトウェアの基礎」日本語訳の練習問題を解きすすめてみた。
まだPoly.vが終わった序盤だけどだいぶCoqに慣れてきた。
星三つrecommendedでもたまに難しい問題があるなー、というのが感想。
論理学の命題というのは高校・大学教育で慣れているだけで
見直してみると思ったよりも複雑な構造をしていたのだと今更ながらに感じた。
実務でCoqが要求されることは当分ないと思うけど、
逆変換の関数は少なからず実装することがあるので
ときどき「Coq使って証明したい」という気分にはなるんだよなー。 http://ocaml.jp/
死んでるな……
> ( ! ) Parse error: syntax error, unexpected 'new' (T_NEW) in /virtual/osiire/public_html/lib/func.php on line 531 復活したのは良いけど、一言何か無いのかよ。誰が管理してるんだ。 日本語訳の古さに苦戦しつつLogic.vまで進めていたところ……
久しぶりに英語の本家を見たら、
なんかVol.1 〜 Vol.3に増えてるー!?
あまりの道のりの遠さに絶望しつつ内容を見ると、
旧版からホーア理論まわりをVol..2に分離し、
Vol.3は赤黒木等の少し高度なデータ構造について色々とCoqで証明して感じらしい(新規)。
……く、面白そうじゃないか。 ここ一ヶ月、旧くなった日本語版を捨て英語版に再挑戦してみた。
以前は出来るだけ写経していたが時間がかかり過ぎるので、
付属の.vファイルを直接書き換える方針に変更。
結構章立てと共に内容変わってるなぁ……追加された良問も多いし。
英語の非形式的証明は書く機会もなさそうだし、パスするか。
しかし、答えがWeb上に転がってないのは自習者には正直辛い。
どうもSICPみたいな標準教科書を目指してるっぽい?
こーゆうの(coq)を国立研究所で作れる国はやっぱり凄いと思う今日この頃。 このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 3061日 0時間 17分 11秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。