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
2011/05/01(日) 02:52:55.61
- Try F#
http://www.tryfsharp.org/
- F# Documentation
http://msdn.microsoft.com/library/dd233154(VS.100).aspx
- F# Microsoft Research Site
http://research.microsoft.com/fsharp/fsharp.aspx
http://www.tryfsharp.org/
- F# Documentation
http://msdn.microsoft.com/library/dd233154(VS.100).aspx
- F# Microsoft Research Site
http://research.microsoft.com/fsharp/fsharp.aspx
2011/05/01(日) 02:58:27.71
2011/05/01(日) 03:34:36.83
Windowsでのインストールは、>>1から
Mac/LinuxでF#を使うにはmonoが必要です。
http://mono-project.com/
IDEにMonoDevelopを利用するなら、現時点ではmono-2.6系が必要です。
mono-2.10.1以降でF#が統合されていますので、IDEが必要ないならそのままCLI環境が使えます。
なんにせよ茨の道ですので、まずはブラウザ環境で実行できるTry F#のTutorialsを試しましょう。
Windowsでも(C#やCと組み合わせるなら、VS2010 C#/C++ Expressと) VS2010 Shell、F#2.0を組み合わせた
無償のIDE環境が使えます。
Mac/LinuxでF#を使うにはmonoが必要です。
http://mono-project.com/
IDEにMonoDevelopを利用するなら、現時点ではmono-2.6系が必要です。
mono-2.10.1以降でF#が統合されていますので、IDEが必要ないならそのままCLI環境が使えます。
なんにせよ茨の道ですので、まずはブラウザ環境で実行できるTry F#のTutorialsを試しましょう。
Windowsでも(C#やCと組み合わせるなら、VS2010 C#/C++ Expressと) VS2010 Shell、F#2.0を組み合わせた
無償のIDE環境が使えます。
2011/05/01(日) 03:42:19.97
現在の最新版について
http://blogs.msdn.com/b/fsharpteam/archive/2011/04/22/update-to-the-f-2-0-free-tools-release-corresponding-to-visual-studio-2010-sp1-april-2011-ctp.aspx
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6b598327-9748-4052-884a-6ee737380dcd
・必要用件
サポートするOS:
Windows 7;Windows Server 2003;Windows Server 2008;Windows Server 2008 R2;Windows Vista;Windows XP
必要な環境:
.NET Framework 2.0 or an equivalent CLI implementation(Xbox 360, and Mono on Mac, Linux and other platform).
対応するソフトウエア(オプション):
Visual Studio 2010 Shell
http://blogs.msdn.com/b/fsharpteam/archive/2011/04/22/update-to-the-f-2-0-free-tools-release-corresponding-to-visual-studio-2010-sp1-april-2011-ctp.aspx
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=6b598327-9748-4052-884a-6ee737380dcd
・必要用件
サポートするOS:
Windows 7;Windows Server 2003;Windows Server 2008;Windows Server 2008 R2;Windows Vista;Windows XP
必要な環境:
.NET Framework 2.0 or an equivalent CLI implementation(Xbox 360, and Mono on Mac, Linux and other platform).
対応するソフトウエア(オプション):
Visual Studio 2010 Shell
2011/05/01(日) 04:49:34.58
>>1
乙
乙
2011/05/01(日) 10:03:33.09
言語の特徴としてはScalaとF#はそっくりだと思う。
*型推論:
F#,Scala -> ◯
C#,Java -> △,×
*代数データ型:
F#,Scala -> ◯
C#,Java -> ×
*パターンマッチ:
F#,Scala -> ◯
C#,Java -> ×
nullの廃止
F#,Scala -> ◯
C#,Java -> ×
モナド:
F#,Scala -> ◯
C#,Java -> ×
高階関数:
F#,Scala -> ◯
C#,Java -> △,×
変数:
F#,Scala -> デフォルトで破壊できない
C#,Java -> デフォルトで破壊できる
対話環境:
F#,Scala -> ◯
C#,Java -> ×
JavaからScalaへの大移動が始まっているのと同様のことがC#からF#に起こるに違いない!と言うのも本当かもしれない。
---------
要望があったやつ追加
*型推論:
F#,Scala -> ◯
C#,Java -> △,×
*代数データ型:
F#,Scala -> ◯
C#,Java -> ×
*パターンマッチ:
F#,Scala -> ◯
C#,Java -> ×
nullの廃止
F#,Scala -> ◯
C#,Java -> ×
モナド:
F#,Scala -> ◯
C#,Java -> ×
高階関数:
F#,Scala -> ◯
C#,Java -> △,×
変数:
F#,Scala -> デフォルトで破壊できない
C#,Java -> デフォルトで破壊できる
対話環境:
F#,Scala -> ◯
C#,Java -> ×
JavaからScalaへの大移動が始まっているのと同様のことがC#からF#に起こるに違いない!と言うのも本当かもしれない。
---------
要望があったやつ追加
2011/05/01(日) 11:06:11.34
2011/05/01(日) 11:45:09.38
http://www.itpl.co.jp/ocaml-nagoya/
これが関係してないか?
これが関係してないか?
2011/05/01(日) 13:04:53.26
名古屋怖い(´・ω・`)
2011/05/01(日) 13:39:03.13
>>2, >>4 TryF# もよいけど、Silverlight入れたくない人やsmart phoneな人は
IdeOneも使える事を知っとくと良いよ。
hello worldを書いてみた。
http://ideone.com/ze0wq (こうやってソースと実行結果を貼ることもできる)
IdeOneも使える事を知っとくと良いよ。
hello worldを書いてみた。
http://ideone.com/ze0wq (こうやってソースと実行結果を貼ることもできる)
2011/05/01(日) 18:56:09.06
コード共有するのには、IdeOneみたいなサービスがいいけど、
F# InteractiveのWebコンソールとしては、これが便利かも。
Try F# in your web browser
http://tryfs.net/
F# InteractiveのWebコンソールとしては、これが便利かも。
Try F# in your web browser
http://tryfs.net/
2011/05/02(月) 23:26:40.62
そもそもなんでF#はF#という名前になったの?
FはFunctionのF?
あとC#がC++++から#になっているのは理解できるけど、
F++はもちろんF言語なんて聞いたことがないんだけど。
FはFunctionのF?
あとC#がC++++から#になっているのは理解できるけど、
F++はもちろんF言語なんて聞いたことがないんだけど。
2011/05/03(火) 00:03:14.45
C#の名前を結構気に入ってたから、.NET言語になんでも#つけてた時期がある。
2011/05/03(火) 00:08:59.63
2011/05/03(火) 00:12:28.32
J#がでた段階か分からないけど、[A-Z]#なら.net用言語に見える
MSに関係する範囲では、C#,F#,J#のみっぽいけど。
http://en.wikipedia.org/wiki/List_of_CLI_languages
MSに関係する範囲では、C#,F#,J#のみっぽいけど。
http://en.wikipedia.org/wiki/List_of_CLI_languages
2011/05/03(火) 00:20:06.88
2011/05/03(火) 00:57:40.67
結構粘ったやつも2009年ぐらいにメンテナンス止まってるみたい。
lisp系でメンテナンスが続いてるのは、結局Clojure(CLR)らしい。
https://github.com/richhickey/clojure-clr/downloads
lisp系でメンテナンスが続いてるのは、結局Clojure(CLR)らしい。
https://github.com/richhickey/clojure-clr/downloads
2011/05/03(火) 03:25:35.02
F#で標準入力を遅延リストみたいに扱う方法ってあるのでしょうか?
2011/05/04(水) 06:22:20.80
ファイルの例だけど。
http://books.google.com/books?id=NcrMkjVxahMC&lpg=PA270&ots=pln0IBigeG&pg=PA99#v=onepage&q&f=false
Expert F#2.0 p.99 seq下のほう
http://books.google.com/books?id=NcrMkjVxahMC&lpg=PA270&ots=pln0IBigeG&pg=PA99#v=onepage&q&f=false
Expert F#2.0 p.99 seq下のほう
2011/05/04(水) 06:26:13.36
F# 1.0の書籍だった。
F#2.0 は、こっち。
http://books.google.com/books?id=y3kaQxIns0oC&lpg=PP1&pg=PA96#v=onepage&q&f=false
F#2.0 は、こっち。
http://books.google.com/books?id=y3kaQxIns0oC&lpg=PP1&pg=PA96#v=onepage&q&f=false
2011/05/04(水) 08:20:27.45
2011/05/06(金) 09:50:41.49
RT @igeta: 翻訳ありがたい。/「あなたの開発チームに F# を持ち込むリスクについての神話」 http://bit.ly/k8ZDo1 (by @finalfusion) #fsharp
24デフォルトの名無しさん
2011/05/09(月) 19:18:09.17 scalaとF#使うならどっち?
2011/05/09(月) 20:41:26.84
26デフォルトの名無しさん
2011/05/09(月) 22:19:12.87 誰かC#とF#の比較してくれねーかなー
2011/05/09(月) 23:43:25.51
違いすぎる→そんなに違わないな→やっぱ違うわ→まあ、同じとも言えるな。こんな感じが延々と続く。C#とF#の比較。
2011/05/10(火) 08:47:38.70
2011/05/10(火) 14:09:41.30
>>7の「高階関数」でC#が△になってるのはなんか理由あんのかな
っていうか、「ファーストクラスの関数」でよくね
tail call elimination
nested functions
automatic currying
cons, tuple
list comprehension
あたりも比較項目につけくわえていい気がする
っていうか、「ファーストクラスの関数」でよくね
tail call elimination
nested functions
automatic currying
cons, tuple
list comprehension
あたりも比較項目につけくわえていい気がする
2011/05/10(火) 20:47:06.71
bingでF#検索すると残念なことに・・・
2011/05/10(火) 22:09:08.41
>>7
そっくりなところを比べればそりゃそっくりだろうさ
そっくりなところを比べればそりゃそっくりだろうさ
2011/05/10(火) 23:07:45.67
>>29
*tail call elimination
Java,C# -> ×
Scala,F# -> ○
*nested functions
Java,C# -> ×,△
Scala,F# -> ○
*automatic currying
Java,C#,Scala -> ×
F# -> ○
*cons, tuple
Java,C# -> ×
Scala,F# -> ○
*list comprehension
Java,C# -> ×
Scala,F# -> ○
*tail call elimination
Java,C# -> ×
Scala,F# -> ○
*nested functions
Java,C# -> ×,△
Scala,F# -> ○
*automatic currying
Java,C#,Scala -> ×
F# -> ○
*cons, tuple
Java,C# -> ×
Scala,F# -> ○
*list comprehension
Java,C# -> ×
Scala,F# -> ○
2011/05/10(火) 23:23:15.17
Actorモデル
Scala->○
F#->○に近い△
C#,Jave->×
って感じ?ちょっと不勉強なので正確かわからん。
Scala->○
F#->○に近い△
C#,Jave->×
って感じ?ちょっと不勉強なので正確かわからん。
2011/05/10(火) 23:50:49.02
>>32
Scala は JVM の制限とかで tail call elimination ができないときがあるような
@tailrec アノテーションをつけておけば、できかなったときは教えてくれるけど
Scala は list comprehension あるんだっけ
for 式だったら、あれはどちらかというと Haskell の do に近いような
Scala は JVM の制限とかで tail call elimination ができないときがあるような
@tailrec アノテーションをつけておけば、できかなったときは教えてくれるけど
Scala は list comprehension あるんだっけ
for 式だったら、あれはどちらかというと Haskell の do に近いような
2011/05/11(水) 05:38:03.25
>>32
tail callは64ビット版.NET Framework は、ILがTailとマークしてなくても最適化してくれる(制限あり)。
あと、LINQはある意味list comprehensionsの一種なので、C#が×は納得いかない。
tail callは64ビット版.NET Framework は、ILがTailとマークしてなくても最適化してくれる(制限あり)。
あと、LINQはある意味list comprehensionsの一種なので、C#が×は納得いかない。
2011/05/11(水) 09:09:48.47
>>35 LINQでlist comprehension できるのか。知らなかった。
Haskellでの[x+y | x <- [0..9], y <- [0..9], x<y] みたいなのもLINQを使えば書けるのか?
Haskellでの[x+y | x <- [0..9], y <- [0..9], x<y] みたいなのもLINQを使えば書けるのか?
2011/05/11(水) 09:21:52.16
LINQだと
from x in Enumerable.Range(0, 10)
from y in Enumerable.Range(0, 10)
where x < y
select x + y
とかそんな感じだろう
from x in Enumerable.Range(0, 10)
from y in Enumerable.Range(0, 10)
where x < y
select x + y
とかそんな感じだろう
2011/05/17(火) 09:29:46.65
だれかF#でMonotouch開発しようとしてる人とかおらん?(´・ω・`)
F#にMonotouchが対応するのって、そもそも技術的に難しいんだっけ? Dictionary<int,Hoge>とかを使えないとかの制限にからんで。
それともF#なんかマイナー言語相手にしてる暇ねーぜヒャッハーってだけ?
FSharp.CoreとかのライブラリーをILAssembly使ってターゲット変えてゴニョゴニョすれば動くようになるとか言ってる人もいたんだけど。
Silverlightで同じようなことしてる人のBlogあったんだけどリンク切れちゃってた。
暇な人は"Reusing-NET-Assemblies-in-Silverlight"でぐぐって最初のエントリーのキャッシュ見てくんなまし。
F#にMonotouchが対応するのって、そもそも技術的に難しいんだっけ? Dictionary<int,Hoge>とかを使えないとかの制限にからんで。
それともF#なんかマイナー言語相手にしてる暇ねーぜヒャッハーってだけ?
FSharp.CoreとかのライブラリーをILAssembly使ってターゲット変えてゴニョゴニョすれば動くようになるとか言ってる人もいたんだけど。
Silverlightで同じようなことしてる人のBlogあったんだけどリンク切れちゃってた。
暇な人は"Reusing-NET-Assemblies-in-Silverlight"でぐぐって最初のエントリーのキャッシュ見てくんなまし。
2011/05/18(水) 00:17:22.59
monoは今レイオフされたり会社設立したりと本体がゴタゴタしててそれどころじゃないんだろ
2011/05/18(水) 08:05:24.37
>それともF#なんかマイナー言語相手にしてる暇ねーぜヒャッハーってだけ?
被害妄想?
被害妄想?
2011/05/18(水) 08:28:33.12
Mono for AndroidよりMonoTouchのが制約きついみたいだね。
http://d.hatena.ne.jp/atsushieno/touch/20110407/p1 の最後の段落
http://d.hatena.ne.jp/atsushieno/touch/20110407/p1 の最後の段落
2011/05/26(木) 01:34:35.70
しかしまあF#ってScalaほど必要とされている感がないんだよなー
なまじC#がよくできてるから
なまじC#がよくできてるから
2011/05/26(木) 01:37:10.04
企業の後ろだてのある言語じゃなく、1研究社が作った言語が注目集めるとかおかしいだろ。
どんだけJavaはアレなんだよ。
どんだけJavaはアレなんだよ。
2011/05/26(木) 08:00:06.97
>>42 確かにScalaは多くのJava技術者に注目を浴びているけど、Scalaいいって
言う人の言うことはそのままF#にも当てはまるんだよね。
ScalaがF#に比べて人気ある理由はC#がJavaより良くできているという以外に
構文がJavaから大きく離れてはいないという点があると思う。Javaコードを
コピペして微修正すればScalaコードとして動くし、Scalaコードを見てもある程度
読めそうな気になるから移行しやすいんだよね。
言う人の言うことはそのままF#にも当てはまるんだよね。
ScalaがF#に比べて人気ある理由はC#がJavaより良くできているという以外に
構文がJavaから大きく離れてはいないという点があると思う。Javaコードを
コピペして微修正すればScalaコードとして動くし、Scalaコードを見てもある程度
読めそうな気になるから移行しやすいんだよね。
2011/05/26(木) 08:01:26.91
一方F#は構文が違いすぎるし、初見だと全然読めない。このとっつきにくさが
結構効いているんじゃないかな。
でもF#は関数型言語としてScalaよりずっといい線行っている(構文はキモいけど)
ので、Scalaへの大移動が現実になったときC#erはF#への移動を準備すべき。
C#erがレガシーな理由のみで残りつづけて老害とならないようになってほしい。
2011/05/26(木) 22:48:33.47
ScalaはGood Java。Javaに取って代わることを目標としているマルチパラダイム言語。
F#はあくまでもC#の補完。.NETファミリーの関数型言語の位置づけ。
scalaは関数型的な使い方をしなくてもいろいろ遊べる。
最初の関数型言語にScalaを選んでしまった場合、
Good Javaの部分だけで腹いっぱいになって関数型までたどり着けないことが多い。
F#はあくまでもC#の補完。.NETファミリーの関数型言語の位置づけ。
scalaは関数型的な使い方をしなくてもいろいろ遊べる。
最初の関数型言語にScalaを選んでしまった場合、
Good Javaの部分だけで腹いっぱいになって関数型までたどり着けないことが多い。
2011/05/26(木) 23:11:20.22
Scalaは、未来のJavaを先取りした言語と表現してるが、
Scalaと同じ機能がある未来のJavaは構文がもっと複雑なんだろうな。
Scalaと同じ機能がある未来のJavaは構文がもっと複雑なんだろうな。
2011/05/27(金) 00:43:20.31
Scalaは関数型ってだけじゃなくてオブジェクト指向言語としてもJavaより進んでるのがウケてる理由の一つの気がするな
49デフォルトの名無しさん
2011/05/30(月) 19:59:14.67 C#もまだ未熟なんだけどF#に手を出してみたよ!!
で、F#難し過ぎて、はやくも挫折しそうなんだけど・・・
ちょっと質問。
クラスのスコープ内に関数を定義したかったらC#の場合、こうできる。
class 振り分け{
double[] ratio;
public 振り分け(){
initRatio();
}
private initRatio(){うんたらかんたら}
}
同じことをF#でやる場合staticなメンバにしないといけないのかな?
type 振り分け=
class
val mutable ratio: float[]
static member initRatio=うんたらかんたら
new(){ratio=initRatio}
うーん、ようわからんwww
で、F#難し過ぎて、はやくも挫折しそうなんだけど・・・
ちょっと質問。
クラスのスコープ内に関数を定義したかったらC#の場合、こうできる。
class 振り分け{
double[] ratio;
public 振り分け(){
initRatio();
}
private initRatio(){うんたらかんたら}
}
同じことをF#でやる場合staticなメンバにしないといけないのかな?
type 振り分け=
class
val mutable ratio: float[]
static member initRatio=うんたらかんたら
new(){ratio=initRatio}
うーん、ようわからんwww
50デフォルトの名無しさん
2011/05/30(月) 20:03:43.87 F#の嫌なところを1個見つけたよ。
インデント?空白?によって
ブロック的なものが決まることかなぁ。
だから、必然的に自動整形ってできないんだよね?
複数行選択後のtab/shift+tabができなかったら、
発狂するレベルだねw
あとは、クラスを定義する時の修飾子の多さも、ちょっとうんざりだよね;;
どういう書き方が一番エレガントなんだろう・・・
関数を定義する順番に依存しちゃうってのも、なんというか・・・
そこら辺はやっぱりscalaの方が上っぽい?
インデント?空白?によって
ブロック的なものが決まることかなぁ。
だから、必然的に自動整形ってできないんだよね?
複数行選択後のtab/shift+tabができなかったら、
発狂するレベルだねw
あとは、クラスを定義する時の修飾子の多さも、ちょっとうんざりだよね;;
どういう書き方が一番エレガントなんだろう・・・
関数を定義する順番に依存しちゃうってのも、なんというか・・・
そこら辺はやっぱりscalaの方が上っぽい?
2011/05/30(月) 22:37:13.86
52デフォルトの名無しさん
2011/05/30(月) 22:48:20.112011/05/31(火) 00:54:09.98
>>49
type Foo() =
let initRatio() : float array = Array.map ( (*) 2.0 ) [|1.1;2.2;3.3|]
let mutable ratio = initRatio()
member x.Say() = printfn "%A" ratio
let _ =
let foo = new Foo()
foo.Say()
type Foo() =
let initRatio() : float array = Array.map ( (*) 2.0 ) [|1.1;2.2;3.3|]
let mutable ratio = initRatio()
member x.Say() = printfn "%A" ratio
let _ =
let foo = new Foo()
foo.Say()
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【news23】小川彩佳アナ「ここまでの広がりになるということを、高市総理はどれだけ想像できていたんでしょうね」 日中問題特集で [冬月記者★]
- 「町中華」の“息切れ倒産”が増加 ブームにも支えられ職人技で踏ん張ってきたが… 大手チェーンは値上げでも絶好調 [ぐれ★]
- 毛寧(もう・ねい)報道官「中国に日本の水産品の市場は無い」 高市首相の国会答弁に「中国民衆の強い怒り」 ★2 [ぐれ★]
- ヤフコメ「中国への輸出がなくなる事で、日本国内で美味しくいただける事に感謝します」👈やたら政権寄りなのはなぜ?(´・ω・`) [399259198]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- ファブルに出てくる貝沼君ってのがお前らにそっくりなんだよ
- 俺「お湯を流してと…」シンク「ボンッw」
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- paypayで支払いするの便利すぎワロッタwwwwwwwwwwwwwww
