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
393デフォルトの名無しさん
2013/02/23(土) 14:56:47.28 F#やってみて、階乗から始まってフィボナッチ、ハノイの塔、クイックソート
正規表現抹茶あたり組んでみたけど、なんか飽きちゃったなあ。
なんか面白いテーマないかな。
プログラマとして勉強になるのかな、と思ってたけど、CでもRubyでもできるよ
ねこんなのは。>>3
正規表現抹茶あたり組んでみたけど、なんか飽きちゃったなあ。
なんか面白いテーマないかな。
プログラマとして勉強になるのかな、と思ってたけど、CでもRubyでもできるよ
ねこんなのは。>>3
394デフォルトの名無しさん
2013/02/23(土) 15:12:30.25 入力補完がC#並みなら最高なんだが・・・
395デフォルトの名無しさん
2013/02/23(土) 15:31:00.16396デフォルトの名無しさん
2013/02/23(土) 15:40:08.94 それコピペだよ
397デフォルトの名無しさん
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
代数的データ型の何がいいかって言うと、もちろん宣言的に値の分解ができるからプログラムが読みやすいっていうこともあるんだけど、
データに対する操作の追加が簡単だという利点があると思う。
まぁ、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
398デフォルトの名無しさん
2013/02/23(土) 17:39:24.06 C#との比較で見たときにキャッチーに利点を説明できる要素
ならまあ代数的データ型ですねぇ。
自動実装プロパティに初期値を与えられるのとかも地味に便利。
member val Count = 0 with get, set
ならまあ代数的データ型ですねぇ。
自動実装プロパティに初期値を与えられるのとかも地味に便利。
member val Count = 0 with get, set
399デフォルトの名無しさん
2013/02/24(日) 09:07:24.31 RoslynでC# REPLが可能になったらF#オワコンですよね
400デフォルトの名無しさん
2013/02/24(日) 09:54:11.59 >>399
せめてまともな型推論を実装してから出直してくれ。
F#並の簡潔な記述
代数データ型とパターンマッチング
REPL
モナドサポート
イミュータブルデフォルト
最低でもこの辺が出来ないことには話にならない( ´Д`)y━・~~
せめてまともな型推論を実装してから出直してくれ。
F#並の簡潔な記述
代数データ型とパターンマッチング
REPL
モナドサポート
イミュータブルデフォルト
最低でもこの辺が出来ないことには話にならない( ´Д`)y━・~~
401デフォルトの名無しさん
2013/02/24(日) 14:05:13.15 REPLとかいらないけど、他の4つはC#でもホント欲しいな
402デフォルトの名無しさん
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関連で作られている。
用途も増えてるようで、最近改良してるみたい。
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関連で作られている。
403デフォルトの名無しさん
2013/03/06(水) 19:30:36.08 #light "off"にして、あと警告がある場合はコンパイル通らない設定にして使ってる。
しかし、F#の構文だと関数適用時のインテリセンスが微妙…。
しかし、F#の構文だと関数適用時のインテリセンスが微妙…。
404デフォルトの名無しさん
2013/03/11(月) 18:45:28.36 「ビッグデータの世界でF#が大流行、
研究者の心を鷲掴みする謎のプログラミング言語」
ってマジ?
研究者の心を鷲掴みする謎のプログラミング言語」
ってマジ?
405デフォルトの名無しさん
2013/03/11(月) 18:55:08.71 タイトルが変
406デフォルトの名無しさん
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#が適している。
流行しているというか
MicrosoftがBig Dataサイエンティスト界隈に
流行させようと画策しているというのが正しい。
http://www.infoq.com/presentations/F-Sharp-Big-Data-Scripting
bigdataは一回のクエリに時間がかかるので
codeのバグで時間をロスしやすい。
そしてcodeは書き捨てであることが多い。
このようなタスクにはType Providerという
データスキーマの定義を元にクエリの型チェックやインテリセンスを行える機能
を持つF#が適している。
407デフォルトの名無しさん
2013/03/11(月) 23:06:06.63 >>406
まぁ実際にサイエンティストから好評らしいけど
まぁ実際にサイエンティストから好評らしいけど
408デフォルトの名無しさん
2013/03/12(火) 00:32:06.37 OCamlの一種としては悪くない処理系だし、
MLユーザーは少々の方言は気にしない。
MLユーザーは少々の方言は気にしない。
409デフォルトの名無しさん
2013/03/12(火) 07:14:16.74 F#だと複雑なロジックがこんなに簡単にかける系のリンクってない?
410デフォルトの名無しさん
2013/03/12(火) 16:59:56.81 F#にしたら息子が大学に合格しました
411デフォルトの名無しさん
2013/03/12(火) 17:05:28.24 >>410
Fランクよりちょっといいぐらいの大学ですね。おめでとうございます
Fランクよりちょっといいぐらいの大学ですね。おめでとうございます
412デフォルトの名無しさん
2013/03/12(火) 17:15:20.19 F#がセクシーすぎて息子が大きくなりました
413デフォルトの名無しさん
2013/03/12(火) 18:49:33.85 >>410
F# snippetでググれ
F# snippetでググれ
414デフォルトの名無しさん
2013/03/12(火) 19:46:10.30 >>408
MLに派生と方言以外の何があるというのだ
MLに派生と方言以外の何があるというのだ
415デフォルトの名無しさん
2013/03/13(水) 01:19:20.57 名前にスタンダードが付いてるMLあるよね。
416デフォルトの名無しさん
2013/03/16(土) 14:07:06.68 とりあえずGUIはC#でとか言ってるうちは流行らんな
417デフォルトの名無しさん
2013/03/17(日) 00:00:06.57 いくら糞レスで埋めようがにぎわってねえからな
勘違いすんじゃねえぞ
勘違いすんじゃねえぞ
418デフォルトの名無しさん
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
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
419デフォルトの名無しさん
2013/04/02(火) 01:09:23.44420デフォルトの名無しさん
2013/04/02(火) 02:16:28.77 letって何かの略?障害?
許可じゃimmutable的に意味逆になるだろうし
許可じゃimmutable的に意味逆になるだろうし
421デフォルトの名無しさん
2013/04/02(火) 13:43:16.63 辞書引けば書いてるだろ数学用語だよ
422デフォルトの名無しさん
2013/04/03(水) 10:03:00.29 F#の本ヌレおしえたもれ
423デフォルトの名無しさん
2013/04/03(水) 12:39:13.08 どうしてこうなった
424デフォルトの名無しさん
2013/04/03(水) 22:16:19.55 本国はTryF#作るまでやる気あるのに
MS日本法人のほういつまでも翻訳せず
やる気が感じられないからしょうがない
英語読めないヤツのほうがもっとやる気ない
とかいうのは無し
MS日本法人のほういつまでも翻訳せず
やる気が感じられないからしょうがない
英語読めないヤツのほうがもっとやる気ない
とかいうのは無し
425デフォルトの名無しさん
2013/04/04(木) 23:16:38.72 F#は全社で取り組んむべき題材ではないということだろうな。
いちおう詳しいMSの日本人もいるのかな?
いちおう詳しいMSの日本人もいるのかな?
426デフォルトの名無しさん
2013/04/06(土) 09:55:55.45 MS Research製だから、日本にMSR支部がないのがまんま影響してんじゃないかね。
427デフォルトの名無しさん
2013/04/07(日) 05:35:12.80 TryF#を2ページくらいやったけど
他のプログラミング言語やってないと辛い
4歳児よくできたな・・
他のプログラミング言語やってないと辛い
4歳児よくできたな・・
428デフォルトの名無しさん
2013/04/12(金) 15:08:15.32 プログラミングF#3.0早く出ないかなー
429デフォルトの名無しさん
2013/04/29(月) 19:55:54.92 真のサイエンティストはF#じゃなくていまだにFortran使ってるけど
430デフォルトの名無しさん
2013/05/09(木) 15:15:17.55 エクスプローラ上でfsxファイルを右クリックするとRun With F# Interactiveで直接実行できるわけですが
同じようにVS 2010上のfsxファイルを直接実行する方法ってありますか?
F# Interactiveウインドウにfsxファイルをドロップするだけで動いたりしたら嬉しいのですが・・・
同じようにVS 2010上のfsxファイルを直接実行する方法ってありますか?
F# Interactiveウインドウにfsxファイルをドロップするだけで動いたりしたら嬉しいのですが・・・
431デフォルトの名無しさん
2013/05/10(金) 01:07:12.40 VSで常用してる人が多かったらこのスレもっと勢いあるだろうね
432デフォルトの名無しさん
2013/05/20(月) 02:55:30.08 言うまでもないが、F#3.0はxp vista切り捨てのVS2012でしか動かない
最先端に追従してるF#3.0がD言語より語られてないのは皮肉な話だと思う
VS2012スレもようやくVS2010スレの勢いを超えたというのに・・・
最先端に追従してるF#3.0がD言語より語られてないのは皮肉な話だと思う
VS2012スレもようやくVS2010スレの勢いを超えたというのに・・・
433デフォルトの名無しさん
2013/05/20(月) 02:56:39.09 かと言って2.0使い続けてる奴もいないよな?
434デフォルトの名無しさん
2013/05/23(木) 20:59:58.16 時代を先取りしすぎた言語
数年以内に消える
数年以内に消える
435デフォルトの名無しさん
2013/06/01(土) 11:24:51.60436デフォルトの名無しさん
2013/06/06(木) 16:55:01.31 vsに統合されることがゴールで
めでたくvs2010とvs2012に標準搭載されたというのに
語る人が全くいなくなった・・・
vs shellの存在意義が未だによくわからん
そこまでやるならスタンドアロンのコマンドラインツールでいいだろ・・・
めでたくvs2010とvs2012に標準搭載されたというのに
語る人が全くいなくなった・・・
vs shellの存在意義が未だによくわからん
そこまでやるならスタンドアロンのコマンドラインツールでいいだろ・・・
437デフォルトの名無しさん
2013/06/06(木) 20:04:10.68 http://blogs.itmedia.co.jp/barbaro/2008/10/delphi-prism-1d.html
一時期、VS ShellがあるとサードパーティのIDE開発のコストが低減されますというねたがあった。
一時期、VS ShellがあるとサードパーティのIDE開発のコストが低減されますというねたがあった。
438デフォルトの名無しさん
2013/06/06(木) 21:09:08.17 MSKKの人は「F#とか流行るわけねーだろwwwww」みたいなこと言ってた
え、MSの人がそんなこと言っていいの?とか思ったけどだまってた
え、MSの人がそんなこと言っていいの?とか思ったけどだまってた
439デフォルトの名無しさん
2013/06/06(木) 21:46:31.57 GHC(Haskell処理系)プロジェクトのコアメンバーにMSの研究員がいるんだけど、
彼はF#について、そしてF#の名がMLに贈られたことについてどう思ってるんだろ?
彼はF#について、そしてF#の名がMLに贈られたことについてどう思ってるんだろ?
440デフォルトの名無しさん
2013/06/07(金) 00:03:00.45 MSRケンブリッジは魔の巣窟だなー
441デフォルトの名無しさん
2013/06/07(金) 00:12:41.32 MSRには、会社に研究内容制限されず、勲章を運んでくるのがお仕事になるトップ論文投稿者がたくさんいるらしい。
アップルはジョブズがもどったときに全員首切ったという伝承がある。
どちらかというと、Don SymeがわざわざMSのためにF#作ってる理由が知りたい。
アップルはジョブズがもどったときに全員首切ったという伝承がある。
どちらかというと、Don SymeがわざわざMSのためにF#作ってる理由が知りたい。
442デフォルトの名無しさん
2013/06/15(土) 03:29:35.49 VS2010でF#のプロジェクトに新しいフォルダを作成して追加するにはどうすればいいでしょうか?
443デフォルトの名無しさん
2013/06/16(日) 23:20:19.78 >>442
エクステンションいれないと無理よ(´・ω・`)
エクステンションいれないと無理よ(´・ω・`)
444デフォルトの名無しさん
2013/06/17(月) 01:10:42.30 >>443
それを聞いて調べたところF# Project Extenderを入れれば良さそうなのでさっそくいれてみましたが
Enable F# Project Extenderをクリックするとエラーが出たので諦めます(´・ω・`)
それを聞いて調べたところF# Project Extenderを入れれば良さそうなのでさっそくいれてみましたが
Enable F# Project Extenderをクリックするとエラーが出たので諦めます(´・ω・`)
445デフォルトの名無しさん
2013/06/21(金) 00:36:35.29 http://funscript.info/
F# Expertは、webレンダリングで得体の知れない仕組み考えるのが好きだな。
F# Expertは、webレンダリングで得体の知れない仕組み考えるのが好きだな。
446デフォルトの名無しさん
2013/06/29(土) 02:59:07.32447デフォルトの名無しさん
2013/06/29(土) 07:08:57.35 Named union type fieldsはよさげだなあ
448デフォルトの名無しさん
2013/07/11(木) NY:AN:NY.AN VS Desktopにも入れてくれないかな
VS Web入れてみたけど訳が判らないよ
VS Web入れてみたけど訳が判らないよ
449デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN450デフォルトの名無しさん
2013/07/12(金) NY:AN:NY.AN Scala33位
F#37位
TIOBEで比較するとそれほど差はない
むしろF#のが力強く感じられる
F#37位
TIOBEで比較するとそれほど差はない
むしろF#のが力強く感じられる
451デフォルトの名無しさん
2013/07/15(月) NY:AN:NY.ANID:um2YQEwB! 最初moduleでモジュール化してたけど
途中から型や値をパラメータ化したくてclassに変えようとしたら
構文が違いすぎてあと内部classも作れなくて死んだ
途中から型や値をパラメータ化したくてclassに変えようとしたら
構文が違いすぎてあと内部classも作れなくて死んだ
452デフォルトの名無しさん
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%
うーんとしか・・・
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%
うーんとしか・・・
454デフォルトの名無しさん
2013/08/06(火) NY:AN:NY.AN ネタにマジレス
455デフォルトの名無しさん
2013/08/10(土) NY:AN:NY.AN MonoDevelop+F#Bindingsでコンパイル順の変更ができない…
やる気無さすぎだろこれ
やる気無さすぎだろこれ
456デフォルトの名無しさん
2013/08/18(日) NY:AN:NY.AN 結局MonoDevelop諦めちゃった…
457デフォルトの名無しさん
2013/08/20(火) NY:AN:NY.AN458デフォルトの名無しさん
2013/08/21(水) NY:AN:NY.AN >>457
どっちも同じ人間だよ
git上のFSharpBindingsだと順序変更はできるようになってた
でも新しいMonoDevelopが必要で自前でそれもビルドしたから
設定がとても面倒だった
その後MonoがWinFormsに実質未対応なのに気づいて
それでも他の部分だけと頑張ったけど
IDEそのものが自分には使いづらくて無理だった
F#は素直にVSでやることにした
どっちも同じ人間だよ
git上のFSharpBindingsだと順序変更はできるようになってた
でも新しいMonoDevelopが必要で自前でそれもビルドしたから
設定がとても面倒だった
その後MonoがWinFormsに実質未対応なのに気づいて
それでも他の部分だけと頑張ったけど
IDEそのものが自分には使いづらくて無理だった
F#は素直にVSでやることにした
459デフォルトの名無しさん
2013/09/06(金) 06:21:51.94 具象型にいちいちインターフェース型をキャストすんのめんどくさ!
これ一つづずつ実装するかキャストしないといけないのか?
これ一つづずつ実装するかキャストしないといけないのか?
460デフォルトの名無しさん
2013/09/06(金) 19:49:58.03 実装を意識したくないからインターフェースをはさんでるので
キャストしちゃうと台無しですよ。
キャストしちゃうと台無しですよ。
461デフォルトの名無しさん
2013/09/06(金) 22:06:13.15 >>460
すみません、逆方向です
let impl :ISome = new Impl() ;> ISome
こんな感じで一旦アップキャストするのが面倒なんです
単にISomeを実装しただけではImpl型でメソッドを呼び出せないので
実装のテストだと例えば3つ実装していた場合、
毎回使用するインターフェイス別にキャストしなくてはいけない
それかImpl自体にそれぞれ同名のメソッドを用意するしかない
他言語ともやりとりするので手軽に注釈なし'a 扱いもできません
私が何かとてつもない勘違いしてるんですかね…?
すみません、逆方向です
let impl :ISome = new Impl() ;> ISome
こんな感じで一旦アップキャストするのが面倒なんです
単にISomeを実装しただけではImpl型でメソッドを呼び出せないので
実装のテストだと例えば3つ実装していた場合、
毎回使用するインターフェイス別にキャストしなくてはいけない
それかImpl自体にそれぞれ同名のメソッドを用意するしかない
他言語ともやりとりするので手軽に注釈なし'a 扱いもできません
私が何かとてつもない勘違いしてるんですかね…?
462デフォルトの名無しさん
2013/09/06(金) 22:08:31.99 セミコロンはtypoです
> let impl :ISome = new Impl() :> ISome
> let impl :ISome = new Impl() :> ISome
463デフォルトの名無しさん
2013/09/06(金) 22:38:38.48 なんで:ISomeと型を定義してんの?
インターフェースぐらいは暗黙に変換してくれてもいい様には思うが、F#では元々そんなインターフェース使わんからなぁ
Interopするなら別かもですが。
インターフェースぐらいは暗黙に変換してくれてもいい様には思うが、F#では元々そんなインターフェース使わんからなぁ
Interopするなら別かもですが。
464デフォルトの名無しさん
2013/09/07(土) 03:17:27.69 >>463
>なんで:ISomeと型を定義してんの?
こうしないとメソッドが呼び出せないからですね
でなければ呼び出す度にキャストすることになってしまうので
ただ雰囲気は大体わかりました
F#でクラス使ってOOしちゃいけないみたいですね…
ありがとうございました
>なんで:ISomeと型を定義してんの?
こうしないとメソッドが呼び出せないからですね
でなければ呼び出す度にキャストすることになってしまうので
ただ雰囲気は大体わかりました
F#でクラス使ってOOしちゃいけないみたいですね…
ありがとうございました
465デフォルトの名無しさん
2013/09/07(土) 04:52:09.47466デフォルトの名無しさん
2013/09/07(土) 13:33:50.24 >>465
すみませんが、問題にしてるのはキャストですので
可能であればそちらより解決策の提示を願います
>オブジェクト指向もしちゃいけないじゃなくてやる必要が無いだ。
それは現に必要な人間に言っても意味がないです
>とりあえず関数型とF#勉強してから自分が書いた事を見直してみろ
関数型はOCamlもHaskellも使ってます
私は純粋に外部利用のための解決策がないか探っているだけです
すみませんが、問題にしてるのはキャストですので
可能であればそちらより解決策の提示を願います
>オブジェクト指向もしちゃいけないじゃなくてやる必要が無いだ。
それは現に必要な人間に言っても意味がないです
>とりあえず関数型とF#勉強してから自分が書いた事を見直してみろ
関数型はOCamlもHaskellも使ってます
私は純粋に外部利用のための解決策がないか探っているだけです
467デフォルトの名無しさん
2013/09/07(土) 15:48:57.96 んじゃ好きなだけキャストしてろよw
468デフォルトの名無しさん
2013/09/07(土) 18:21:28.54469デフォルトの名無しさん
2013/09/07(土) 22:36:02.91 >>468
> >>465さんも書いてますけど右辺で型が分かるので左辺は必要ないですよ。
大丈夫ですそこは理解してます
問題としているのは右辺のキャストです
私はレスを「なぜそこで型をキャストするのか」と解釈したので、
変なレスになってしまいました
左辺値の注釈は型推論でつまずくことが多いので癖で書いてます
>ISome型に定義されてるメソッドは呼び出せます。
上でも書いてますが、実装型をnewしても
1. インターフェース型にキャストする
2. インターフェース型を実装したものとは別に
実装型に同名のメソッドを追加する
このどちらかをしないと同名のメソッドは呼び出せません
これが複数のインターフェースを使うとなるとその都度キャストという事になります
> >>465さんも書いてますけど右辺で型が分かるので左辺は必要ないですよ。
大丈夫ですそこは理解してます
問題としているのは右辺のキャストです
私はレスを「なぜそこで型をキャストするのか」と解釈したので、
変なレスになってしまいました
左辺値の注釈は型推論でつまずくことが多いので癖で書いてます
>ISome型に定義されてるメソッドは呼び出せます。
上でも書いてますが、実装型をnewしても
1. インターフェース型にキャストする
2. インターフェース型を実装したものとは別に
実装型に同名のメソッドを追加する
このどちらかをしないと同名のメソッドは呼び出せません
これが複数のインターフェースを使うとなるとその都度キャストという事になります
470デフォルトの名無しさん
2013/09/08(日) 11:15:36.34 >>469
インターフェースの明示実装を利用しているため、明示的にキャストしたいということですね。
しかしこの場合、実行させたい関数等にtype hinting付けて、そこで指定したインターフェースのメソッドを呼ばせるべきだと思います。
これは、F#に限らず、C#でも同様です
。
また、もしそれがコンストラクタである場合も同様に、外部から注入すべきでしょう(依存性反転の原則)。
どうしても呼び出し先で、生成->実行したいのであれば、ローカル関数を経由すればいいと思います。
インターフェースの明示実装を利用しているため、明示的にキャストしたいということですね。
しかしこの場合、実行させたい関数等にtype hinting付けて、そこで指定したインターフェースのメソッドを呼ばせるべきだと思います。
これは、F#に限らず、C#でも同様です
。
また、もしそれがコンストラクタである場合も同様に、外部から注入すべきでしょう(依存性反転の原則)。
どうしても呼び出し先で、生成->実行したいのであれば、ローカル関数を経由すればいいと思います。
471デフォルトの名無しさん
2013/09/08(日) 12:14:47.31 >>470
明示的にキャストしたいじゃなくてしたくないんでしょ。
インタフェースのメソッド呼ぶために関数を通させる意味が分からないんだけど、関数型のスタイルに合わせるため?
IHogeにキャストしたいなら、それをするiHとか短い関数作って(iH o).HogeHogeとかでいーんじゃねーの。
そもそもキャストが頻繁に起きるなら設計がおかしいだろ。
同じオブジェクトを各場所で適切なインタフェースとして保持管理出来てるべき。
明示的にキャストしたいじゃなくてしたくないんでしょ。
インタフェースのメソッド呼ぶために関数を通させる意味が分からないんだけど、関数型のスタイルに合わせるため?
IHogeにキャストしたいなら、それをするiHとか短い関数作って(iH o).HogeHogeとかでいーんじゃねーの。
そもそもキャストが頻繁に起きるなら設計がおかしいだろ。
同じオブジェクトを各場所で適切なインタフェースとして保持管理出来てるべき。
472デフォルトの名無しさん
2013/09/08(日) 13:05:41.78 >>470
大変参考になりました
特に注釈付き引数について、暗黙の挙動は存じておりませんでした
引数には適用されるんですね
DI部分に関してはもっともな意見だと思います
ただ、実装の確認テストの際に煩雑になるので、
テストしながらの作業では、その手間が惜しいです
そこでほしいのは明示的でないインターフェイス実装か、その代替です
この点はC#では同様ではないと思います
単なるわがままを続けても仕方がないので、これ以上は控えます
レスありがとうございました
大変参考になりました
特に注釈付き引数について、暗黙の挙動は存じておりませんでした
引数には適用されるんですね
DI部分に関してはもっともな意見だと思います
ただ、実装の確認テストの際に煩雑になるので、
テストしながらの作業では、その手間が惜しいです
そこでほしいのは明示的でないインターフェイス実装か、その代替です
この点はC#では同様ではないと思います
単なるわがままを続けても仕方がないので、これ以上は控えます
レスありがとうございました
473デフォルトの名無しさん
2013/09/08(日) 13:30:14.10 すみません見逃してましたのでもうひとつだけ
>>471
アップキャストは設計上頻繁に起こっても全然おかしくはないです
というより良い設計では何でもインターフェイスにしますよ
逆に特定のインスタンスや型を扱うのは危ないです
>>471
アップキャストは設計上頻繁に起こっても全然おかしくはないです
というより良い設計では何でもインターフェイスにしますよ
逆に特定のインスタンスや型を扱うのは危ないです
474デフォルトの名無しさん
2013/09/08(日) 15:16:04.41 >>473
そうじゃなくて複数のインタフェースを実装して、その場所場所でこのインタフェースを実装してるか的なことをしないといけないのがダメっていってんの。
そうで無ければ具象クラスをそのインターフェースとして扱い始める大元でキャストするだけであって使うたびにキャストがーなんて話はでてこない。
そうじゃなくて複数のインタフェースを実装して、その場所場所でこのインタフェースを実装してるか的なことをしないといけないのがダメっていってんの。
そうで無ければ具象クラスをそのインターフェースとして扱い始める大元でキャストするだけであって使うたびにキャストがーなんて話はでてこない。
475デフォルトの名無しさん
2013/09/08(日) 18:23:32.98 >>474
もちろん基本的にはそうだと思ってますよ
しかし、書いてるのはインターフェイスとしての扱いでなく、
実装動作そのもののテストコードです
実装クラスのメソッド呼び出しの手間について話しています
ここまで特殊化された物に一つずつインターフェースを書いて
それを使ってという事をする気はありません
なのでダメと言われても困ります
もちろん基本的にはそうだと思ってますよ
しかし、書いてるのはインターフェイスとしての扱いでなく、
実装動作そのもののテストコードです
実装クラスのメソッド呼び出しの手間について話しています
ここまで特殊化された物に一つずつインターフェースを書いて
それを使ってという事をする気はありません
なのでダメと言われても困ります
476デフォルトの名無しさん
2013/09/08(日) 18:26:04.95 念の為付け加えますが、インターフェースの要件としてのテストコードは別にあります
問題にしているのは個々の実装クラスの特殊な動作を調べるコードです
問題にしているのは個々の実装クラスの特殊な動作を調べるコードです
477デフォルトの名無しさん
2013/09/08(日) 19:12:41.19 >>475
お前がインターフェースの呼び出しがめんどくさい言ってて今更インタフェースの扱いじゃないってなんなの?
後段のインタフェースを書いてとかも意味分からん。
何したいの?もうめんどくさいから楽なC#でかけば?
お前がインターフェースの呼び出しがめんどくさい言ってて今更インタフェースの扱いじゃないってなんなの?
後段のインタフェースを書いてとかも意味分からん。
何したいの?もうめんどくさいから楽なC#でかけば?
478デフォルトの名無しさん
2013/09/08(日) 19:28:18.01479デフォルトの名無しさん
2013/09/08(日) 19:31:50.35 すみませんついカチンと来てしまいました、謝ります
上に書いたとおりの手順でやってみればどういう意味かわかると思います
上に書いたとおりの手順でやってみればどういう意味かわかると思います
480デフォルトの名無しさん
2013/09/08(日) 19:53:13.10 すまん。そもそもで恐縮だが、459の人はF#で完全OOPなコードを書こうとしてるの?
481デフォルトの名無しさん
2013/09/08(日) 21:14:51.26 >>479
だからさー
上に書いた通りの手順でとか言われてもエスパーじゃないからわかんねーよ。
せめてアンカーでもつけたら?
お前の質問の仕方は相手にとってどう理解しやすくするかって視点が全てにおいて欠如してんだよ
だからさー
上に書いた通りの手順でとか言われてもエスパーじゃないからわかんねーよ。
せめてアンカーでもつけたら?
お前の質問の仕方は相手にとってどう理解しやすくするかって視点が全てにおいて欠如してんだよ
482デフォルトの名無しさん
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
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
483デフォルトの名無しさん
2013/09/09(月) 11:43:41.19 これはにぎわってない
484デフォルトの名無しさん
2013/09/14(土) 17:36:02.70 .net sdkだけでコンパイルできるスタンドアロン環境にしてくり
485デフォルトの名無しさん
2013/09/14(土) 19:01:00.84 fsiやfsc はスタンドアロンでインストールもコンパイルもできるだろ?
486デフォルトの名無しさん
2013/09/15(日) 15:04:09.99 疑問形で言われても。
一般的にはなんとかシェルがいるし裏技は知らん
一般的にはなんとかシェルがいるし裏技は知らん
487デフォルトの名無しさん
2013/09/15(日) 15:04:52.15 >>486
もちろんexpressなんちゃらも入れたくないってことな
もちろんexpressなんちゃらも入れたくないってことな
488デフォルトの名無しさん
2013/09/15(日) 18:02:07.33 >>486
疑問系ってよりも、お前そんな事も知らんの?って意味の確認だろ。
疑問系ってよりも、お前そんな事も知らんの?って意味の確認だろ。
489デフォルトの名無しさん
2013/09/15(日) 18:13:45.88 unix-monoでF#な俺に死角は無かった
490デフォルトの名無しさん
2013/09/15(日) 21:11:33.10491デフォルトの名無しさん
2013/09/15(日) 21:12:22.99 >>488
こんな過疎スレなのにこんな人間のクズしかいないとは哀れすぎる
こんな過疎スレなのにこんな人間のクズしかいないとは哀れすぎる
492デフォルトの名無しさん
2013/09/15(日) 21:18:26.19 そもそもスタンドアロンで使ってる奴がどんだけいるわけ?
なめてんじゃねえよ
なめてんじゃねえよ
493デフォルトの名無しさん
2013/09/15(日) 22:40:19.72 >>490-491
解説しただけなんだから、俺に言うなよ(´・ω・`)
解説しただけなんだから、俺に言うなよ(´・ω・`)
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- とらせん IPあり
- 巨専】
- こいせん 全レス転載禁止
- 【DAZN】ワールドカップ欧州予選総合 ★5
- 侍ジャパンシリーズ2025「日本vs韓国」その12
- 【J SPORTS】FIFA U-17ワールドカップ ★10
- 経済保安相「気に入らないことがあれば経済的威圧をする国への依存はリスク」日本さん遂にアメリカと断交へ!!! [472617201]
- 「世の中、バカが多くて疲れません?」👉1991年日本人大発狂 [543236886]
- 自閉症が「んなっしょい」と連呼するお🏡
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 来年は卵が1パック400円以上になるらしい
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
