【.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/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しちゃいけないみたいですね…
ありがとうございました
2013/09/07(土) 04:52:09.47
>>464
いや右辺で型決めてんだから、左辺は書く必要無い。
オブジェクト指向もしちゃいけないじゃなくてやる必要が無いだ。

とりあえず関数型とF#勉強してから自分が書いた事を見直してみろ
2013/09/07(土) 13:33:50.24
>>465
すみませんが、問題にしてるのはキャストですので
可能であればそちらより解決策の提示を願います

>オブジェクト指向もしちゃいけないじゃなくてやる必要が無いだ。
それは現に必要な人間に言っても意味がないです

>とりあえず関数型とF#勉強してから自分が書いた事を見直してみろ
関数型はOCamlもHaskellも使ってます
私は純粋に外部利用のための解決策がないか探っているだけです
2013/09/07(土) 15:48:57.96
んじゃ好きなだけキャストしてろよw
2013/09/07(土) 18:21:28.54
>>461
>let impl :ISome = new Impl() ;> ISome
>>465さんも書いてますけど右辺で型が分かるので左辺は必要ないですよ。

>単にISomeを実装しただけではImpl型でメソッドを呼び出せないので
ISome型に定義されてるメソッドは呼び出せます。
ISome型で参照してるならImpl型で追加されたメソッドが
呼び出せないのは当然かと。

ここまで書いといてなんですが
私もF#は勉強中でOOP視点でレスしてます。

間違っている所があれば詳しい方、訂正お願いします。
2013/09/07(土) 22:36:02.91
>>468
> >>465さんも書いてますけど右辺で型が分かるので左辺は必要ないですよ。
大丈夫ですそこは理解してます
問題としているのは右辺のキャストです

私はレスを「なぜそこで型をキャストするのか」と解釈したので、
変なレスになってしまいました
左辺値の注釈は型推論でつまずくことが多いので癖で書いてます

>ISome型に定義されてるメソッドは呼び出せます。
上でも書いてますが、実装型をnewしても
1. インターフェース型にキャストする
2. インターフェース型を実装したものとは別に
  実装型に同名のメソッドを追加する
このどちらかをしないと同名のメソッドは呼び出せません
これが複数のインターフェースを使うとなるとその都度キャストという事になります
2013/09/08(日) 11:15:36.34
>>469
インターフェースの明示実装を利用しているため、明示的にキャストしたいということですね。

しかしこの場合、実行させたい関数等にtype hinting付けて、そこで指定したインターフェースのメソッドを呼ばせるべきだと思います。

これは、F#に限らず、C#でも同様です


また、もしそれがコンストラクタである場合も同様に、外部から注入すべきでしょう(依存性反転の原則)。

どうしても呼び出し先で、生成->実行したいのであれば、ローカル関数を経由すればいいと思います。
2013/09/08(日) 12:14:47.31
>>470
明示的にキャストしたいじゃなくてしたくないんでしょ。

インタフェースのメソッド呼ぶために関数を通させる意味が分からないんだけど、関数型のスタイルに合わせるため?

IHogeにキャストしたいなら、それをするiHとか短い関数作って(iH o).HogeHogeとかでいーんじゃねーの。
そもそもキャストが頻繁に起きるなら設計がおかしいだろ。
同じオブジェクトを各場所で適切なインタフェースとして保持管理出来てるべき。
2013/09/08(日) 13:05:41.78
>>470
大変参考になりました
特に注釈付き引数について、暗黙の挙動は存じておりませんでした
引数には適用されるんですね

DI部分に関してはもっともな意見だと思います
ただ、実装の確認テストの際に煩雑になるので、
テストしながらの作業では、その手間が惜しいです

そこでほしいのは明示的でないインターフェイス実装か、その代替です
この点はC#では同様ではないと思います

単なるわがままを続けても仕方がないので、これ以上は控えます
レスありがとうございました
2013/09/08(日) 13:30:14.10
すみません見逃してましたのでもうひとつだけ

>>471
アップキャストは設計上頻繁に起こっても全然おかしくはないです
というより良い設計では何でもインターフェイスにしますよ
逆に特定のインスタンスや型を扱うのは危ないです
2013/09/08(日) 15:16:04.41
>>473
そうじゃなくて複数のインタフェースを実装して、その場所場所でこのインタフェースを実装してるか的なことをしないといけないのがダメっていってんの。

そうで無ければ具象クラスをそのインターフェースとして扱い始める大元でキャストするだけであって使うたびにキャストがーなんて話はでてこない。
2013/09/08(日) 18:23:32.98
>>474
もちろん基本的にはそうだと思ってますよ
しかし、書いてるのはインターフェイスとしての扱いでなく、
実装動作そのもののテストコードです
実装クラスのメソッド呼び出しの手間について話しています

ここまで特殊化された物に一つずつインターフェースを書いて
それを使ってという事をする気はありません
なのでダメと言われても困ります
2013/09/08(日) 18:26:04.95
念の為付け加えますが、インターフェースの要件としてのテストコードは別にあります
問題にしているのは個々の実装クラスの特殊な動作を調べるコードです
2013/09/08(日) 19:12:41.19
>>475
お前がインターフェースの呼び出しがめんどくさい言ってて今更インタフェースの扱いじゃないってなんなの?

後段のインタフェースを書いてとかも意味分からん。
何したいの?もうめんどくさいから楽なC#でかけば?
478デフォルトの名無しさん
垢版 |
2013/09/08(日) 19:28:18.01
>>477
実装したメソッドを呼び出しするのが面倒だと何度も言ってるでしょう?
本当に理解できてます?わざと言ってるんですか?
2013/09/08(日) 19:31:50.35
すみませんついカチンと来てしまいました、謝ります
上に書いたとおりの手順でやってみればどういう意味かわかると思います
2013/09/08(日) 19:53:13.10
すまん。そもそもで恐縮だが、459の人はF#で完全OOPなコードを書こうとしてるの?
2013/09/08(日) 21:14:51.26
>>479
だからさー
上に書いた通りの手順でとか言われてもエスパーじゃないからわかんねーよ。
せめてアンカーでもつけたら?
お前の質問の仕方は相手にとってどう理解しやすくするかって視点が全てにおいて欠如してんだよ
2013/09/08(日) 21:28:38.91
こういうのはどう?

type ICounter =
 abstract member Inc : unit -> unit
 abstract member Count : unit -> int

type Counter(seed : int) =
 let mutable cnt = seed
 member this.i = this :> ICounter
 interface ICounter with
  member this.Inc() = cnt <- cnt + 1
  member this.Count() = cnt
2013/09/09(月) 11:43:41.19
これはにぎわってない
2013/09/14(土) 17:36:02.70
.net sdkだけでコンパイルできるスタンドアロン環境にしてくり
2013/09/14(土) 19:01:00.84
fsiやfsc はスタンドアロンでインストールもコンパイルもできるだろ?
2013/09/15(日) 15:04:09.99
疑問形で言われても。
一般的にはなんとかシェルがいるし裏技は知らん
2013/09/15(日) 15:04:52.15
>>486
もちろんexpressなんちゃらも入れたくないってことな
2013/09/15(日) 18:02:07.33
>>486
疑問系ってよりも、お前そんな事も知らんの?って意味の確認だろ。
2013/09/15(日) 18:13:45.88
unix-monoでF#な俺に死角は無かった
490デフォルトの名無しさん
垢版 |
2013/09/15(日) 21:11:33.10
>>488
なんだ、お前そんなのも知らんのとかいいたいだけのカスか
どんだけこのスレ過疎ってると思ってんだよまったく
そんなんだからF#がこんなかわいそうなことになってんだろ

あげ
491デフォルトの名無しさん
垢版 |
2013/09/15(日) 21:12:22.99
>>488
こんな過疎スレなのにこんな人間のクズしかいないとは哀れすぎる
492デフォルトの名無しさん
垢版 |
2013/09/15(日) 21:18:26.19
そもそもスタンドアロンで使ってる奴がどんだけいるわけ?
なめてんじゃねえよ
2013/09/15(日) 22:40:19.72
>>490-491 
解説しただけなんだから、俺に言うなよ(´・ω・`)
494デフォルトの名無しさん
垢版 |
2013/09/15(日) 23:08:27.79
>>493
だから解説になってねえんだよバカタレが
なんだ、お前そんなのも知らんのとかいいたいだけのカスか
さっさと消えろ
495デフォルトの名無しさん
垢版 |
2013/09/15(日) 23:10:32.47
>>493
なんだ、お前そんなのも知らんのとかいいたいだけのカス
496デフォルトの名無しさん
垢版 |
2013/09/15(日) 23:13:23.78
>>488
スタンドアロンで使うのがどれだけ普通なのか
わざわざしゃしゃり出てきたお前が解説しろ
2013/09/16(月) 00:31:15.46
>>494-496
だから>>486でイミフな絡み方してるから日本語の解説してやっただけだろ。
教えてくんならそれらしく下手に出てればいいのに。
>>484でスタンドアロンがいいっていうから>>485がスタンドアロンでインスコできるだろって親切に教えてやって>>486で逆切れしてるながれなのに、スタンドアロン環境が普通かどうかとかってそれ論点じゃねーだろw
塚その日本語能力のなさお前ら同一人物だろwww
情報ないのかと思ってぐぐったら簡単に見つかったけど教えてやらんわ(´・ω・`)
498デフォルトの名無しさん
垢版 |
2013/09/16(月) 02:52:48.07
>>497
迷惑なやつだなおまえ
スレタイ読んで書き込んでんの?
499デフォルトの名無しさん
垢版 |
2013/09/16(月) 02:54:02.20
>>497
いや同一人物ってわかるだろ
どんだけバカなのおまえ・・・
500デフォルトの名無しさん
垢版 |
2013/09/16(月) 02:55:53.81
>>497
> だから>>486でイミフな絡み方してるから日本語の解説してやっただけだろ。
> 教えてくんならそれらしく下手に出てればいいのに。
おまえのがイミフ
日本語の解説ってそういうスレなの?
スレタイ読んでどうしても日本語の解説したかったとか
くだらん頭おかしすぎ
501デフォルトの名無しさん
垢版 |
2013/09/16(月) 02:58:51.30
> 情報ないのかと思ってぐぐったら簡単に見つかったけど教えてやらんわ(´・ω・`)

おまえ・・・やっぱり知らないくせに適当に書き込んでたんじゃん
だからさ俺が知ってるとかじゃなくて
ちゃんと知られてないからマイナーなんだよって言ってんだけど?
相当くずだなおまえも

>塚その日本語能力のなさお前ら同一人物だろwww
これはあたまおかしすぎ
過疎スレの皆さんにごめんなさいしろよゴミ男が
502デフォルトの名無しさん
垢版 |
2013/09/16(月) 02:59:36.35
大事なことなので訂正
× 相当くずだなおまえも
○ 相当くずだなおまえが
503デフォルトの名無しさん
垢版 |
2013/09/16(月) 03:05:58.44
>>484でスタンドアロンがいいっていうから>>485がスタンドアロンでインスコできるだろって親切に教えてやって>>486で逆切れしてるながれなのに、スタンドアロン環境が普通かどうかとかってそれ論点じゃねーだろw

>>485のどこが親切なんだよ
おまえの国じゃこれが親切なのかくずだなすばらしいね
おまえスレ違いすぎだからスレタイよく読んで書き込めカス
スタンドアロンでの使われ方は普通には知られてない裏技的なものだし

それに俺の言いたい論点はこれだけ
>なんだ、お前そんなのも知らんのとかいいたいだけのカスか

おまえみたいに無自覚に迷惑かけてるやつが一番迷惑だからさっさとでてけ
504デフォルトの名無しさん
垢版 |
2013/09/16(月) 03:08:44.77
なんだ、お前そんなのも知らんのとかいいたいだけのカスか
505デフォルトの名無しさん
垢版 |
2013/09/16(月) 03:11:13.20
>fsiやfsc はスタンドアロンでインストールもコンパイルもできるだろ?

これが親切に教えてくれてるとかどういう頭の構造してんだよ
なんだ、お前そんなのも知らんのとかいいたいだけのカスじゃないか
2013/09/16(月) 11:31:59.04
危ない人に触ってしまった(;´∀`)
2013/09/16(月) 17:43:47.65
御苦労
2013/10/02(水) 23:50:05.84
No Starch から F# 本
http://nostarch.com/fsharp
2013/10/03(木) 09:56:00.15
>>508
ebookは出ないの…かしら(´・ω・`)
2013/10/03(木) 15:56:47.51
>>509
no scrachならしばらくすればoreilly.comで売られる
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況