【.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-
2011/09/16(金) 17:31:00.24
>>193
ありがとうございます
型定義を手で書かなくても済むようにするための
メタプログラミングの仕組み、みたいな感じでしょうか。。。
2011/09/17(土) 00:34:37.50
What's New for Visual F# in Visual Studio 11 Developer Preview
http://msdn.microsoft.com/en-us/library/hh370982(v=VS.110).aspx

msdn Libraryのなかに、VS11のドキュメントがもう揃ってるんかー
2011/09/17(土) 04:22:38.42
Visual Studio 11 Developer Previewは、日本語版もあって2012年6月30日まで使えるのか。
http://msdn.microsoft.com/en-us/aa570309#five

> Metroスタイルのアプリケーションを開発するには Windows Developer Preview with developer tools English, 64-bit上に
> Visual Studio 11 Developer Previewがインストールされている必要があります。
開発ツール付きWin8上にインストールすればMetroスタイルアプリ開発にF#も使えそう。
197775
垢版 |
2011/09/17(土) 09:34:30.73
Twitterで上がった話題(iOSでF#)で、F#のSymeがMonoのIcazaに、
build会場周辺でちょっと合って話さんかとかやってる。
2011/09/18(日) 07:06:06.41
F# 3.0 Quick Preview
http://www.slideshare.net/igeta/fsharp-langupd-fpm2011
2011/09/18(日) 09:43:03.31
C++のようなメタプログラミングができるのですか?
2011/09/18(日) 14:25:45.62
C++ の template みたいなマクロの延長のものじゃなくて、
ビルドプロセスをフックして型を作ってるんじゃないかな。
そっちも .NET (F# 含む)で書ける。
2011/09/20(火) 10:58:50.53
VS11 DP(ja)を、Win7(ja)とWin8 PR(en)にインストールしたが、VSからのF#(3.0) Interactiveが
どちらも日本語で表示しようとして文字化けしてる。(その画面だけ多国語対応してない?)

「C:\Program Files (x86)\Microsoft SDKs\F#\3.0\Framework\v4.0\Fsi.exe」を直接起動すると
win7(ja)で日本語、Win8(en)英語で正常に表示された。
2011/09/20(火) 13:06:00.07
MetroAppのソリューションテンプレート用意されてなかった。
さすがにリリース前あたりには、用意されるとおもうが、、

とりあえずWP7と同じようにギャラリーに来るのかな
http://blogs.msdn.com/b/dsyme/archive/2010/08/20/f-windows-phone-7-silverlight-templates-now-on-visual-studio-gallery.aspx
2011/09/23(金) 17:42:48.27
>>191
いまだに手応えとか、いつまでそんなこと言ってんだよ
一生前衛みたいな感じかw
204デフォルトの名無しさん
垢版 |
2011/09/27(火) 04:47:47.07
ScalaとF#と両方勉強しているのですが、
判別供用体(代数的データ型)の、パターンマッチについて教えてください。

Scalaでは、case class で定義すると、内部的には、class 定義に、applyやunapplyメソッドを持たせて、オブジェクトに対してパターンマッチを行っているようです。

F#の場合は、どんな感じでしょうか? F#の判別供用体も、実際はクラスから作られたオブジェクトなんですよね?? (.Net言語だから、そう考えたんですが。。)
そうすると、Scalaのapplyやunapplyに対応するメソッドを持ったクラスなんでしょうか?

教えてください、よろしくお願いします。
2011/09/27(火) 05:03:40.46
Scalaのapply,unapplyはよくしらんのだけれど、F#では各共用体は派生クラスとして実装される。
各々Tagを持ってるのでパターンマッチはそのTagを見てると思う。
206デフォルトの名無しさん
垢版 |
2011/09/27(火) 05:21:39.52
夜遅くに(朝早くに)ありがとうございます。
なるほどクラスとして実装されているんですね。
type A =
| B
| C
| D

だと、派生クラスB、C、Dが定義されていて
たぶん、スーパークラスとして、クラスA とか定義されているんでしょうか。(クラスAでなくてもよいとは思いますが)

もし、クラスAだとすると、このクラスAにもTagを定義するように定義されていると思いますが、
クラスAは、.Netというか、F#のクラス的には、もともと何クラスなんでしょうか?


ちょっと、質問がわかりにくくてすみませんが
たとえば

let hoge:A = B
とか、書いた場合に、
変数 hoge の束縛している、クラスが何かって、得る関数ありますか? という質問がしたいです。
(判別供用体のBを返すのでなく、元のクラスが何か? を得る関数という意味です。)
2011/09/27(火) 13:01:19.65
F#の中では知らん。
Reflection使ってbaseクラスたどってみては。
C#から見ると多分Aとして見れると思う。
2011/09/27(火) 13:14:29.26
普通に
type A = | B
hoge.GetType().Name
;;
でAって出てきた
2011/09/27(火) 13:20:04.19
type A =
| B
| C of int
let hoge = C 10
hoge.GetType().Name
;;
はCだった
210206
垢版 |
2011/09/28(水) 14:57:18.94
みなさんありがとうございます。
自分なりの理解はこんな感じになりました (↓素人理解です)

F#のレベルでは、
判別共用体と、クラス・オブジェクト は全く別のもの。

CLRレベル(.Netレベル)ではたぶん、同じような仕組みで実装されている。

一方、
Scalaは、いわゆる判別共用体は、クラスの拡張で実現されているように思います。
(applyやunapplyというものを定義したもの)

※ 素人の理解ですが。
2011/09/28(水) 15:07:34.34
>>210
ProgramingF#のC#Interropの章にF#で定義したunionがC#だとどういうクラスとして定義されるか出てるから見てみるがヨロシ。
webでもどっか転がってそうだけど。
212デフォルトの名無しさん
垢版 |
2011/09/30(金) 22:37:54.99
実践F# を読んでいると、
OOPの章のP264に、
本書では、詳細に踏み込みませんが、レコードや判別共用体の定義とは、F#コンパイラが構造的な性質
を持つように特別なパターンを適用したクラスとして生成するものです。本節では、特別なパターンが施されな
い、生身のクラスを定義する方法を示します(リスト8‐5)。

と書いてあって、F#ではクラスの特別なものが、判別共用体や、レコードのようなきがする。
2011/10/01(土) 06:37:51.43
特別なクラスというと語弊がある。
MSIL上は継承関係とか種類を表すタグとかが一定ルールに従っているただのクラスであり、其れが自動生成されているだけ。
2011/10/12(水) 10:06:47.51
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

46位か…… なんかえらい順位下げちゃったね。何でだろう。
2011/10/12(水) 14:56:32.45
1%切ってるところは誤差だろ。
2011/10/12(水) 18:43:17.12
TIOBEみたいな腐れ調査機関とか相手にすんなよ…
2011/10/22(土) 20:48:19.24
まあ、F#が20位以内というのはおかしいよね。
218デフォルトの名無しさん
垢版 |
2011/10/23(日) 03:15:14.94
しかしそれでもScalaより上って・・・・・目くそ鼻くそとはこのことか。

はやくJavaの時代終わらないかなぁ・・・・
2011/10/23(日) 12:42:45.14
>>218
scalaは関数脳に慣れてない人からは関数型言語部分に苦しんで、haskellやOCamlで関数脳になった人からは関数型言語としてはキモイから。。。

F#Express出たらかなり差が付くだろうね

haskellもGUIに特化した専門書とか出ないと伸びないんだろうな。。。
2011/10/23(日) 14:20:16.52
>>219
haskell でguiな本書こうか?
2011/10/23(日) 14:21:36.40
>>220
ぜひ!!
2011/10/23(日) 14:52:33.37
>>221
gtk2hs でもいいっすか?
haskell-qtはまだ使ったことないんです、、、
2011/10/23(日) 15:04:38.88
>>222
自分もgtk2hsの勉強始めたばかりなんで、渡りに船です
2011/10/23(日) 19:13:01.51
>>223
とりあえず開始するかもしれないです。
でも期待はしないでください、、、、
2011/10/23(日) 20:00:06.22
>>224
うい
2011/10/23(日) 20:32:16.83
たぶん原稿の成長とcarettahのコード品質は同期するだろー...λ
2011/10/26(水) 23:09:18.46
よく知らんが買わんぞ?
2011/10/27(木) 09:05:20.27
>>227
全く売れないのも面白いのでwwww
2011/11/09(水) 16:59:13.93
>>220
書いて
2011/11/09(水) 17:17:18.28
現在の購入予定者2名
2011/11/09(水) 19:01:13.54
良い本だったら買うし良い本ではなかったら買わない
2011/11/09(水) 19:04:24.86
>>231
同人誌レベルなら、、
2011/11/11(金) 03:51:46.57
>>220
買います
2011/11/11(金) 04:23:18.13
>>220
SOEより凄いなら買う
2011/11/11(金) 13:59:41.00
https://github.com/fsharp
githubに、fsharpオープンソースコミュニティーというのがあるのか。
donsymeがいると公式感があるな。
mono開発者のicazaも入ってる。
F#はClojureCLRと違って余裕あるからか、monoとの互換性も重視してたの思い出した。
2011/11/11(金) 14:04:43.63
http://wizardsofsmart.net/post/iteratee-in-f/
最近FPではやりのIteratee使った関数型っぽいIO作り始めたよという記事?

future-io
https://github.com/fractureio/fracture

fsharpxってのがあるのか。
scalazとはまた違う?
https://github.com/fsharp/fsharpx
2011/11/11(金) 14:18:47.50
作ってるのはSocket IOだった。
Fracture/Pipelet/Frackって分かれてる。
future-ioはSSDだった・・・orz
2011/11/14(月) 01:37:08.30
M$がhtml5の構想に弱音を吐いて.net戦略を撤退したらf#ってどうなるんだろ
2011/11/14(月) 01:51:46.03
VisualOcaml作って欲しい
2011/11/14(月) 01:54:35.63
VisualHaskellを(ry
2011/11/14(月) 02:54:08.28
F#はType Classの要望が強かったけど
.netの型システムとの互換性を重視して入れなかったとどっかで言ってたから
H#はないんじゃないの?

ちなみに"Visual Haskell"は既にあるよ
2011/11/14(月) 06:45:33.31
>>241
>ちなみに"Visual Haskell"は既にあるよ

そうだった。VS2010に対応したかな?少しは安定したかな?
全然使えなさそうですっかり忘れてた

>F#はType Classの要望が強かったけど
>.netの型システムとの互換性を重視して入れなかったとどっかで言ってたから

・・・orz
2011/11/14(月) 09:38:24.83
Haskellようしらんのだが、型クラスあるとなにがどう幸せになるん?
2011/11/14(月) 13:06:42.36
>>243
多層的で等価比較、順序比較出来るリストを簡単に定義出来たりする

data List a = Null | List (List a) deriving (Eq,Ord,Show,Read)

使用例

List 1 (List 2 (List 3 Null))

head (List x _) = x

tail (List _ xs) = xs
2011/11/14(月) 15:21:15.27
Eq,Ordが型クラスで、List aがインスタンスだから、例としてはこっちが適切か

large xs ys | xs < ys = (ys,xs)
large xs ys = (xs,ys)
2011/11/14(月) 19:28:12.45
C# のプロジェクト で F# のファイルのインポートがどうしても
できないんですがどっかにまとまってないでしょうか?
あとC#プログラム中でfsファイルの実行は不可能なのでしょうか?
C#, F# のプログラムがそれぞれ下のようだったとして

main(){
exec(1.fs); //this is c# code
Console.WriteLine("aa");
}


########
let a = 3 // this is F# code
printfn "hello"
#########


実行して
hello
aa

となるような
247246
垢版 |
2011/11/14(月) 20:27:08.67
インポートは出来ますた

http://beyondrelational.com/blogs/niladribiswas/archive/2011/08/09/how-to-call-a-f-dll-from-c.aspx
2011/11/14(月) 20:53:17.11
F#側のdllをC#でインポートするだけでしょ?
249デフォルトの名無しさん
垢版 |
2011/11/17(木) 21:05:56.68
>>246
ねーよ
2011/11/17(木) 21:56:28.38
この先長そうだね。
コンパイラと実行ファイル
evalとコードとか関係を勉強するのが先のようにも見えるが、とりあえず。

http://www.google.co.jp/search?hl=ja&q=c%23+f%23+%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88
251デフォルトの名無しさん
垢版 |
2011/11/18(金) 21:39:55.75
え?
2011/11/19(土) 01:58:24.47
いや、この発想はまだまだ用語や概念判ってないのかなと思って
exec(1.fs); //this is c# code
2011/11/19(土) 23:55:32.57
F#のevalは興味あるんだけどfsiのソース見ればいいのかな?
2011/11/20(日) 19:04:44.86
ocaml のfunctor の代替手段はF#だとなんですか?

255デフォルトの名無しさん
垢版 |
2011/11/24(木) 21:32:53.28
XML に Serialize したいんだけど、mutable にするしか方法ない?

ttp://cs.hubfs.net/topic/None/57413
↑は見たんだが、02-SerializeXml.zip はダウンロードできないみたい
256デフォルトの名無しさん
垢版 |
2011/12/10(土) 12:47:04.33
http://d.hatena.ne.jp/zecl/20111004/p1
F#でぷよぷよだって。コード全然読めん
2012/02/14(火) 05:18:11.05
あら止まってんの
ブロガー結構増えてんのに
2012/02/18(土) 20:32:01.56
580 名前: デフォルトの名無しさん Mail: sage 投稿日: 2012/02/16(木) 05:11:31.94
F#を始めたのだが、モナドで行き詰まっている。
F#の本にはモナドのことが書いていない。
で、ネットでモナドのことを収集すると、ハスケルのがほとんど。
F#での説明もあるが、なんか解りづらい。

で、モナドって何ですか?
関数型プログラミングをやるにはモナドが必須ですか?

どなたか教えてください _o_

613 名前: デフォルトの名無しさん Mail: sage 投稿日: 2012/02/17(金) 09:25:13.67
>>580
ここは読んだか?
http://www4.atwiki.jp/fsharpmaster/m/pages/13.html

>StatefulFuncはなぜ動くのか?
>  StatefulFuncを含むワークフロー(モナドとも)を理解する道筋はいくつかあ
> ると思いますが、まず最初に「操作的」に手を動かしてプログラムの意味を解き
> ほぐしていくアプローチを取ってみようと思います。
2012/02/18(土) 20:41:36.83
>>169
日本語翻訳版
F# プログラミング - F# で MVVM アプリケーションをビルドする
http://msdn.microsoft.com/ja-jp/magazine/hh394149.aspx
2012/02/18(土) 20:47:33.70
MVPVM 設計パターン - WPF 向けのモデル - ビュー - プレゼンター - ビューモデル設計パターン
http://msdn.microsoft.com/ja-jp/magazine/hh580734.aspx
261デフォルトの名無しさん
垢版 |
2012/02/19(日) 12:59:47.35
【消しゴム】MONOを使ってみるスレ4【じゃない】
http://toro.2ch.net/test/read.cgi/tech/1329023778/
262デフォルトの名無しさん
垢版 |
2012/03/09(金) 00:57:53.79
もまいらもっとF#書けや
2012/03/09(金) 11:01:16.34
みんなTwitter
に行っちゃってるのかな。
264デフォルトの名無しさん
垢版 |
2012/03/10(土) 17:23:56.54
本質的には別物
265デフォルトの名無しさん
垢版 |
2012/03/16(金) 20:14:45.72
F#はどこの世界が流行してるの
2012/03/16(金) 20:32:47.41
俺の中では超マイブームです(´・ω・`)
2012/03/16(金) 22:51:06.54
英ケンブリッジなら、Haskell,F#,Erlang,Clojure流行ってる
2012/03/16(金) 22:54:28.67
http://www.google.co.jp/trends/?q=F%23
アイルランド?ロシア?
269デフォルトの名無しさん
垢版 |
2012/03/20(火) 07:16:12.67
ウィキ作った。
書くの手伝ってくれ。
http://goo.gl/9UG1y
2012/03/20(火) 09:24:17.53
>>269
なんでいきなりFreeBSDやねん!
2012/03/20(火) 23:06:53.00
F#/monoを扱うなら解るようにした方がよいかも?
そして、MonoとF#のインストールの関係で、Linux or OSX, FreeBSDの順で情報がない気がする。
使い始められればそんなに変わんないと思うけど。
2012/03/25(日) 18:09:42.02
code quotationとtype providerを組合わせたらlisp macroみたいなことができるんです?
2012/03/28(水) 05:53:43.99
何でこんなに過疎ってるんです?
2012/03/28(水) 08:57:57.00
世の中が変態ばかりだったら困るだろ?
2012/03/28(水) 22:12:22.72
LISP Haskell Scalaなんかは変態ばかりでも伸びてるんで
むしろ変態へのアピールが足りてないが正しい

関数型がいいといっても.netならC#、
いざ関数型の勉強だ、ってF#にするくらいなら他の言語に目移りするわけだ
もはや言語ヲタを引きつける言語としての魅力、が欠けてるのははっきりしたと思う
それでもF#好きなのは変態のさらに変態?いやいやただのマイノリティ
2012/03/29(木) 00:12:16.08
>F#にするくらいなら他の言語に目移りするわけだ

ごめ、なにを根拠に光入ってるのか意味不(´・ω・`)
F#いいよー
2012/03/29(木) 00:26:09.28
公式フォーラムも、あんまり使われてないね。
http://social.msdn.microsoft.com/Forums/en-US/fsharpgeneralja/threads?sort=lastpostdesc
ただ、かの名古屋の地ではocaml, F#, scalaを受託環境にあわせて使い分けてると聞く。
いまだとblogやtwitterなら答え返って来ることもあるよ。

英語が苦にならないなら活発なフォーラムがあるので無問題。
http://social.msdn.microsoft.com/Forums/en-US/fsharpgeneral/threads?sort=lastpostdesc
http://stackoverflow.com/questions/tagged/f%23
( http://cs.hubfs.net/topic-tag/0/1/f~23 )
2012/03/29(木) 10:25:53.05
OCamlも道連れで寂れてるし
D言語スレなんて誰が使ってるかさっぱりわからんが未だに書き込みあるからなあ
まあ粘着質な人が少ないんだね
2012/03/29(木) 11:07:38.18
関数言語厨が.net環境ででも関数型ぽいことをしたくて使う言語だわ
2012/03/29(木) 15:21:25.50
とりあえずF#じゃなくてC#を使わないといけない理由が殆ど無いのでF#ばかり使ってます(´・ω・`)
デザイナー等C#必須であれば、F#のモジュールと混在って感じですね。
PortableLibraryに期待(´∀`∩)↑age↑
2012/03/30(金) 00:48:03.82
>>273
Haskellスレも概ねそうなんだが、簡単に関数を自作出来ちゃうから、「こう言う事したいんだけど、どう書けば良い?」みたいな質問はほとんど無い
自分も、Haskellスレで質問したのは練習問題でリスト内包表記でこう言う関数を書けって問題の時だけだったし
変に制限付くとどう書けばいいのか分からなくなる事はあっても、制限なしだと、割と初心者でも関数書くのに困ること無いのが関数型言語の良い所だと個人的には思ってる
オブジェクト指向言語だと、オブジェクト自作するのは意外と面倒だし、メソッド覚えれば、ある意味じゃ関数型言語よりも簡潔なんだけど、リファレンスと睨めっこしてメソッド覚える必要がある
(なので、こう言う処理するメソッド無い?とかの質問がオブジェクト指向言語のスレでは絶えないんだと思う)
2012/03/30(金) 01:03:01.29
とりあえず、なごやこわい
283営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/03/31(土) 06:35:15.28
F#でWindowsPhoneの開発をしたいんですが
Visual Studio 2010 Express for Windows Phoneじゃ無理なんでしょうか?
http://visualstudiogallery.msdn.microsoft.com/17454c58-c1d9-4640-afe1-7943db13891e/
Visual Studio 2010 Professionalがないと開発出来ないんですかね?
2012/03/31(土) 12:23:21.11
>>283
「visual studio 2010 express f#」でググったら、先頭のページに
Visual Studio 2010 ExpressにMicrosoft F# CTPを組み込む方法と
すでにF# April 2011 CTPが出ている事が書いてありました。

Visual F# Express Edition の入手方法
http://d.hatena.ne.jp/Nobuhisa/20100905/1283678443
2012/03/31(土) 18:25:38.97
無償環境だと、F#はVS Shell、WPはVS C# Expressに結びつく。
そして、F#を通常のVSに結びつけるのには、ExpressではなくProfessional以上じゃないといけないはず。
286営利利用に関するLR審議中@詳細は自治スレへ
垢版 |
2012/04/01(日) 05:19:32.41
ありがとうございます
つまり、無償ではF#でWindowsPhoneの開発は出来ないって事でいいですか?
2012/04/01(日) 09:13:04.20
>>286
IDE使わなきゃ出来るでしょ。
2012/04/01(日) 18:23:52.74
イデの力は使うべき
2012/04/01(日) 20:09:10.15
イデに取り込まれるぞ
2012/04/01(日) 20:27:12.26
shellとC# expressをバラバラに使って、開発は出来るので、
F#でportableなライブラリーつくって、UIはC#かな。
2012/04/01(日) 20:36:18.11
http://msdn.microsoft.com/ja-jp/magazine/gg983483.aspx
http://visualstudiogallery.msdn.microsoft.com/092d3f67-c938-4e53-ba1f-3baf6a15aa89
http://freshbrewedcode.com/danmohl/2012/01/23/making-f-windows-phone-development-a-little-easier/

MonoDevelopも、F#環境用意するの面倒だし、wp開発環境も分かりやすい物ではなかった気がする。
2012/04/01(日) 22:22:29.30
http://visualstudiogallery.msdn.microsoft.com/site/search?f%5B0%5D.Type=User&f%5B0%5D.Value=Daniel%20Mohl&sortBy=Date
F#のプロジェクトテンプレートいぱーい
2012/05/02(水) 13:05:02.14
webページの日本語をパースするスクリプトを
f# + .netで作ってみるお
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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