MSResearchから出てきた.NETで使える関数型言語のひとつF#
OCAMLの流れを汲むこの言語、いろいろと面白そうなことができそう。
そろそろ日本語の情報が充実してきそうなこの言語について、幅広く語れ。
http://www.fsharp.net/
前スレ
【.NET】F#について語れ【OCAML】
http://hibari.2ch.net/test/read.cgi/tech/1186030985/
関連スレなどは >>2-
探検
【.NET】F#について語れ2【OCAML】
■ このスレッドは過去ログ倉庫に格納されています
2011/05/01(日) 02:46:49.52
150デフォルトの名無しさん
2011/08/20(土) 10:46:16.38151デフォルトの名無しさん
2011/08/20(土) 11:46:15.04 Real-World Functional Programmingも宜しくね
152デフォルトの名無しさん
2011/08/20(土) 21:29:33.05 ちなみに何がなってないの?
153149
2011/08/21(日) 08:02:31.09 >>152
突っ込むために見直してみたら、そんなに突っ込み所は無かったかも。
>>149で頭ごなしに否定するのはまずかった。反省してる。
初見ではもっと気になる所があった気がしたけど、今見て思うのは以下。
・P35-P43 if式を(.NET中では)F#に特徴的、みたく書いてるけど、実はVB.NETにもif式はあるのです…
・P85 高性能、ではなくて、高機能、では?
・タプルを使ったPythonでいうアンパック代入相当の構文を備えていて、
多値関数の戻り値が(x,y) = funcHoge(a,b)みたいに自然に書ける説明が抜けてる。
・リスト操作用の組み込み高階関数の説明が無い。
とか。重箱の隅かもしれんけど、気になるんよ。
突っ込むために見直してみたら、そんなに突っ込み所は無かったかも。
>>149で頭ごなしに否定するのはまずかった。反省してる。
初見ではもっと気になる所があった気がしたけど、今見て思うのは以下。
・P35-P43 if式を(.NET中では)F#に特徴的、みたく書いてるけど、実はVB.NETにもif式はあるのです…
・P85 高性能、ではなくて、高機能、では?
・タプルを使ったPythonでいうアンパック代入相当の構文を備えていて、
多値関数の戻り値が(x,y) = funcHoge(a,b)みたいに自然に書ける説明が抜けてる。
・リスト操作用の組み込み高階関数の説明が無い。
とか。重箱の隅かもしれんけど、気になるんよ。
154関数型入門中
2011/08/21(日) 19:29:53.73 質問させてください。
ここ数ヶ月、関数型言語をいろいろ見ています。(Scala,Haskellなど)
実践F#という本を読んでいます。
ちょっとこういう場合どうすればいいか、わからないことがあり質問させてください。
あるレコードが定義されている場合、
そのレコードに対して適用できる一連の関数を知る方法ってありますか?
実践F#には、同じ名前空間に、レコードと同じ名前のモジュールを定義して、
そこに関連する関数を書くとよい、とされていますが、
実際そうされているものでしょうか。
一つに、Haskellの型クラスのような仕組みがあれば、見通しがよくなると思うんですが
そういう仕組みはないんですよね? (Scalaにもなかった。。)
なにか、自分で設計する場合、他人が見てもわかりやすい方法などあれば教えてください。
よろしくお願いします。
ここ数ヶ月、関数型言語をいろいろ見ています。(Scala,Haskellなど)
実践F#という本を読んでいます。
ちょっとこういう場合どうすればいいか、わからないことがあり質問させてください。
あるレコードが定義されている場合、
そのレコードに対して適用できる一連の関数を知る方法ってありますか?
実践F#には、同じ名前空間に、レコードと同じ名前のモジュールを定義して、
そこに関連する関数を書くとよい、とされていますが、
実際そうされているものでしょうか。
一つに、Haskellの型クラスのような仕組みがあれば、見通しがよくなると思うんですが
そういう仕組みはないんですよね? (Scalaにもなかった。。)
なにか、自分で設計する場合、他人が見てもわかりやすい方法などあれば教えてください。
よろしくお願いします。
155デフォルトの名無しさん
2011/08/21(日) 20:41:30.81 レコード型のメソッドにしてみてもいいんじゃないでしょうか
156デフォルトの名無しさん
2011/08/21(日) 21:20:09.09 >>154
ある型に対する一連の関数を知る方法は、簡単にはないですね。
AppDomainをリフレクションで総舐めとかすればそりゃ別ですが。
型と同名のモジュールを作ってーというお作法は、まあ、ふつうはそうするかなあと。
もちろん、ふつうじゃない場合もあるわけだけど。
Haskell型クラスが美人なのはわかりますが、すでにインターフェイスで筋通してる
.NET(あるいはJVM)においてそれを求めるのは、ちょっと難しいかなあという感想。
>>155
関数型でなくOOPで、と。ええ、おっしゃる意味は解りますが、といって、たとえば
Fooオブジェクトを必要とする振る舞いがすべてFooのメソッドとして定義されるとは
限らないわけで。BarクラスのメソッドがFooを引数に取ることだってあるでしょう。
このあたり、私は、F#においてのみ特別不便だ、とは感じません。
ある型に対する一連の関数を知る方法は、簡単にはないですね。
AppDomainをリフレクションで総舐めとかすればそりゃ別ですが。
型と同名のモジュールを作ってーというお作法は、まあ、ふつうはそうするかなあと。
もちろん、ふつうじゃない場合もあるわけだけど。
Haskell型クラスが美人なのはわかりますが、すでにインターフェイスで筋通してる
.NET(あるいはJVM)においてそれを求めるのは、ちょっと難しいかなあという感想。
>>155
関数型でなくOOPで、と。ええ、おっしゃる意味は解りますが、といって、たとえば
Fooオブジェクトを必要とする振る舞いがすべてFooのメソッドとして定義されるとは
限らないわけで。BarクラスのメソッドがFooを引数に取ることだってあるでしょう。
このあたり、私は、F#においてのみ特別不便だ、とは感じません。
157b
2011/08/21(日) 22:37:39.67 > 149
書いた人です。指摘してくれてありがとうございます!
>・P35-P43 if式を(.NET中では)F#に特徴的、みたく書いてるけど、実はVB.NETにもif式はあるのです…
確かに、誤解を招く書き方でした・・・
一応、VBのIf式は知っていたのですが、あくまでここでは
「C#にもVBにもif文があるけど、F#にはない」
ということが言いたかったのです。
>・P85 高性能、ではなくて、高機能、では?
うわ、全く気付いていませんでした・・・高性能はおかしいですね。
>・タプルを使ったPythonでいうアンパック代入相当の構文を備えていて、
多値関数の戻り値が(x,y) = funcHoge(a,b)みたいに自然に書ける説明が抜けてる。
これは微妙なところで、タプルのみに限った機能ではないので省きました。
例えば、
type t = { Name: string; Age: int}
という型があったとして、t型の値xに対して
let { Name = n } x
ということも可能ですし、そもそもローカル変数に限った話ではなく、
let name { Name = n } = n
のように引数に対してのマッチも可能です。
let x, y = y, x的なものを入れるかどうかは迷ったのですが、結局入れませんでした。
>・リスト操作用の組み込み高階関数の説明が無い。
これは、この時のターゲットを考えて意図的に入れませんでした。
確かに便利な高階関数は色々と用意されていますが、それを列挙する発表ってつまらなくないかなぁ、と思ったので。
ただ、LINQ to Objectには一対一で対応するものが無いような高階関数の紹介はやってもよかったかもしれません。
書いた人です。指摘してくれてありがとうございます!
>・P35-P43 if式を(.NET中では)F#に特徴的、みたく書いてるけど、実はVB.NETにもif式はあるのです…
確かに、誤解を招く書き方でした・・・
一応、VBのIf式は知っていたのですが、あくまでここでは
「C#にもVBにもif文があるけど、F#にはない」
ということが言いたかったのです。
>・P85 高性能、ではなくて、高機能、では?
うわ、全く気付いていませんでした・・・高性能はおかしいですね。
>・タプルを使ったPythonでいうアンパック代入相当の構文を備えていて、
多値関数の戻り値が(x,y) = funcHoge(a,b)みたいに自然に書ける説明が抜けてる。
これは微妙なところで、タプルのみに限った機能ではないので省きました。
例えば、
type t = { Name: string; Age: int}
という型があったとして、t型の値xに対して
let { Name = n } x
ということも可能ですし、そもそもローカル変数に限った話ではなく、
let name { Name = n } = n
のように引数に対してのマッチも可能です。
let x, y = y, x的なものを入れるかどうかは迷ったのですが、結局入れませんでした。
>・リスト操作用の組み込み高階関数の説明が無い。
これは、この時のターゲットを考えて意図的に入れませんでした。
確かに便利な高階関数は色々と用意されていますが、それを列挙する発表ってつまらなくないかなぁ、と思ったので。
ただ、LINQ to Objectには一対一で対応するものが無いような高階関数の紹介はやってもよかったかもしれません。
158b
2011/08/21(日) 22:39:15.22 あ、let { Name = n } = xです。
159デフォルトの名無しさん
2011/08/24(水) 01:30:04.05 お!本人であるbleisさんが降臨・・・
素敵!
素敵!
160デフォルトの名無しさん
2011/09/07(水) 22:14:16.34 F#のすごい日本人おしえれ
161デフォルトの名無しさん
2011/09/07(水) 22:14:49.33 いますぐフォローすべきF#の人的なやつ
162デフォルトの名無しさん
2011/09/07(水) 22:33:14.58 Googleで F# site:hatena.ne.jp とかやると、いろいろ出てくる
163デフォルトの名無しさん
2011/09/07(水) 22:45:31.06 いないんだな、それが
というとアレだが、F# に特化してる人っているかね?
なにかしらほかの言語も使いつつ F# も嗜む的な
リベラルというか
というとアレだが、F# に特化してる人っているかね?
なにかしらほかの言語も使いつつ F# も嗜む的な
リベラルというか
164デフォルトの名無しさん
2011/09/07(水) 23:40:27.20 金融系の人とかはOCaml使ってた人も多いらしいし、
F#も出来る人多いんじゃないの?
F#も出来る人多いんじゃないの?
165デフォルトの名無しさん
2011/09/08(木) 05:49:53.02 完全にF#で仕事、というのが日本にはない感じなので、そういう点で、人が見えないよね。
小物やらバッチに使うやらぐらいなら、そりゃあるだろうけれど。
かといってF#で何かOSSで作って公開、などという人もいないようだし。
小物やらバッチに使うやらぐらいなら、そりゃあるだろうけれど。
かといってF#で何かOSSで作って公開、などという人もいないようだし。
166デフォルトの名無しさん
2011/09/08(木) 08:49:22.56167デフォルトの名無しさん
2011/09/08(木) 12:11:17.65 F#セミナーいったら、
GUIアプリクライアントをF#で開発して納品した話をしてたよ。
GUIアプリクライアントをF#で開発して納品した話をしてたよ。
168デフォルトの名無しさん
2011/09/08(木) 15:48:51.11169デフォルトの名無しさん
2011/09/08(木) 23:16:33.81 F# Programming -Build MVVM Applications in F#
msdn magazine Sep. 2011
http://msdn.microsoft.com/ja-jp/magazine/hh394149(en-us).aspx
msdn magazine Sep. 2011
http://msdn.microsoft.com/ja-jp/magazine/hh394149(en-us).aspx
170デフォルトの名無しさん
2011/09/09(金) 19:54:27.44 会社にFランがいたけどひどかった。
#なんか付けたところで同じようなもんだろ。
#なんか付けたところで同じようなもんだろ。
171デフォルトの名無しさん
2011/09/09(金) 20:01:08.56 Javaの変態の人たちはScalaやってるのに、
なんてC#の変態の人たちはF#やんないの?
なんてC#の変態の人たちはF#やんないの?
172デフォルトの名無しさん
2011/09/09(金) 20:21:30.63 Javaは使いづらくてやっとレンガ、C#はそこそこ間に合ってしまうというのがあるんじゃ。
F#のほうが使いやすいけどねー
F#のほうが使いやすいけどねー
173デフォルトの名無しさん
2011/09/09(金) 20:32:09.20 Javaと違ってC#は糞言語じゃないから。
C#にはラムダ式、まともなジェネリック、LINQがあるし、
次のバージョンではasync,awaitも入るのでF#のメリットが相対的に少ない。
また、F#はC#と比べてIDEの支援が弱いのというデメリットがあるので
(特に WindowsForms、WPF、ASP.NET MVCなど主要ライブラリ関連)
F#のメリットとデメリットを天秤にかけた結果、C#でいいやって事になってしまう。
C#にはラムダ式、まともなジェネリック、LINQがあるし、
次のバージョンではasync,awaitも入るのでF#のメリットが相対的に少ない。
また、F#はC#と比べてIDEの支援が弱いのというデメリットがあるので
(特に WindowsForms、WPF、ASP.NET MVCなど主要ライブラリ関連)
F#のメリットとデメリットを天秤にかけた結果、C#でいいやって事になってしまう。
174デフォルトの名無しさん
2011/09/09(金) 20:34:00.21 むしろここの人たちがF#を使っている理由が知りたい
175デフォルトの名無しさん
2011/09/09(金) 20:40:54.41 C#を使ってると「パターンマッチ使いてぇ」
って場面は割とよくあるんだけど、
それだけの為にユーザーの環境にF#ランタイムを入れさせるのは憚られたので
結局使ってない。
.NET FrameworkにF#ランタイムが含まれてたら使ってたかもな。
って場面は割とよくあるんだけど、
それだけの為にユーザーの環境にF#ランタイムを入れさせるのは憚られたので
結局使ってない。
.NET FrameworkにF#ランタイムが含まれてたら使ってたかもな。
176デフォルトの名無しさん
2011/09/09(金) 20:44:40.99 俺的にはパターンマッチ、再起、部分適用、ユニットオブメイジャー、モナド含め、コードが書きやすいから。
177デフォルトの名無しさん
2011/09/09(金) 21:42:20.97178デフォルトの名無しさん
2011/09/09(金) 22:58:15.35 C#使っててLINQと拡張メソッドとラムダだらけになるとなんかもやもやしてくる
179sage
2011/09/09(金) 23:36:12.15 C#でLINQと拡張メソッドとラムダ使ってドヤ顔カッコワルイwwww
180デフォルトの名無しさん
2011/09/09(金) 23:46:26.26 まあ、でもLINQの範囲のデータ処理はC#のほうがいいな
181デフォルトの名無しさん
2011/09/10(土) 00:09:06.90182デフォルトの名無しさん
2011/09/10(土) 00:09:37.07 bleisさんフォローしておけばいいんじゃね?
183デフォルトの名無しさん
2011/09/10(土) 07:03:34.56 >170 意味不明だったけど、これってFortran#っていうネタか。
184デフォルトの名無しさん
2011/09/10(土) 13:36:11.11 外人フォローしたほうがいいよ
185デフォルトの名無しさん
2011/09/10(土) 14:18:54.64 >>184
リストくれ
リストくれ
186デフォルトの名無しさん
2011/09/10(土) 16:20:27.90 ボスは、アカウントあるけどつぶやかなかった気がするな
187デフォルトの名無しさん
2011/09/13(火) 21:07:32.69 >>186
ボス?ドンサイム?
ボス?ドンサイム?
188デフォルトの名無しさん
2011/09/15(木) 23:23:01.45 F#3.0
http://blogs.msdn.com/b/fsharpteam/archive/2011/09/14/f-3-0-developer-preview-now-available.aspx
バージョン1分差があるのか分からんけど3.0
win8+vs2011expと違って、msdnのサブスクリプションが必要?
追加点
F# Information Rich Programming
- F# LINQ Queries
- F# Type Provider mechanism
- a set of built-in type providers for enterprise and web data standard
IDEサポート増えるみたい。
http://blogs.msdn.com/b/fsharpteam/archive/2011/09/14/f-3-0-developer-preview-now-available.aspx
バージョン1分差があるのか分からんけど3.0
win8+vs2011expと違って、msdnのサブスクリプションが必要?
追加点
F# Information Rich Programming
- F# LINQ Queries
- F# Type Provider mechanism
- a set of built-in type providers for enterprise and web data standard
IDEサポート増えるみたい。
189デフォルトの名無しさん
2011/09/16(金) 09:23:30.60 ファンクタ対応したのかな
190デフォルトの名無しさん
2011/09/16(金) 11:56:24.12 従来交わることのなかった OCaml 使いと C# 使いがそれぞれ別の切り口で文句を言いに集うスレはここですか?
191デフォルトの名無しさん
2011/09/16(金) 13:05:24.76 >>190
仕事で両方使ってる人は、期待することはあっても文句はいわんだろ。
P層C#、F層F#でそれなりの規模のもの作ってみると、結構使える手ごたえはある。
普通にF#で機能を一つ作った後、その中で理論的に並列動作できそうなところがあれば、
それをマルチスレッド化するのに数分の作業で済むことも多いし、それがいつも安定して動く
という経験を重ねると、これからの時代C#だけじゃだめかなという気にもなってくる。
まだ立ち上がって数年の言語だし、捨てられないでちゃんとバージョンアップしてくれてるから、
まだまだこれからと見るべきでしょう。
仕事で両方使ってる人は、期待することはあっても文句はいわんだろ。
P層C#、F層F#でそれなりの規模のもの作ってみると、結構使える手ごたえはある。
普通にF#で機能を一つ作った後、その中で理論的に並列動作できそうなところがあれば、
それをマルチスレッド化するのに数分の作業で済むことも多いし、それがいつも安定して動く
という経験を重ねると、これからの時代C#だけじゃだめかなという気にもなってくる。
まだ立ち上がって数年の言語だし、捨てられないでちゃんとバージョンアップしてくれてるから、
まだまだこれからと見るべきでしょう。
192デフォルトの名無しさん
2011/09/16(金) 17:08:03.30 Type Providerってなんなのか教えて下さい
193デフォルトの名無しさん
2011/09/16(金) 17:10:27.45 型を定義することなくデータソースから何らかの方法でメタデータを取得し静的な型として扱えるようにするものって感じかの。
194デフォルトの名無しさん
2011/09/16(金) 17:31:00.24195デフォルトの名無しさん
2011/09/17(土) 00:34:37.50 What's New for Visual F# in Visual Studio 11 Developer Preview
http://msdn.microsoft.com/en-us/library/hh370982(v=VS.110).aspx
msdn Libraryのなかに、VS11のドキュメントがもう揃ってるんかー
http://msdn.microsoft.com/en-us/library/hh370982(v=VS.110).aspx
msdn Libraryのなかに、VS11のドキュメントがもう揃ってるんかー
196デフォルトの名無しさん
2011/09/17(土) 04:22:38.42 Visual Studio 11 Developer Previewは、日本語版もあって2012年6月30日まで使えるのか。
http://msdn.microsoft.com/en-us/aa570309#five
> Metroスタイルのアプリケーションを開発するには Windows Developer Preview with developer tools English, 64-bit上に
> Visual Studio 11 Developer Previewがインストールされている必要があります。
開発ツール付きWin8上にインストールすればMetroスタイルアプリ開発にF#も使えそう。
http://msdn.microsoft.com/en-us/aa570309#five
> Metroスタイルのアプリケーションを開発するには Windows Developer Preview with developer tools English, 64-bit上に
> Visual Studio 11 Developer Previewがインストールされている必要があります。
開発ツール付きWin8上にインストールすればMetroスタイルアプリ開発にF#も使えそう。
197775
2011/09/17(土) 09:34:30.73 Twitterで上がった話題(iOSでF#)で、F#のSymeがMonoのIcazaに、
build会場周辺でちょっと合って話さんかとかやってる。
build会場周辺でちょっと合って話さんかとかやってる。
198デフォルトの名無しさん
2011/09/18(日) 07:06:06.41 F# 3.0 Quick Preview
http://www.slideshare.net/igeta/fsharp-langupd-fpm2011
http://www.slideshare.net/igeta/fsharp-langupd-fpm2011
199デフォルトの名無しさん
2011/09/18(日) 09:43:03.31 C++のようなメタプログラミングができるのですか?
200デフォルトの名無しさん
2011/09/18(日) 14:25:45.62 C++ の template みたいなマクロの延長のものじゃなくて、
ビルドプロセスをフックして型を作ってるんじゃないかな。
そっちも .NET (F# 含む)で書ける。
ビルドプロセスをフックして型を作ってるんじゃないかな。
そっちも .NET (F# 含む)で書ける。
201デフォルトの名無しさん
2011/09/20(火) 10:58:50.53 VS11 DP(ja)を、Win7(ja)とWin8 PR(en)にインストールしたが、VSからのF#(3.0) Interactiveが
どちらも日本語で表示しようとして文字化けしてる。(その画面だけ多国語対応してない?)
「C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0\Fsi.exe」を直接起動すると
win7(ja)で日本語、Win8(en)英語で正常に表示された。
どちらも日本語で表示しようとして文字化けしてる。(その画面だけ多国語対応してない?)
「C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0\Fsi.exe」を直接起動すると
win7(ja)で日本語、Win8(en)英語で正常に表示された。
202デフォルトの名無しさん
2011/09/20(火) 13:06:00.07 MetroAppのソリューションテンプレート用意されてなかった。
さすがにリリース前あたりには、用意されるとおもうが、、
とりあえずWP7と同じようにギャラリーに来るのかな
http://blogs.msdn.com/b/dsyme/archive/2010/08/20/f-windows-phone-7-silverlight-templates-now-on-visual-studio-gallery.aspx
さすがにリリース前あたりには、用意されるとおもうが、、
とりあえずWP7と同じようにギャラリーに来るのかな
http://blogs.msdn.com/b/dsyme/archive/2010/08/20/f-windows-phone-7-silverlight-templates-now-on-visual-studio-gallery.aspx
203デフォルトの名無しさん
2011/09/23(金) 17:42:48.27204デフォルトの名無しさん
2011/09/27(火) 04:47:47.07 ScalaとF#と両方勉強しているのですが、
判別供用体(代数的データ型)の、パターンマッチについて教えてください。
Scalaでは、case class で定義すると、内部的には、class 定義に、applyやunapplyメソッドを持たせて、オブジェクトに対してパターンマッチを行っているようです。
F#の場合は、どんな感じでしょうか? F#の判別供用体も、実際はクラスから作られたオブジェクトなんですよね?? (.Net言語だから、そう考えたんですが。。)
そうすると、Scalaのapplyやunapplyに対応するメソッドを持ったクラスなんでしょうか?
教えてください、よろしくお願いします。
判別供用体(代数的データ型)の、パターンマッチについて教えてください。
Scalaでは、case class で定義すると、内部的には、class 定義に、applyやunapplyメソッドを持たせて、オブジェクトに対してパターンマッチを行っているようです。
F#の場合は、どんな感じでしょうか? F#の判別供用体も、実際はクラスから作られたオブジェクトなんですよね?? (.Net言語だから、そう考えたんですが。。)
そうすると、Scalaのapplyやunapplyに対応するメソッドを持ったクラスなんでしょうか?
教えてください、よろしくお願いします。
205デフォルトの名無しさん
2011/09/27(火) 05:03:40.46 Scalaのapply,unapplyはよくしらんのだけれど、F#では各共用体は派生クラスとして実装される。
各々Tagを持ってるのでパターンマッチはそのTagを見てると思う。
各々Tagを持ってるのでパターンマッチはそのTagを見てると思う。
206デフォルトの名無しさん
2011/09/27(火) 05:21:39.52 夜遅くに(朝早くに)ありがとうございます。
なるほどクラスとして実装されているんですね。
type A =
| B
| C
| D
だと、派生クラスB、C、Dが定義されていて
たぶん、スーパークラスとして、クラスA とか定義されているんでしょうか。(クラスAでなくてもよいとは思いますが)
もし、クラスAだとすると、このクラスAにもTagを定義するように定義されていると思いますが、
クラスAは、.Netというか、F#のクラス的には、もともと何クラスなんでしょうか?
ちょっと、質問がわかりにくくてすみませんが
たとえば
let hoge:A = B
とか、書いた場合に、
変数 hoge の束縛している、クラスが何かって、得る関数ありますか? という質問がしたいです。
(判別供用体のBを返すのでなく、元のクラスが何か? を得る関数という意味です。)
なるほどクラスとして実装されているんですね。
type A =
| B
| C
| D
だと、派生クラスB、C、Dが定義されていて
たぶん、スーパークラスとして、クラスA とか定義されているんでしょうか。(クラスAでなくてもよいとは思いますが)
もし、クラスAだとすると、このクラスAにもTagを定義するように定義されていると思いますが、
クラスAは、.Netというか、F#のクラス的には、もともと何クラスなんでしょうか?
ちょっと、質問がわかりにくくてすみませんが
たとえば
let hoge:A = B
とか、書いた場合に、
変数 hoge の束縛している、クラスが何かって、得る関数ありますか? という質問がしたいです。
(判別供用体のBを返すのでなく、元のクラスが何か? を得る関数という意味です。)
207デフォルトの名無しさん
2011/09/27(火) 13:01:19.65 F#の中では知らん。
Reflection使ってbaseクラスたどってみては。
C#から見ると多分Aとして見れると思う。
Reflection使ってbaseクラスたどってみては。
C#から見ると多分Aとして見れると思う。
208デフォルトの名無しさん
2011/09/27(火) 13:14:29.26 普通に
type A = | B
hoge.GetType().Name
;;
でAって出てきた
type A = | B
hoge.GetType().Name
;;
でAって出てきた
209デフォルトの名無しさん
2011/09/27(火) 13:20:04.19 type A =
| B
| C of int
let hoge = C 10
hoge.GetType().Name
;;
はCだった
| B
| C of int
let hoge = C 10
hoge.GetType().Name
;;
はCだった
210206
2011/09/28(水) 14:57:18.94 みなさんありがとうございます。
自分なりの理解はこんな感じになりました (↓素人理解です)
F#のレベルでは、
判別共用体と、クラス・オブジェクト は全く別のもの。
CLRレベル(.Netレベル)ではたぶん、同じような仕組みで実装されている。
一方、
Scalaは、いわゆる判別共用体は、クラスの拡張で実現されているように思います。
(applyやunapplyというものを定義したもの)
※ 素人の理解ですが。
自分なりの理解はこんな感じになりました (↓素人理解です)
F#のレベルでは、
判別共用体と、クラス・オブジェクト は全く別のもの。
CLRレベル(.Netレベル)ではたぶん、同じような仕組みで実装されている。
一方、
Scalaは、いわゆる判別共用体は、クラスの拡張で実現されているように思います。
(applyやunapplyというものを定義したもの)
※ 素人の理解ですが。
211デフォルトの名無しさん
2011/09/28(水) 15:07:34.34212デフォルトの名無しさん
2011/09/30(金) 22:37:54.99 実践F# を読んでいると、
OOPの章のP264に、
本書では、詳細に踏み込みませんが、レコードや判別共用体の定義とは、F#コンパイラが構造的な性質
を持つように特別なパターンを適用したクラスとして生成するものです。本節では、特別なパターンが施されな
い、生身のクラスを定義する方法を示します(リスト8‐5)。
と書いてあって、F#ではクラスの特別なものが、判別共用体や、レコードのようなきがする。
OOPの章のP264に、
本書では、詳細に踏み込みませんが、レコードや判別共用体の定義とは、F#コンパイラが構造的な性質
を持つように特別なパターンを適用したクラスとして生成するものです。本節では、特別なパターンが施されな
い、生身のクラスを定義する方法を示します(リスト8‐5)。
と書いてあって、F#ではクラスの特別なものが、判別共用体や、レコードのようなきがする。
213デフォルトの名無しさん
2011/10/01(土) 06:37:51.43 特別なクラスというと語弊がある。
MSIL上は継承関係とか種類を表すタグとかが一定ルールに従っているただのクラスであり、其れが自動生成されているだけ。
MSIL上は継承関係とか種類を表すタグとかが一定ルールに従っているただのクラスであり、其れが自動生成されているだけ。
214デフォルトの名無しさん
2011/10/12(水) 10:06:47.51215デフォルトの名無しさん
2011/10/12(水) 14:56:32.45 1%切ってるところは誤差だろ。
216デフォルトの名無しさん
2011/10/12(水) 18:43:17.12 TIOBEみたいな腐れ調査機関とか相手にすんなよ…
217デフォルトの名無しさん
2011/10/22(土) 20:48:19.24 まあ、F#が20位以内というのはおかしいよね。
218デフォルトの名無しさん
2011/10/23(日) 03:15:14.94 しかしそれでもScalaより上って・・・・・目くそ鼻くそとはこのことか。
はやくJavaの時代終わらないかなぁ・・・・
はやくJavaの時代終わらないかなぁ・・・・
219デフォルトの名無しさん
2011/10/23(日) 12:42:45.14 >>218
scalaは関数脳に慣れてない人からは関数型言語部分に苦しんで、haskellやOCamlで関数脳になった人からは関数型言語としてはキモイから。。。
F#Express出たらかなり差が付くだろうね
haskellもGUIに特化した専門書とか出ないと伸びないんだろうな。。。
scalaは関数脳に慣れてない人からは関数型言語部分に苦しんで、haskellやOCamlで関数脳になった人からは関数型言語としてはキモイから。。。
F#Express出たらかなり差が付くだろうね
haskellもGUIに特化した専門書とか出ないと伸びないんだろうな。。。
220デフォルトの名無しさん
2011/10/23(日) 14:20:16.52 >>219
haskell でguiな本書こうか?
haskell でguiな本書こうか?
221デフォルトの名無しさん
2011/10/23(日) 14:21:36.40222デフォルトの名無しさん
2011/10/23(日) 14:52:33.37223デフォルトの名無しさん
2011/10/23(日) 15:04:38.88224デフォルトの名無しさん
2011/10/23(日) 19:13:01.51225デフォルトの名無しさん
2011/10/23(日) 20:00:06.22226デフォルトの名無しさん
2011/10/23(日) 20:32:16.83 たぶん原稿の成長とcarettahのコード品質は同期するだろー...λ
227デフォルトの名無しさん
2011/10/26(水) 23:09:18.46 よく知らんが買わんぞ?
228デフォルトの名無しさん
2011/10/27(木) 09:05:20.27 >>227
全く売れないのも面白いのでwwww
全く売れないのも面白いのでwwww
229デフォルトの名無しさん
2011/11/09(水) 16:59:13.93 >>220
書いて
書いて
230デフォルトの名無しさん
2011/11/09(水) 17:17:18.28 現在の購入予定者2名
231デフォルトの名無しさん
2011/11/09(水) 19:01:13.54 良い本だったら買うし良い本ではなかったら買わない
232デフォルトの名無しさん
2011/11/09(水) 19:04:24.86 >>231
同人誌レベルなら、、
同人誌レベルなら、、
>>220
買います
買います
234デフォルトの名無しさん
2011/11/11(金) 04:23:18.13 >>220
SOEより凄いなら買う
SOEより凄いなら買う
235デフォルトの名無しさん
2011/11/11(金) 13:59:41.00 https://github.com/fsharp
githubに、fsharpオープンソースコミュニティーというのがあるのか。
donsymeがいると公式感があるな。
mono開発者のicazaも入ってる。
F#はClojureCLRと違って余裕あるからか、monoとの互換性も重視してたの思い出した。
githubに、fsharpオープンソースコミュニティーというのがあるのか。
donsymeがいると公式感があるな。
mono開発者のicazaも入ってる。
F#はClojureCLRと違って余裕あるからか、monoとの互換性も重視してたの思い出した。
236デフォルトの名無しさん
2011/11/11(金) 14:04:43.63 http://wizardsofsmart.net/post/iteratee-in-f/
最近FPではやりのIteratee使った関数型っぽいIO作り始めたよという記事?
future-io
https://github.com/fractureio/fracture
fsharpxってのがあるのか。
scalazとはまた違う?
https://github.com/fsharp/fsharpx
最近FPではやりのIteratee使った関数型っぽいIO作り始めたよという記事?
future-io
https://github.com/fractureio/fracture
fsharpxってのがあるのか。
scalazとはまた違う?
https://github.com/fsharp/fsharpx
237デフォルトの名無しさん
2011/11/11(金) 14:18:47.50 作ってるのはSocket IOだった。
Fracture/Pipelet/Frackって分かれてる。
future-ioはSSDだった・・・orz
Fracture/Pipelet/Frackって分かれてる。
future-ioはSSDだった・・・orz
238デフォルトの名無しさん
2011/11/14(月) 01:37:08.30 M$がhtml5の構想に弱音を吐いて.net戦略を撤退したらf#ってどうなるんだろ
239デフォルトの名無しさん
2011/11/14(月) 01:51:46.03 VisualOcaml作って欲しい
240デフォルトの名無しさん
2011/11/14(月) 01:54:35.63 VisualHaskellを(ry
241デフォルトの名無しさん
2011/11/14(月) 02:54:08.28 F#はType Classの要望が強かったけど
.netの型システムとの互換性を重視して入れなかったとどっかで言ってたから
H#はないんじゃないの?
ちなみに"Visual Haskell"は既にあるよ
.netの型システムとの互換性を重視して入れなかったとどっかで言ってたから
H#はないんじゃないの?
ちなみに"Visual Haskell"は既にあるよ
242デフォルトの名無しさん
2011/11/14(月) 06:45:33.31 >>241
>ちなみに"Visual Haskell"は既にあるよ
そうだった。VS2010に対応したかな?少しは安定したかな?
全然使えなさそうですっかり忘れてた
>F#はType Classの要望が強かったけど
>.netの型システムとの互換性を重視して入れなかったとどっかで言ってたから
・・・orz
>ちなみに"Visual Haskell"は既にあるよ
そうだった。VS2010に対応したかな?少しは安定したかな?
全然使えなさそうですっかり忘れてた
>F#はType Classの要望が強かったけど
>.netの型システムとの互換性を重視して入れなかったとどっかで言ってたから
・・・orz
243デフォルトの名無しさん
2011/11/14(月) 09:38:24.83 Haskellようしらんのだが、型クラスあるとなにがどう幸せになるん?
244デフォルトの名無しさん
2011/11/14(月) 13:06:42.36 >>243
多層的で等価比較、順序比較出来るリストを簡単に定義出来たりする
data List a = Null | List (List a) deriving (Eq,Ord,Show,Read)
使用例
List 1 (List 2 (List 3 Null))
head (List x _) = x
tail (List _ xs) = xs
多層的で等価比較、順序比較出来るリストを簡単に定義出来たりする
data List a = Null | List (List a) deriving (Eq,Ord,Show,Read)
使用例
List 1 (List 2 (List 3 Null))
head (List x _) = x
tail (List _ xs) = xs
245デフォルトの名無しさん
2011/11/14(月) 15:21:15.27 Eq,Ordが型クラスで、List aがインスタンスだから、例としてはこっちが適切か
large xs ys | xs < ys = (ys,xs)
large xs ys = (xs,ys)
large xs ys | xs < ys = (ys,xs)
large xs ys = (xs,ys)
246デフォルトの名無しさん
2011/11/14(月) 19:28:12.45 C# のプロジェクト で F# のファイルのインポートがどうしても
できないんですがどっかにまとまってないでしょうか?
あとC#プログラム中でfsファイルの実行は不可能なのでしょうか?
C#, F# のプログラムがそれぞれ下のようだったとして
main(){
exec(1.fs); //this is c# code
Console.WriteLine("aa");
}
########
let a = 3 // this is F# code
printfn "hello"
#########
実行して
hello
aa
となるような
できないんですがどっかにまとまってないでしょうか?
あとC#プログラム中でfsファイルの実行は不可能なのでしょうか?
C#, F# のプログラムがそれぞれ下のようだったとして
main(){
exec(1.fs); //this is c# code
Console.WriteLine("aa");
}
########
let a = 3 // this is F# code
printfn "hello"
#########
実行して
hello
aa
となるような
247246
2011/11/14(月) 20:27:08.67248デフォルトの名無しさん
2011/11/14(月) 20:53:17.11 F#側のdllをC#でインポートするだけでしょ?
249デフォルトの名無しさん
2011/11/17(木) 21:05:56.68 >>246
ねーよ
ねーよ
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 急に真冬かよ!!!⛄❄✨
- 地球から無限km先の場所ってどうなっているの?
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 🖐( -᷄ὢ)俺に挑むのはやめておけ……実力差がありすぎる
- 日本、高市のお陰で破滅に近づくwwwwwwww
