【.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-
2015/09/30(水) 19:40:45.51ID:3ArnGa1B
>>669
Amazonに2冊しかなくて笑った
やっぱオライリーが王道かね
2015/09/30(水) 20:55:54.47ID:ADuYXxsi
>>677
これから始めるのなら、いげ太さんと荒井さん共著の本で。
古いけど、基本的なところであれば充分。
http://www.amazon.co.jp/dp/4774145165

この本以降に追加された機能について書かれた本は、洋書を当たることになる。

https://www.manning.com/books/f-sharp-deep-dives
は、利用例などが網羅的に書かれてた。
679デフォルトの名無しさん
垢版 |
2015/10/01(木) 17:39:05.26ID:5FYO2fZ9
>>365>>369
だいたいこいつらのせい
反省したか?
680デフォルトの名無しさん
垢版 |
2015/10/01(木) 17:42:24.77ID:5FYO2fZ9
>>675
おまえまだいたの?
F#スレでどうしてもキモイがどうとか話題にしたいのか
みんな迷惑してるがな
あとキモイ
681デフォルトの名無しさん
垢版 |
2015/10/01(木) 17:43:19.73ID:5FYO2fZ9
>>675
わざわざこのスレに書き込むためにID変えてるとかキモい
682デフォルトの名無しさん
垢版 |
2015/10/01(木) 17:44:09.65ID:5FYO2fZ9
>>676
勝手に参加すればいいんじゃない?
どうぞどうぞ
683デフォルトの名無しさん
垢版 |
2015/10/01(木) 17:45:13.25ID:5FYO2fZ9
>>677
何が2冊しかないのか意味不明
勝手に笑ってろ
2015/10/01(木) 17:51:21.14ID:jG+zeN4F
>>365>>369 のように
F#ブロガーの人柄に問題ありすぎた
F#なんて関係なかったようなツラしてるお前ですよ
2015/10/01(木) 22:18:55.75ID:sCnwnZ4B
ID:5FYO2fZこいつ真性だろ…
2015/10/01(木) 22:19:30.77ID:sCnwnZ4B
ID:5FYO2fZ9だった
687デフォルトの名無しさん
垢版 |
2015/10/01(木) 22:57:44.87ID:PxnDQ6Dp
>>679
お前何と戦ってるのwww
2015/10/02(金) 03:48:03.81ID:aerj1S9u
過疎スレがなんか伸びてるなーと思って見に来れば大抵こういう展開だな
2015/10/15(木) 04:53:24.26ID:i9gnKKPa
>>568
対話型インタプリターなら明らかに1,2を争う重さ
これをあたかも重くないとか無理ありすぎ
690デフォルトの名無しさん
垢版 |
2015/10/15(木) 07:36:53.33ID:NdAXA3Ht
別に普通に動くしな
動画のエンコードでもさせるの?
691デフォルトの名無しさん
垢版 |
2015/10/15(木) 13:28:31.37ID:070VodXJ
>>688
それだけ話題がないだけなのに特定個人に責任をなすりつけるのは卑怯
ちゃんと荒らしてる奴叩けよ
2015/10/15(木) 13:29:04.04ID:070VodXJ
>>685
何が真正なんだよ
スレ荒らしてんじゃねえぞゴミ
693デフォルトの名無しさん
垢版 |
2015/10/15(木) 13:29:25.42ID:070VodXJ
>>687
お前こそ誰と戦ってんだよゴミ
2015/10/15(木) 13:30:21.60ID:070VodXJ
>>690
これはひどいわ
決して重いことを認めようとしない
こいつ真性だろ…
2015/10/15(木) 13:31:15.01ID:070VodXJ
>>685>>686>>687
反省しろよ
696デフォルトの名無しさん
垢版 |
2015/10/15(木) 13:32:34.50ID:jR2HY8sf
>>690
動画のエンコードでもさせるのって全く話すり替えちゃってんじゃん
ちょっと頭おかしいんじゃないの?
2015/10/15(木) 13:33:15.57ID:jR2HY8sf
>>568>>690
別に普通に動くしな キリッ
動画のエンコードでもさせるの? キリリrッ
2015/10/15(木) 13:33:54.62ID:jR2HY8sf
>>688
お前みたいな奴が面白がって煽るからだろ
2015/10/15(木) 13:35:38.61ID:jR2HY8sf
>>690
対話型インタプリターなら明らかに1,2を争う重さ
って事実言ってるだけだろ
なんで認めないのかな
2015/10/15(木) 13:37:41.51ID:jR2HY8sf
>>690
上げてまでこんなアホなこと書くなよ
お前みたいな奴のせいでF#が盛り上がらないんだろうが
2015/10/15(木) 13:40:11.14ID:fKPw05Xd
海外では人気ある(笑)

http://www.meetup.com/ja/nycmobiledev/events/225356544/?eventId=225356544
天下の Petzold がF#の公演だと?
なんという人気なんだ!!!!
2015/10/15(木) 13:41:05.51ID:fKPw05Xd
真正とか意味の分からない煽りしかしてこないくせに
ちゃんとF#の話題振れるのが俺だけという情けなさ
これが現実
2015/10/15(木) 18:25:16.73ID:I20ULMb+
俺もIDEやクロスプラットフォームの話題出してるけど、誰も反応無いから安心しな!
2015/10/23(金) 08:16:53.04ID:+AiXCDdV
意識高い系言語だから
2015/10/23(金) 11:33:08.53ID:9hpieugb
意識高い人はElixirに行ってる
2015/10/24(土) 00:17:31.88ID:OhO9p6/T
いやいや.netとelixirは、と思ったけど、ホットな話題を巡回してる人はだいぶ前に移ってelixierも試してるだろうというのはあるな。
707デフォルトの名無しさん
垢版 |
2015/10/24(土) 00:25:41.20ID:y0a6t9gb
.NET抜きにしても F# 悪くない言語だと思うんだけどなあ。
OCamlほど冗長じゃないし。
708デフォルトの名無しさん
垢版 |
2015/10/24(土) 05:28:11.77ID:tRPQGNB2
.NET Nativeの対応決定おめ(´・_・`)
https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/9110134-f-support-in-net-native-for-uwp?tracking_code=9be96599c49c92ae7b657789dce60a31
709デフォルトの名無しさん
垢版 |
2015/10/24(土) 12:18:26.97ID:niXzNvfm
おめおめ
2015/10/24(土) 14:49:08.52ID:OhO9p6/T
おめおめおめ
いまは、ストアアプリ対象なんだっけ?
2015/11/01(日) 05:16:58.53ID:6SuNdK23
いまいち良い使いどころが思いつかない。大体全部C#で済ましてしまう
712デフォルトの名無しさん
垢版 |
2015/11/01(日) 09:18:28.60ID:CKqa9WWI
>>711
C#で書くよりF#で書く方がはるかに楽だぞ
XAML絡みとかテンプレートが足りないとか以外でF#使えるところは全部使ってる。
2015/11/07(土) 12:07:04.32ID:ptDOELGY
FParsecで簡単にパーサが書けたのは良かった。
が、400行程度のパーサをMonoDevelopで開こうとしてフリーズしたり、LINQ to EFを使おうとしてよくわからなくなったりなど、
F#の周囲の開発環境で挫折中。気力が沸いたらまた挑戦するかもしれん。
2015/11/22(日) 16:09:28.61ID:WQKsREk7
F#の過去,そして未来 - F# Gothamでの議論より
http://www.infoq.com/jp/news/2015/11/fsharp-gotham
2015/12/01(火) 09:24:46.90ID:mwTr+o4y
roslynの仲間に入れてもらえないのかw
716デフォルトの名無しさん
垢版 |
2015/12/01(火) 09:59:57.25ID:q7bUA74Z
入れてもらえないっていうかRoslyn作ってる奴が馬鹿だから言語中立な部分と特有な部分をごっちゃにしてるから迷惑してるって感じかと
.NET Nativeにしてもそうやね
2015/12/01(火) 20:26:50.02ID:P+zGSQ58
char+stringのスマートな書き方は?
2016/02/18(木) 02:33:49.99ID:qcoEpmKF
>>712
楽かどうかは主観だろ
5人位は楽だと思う人がいるだろそりゃ
2016/02/18(木) 02:36:02.75ID:qcoEpmKF
楽だ楽だと主張してる奴がいるのになんで盛り上がらないのか
答え:5人位が楽だと言ってるだけだから
2016/02/18(木) 02:36:57.45ID:qcoEpmKF
visual studio community editionのおかげで導入もはるかに楽なのにだ
2016/02/18(木) 02:55:44.41ID:8+wq2XIa
単純に怖いんだろう
Silverlightが終わるとことか見てるし
722デフォルトの名無しさん
垢版 |
2016/02/18(木) 12:08:42.28ID:m09s+2fy
>>718
同様なものをC#とF#で作って、F#の方がはるかに短いコードでバグも少なくできたって調べてる人海外で幾つか見るけどね

大体言語の好みなんてほぼ主観だと思うけど、主観では型をアッチコッチに書かなきゃいけないC#は本当クソだわ

F#実案件での使用で問題なく使えてるから流行ろうがどうでもいい。
海外ではまあ十分盛り上がってるみたいだしサポート切られる事もしばらくないだろ
2016/02/29(月) 02:46:32.13ID:nByWuiD1
流行らなければスパッときってくるよ。
724デフォルトの名無しさん
垢版 |
2016/02/29(月) 07:18:33.41ID:1lOTNWnw
オプソニなってるからそこまで痛く無い
つーてもVSとかからサポートされなくなるとキツイんだが。
切ったらMSセンスねーなとは思う
2016/03/01(火) 20:07:37.96ID:GW+Y//Y5
良いものが流行らず消えてく何てことは数限りなくあった
F# は今頑張らないと消えると思う
2016/03/31(木) 20:11:09.32ID:EaHe9wWS
F#はこれから頑張るとかいう時期は終わってるでしょ
今あるのは一通り評価得た結果あって
一部の人は気に入った、ということでいいと思う
普及するのまだまだこれからだ!
なんていう寝言はさすがにやめてほしいが
2016/04/02(土) 12:34:40.46ID:thGUj6UI
未来の言語(ω)
2016/04/02(土) 21:52:10.85ID:Ir4Fa+v1
世界で最も支払いの良い言語はF#
http://i.gzn.jp/img/2016/03/18/stack-overflow-developer-survey-results/snap5225.png
http://gigazine.net/news/20160318-stack-overflow-developer-survey-results/

ここだけ見ると勘違いしてしまいそうだ
2016/04/03(日) 13:58:40.61ID:SJ9U6W4k
求人してるのが海外の金融関連中心ってのもあるかもね。
暗黙的に統計か金融の知識が必要な気がする。
2016/04/06(水) 12:57:58.71ID:QwJxwviB
F#オンリーの案件はむしろ稀でしょ
F#がわかる=C#エキスパート+実務経験あり&並行化の知識あり
と遅延評価すると妥当になる
731デフォルトの名無しさん
垢版 |
2016/05/01(日) 16:56:51.63ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
1t
2016/06/11(土) 17:16:42.35ID:ZtEjhTwV
F#勉強しはじめたばっかりですが、どなたか教えてください

Visual Studio 2015でF#プロジェクト作ってみたんですが、
「新規フォルダーの作成」のメニューがどこにも見当たらない
JavaとかC#とかでは、パッケージやnamespaceの階層に合わせてソースフォルダ掘ったりしますが、
F#ではそういうの無くて、ソースファイルはフラットに置いておくものなんでしょうか?
733デフォルトの名無しさん
垢版 |
2016/06/11(土) 17:30:27.31ID:zSGsCTOB
>>732
extentionでF# Power Toolsというのを落とせばその機能が使える。
2016/06/11(土) 17:46:54.54ID:ZtEjhTwV
>>733
できました!
ありがとうございます
2016/06/23(木) 00:57:26.96ID:zQLdlEzo
>>733
*extension*
2016/08/22(月) 01:34:27.92ID:+JfquTF3
F#の未来はわからないがMLの流れは絶えることはない
2016/08/22(月) 01:38:01.40ID:+JfquTF3
MLが生んだletは立派に独り立ちを始めている
2016/08/23(火) 18:31:49.04ID:kLQdwxaf
コボラーに対抗してエムエラーと名乗ろう
2016/08/30(火) 06:15:16.07ID:Wv3ZANeS
OCamlも捨てがたい
http://qiita.com/HirofumiYashima/items/98d35b40dde12bbb5d6d
2016/08/30(火) 06:21:19.09ID:Wv3ZANeS
>>739
このサイトには誤訳があるので注意してね
741デフォルトの名無しさん
垢版 |
2016/08/30(火) 20:42:10.14ID:vrBeNxH6
間違いの無い記事は少ない
間違いを見つけ乍ら読むのがリテラシー
2016/09/02(金) 02:36:07.94ID:D4RF+Hn1
discriminated unionも次々に採用されてるな
やれやれ
743デフォルトの名無しさん
垢版 |
2016/09/02(金) 06:36:24.81ID:93bhRaHZ
どこに採用されてる?
2016/09/02(金) 07:20:36.66ID:D4RF+Hn1
typescript
2016/10/09(日) 13:09:22.51ID:7SKhoL6o
.netにバインドするライブラリってのは
たとえばデリゲートをどうすんのかとか
属性どうするのかとかですぐつまづいてしまう
JScript.NETやIronPythonがまさにそうだ
F#はそのへん良く頑張ってるな
2016/11/13(日) 17:24:09.92ID:4ToPYL6s
F#というより.netの使い方の勉強に時間取られてなんだかね
2016/11/15(火) 16:44:14.09ID:G5nfQU/Z
質問させてください
F#をC#と併せて勉強中です。C#の場合、高階関数に渡すラムダ式の中で
以下のように配列のインデックスを使えるのですが、F#だとどう書けばよいか分かりません
F#のラムダ式中で配列のインデックスを使う方法があればお教え願います

(C#)
var array1 = new[] { 12, 33, 46, 8, 23, 42, 41};
var array2 = array1.Where((x, index) => index % 2 == 0).ToArray(); // array1の偶数番目のみの配列を新たにつくる

(F#)
let array2 = Array.filter (fun x index -> index % 2 = 0) array1 // こうはできない
2016/11/15(火) 17:51:26.35ID:Z1GMtli2
ちょっと長ったらしくて、もっとスマートなやり方があるかもしれんが
とりあえずは、こうすればできる

Array.mapi (fun index x -> (index, x)) array1 |>
Array.filter (fun (index, x) -> index % 2 = 0) |>
Array.map (fun (index, x) -> x)
2016/11/15(火) 18:46:06.01ID:G5nfQU/Z
>>748
なるほど、mapiだとインデックスが使えるんですね
そこで一旦indexを要素にもったタプルの配列をつくると
勉強になりました
750デフォルトの名無しさん
垢版 |
2016/11/15(火) 20:50:47.44ID:OT10uw27
filterとmap重ねるならchoose使え
2016/11/15(火) 23:40:23.50ID:s5pds+TJ
indexed ( ボソッ
2016/11/16(水) 18:51:58.42ID:URMKBQmU
>>750-751
ありがとうございます
スマートに書けるようになりました

Array.indexed array1 |> Array.choose (fun (index, x) -> if index % 2 = 0 then Some x else None)
2016/11/16(水) 19:16:01.41ID:5e/LkvO+
>>747
普通にこれでいいよLinq要らない
http://ideone.com/rfIh9S
2016/11/16(水) 19:33:48.20ID:URMKBQmU
>>753
わざわざありがとうございます
こういうyieldを使った書き方はまだ詳しく勉強してないんですが、
こっちだと中間のデータをつくらないんでパフォーマンスがよさそうですね
勉強して試してみます
2016/12/13(火) 03:00:30.70ID:1DM7j7BI
F#って普通に個人で趣味アプリ作ったりする場合でもC#と比べて恩恵感じられる?
関数型って算術演算や金融関係で威力を発揮するけどそれ以外だと却って手間が増えるだけみたいなイメージある
2016/12/13(火) 03:18:24.44ID:neuXXcOh
出力が手間ってだけじゃね
2016/12/13(火) 09:05:12.17ID:/Iv3sNJB
>>755
C#に比べてVSのサポートがイマイチって所が多々あるけれど、それを補ってかつはるかに上回るメリット得られるお。
正直C#でなんかサポートが足りない所、たとえばUI周りとか以外で使いたくないしF#使える所は全部F#で書いてる。
2016/12/13(火) 09:06:19.31ID:/Iv3sNJB
F#はバージョンが5つぐらい進んだC#と捉えるのが正しいと思う
2016/12/13(火) 12:12:52.87ID:hu4l98Ut
うむ
2016/12/13(火) 15:31:59.53ID:c8n9s3lN
>>757
そんなにすごいのか
興味あったし頑張って勉強してみるよ
2016/12/13(火) 19:01:53.31ID:QZ8rc8DA
>>760
やってみて損はないと思いますー
実案件で使えなくても考え方学ぶことでC#での書き方も良くなると思うし、実案件でも人の問題とかなければ使える場面は多々あると思う。
2016/12/13(火) 20:54:07.46ID:MsMt5e8s
みんな、競プロでもっとF#とOCamlを使おうぜ
2016/12/27(火) 16:04:36.71ID:r8OAYz75
勉強し始めたけど、いつなくなるのか心配
MSって、切るときはバッサリ行くよな
764デフォルトの名無しさん
垢版 |
2016/12/27(火) 16:22:15.15ID:ov9/Tp6R
もうとっくにイってます
2017/01/16(月) 12:32:54.03ID:w3fpx7c2
F#デビューしようと思って本探してるんだがC#er向けの本ってないのな
ググるとサイトはいっぱい出てくるけど
こういう場合は関数型言語について書かれた本をとりあえず買っとけばいいのかな
2017/01/16(月) 13:40:50.81ID:of8fDlu0
Real World Functional Programming: With Examples in F# and C#
かな。たしか英語の原書しかないけど
でもまずプログラミングF#読んだ方がいいと思う
2017/01/16(月) 14:05:39.31ID:cZ5PGvSb
俺は実践F#関数型プログラミング入門って本で勉強したけど、なかなか良い本だったよ
書き方が平易な感じでサクサク進められて、基礎的な部分は一通りキッチリ習得できたと思う
2017/01/16(月) 16:56:59.00ID:rgwnOlnx
勉強中で悪いんだけど

実践F#関数型プログラミング入門は確かにとっつきやすいんだけど
説明不足と思われるところが散見されるように思う
かといってプログラミングF#で十分ってわけではないんだけど

例えば、今アクティブパターン見てるんだけど、いまいち動作がわかんねー
分類としての役割と、型変換の役割があるみたいだけど、
その内部動作っというか、統一的にどのように動作してるのかがわからん
2017/01/16(月) 21:42:59.51ID:meiXzXMj
実装は関数呼び出しの条件一致だろうけど、使うぶんにはそのパターンになるかどうかって感じでよくないか?
パラメータわたしのやつは順序がおかしくて分かりづらいと思うが
2017/01/16(月) 21:44:10.62ID:meiXzXMj
>>766
俺もその本で関数型学んだ
モッナードとかは無いけどオブジェ脳の人が感触をつかむのには良いよね
2017/01/17(火) 12:28:38.43ID:8zwXc9tZ
>>769
以下の=ソース=において、 | FIleExtension ".jpg"はどう動作すると考える?
プログラミングF#には記述があるからわかるけど
普通に ".jpg"はFIleExtensionの引数にしか見えない

疑問点1 match式の|の後はパターンの記述だけど、関数呼び出しの場合の約束事が不明
疑問点2  | FIleExtension ext は.jpgの方とほぼ同じ記述だけど、こちらは代入
       さしあたって、切り分けできるのかな? 出来たとしても、わかりずらいし。

=========== ソース ============

let (|FIleExtension|) filepath=Path.GetExtension(filePath)

let determinFIleType(filepath :string)
match filepath with
| FIleExtension ".jpg"->printfn "画像"
| FIleExtension ext->printfn "未知 [%s]" ext
772711
垢版 |
2017/01/17(火) 12:30:49.29ID:8zwXc9tZ
あれ?空白が無視されてるな

match式以降はブロック別で、ずれてますので、
まぁわかりますよね
2017/01/17(火) 15:40:46.37ID:AtzKNi4C
|の後は元の値がこのパターンに合うか?って感じの比較対象が来るのでFileExtension ".jpg"と言う値って感じに掴んでる。
正規表現の奴はそのregexを元にほにゃららを返す値って感じ。
けどほんとはパターンを区別するって言うセレクターとした方がいいのかな?
2017/01/17(火) 16:21:52.44ID:8zwXc9tZ
たぶん違う

| FIleExtension ".jpg"->printfn "画像"の方は、
FIleExtensionの引数がfilepathで、その結果が".jpg"とマッチするかどうか

| FIleExtension ext->printfn "未知 [%s]" extの方は
FIleExtensionの引数がfilepathで、その結果をextに代入(let束縛?)

って、ことみたい(プログラミングF#に記述の例で上のように解釈するような説明あり)
実践F#にも同様な例(P295)はあるけど、こちらは、説明なし
2017/01/17(火) 16:57:47.21ID:AtzKNi4C
いや俺はそう言う風な理解をしてるって話なんだが。
実体は上から順番に関数呼び出しの条件マッチだと思うが動作の仕組みを知りたいんだったらILを見れば。
2017/01/17(火) 17:34:24.12ID:8zwXc9tZ
>ILを見れば。
たしかにね。いままで避けてきたから、考え付かなかった。

ただ、実践F#の方はなんの説明もないんだよ
それで理解できるわけないってーの
(| FIleExtension ".jpg" なら、FileExtensionの引数は”.jpg”でその結果が、filepathとマッチが
普通の理解だと思う)

多分、F#の文法理解のキモは、実践F#のどっかに書かれてた、
”let束縛や関数束縛にはパターンマッチが宿る”ってのがあって

それは何ぞやってことかなとも思うんだけど 
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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