Objective Caml 3.05 18
ストーリー by Oliver
every_thing_is_a_func() 部門より
every_thing_is_a_func() 部門より
yt曰く、"型推論などの便利な機能と充実したライブラリにより一部に根強いファンがいるO'Caml ですが,3.05 がリリースされました.主な変更点は多数のバグフィックスはもちろんのこと、書式付き入力用 Scanf モジュールの新設、すべてのプラットフォームで 64 bit integer が利用可能になり、ocamldocが新たに配布ファイルに含まれるようになった、など色々です.
関数型プログラミングは,ちとくせがあるかと思いますが,Emacs でコードを書きつつ,ちょこっとずつ実行させながら動作を確認しつつ,最後にネイティブコードを出力させるといった便利なプログラミングが出来るので,これを機にみなさん使ってみてはいかがでしょうか?"
変更点 (スコア:2, 参考になる)
3.05 のアナウンス [inria.fr]によると、 3.04 から 3.05 への変更点の中では、 first-class polymorphism [inria.fr] の導入が大きいようです。が、 first-class polymorphism と mutable を同時に使うと(案の定?)まだ不安定 [inria.fr]のようで、修正して 3.06 をすぐ出す予定 [inria.fr]とのことです。
ぼくは class をあまり使わないので、残念ながら first-class polymorphism の恩恵がわからないのですが。
鵜呑みにしてみる?
Re:変更点 (スコア:1)
(* と、ひっそり書いてみても反応ないか。 *)
鵜呑みにしてみる?
情報プリーズ (スコア:0)
マイナーなものはこういう機会に宣伝しまくってくれたほうが良いような気がする。
そうすれば、それをタネに議論もできるし。
なんでマイナーなのかわかるかもしれないし:-)
マイナーの言えばマイナーかもしれないけど (スコア:1)
もー (スコア:0)
User-agent: に平仮名で書くのはやめてほしかった :-)
'91年頃に (スコア:0)
私の卒業した学科 (情報科学科) では2年生にPascalを教えて3年生はSchemeを使ってプログラミングをしていた (Cとかは必要に応じて独習) のですが、その後、2年生がSchemeで3年生はSMLというカリキュラムに変わりました。このため、「SMLでならどう書けばいいか分かるけどCでの書き方が分からない」という学生が続出したそうです。
Re:'91年頃に (スコア:1)
必修系で「教えてもらえる」(ことになっている)言語はこれだけ。他には選択次第ではHaskellやProlog、Schemeにも出会うことになるが、基本的に独習。学期がはじまって最初の宿題の提出がある2週間後までにある程度使える様になれない人材ならば辞めてしまえ、という思想らしい。まあ、だいたい必要があってCやC++およびスクリプト言語もひとつぐらいは自力で覚える。
卒論とか自由実習(理論すくめの卒論の予行演習みたいなもん)だとJavaがまだまだ多いが、ひそかにRubyが広まりつつある。やっぱアルゴリズムが読みやすいのと、開発が楽だからみたいだ。3年間の布教が実ってきた。
def quicksort(arr)
m = arr[0]
quicksort(arr.select {|i| i<m}) + arr.select {|i| i==m} + quicksort(arr.select {|i| i>m})
end
とかす・て・きでアカデミック受け (笑)
Haskellはたまに使うけど、Ocamlは機会なくて使ったことなくて残念。
Re:'91年頃に (スコア:1)
2年で Scheme+Sparc asm 、3年で OCaml+Prolog という感じですね。
あ、3年で VHDL もやります(^^;
C言語は課題で必須なのですが、言語仕様は独習させられます(笑)
最初に Scheme とアセンブリ言語を同時に学ばせるのは、
理論的なプログラミングと、ハードの実際という両端をまず学ばせて、
中途半端な領域はあとから埋めていく、というスタンスだと聞きました。
実際、大学2年まではC言語以外は使い物にならないと思い込んでいた
自分が、もはやCではプログラムを書けない体になってしまったことを考えると
有意義なカリキュラムだったのでしょう(?)。
C or C++ を使えなくなったのは、ガベコレ無しに耐えられなくなったのが
一番大きな要因ですが(苦笑)
でも OCaml の型推論の概念を最初に知ったときには
その賢さに目からうろこが落ちる気分でした。
とっつきは悪いですけど、ぜひ多くの人に触れてもらいたい言語です。
それじゃ動かないって (スコア:1)
def quicksort(arr)
return arr if arr.size<=1
m = arr[0]
quicksort(arr.select {|i| i<m}) + arr.select {|i| i==m} + quicksort(arr.select {|i| i>m})
end
Re:それじゃ動かないって (スコア:0)
(http://www.teu.ac.jp/nsit/~tomoya/Prog/haskellq.htmlから)
> qSort :: [Int] -> [Int]
> qSort [] = []
> qSort (x:xs)
> = qSort [ y | y <- xs, y <= x ] ++ [x]
> ++ qSort [ y | y <-xs, y > x ]
と同じね。
パターンマッチングさいこー
Re:'91年頃に (スコア:0)
参考までに caml で書いてみました。
let rec quicksort = function
[] -> [] (* base case *)
| hd::tl ->
let (lt,gt) = List.partition (fun i -> i < hd) tl in
(quicksort lt)@[hd]@(quicksort gt)
Re:'91年頃に (スコア:0)
サンプルコード (スコア:0)
8クイーンとかでもいいから。
Re:サンプルコード (スコア:1)
日本語の情報 (スコア:0)
Re:日本語の情報 (スコア:2, 参考になる)
五十嵐先生は京都に移られたので、多分これだと思います。
Re:日本語の情報 (スコア:1, 参考になる)
一応有志により この本 [inria.fr] の日本語訳が進行中らしいですが。
探してみたらこういうの こういうの [u-tokyo.ac.jp]もありました。
Re:日本語の情報 (スコア:0)
まだ全然みたいだけど。