1 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 14:49:54 ] 関数型言語MLについて語るスレッドです。 MLは、確固とした理論的背景を持つ言語でありながら、 現実的なソフトの開発にも使用できる実用性を備えた言語です。 また、プログラミングの初心者が最初に学習する言語としても優れています。 総本山 Standard ML www.smlnj.org/ Objective Caml caml.inria.fr/ocaml/ 前スレ 関数型言語ML(SML, OCaml, etc.), Part 4 pc11.2ch.net/test/read.cgi/tech/1133003340/
116 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 08:03:00 ] スケジューラがユーザ空間に(も)ないと、 関数型言語っぽい面白いことができない。 CML→manticoreって人がいるね。
117 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:15:14 ] せっかく新生した JoCaml のことも思い出してあげてください
118 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:20:30 ] OCaml はもう良いじゃん...
119 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:29:28 ] >>114 coThreadライブラリ(cothreads.sourceforge.net/ )は無視ですか、そうですか。
120 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:25:15 ] プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで~ と 入門OCaml ~プログラミング基礎と実践理解~ どっちがいい?
121 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 11:09:15 ] 立ち読みして決めろ
122 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 00:27:53 ] お前らの感想を言え
123 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 13:42:43 ] >>122 昨日発売される本の即日レビューなんて 無茶いうな。 入門OCaml 必要なことは大体書いてあるので、基礎的なことは十分できるようになった。 短所としては、よくあることだけど、ちょっと複雑な機能を説明するときに 複雑な例で解説してる場所がある、とか。そのぶん実用例の確認にはいいんかな。 そういう部分は自分で簡単なもの作ってみて理解するしかない。 まだ勉強中だけどスレッドやらパーサやらCGIやらの使用例とかあるし 本格的に使うつもりなら買っといていいんじゃないっかな。 あとこの本が無ければSML#とか知らなかった。
124 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 16:26:55 ] SML#の本、欲しい
125 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 17:36:49 ] >>116 >CML→manticoreって人がいるね。 manticoreってもう使えるの?
126 名前:デフォルトの名無しさん mailto:sage [2007/12/01(土) 20:45:42 ] >>120 どちらかといえば、前者。
127 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 00:09:43 ] >>125 >>116 は研究者/開発者
128 名前:デフォルトの名無しさん [2007/12/02(日) 01:04:45 ] >>119 正直無駄にHaskell-STM風にモナド前提なのを何とかして欲しい。
129 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 08:05:45 ] 無駄に?
130 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 12:32:54 ] Poly/ML が 5.1 でネイティブスレッドを使える様になっているね polyml.5.1/libpolyml/processes.cpp 内で pthread 関連の関数を 呼び出しているみたい Poly/ML を使っている人はこのスレには居ないかな...
131 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 21:46:29 ] 使ってるよ。 自作のコードはStandard ML系の処理系のほとんどでひととおり動作チェックする。
132 名前:130 mailto:sage [2007/12/02(日) 22:23:23 ] 今日久々に Poly/ML 見てみたんだけど、結構進化してるよね。 イメージベースの環境から、オブジェクトファイルを吐いて 実行ファイルを生成出来る様に変わっているし、スレッドは カーネルスレッドをサポートしているし、FFI は C の構造体 を扱えるし、Intel Mac も Solaris もサポートしているし、 あと欲しいのは UNICODE のサポートくらい。 Standard ML 処理系では最強なんじゃないかな。
133 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 09:37:00 ] 誰かocaml-ssl ってのビルドできた人いますか(0.4.2) ttp://sourceforge.net/project/showfiles.php?group_id=89802&package_id=106341
134 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 00:06:44 ] SML のソースコードを沢山読んでみたいのですが、 Perl でいう CPAN みたいなのはありませんか?
135 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 08:34:33 ] つ www.cs.princeton.edu/~appel/smlnj/projects.html
136 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 09:02:46 ] ありがとうございます!
137 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 12:11:14 ] >>2 >yk.i.hosei.ac.jp/smlbook/smlbook.pdf だいぶ今更かもしれないけど、これ無くなってしまっているね。 欲しい人は今のうちに Web Archive から頂いておいた方が良いかも。
138 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 02:59:37 ] >133 Cygwin 上で特に patch なしでビルドできてるけど。何ぞ問題が?
139 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 16:52:38 ] 過疎っているので、Python スレにあったお題でコードを書いてみました。 "行頭の空白文字列を nbsp に変更するプログラム" fun replaceWhite file = let fun repLn lst = case hd lst of #" " => [#"&", #"n", #"b", #"s", #"p", #";"] @ repLn(tl lst) | #"¥t" => [#"&", #"n", #"b", #"s", #"p", #";", #"&", #"n", #"b", #"s", #"p", #";", #"&", #"n", #"b", #"s", #"p", #";", #"&", #"n", #"b", #"s", #"p", #";"] @ repLn(tl lst) | _ => lst fun replace out = case TextIO.inputLine out of NONE => () | SOME ln => ((print o String.implode o repLn o String.explode) ln; replace out) in (replace o TextIO.openIn) file end;
140 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 16:56:47 ] もういっちょ。 "フィボナッチ数を 0 から 35 まで表示するプログラム" fun fibloop () = let fun fib n = if n < 2 then n else fib(n-1) + fib(n-2) fun loop 36 = () | loop cnt = (print(Int.toString(fib(cnt)) ^ "¥n"); loop (cnt + 1)) in loop 0 end;
141 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 21:30:26 ] 次スレを立てる時は >>2 の SML の所にこれを追加して欲しいな SML を勉強していて一番参考になった www.geocities.jp/m_hiroi/func/index.html sml.sourceforge.net/Basis/
142 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 23:42:59 ] >>137 旧研究室サーバにあった。 133.25.16.150/smlbook/smlbook.pdf
143 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 00:42:45 ] >>139 ...正規表現のライブラリって無いのですか? いくら静的型付けとはいえ、スクリプト系の言語に比べてかなり冗長で、 いまいちSMLを勉強する気にならないのですが...。
144 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 03:21:09 ] 取り敢えず Moscow ML には正規表現ライブラリがバンドルされている みたいだけど、他もあるんじゃないかな。正規表現を使わなくとも Vector で書いたらコード量は大分少なくなると思う。 まあそんな事は誰でも簡単に調べられる事だし、勉強する気にならない のであれば他の事をした方が良いと思うよ。自由ってそういう事でしょ。 面白いと思ってすぐに手を動かせる人間が自分で色々探求して行く一方で、 そうじゃない人がいても別に誰も強制したりなんかしない。 そもそも >>139 は SML を勉強し始めて一日目の人間が書いたコード だから参考にしない方が良いでしょう…
145 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 09:43:10 ] >>144 3行でおk
146 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 18:12:49 ] >>145 俺の コードに 文句言うな
147 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 21:34:29 ] >>144 一日目でそれだけ書ければすごいよ。
148 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 22:13:04 ] >>145 3 行 x 80 桁ではこれが限界ですた… fun r () = let open TextIO String Char val c = (valOf o input1) stdIn; in case c of #" " => print "&nbsp;" | #"¥t" => print "&nbsp;&nbsp;&nbsp;&nbsp;" | #"¥n" => print "¥n" | _ =>((print o toString)c;(print o valOf o inputLine)stdIn);r() end;
149 名前:デフォルトの名無しさん [2007/12/12(水) 20:07:08 ] OCamlで ('a -> 'a) -> 'a という型のY-combinatorを定義することは出来るのでしょうか。 let fix = fun f -> (fun x -> f (fun y -> x x y)) (fun x -> f (fun y -> x x y)) や let rec fix f = f(fun x -> fix f x) はどうしても、 (('a -> 'b) -> 'a -> 'b) -> 'a -> 'b という型になってしまいます。(遅延評価をするHaskellでは問題なく書けるのですが) これだと,TAPLのP144にある,以下の相互再帰が型エラーで書けません。 let ff ieio = {iseven = (fun x -> if x=0 then true else ieio.isodd (x-1)); isodd = (fun x -> if x=0 then false else ieio.iseven (x-1))} let r = fix ff
150 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 02:27:16 ] パターンマッチのある言語で正規表現って必要なんだろうか。 メタランゲージなんだから、そのまま書き下した方がスッキリする。
151 名前:デフォルトの名無しさん [2007/12/13(木) 08:08:58 ] 関数型言語のパターンマッチでまだ A.*B 相当とか書けないよね。
152 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 08:45:20 ] >>150 正規表現並にconciseな表現ができればね
153 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 08:58:43 ] 正規表現そのものだと、バックトラックが必要になるからまずいです。
154 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:18:34 ] 中置文字について何かまとめた。トリビア的なものだけど。(OCaml 3.09.2) 頭文字 =<>@^&+-*/$% どこでも大丈夫 | 二文字以上なら頭文字可 後続文字 ~ 二文字以上なら頭文字にできるが、頭に使うと前置しかできなくなる。 ! 頭文字にすると前置のみに。 .:? 後続文字のみ使用可
155 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 00:37:16 ] (* ^ o ^ *)
156 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 00:39:32 ] 神経を逆撫でするコメントだな
157 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 12:32:42 ] with-open-file (fun ch -> fprintf ch "aaa") みたいなのって標準ライブラリにある?
158 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 21:14:55 ] 俺も欲しいけど、エラーの扱いとかどうなるんだろ
159 名前:デフォルトの名無しさん [2007/12/18(火) 20:20:46 ] 中でfinallyつかえばいいんじゃないかな。
160 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 10:35:14 ] ocamlにfinallyなんてないだろ
161 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 16:22:00 ] Javaプログラマは夢見るSuccubus finally かなり 例外に依存して生きているの
162 名前:デフォルトの名無しさん mailto:sage [2007/12/22(土) 17:32:45 ] 何だ OCaml には finally があるのかと思った また OCaml 限定の話かよとスルーしてたのに
163 名前:デフォルトの名無しさん mailto:sage [2007/12/27(木) 23:00:37 ] >>149 OCamlでは ('a -> 'a) -> 'a という型のY-combinatorは定義出来ません。 HaskeiiはLazy evaluationなので、例で書いているように出来るのですが、 OCamlはEager evaluationなので、argumentをすぐに評価しようとするので、それをお書きになったような形で避けるとにコンビネータではなくなってしまいます。 これを避けるにはLazy モジュールを使用してナンチャッテ遅延評価で解決します。そうすればコンビネータとして扱うことが出来ます。 同様のことはモナドにも言えて、ナンチャッテ・モジュールを使用すると解決することがあります。 MLのYコンビネータの書き方はLittle MLerの巻末に書いてあるのでご覧下さい。
164 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 17:21:19 ] >>149 >>163 factの実装方法を2通り紹介しておく。 チューリングの賢人鳥 let rec turing's_sage f x = f (turing f) x;; turing's_sage (fun f x -> if x = 0 then 1 else x * (f (x-1))) 5;; カリーの雲雀 let lark x (`M y) = x (fun z -> y (`M y) z);; let curry's_sage f x = lark f (`M (lark f)) x;; curry's_sage (fun f n -> if n = 0 then 1 else n * (f (n-1))) 5;; どっちの方法も - : int = 120 と返ってくる。
165 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 19:10:27 ] >>164 スマリヤンの「ものまね鳥」だね。SKIコンビネータ入門にいいよね。 ほかにもJAYとかOWLとか出てきた希ガス。
166 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:22:48 ] 論理学の問題ならCoqを使ってコードを作ればいいんじゃねえか? coq.inria.fr/
167 名前:デフォルトの名無しさん mailto:sage [2007/12/28(金) 21:39:17 ] (つд⊂)ゴシゴシ(;゚д゚) 論理学の問題
168 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 00:08:29 ] Coq is the specification language. Interactive Theorem Proving And Program Development by Coq'art: The Calculus Of Inductive Constructions これ系統の参考文献にこれもいいかも。 TAPL : Types and Programming Languages
169 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 00:24:27 ] >>167 数理論理学とコンピュータ・プログラムの間には深い関連性がある。 A.近代論理学の開祖であるフレーゲの概念記法を出発点とするゲンツェンの自然演繹 B.チャーチの型付きラムダ計算 2つのモデルはカリー・ハワード対応によって同型として対応付けられる。 つまり、論理学の問題と言っているのは、実はコンピュータ・プログラムの問題と言っているのと同じなのだ。 QED.
170 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 00:51:12 ] Coq見てみたけどワカランw OCaml-Nagoyaの次の本はCoqだな。決定。
171 名前:デフォルトの名無しさん mailto:sage [2007/12/29(土) 19:25:22 ] WindowsのCoqIDEが動かないな。固まったよw
172 名前:デフォルトの名無しさん mailto:sage [2007/12/30(日) 00:47:12 ] >>171 うごくよ。 てかProofGeneralが亡くなってる。
173 名前:デフォルトの名無しさん [2008/01/01(火) 02:06:59 ] >>169 その同型になるのは、1階の述語論理のこと?
174 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:37:59 ] カテゴリカル・コンビネータ理論
175 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:45:05 ] 一階述語論理にカリー・ハワード同型対応で対応するのは、一般の関数型言語で使われている型理論とはだいぶ異なる型理論です。
176 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 14:36:17 ] 高階述語論理をカリー・ハワード対応させるとどうなるんですか?
177 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 15:55:45 ] >>176 どうしたいん?
178 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 16:07:39 ] Curry-Howardの対応の依存型(dependent type)があると、 高階述語論理を表現することができる。 高階述語論理があれば、「∀f. --- 任意の関数 f について…」という扱いが可能になったり、「関数や述語に関する量化(∀∃)が可能な論理」を構成できる。
179 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 16:19:56 ] 型付きλ計算の世界では、「値の世界」と「型の世界」の間に明確な分離があり、型の定義中に値が出現するといったことはありません。 しかし、依存型(dependent type)を導入するとこの制限が取り払われて、型が値を持てるようになります。 依存型は単純な型付きλ計算よりもはるかに強力で、うまく使えばリストの長さや配列の境界チェックなどさまざまに応用できます。 しかし強力さの一方で型チェックは複雑になり、一般の依存型では型チェックが停止しない場合もあります。 例えば、基本的には型の部分で計算ができるので、そこに無限ループするような項を入れておけば止まらなくなります。 Curry-Howard Isomorphism により、依存型は述語論理と等価な記述力を持つことになります。 したがって、依存型をつけたλ計算の体系を考えることで、論理式の証明を記述したり、その正しさを検査することが可能になるわけです。 OCAMLのCoq では、単純なλ計算ではなく帰納的に定義された型(Inductive types)を使えるように拡張した Calculus of Inductive Construction というものに依存型を導入し、システムの根幹としています。
180 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 16:26:17 ] 最低でも、一階述語論理系を構成できる程度は理解し、その上で、 直観主義論理,Matin-Loefの型理論、依存型算譜言語 の3つをプログラムの基礎として最低限おさえておけ。
181 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:11:13 ] Curry-Howard Isomorphism をトポスの言葉で表現するとどうなるんですか?
182 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:37:52 ] >>181 おとなしくシミロン嫁
183 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:40:00 ] グロタンのEGA/SGA嫁
184 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:41:40 ] 知ってどしたいん?ん?
185 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:47:24 ] シミロンとは・・・ 圏論による論理学―高階論理とトポス 清水 義夫 www.amazon.co.jp/o/ASIN/4130120573/
186 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 18:09:02 ] >>182 シミロン読んでるんですが、高階論理をトポスに対応させて いるところを Curry-Howard 同型と考えていいわけですか?
187 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 18:26:11 ] >>186 まあそうなんだけど、関数に対応するものがトポスの射になってる。 普通の集合論では、「はじめに一者あり」である。存在論的な形になっていて、その一者(実は、空)から、すべての存在が生成される。 では、Mac Lane が指摘した、論理学ではどうなるか。 ところが関数型の場合、「はじめに働きあり」である。なんじゃそりゃ、と思うかもしれない。 普通の集合論では、関数は、集合の一種(つまり、グラフ)として定義される。 でもこちらは、逆に、関数から集合を定義しようということなのだ。 この関数概念を一般化したのがシミロンのトポスの射。
188 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 18:31:40 ] Grothendieckは位相空間 X より X 上 の層全体のなす圏(トポスになる) がより本質的だと考えた。 彼はこの考えを、エタールコホモロジーのアイデアとともに得た。
189 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 18:34:39 ] >>187 解説ありがとうございます。 ちょっと外出してきますのでまたのちほど。 すみませんです。
190 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 18:36:07 ] シミロンでやってるのはGrothendieckのオリジナルとは違って、 Kripke-Joyalの意味論での手続きによって集合論的論理式をトポスの対象と射についての言明として解釈したもの。
191 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 18:47:05 ] 実数の体系の持つ超越的な性格は集合論の初期から様々な数学者の嫌悪の的となった。 実数を定めるのに便利な集合論的定式化はやがて多くの数学者に受け入れられるようになったが、 20世紀初めに論理学者のブラウワーは直観主義とよばれる、具体的に構成できるようなものだけを認める論理の体系をつくった。 彼はそこで実数について通常の数学におけるものとは著しく異なった結論を導きだせることを示した。 これにはKripke-Joyalの層の意味論によって現代的な解釈が与えられる。 シミロンのやってることを実行するとこんな風に実数の扱いなどがもっとブラウワー的に出来るようになります。
192 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 18:49:58 ] ただしCoqではKripke-Joyalの意味論は扱えないのでこのスレの趣旨からは外れますね。 つづきは数学板で質問してください。
193 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 19:10:59 ] λ式は、どのプログラマにとっても役立つ新たなツールです。最近ではVisual Basic 2008にも実装されました。 元々、Visual Basic 2008 (以前のコード名は "Orcas") にλ式が追加されたのは 、LINQ (Language Integrated Queries) をサポートするためです。 これは、Visual Basic でのデータ プログラミングを可能にするものです。 λ式を使用すると、プログラムの柔軟性が向上することがわかります。 λ式は、関数内で定義される呼び出し可能なエンティティであり、何の制約もなく利用でき、 したがって、λ式を関数から返したり他の関数に渡したりできるからです。 λ計算(lambda calculus)は、理論計算機科学や数理論理学における、関数の定義と実行を抽象化した計算体系であるλ算法とも言う。 関数を文字λ)を使った式によって表記する。アロンゾ・チャーチとスティーヴン・コール・クリーネによって1930年代に考案されたものです。 1936年にチャーチはλ計算を用いて一階述語論理の決定可能性問題を否定的に解いた。 λ計算は「計算可能な関数」とはなにかを定義するために用いられることもある。 λ計算は1つの変換規則(変数置換)と1つの関数定義規則のみを持つ、最小の(ユニバーサルな)プログラミング言語であるということもできる。 ここでいう「ユニバーサルな」とは、全ての計算可能な関数が表現でき正しく評価されるという意味である。 これは、λ計算がチューリングマシンと等価な数理モデルであることを意味している。 チューリングマシンがハードウェア的なモデル化であるのに対し、λ計算はよりソフトウェア的なアプローチをとっている。 λ計算は計算の意味論や型理論など、計算機科学のいろいろなところで使われており、特にLisp、ML、Haskellといった関数型プログラミング言語の理論的基盤として、 その誕生に大きな役割を果たしたが、とうとうVisual Basicにまで搭載されたことで、今後、その重要性は益々増大するだろう。
194 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 20:43:42 ] いま帰りました。 つまり、空集合から始まる現代集合論はもう 終わりの時代を迎えた、ということですか? シミロンを読んでいて、ラムダ項もある種の 射に対応するのを知り目から鱗が落ちました。
195 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:53:13 ] >>192 そうですね。数学板にいきます。
196 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:55:53 ] Lisp ⇒ Common Lisp Lisp ⇒ Scheme Lisp ⇒ ML ┌―――┘ ↓ ML ⇒ Miranda ⇒ Haskell ⇒ Erlang ML ⇒ Miranda ⇒ Clean ⇒ Concurrent Clean ML ⇒ SML ML ⇒ CAML ⇒ OCAML ⇒ (そろそろこないかなぁ?)
197 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 23:38:37 ] Erlangは違くない?
198 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 04:13:52 ] ついついOCamlという字面を見ると『岡村』って読んじゃう。 SMLをSmileって読んじゃうみたいに。でも頭の中はSMのことでいっぱい。 EclipseやElispをエロリスプとか。
199 名前:デフォルトの名無しさん [2008/01/03(木) 14:03:05 ] >>196 Haskell→Erlangはおかしいでしょ
200 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 14:18:11 ] Clean ⇒ Concurrent Clean ⇒ Clean
201 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 23:11:56 ] OCamler ⇒ 岡村さん SMLer ⇒ 須村さん Schemer ⇒ 隙間さん
202 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 23:27:49 ] 数学わかる人がいなくなると急にレベル下がっちゃうね。
203 名前:デフォルトの名無しさん [2008/01/04(金) 01:21:28 ] Visual Basicやりたい放題なんだな。 VB.NET化であれだけ振り回した後だともう既存のユーザの移行コストとか考えないでいい空気なんだろうか。
204 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 10:14:36 ] 別にラムダ式を入れるのに後方互換を犠牲にする必要はないだろ
205 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 17:31:47 ] COMつかい放題なのに文法が残念だからカオスでOK
206 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 22:50:49 ] VBはスレチだから置いとくとして、F#は何度かアップデートされたら化ける可能性はある。 OCAMLが完全に止まってるだけにちょっと気になる。
207 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:06:15 ] q-lang.sourceforge.net/ これなんか面白そう
208 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:25:51 ] >>207 Q言語って音響・映像に特化してるのかな? これで作られた "Q+Faust+Pd" はかなり大規模な感じ。 関数型の特性を生かしてフィルターとかが多いみたいですね。
209 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:59:09 ] >>206 言語そのものの出来より、MSが力入れるかどうかだな。
210 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 01:19:39 ] >>209 現在のF#はfunctorが使えないからちょっとね。 でも今後のアップデートで何を追加するのかロードマップを示してくれると興味も湧くんだけどなぁ。 MSが力を入れてくれると期待したい。
211 名前:デフォルトの名無しさん [2008/01/06(日) 23:46:06 ] ttp://www.infoq.com/articles/pickering-fsharp-workflow ここ見た感じだと結構ちがう言語に見える yield とかあるんだね
212 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:58:10 ] >>211 F#の記事ですね。 記者は手続き型でしか考えられない人かな? forループ連発が意図的なのかよくわからなけど、あまり良い例じゃないなぁ。
213 名前:デフォルトの名無しさん [2008/01/07(月) 00:15:51 ] この記事のforは全部F#独自のシーケンス内包表記でしょ。 書いた人もFoundations of F#の人だし。
214 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:26:33 ] >>213 for使うと再帰より速度が出るとか?
215 名前:デフォルトの名無しさん [2008/01/12(土) 10:03:20 ] 3.10.1でたね。プレステ3でビルドできるみたい?
216 名前:デフォルトの名無しさん [2008/01/12(土) 18:38:12 ] >>215 何の?