【.NET】F#について語れ2【OCAML】

■ このスレッドは過去ログ倉庫に格納されています
2011/05/01(日) 02:46:49.52
MSResearchから出てきた.NETで使える関数型言語のひとつF#
OCAMLの流れを汲むこの言語、いろいろと面白そうなことができそう。
そろそろ日本語の情報が充実してきそうなこの言語について、幅広く語れ。

http://www.fsharp.net/

前スレ
【.NET】F#について語れ【OCAML】
http://hibari.2ch.net/test/read.cgi/tech/1186030985/

関連スレなどは >>2-
2013/01/29(火) 20:16:12.35
F#をちょっといじってみたけど
GUI作り辛いし、GUI作ろうとするとあまり関数型っぽくないしで、
本格的に利用しようとすると微妙だな
遊ぶには面白そうだけど
2013/01/29(火) 22:08:06.81
>>364
何つーかどこから突っ込んでいいのかわからんわ( ´Д`)y━・~~
2013/01/29(火) 22:36:35.46
突っ込めよ
2013/01/31(木) 01:11:10.42
056 [2009/06/24(水) 21:07:53] デフォルトの名無しさん <sage>

F#>Java いずれこうなるから安心しろ。

まあJ#は超えたな
2013/01/31(木) 19:37:16.95
scalaにも当てはまると思うが
関数型風にも書けるというマルチパラダイムは
結果的にいろんな書き方を覚えなければならないし、
そのいろんな書き方、ってのも癖があって覚えにくい
そのせいでF#らしさというものが希薄になってる、というのが欠点

これがマルチパラダイムの末路だ
結局は、限られた書き慣れてる書き方しかしないんだもんな
2013/01/31(木) 20:43:23.36
そんな自分の無能さを声高に言われても困ります。
2013/02/01(金) 22:54:27.13
GUIはC#とXAML、ロジックはF#でいいのでは。
2013/02/01(金) 22:55:19.34
GUIは、というのは支援ツールがあるという意味で。
2013/02/02(土) 10:34:18.44
GUIをF#で作るのは、C#のデザイナで作ってF#にコピペする作業だから空しい
2013/02/11(月) 22:50:03.36
F#って何に剥いてるの
2013/02/11(月) 22:53:25.09
包茎の童貞
2013/02/13(水) 13:20:44.23
まさにオナニーに向いているんだろうな

知的好奇心と言えば聞こえはいいが
ようするに自己満足
モノを生み出してナンボでしょ
2013/02/13(水) 14:38:03.45
そのモノを生み出すのにF#はC#より遥かに長けてるんだが…情弱乙(´・ω・`)
2013/02/13(水) 18:55:43.08
で、その生み出されたモノの例をあげてくれるかなぁ
2013/02/13(水) 20:18:11.82
は?F#使ってる人たちは、C#を使ってやるのと同じように仕事なりなんなりでプログラム書いてるだけだと思うけど。
その際に生産性がいいってだけだよ?
なにかF#や関数型を特別な魔法か何かのようにとらえすぎなんじゃね?
2013/02/14(木) 07:17:59.45
>>377
仕事でバッチファイルの代わりに.fsxでスクリプトを書いてます
インテリセンスが効くのと、Mainクラス作らなくても頭から実行してくれるので
型推論があるので動的型のように書けるところも好きです
2013/02/14(木) 07:37:25.07
Cygwin入れてPythonなりRubyなり使った方が早くね
2013/02/14(木) 07:58:04.93
>>380
そんな動的型要らんわ( ´Д`)y━・~~
2013/02/14(木) 12:25:55.36
>>380
インテリセンスは静的型じゃないと難しいのでは?
普段はC#使いなのですが、.NETとVisualStudioがそのまま使えるっていうのも大きいです
それにVisualStudioがインストールされている環境ならC#と違ってビルド不要で.fsxファイル一つで動きますし
2013/02/14(木) 21:36:47.85
Python Tools for Visual Studio
2013/02/14(木) 21:46:47.92
Typescript
2013/02/14(木) 23:17:39.19
なるほどね
確かにインテリセンスは大きいか
2013/02/18(月) 17:51:00.05
こんなのあるのね
http://exselt.net/

何に使うかわからんようなソフトではなく
XSLT 3.0 プロセッサとか実現したら一気にキラーアプリやで

ただダウンロードすらうまくできないのが弱点。
2013/02/18(月) 23:01:34.10
XSLTはまだ息の根止まってなかったのか。驚いた
2013/02/18(月) 23:57:58.21
昔MSのサイトのRSSにXSLTが付いてたのを覚えてる。
2013/02/22(金) 02:26:32.53
BigIntegerと再帰を使ったフィボナッチ数列がC#より簡単にかける
.netにBigIntegerが入ったとかいう話があった気がするが
まあここの時間止まってるようなもんだから
2013/02/22(金) 10:17:28.31
Linq to ObjectあるからF#いらないですよね?
2013/02/22(金) 10:55:28.20
むしろF#あればC#はいらないが正しい( ゚Д゚)y─┛~~
2013/02/23(土) 13:40:44.54
VisualStudioのリファクタリングはC#と比べると雑魚だよね
2013/02/23(土) 14:56:47.28
F#やってみて、階乗から始まってフィボナッチ、ハノイの塔、クイックソート
正規表現抹茶あたり組んでみたけど、なんか飽きちゃったなあ。
なんか面白いテーマないかな。

プログラマとして勉強になるのかな、と思ってたけど、CでもRubyでもできるよ
ねこんなのは。>>3
2013/02/23(土) 15:12:30.25
入力補完がC#並みなら最高なんだが・・・
2013/02/23(土) 15:31:00.16
>>393
そんなん、ただ再帰を使ってるだけやん。
関数型のかのじも使ってないぞそれ。
2013/02/23(土) 15:40:08.94
それコピペだよ
2013/02/23(土) 16:23:42.54
C#に対するF#の利点は、やはり代数的データ型だと思うんだよな。
代数的データ型の何がいいかって言うと、もちろん宣言的に値の分解ができるからプログラムが読みやすいっていうこともあるんだけど、
データに対する操作の追加が簡単だという利点があると思う。
まぁ、C#でもis演算子かvisitor使えばいいんだけどさ、is演算子だと網羅性チェックしないから書き忘れしやすいし、
visitorは、まぁC#だとlambdaがあるから楽かもしれないけど、でもちょっと面倒くさいし。
それで、代数的データ型がマッチするタスクは何かって言うと、
http://ymotongpoo.hatenablog.com/entry/20111105/1320506449
これのconnection_state型みたいに、いろんなところで使えるものだとは思うんだけど、
一番目立つのはコンパイラ作成の用途かね。C#だとサブクラス作りまくりになる。
実践プログラミングDSLに金融取引を記述するための外部DSLを作る章があったけど、ああいうの。
でもまぁ
http://tomschrijvers.blogspot.jp/2012/12/haskell-tsuru-capital.html
こういう金融ベンチャーっぽいところだと活用してるんだろうけど、普通のプログラマだと活用する機会は少ないだろうなw
2013/02/23(土) 17:39:24.06
C#との比較で見たときにキャッチーに利点を説明できる要素
ならまあ代数的データ型ですねぇ。

自動実装プロパティに初期値を与えられるのとかも地味に便利。

member val Count = 0 with get, set
2013/02/24(日) 09:07:24.31
RoslynでC# REPLが可能になったらF#オワコンですよね
2013/02/24(日) 09:54:11.59
>>399
せめてまともな型推論を実装してから出直してくれ。

F#並の簡潔な記述
代数データ型とパターンマッチング
REPL
モナドサポート
イミュータブルデフォルト

最低でもこの辺が出来ないことには話にならない( ´Д`)y━・~~
2013/02/24(日) 14:05:13.15
REPLとかいらないけど、他の4つはC#でもホント欲しいな
2013/02/24(日) 22:12:05.46
C#のREPLは昔からmonoにはあった。
用途も増えてるようで、最近改良してるみたい。
http://tirania.org/blog/archive/2011/Feb-24.html
http://www.mono-project.com/Release_Notes_Mono_3.0

mono関連で構文解析もMonoDevelop(IDE)のコード支援に使ってるやつがすでにある。
https://github.com/icsharpcode/NRefactory

逆にF#はMSRがオープンソース版を用意してるので、MonoDevelop用プラグインだけMono関連で作られている。
2013/03/06(水) 19:30:36.08
#light "off"にして、あと警告がある場合はコンパイル通らない設定にして使ってる。
しかし、F#の構文だと関数適用時のインテリセンスが微妙…。
2013/03/11(月) 18:45:28.36
「ビッグデータの世界でF#が大流行、
研究者の心を鷲掴みする謎のプログラミング言語」

ってマジ?
2013/03/11(月) 18:55:08.71
タイトルが変
2013/03/11(月) 21:55:23.57
>>404
流行しているというか
MicrosoftがBig Dataサイエンティスト界隈に
流行させようと画策しているというのが正しい。

http://www.infoq.com/presentations/F-Sharp-Big-Data-Scripting
bigdataは一回のクエリに時間がかかるので
codeのバグで時間をロスしやすい。
そしてcodeは書き捨てであることが多い。
このようなタスクにはType Providerという
データスキーマの定義を元にクエリの型チェックやインテリセンスを行える機能
を持つF#が適している。
2013/03/11(月) 23:06:06.63
>>406
まぁ実際にサイエンティストから好評らしいけど
2013/03/12(火) 00:32:06.37
OCamlの一種としては悪くない処理系だし、
MLユーザーは少々の方言は気にしない。
2013/03/12(火) 07:14:16.74
F#だと複雑なロジックがこんなに簡単にかける系のリンクってない?
2013/03/12(火) 16:59:56.81
F#にしたら息子が大学に合格しました
2013/03/12(火) 17:05:28.24
>>410
Fランクよりちょっといいぐらいの大学ですね。おめでとうございます
2013/03/12(火) 17:15:20.19
F#がセクシーすぎて息子が大きくなりました
2013/03/12(火) 18:49:33.85
>>410
F# snippetでググれ
2013/03/12(火) 19:46:10.30
>>408
MLに派生と方言以外の何があるというのだ
2013/03/13(水) 01:19:20.57
名前にスタンダードが付いてるMLあるよね。
2013/03/16(土) 14:07:06.68
とりあえずGUIはC#でとか言ってるうちは流行らんな
2013/03/17(日) 00:00:06.57
いくら糞レスで埋めようがにぎわってねえからな
勘違いすんじゃねえぞ
2013/03/17(日) 01:07:49.88
http://fsharp.github.com/fsharpbinding/
monodevelop以外にも、emacs、vim向けのIDE環境の準備中なんだな。

Monoは、Mono 2.xから3.x、Monodevelop 3.xから4.xに移行中で、F#3.0もちょうど狭間にある感じだな。
そして、Xamarin Studio 4.0向けのコンパイル済みプラグインがここにあった。
http://atsushieno.hatenablog.com/entry/2013/02/21/151834
2013/04/02(火) 01:09:23.44
WebShaper、クローラー・クラウドからスマホアプリまで頑張ってるな。
https://github.com/intellifactory
http://www.infoq.com/jp/news/2012/07/WebSharper-Open-Source

http://t0yv0.blogspot.jp/2013/03/websharper-phonegap-and-ripple-easier.html
http://www.websharper.com/blogs/2013/3/3054
http://www.websharper.com/blogs/2013/3/3055
2013/04/02(火) 02:16:28.77
letって何かの略?障害?
許可じゃimmutable的に意味逆になるだろうし
2013/04/02(火) 13:43:16.63
辞書引けば書いてるだろ数学用語だよ
2013/04/03(水) 10:03:00.29
F#の本ヌレおしえたもれ
2013/04/03(水) 12:39:13.08
どうしてこうなった
2013/04/03(水) 22:16:19.55
本国はTryF#作るまでやる気あるのに
MS日本法人のほういつまでも翻訳せず
やる気が感じられないからしょうがない

英語読めないヤツのほうがもっとやる気ない
とかいうのは無し
2013/04/04(木) 23:16:38.72
F#は全社で取り組んむべき題材ではないということだろうな。
いちおう詳しいMSの日本人もいるのかな?
2013/04/06(土) 09:55:55.45
MS Research製だから、日本にMSR支部がないのがまんま影響してんじゃないかね。
2013/04/07(日) 05:35:12.80
TryF#を2ページくらいやったけど
他のプログラミング言語やってないと辛い
4歳児よくできたな・・
2013/04/12(金) 15:08:15.32
プログラミングF#3.0早く出ないかなー
2013/04/29(月) 19:55:54.92
真のサイエンティストはF#じゃなくていまだにFortran使ってるけど
2013/05/09(木) 15:15:17.55
エクスプローラ上でfsxファイルを右クリックするとRun With F# Interactiveで直接実行できるわけですが
同じようにVS 2010上のfsxファイルを直接実行する方法ってありますか?
F# Interactiveウインドウにfsxファイルをドロップするだけで動いたりしたら嬉しいのですが・・・
2013/05/10(金) 01:07:12.40
VSで常用してる人が多かったらこのスレもっと勢いあるだろうね
2013/05/20(月) 02:55:30.08
言うまでもないが、F#3.0はxp vista切り捨てのVS2012でしか動かない
最先端に追従してるF#3.0がD言語より語られてないのは皮肉な話だと思う
VS2012スレもようやくVS2010スレの勢いを超えたというのに・・・
2013/05/20(月) 02:56:39.09
かと言って2.0使い続けてる奴もいないよな?
2013/05/23(木) 20:59:58.16
時代を先取りしすぎた言語
数年以内に消える
2013/06/01(土) 11:24:51.60
>>408
HaxeとかOCamlで実装されてるんだっけか…
型推論とか最近の流行なのかしらんけど
2013/06/06(木) 16:55:01.31
vsに統合されることがゴールで
めでたくvs2010とvs2012に標準搭載されたというのに
語る人が全くいなくなった・・・

vs shellの存在意義が未だによくわからん
そこまでやるならスタンドアロンのコマンドラインツールでいいだろ・・・
2013/06/06(木) 20:04:10.68
http://blogs.itmedia.co.jp/barbaro/2008/10/delphi-prism-1d.html
一時期、VS ShellがあるとサードパーティのIDE開発のコストが低減されますというねたがあった。
2013/06/06(木) 21:09:08.17
MSKKの人は「F#とか流行るわけねーだろwwwww」みたいなこと言ってた
え、MSの人がそんなこと言っていいの?とか思ったけどだまってた
2013/06/06(木) 21:46:31.57
GHC(Haskell処理系)プロジェクトのコアメンバーにMSの研究員がいるんだけど、
彼はF#について、そしてF#の名がMLに贈られたことについてどう思ってるんだろ?
2013/06/07(金) 00:03:00.45
MSRケンブリッジは魔の巣窟だなー
2013/06/07(金) 00:12:41.32
MSRには、会社に研究内容制限されず、勲章を運んでくるのがお仕事になるトップ論文投稿者がたくさんいるらしい。
アップルはジョブズがもどったときに全員首切ったという伝承がある。
どちらかというと、Don SymeがわざわざMSのためにF#作ってる理由が知りたい。
2013/06/15(土) 03:29:35.49
VS2010でF#のプロジェクトに新しいフォルダを作成して追加するにはどうすればいいでしょうか?
2013/06/16(日) 23:20:19.78
>>442
エクステンションいれないと無理よ(´・ω・`)
2013/06/17(月) 01:10:42.30
>>443
それを聞いて調べたところF# Project Extenderを入れれば良さそうなのでさっそくいれてみましたが
Enable F# Project Extenderをクリックするとエラーが出たので諦めます(´・ω・`)
2013/06/21(金) 00:36:35.29
http://funscript.info/
F# Expertは、webレンダリングで得体の知れない仕組み考えるのが好きだな。
2013/06/29(土) 02:59:07.32
http://blogs.msdn.com/b/fsharpteam/archive/2013/06/27/announcing-a-pre-release-of-f-3-1-and-the-visual-f-tools-in-visual-studio-2013.aspx

F#3.1 previewきたー
2013/06/29(土) 07:08:57.35
Named union type fieldsはよさげだなあ
2013/07/11(木) NY:AN:NY.AN
VS Desktopにも入れてくれないかな
VS Web入れてみたけど訳が判らないよ
2013/07/12(金) NY:AN:NY.AN
http://blogs.msdn.com/b/dsyme/archive/2013/07/11/f-c-jobs-in-machine-learning-data-tools-microsoft-research-redmond.aspx
ケンブリッジじゃなくてレドモンドで求人してる
2013/07/12(金) NY:AN:NY.AN
Scala33位
F#37位

TIOBEで比較するとそれほど差はない
むしろF#のが力強く感じられる
2013/07/15(月) NY:AN:NY.ANID:um2YQEwB!
最初moduleでモジュール化してたけど
途中から型や値をパラメータ化したくてclassに変えようとしたら
構文が違いすぎてあと内部classも作れなくて死んだ
2013/08/05(月) NY:AN:NY.AN
>>450
なにを根拠に力強いんだよ
453452
垢版 |
2013/08/05(月) NY:AN:NY.AN
>>450
22 D 0.567%
23 F# 0.538%
24 Lua 0.531%

34 Haskell 0.349%
35 Erlang 0.344%
36 Prolog 0.334%
37 Scala 0.332%

うーんとしか・・・
2013/08/06(火) NY:AN:NY.AN
ネタにマジレス
2013/08/10(土) NY:AN:NY.AN
MonoDevelop+F#Bindingsでコンパイル順の変更ができない…
やる気無さすぎだろこれ
456デフォルトの名無しさん
垢版 |
2013/08/18(日) NY:AN:NY.AN
結局MonoDevelop諦めちゃった…
2013/08/20(火) NY:AN:NY.AN
>>455
そこらへんは、作者に言わんと永久に治らないかも。
githubで開発してると思うから作業リストには入るだろうし。
>>456
まだベータ版ぐらい?
そう言えば、monodevelopやxamarinstudioだと実行がうまく出来ない環境があって悩むことがある。
2013/08/21(水) NY:AN:NY.AN
>>457
どっちも同じ人間だよ
git上のFSharpBindingsだと順序変更はできるようになってた
でも新しいMonoDevelopが必要で自前でそれもビルドしたから
設定がとても面倒だった

その後MonoがWinFormsに実質未対応なのに気づいて
それでも他の部分だけと頑張ったけど
IDEそのものが自分には使いづらくて無理だった
F#は素直にVSでやることにした
2013/09/06(金) 06:21:51.94
具象型にいちいちインターフェース型をキャストすんのめんどくさ!
これ一つづずつ実装するかキャストしないといけないのか?
2013/09/06(金) 19:49:58.03
実装を意識したくないからインターフェースをはさんでるので
キャストしちゃうと台無しですよ。
2013/09/06(金) 22:06:13.15
>>460
すみません、逆方向です

let impl :ISome = new Impl() ;> ISome

こんな感じで一旦アップキャストするのが面倒なんです

単にISomeを実装しただけではImpl型でメソッドを呼び出せないので
実装のテストだと例えば3つ実装していた場合、
毎回使用するインターフェイス別にキャストしなくてはいけない
それかImpl自体にそれぞれ同名のメソッドを用意するしかない

他言語ともやりとりするので手軽に注釈なし'a 扱いもできません
私が何かとてつもない勘違いしてるんですかね…?
2013/09/06(金) 22:08:31.99
セミコロンはtypoです
> let impl :ISome = new Impl() :> ISome
2013/09/06(金) 22:38:38.48
なんで:ISomeと型を定義してんの?

インターフェースぐらいは暗黙に変換してくれてもいい様には思うが、F#では元々そんなインターフェース使わんからなぁ

Interopするなら別かもですが。
2013/09/07(土) 03:17:27.69
>>463
>なんで:ISomeと型を定義してんの?
こうしないとメソッドが呼び出せないからですね
でなければ呼び出す度にキャストすることになってしまうので

ただ雰囲気は大体わかりました
F#でクラス使ってOOしちゃいけないみたいですね…
ありがとうございました
■ このスレッドは過去ログ倉庫に格納されています