トップページ⇒tech
995コメント296KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2007/08/02(木) 14:03:05
MSResearchから出てきた.NETで使える関数型言語のひとつF#
OCAMLの流れを汲むこの言語、いろいろと面白そうなことができそう。
まだまだ英語の情報しかないこの言語について、幅広く語れ。

http://research.microsoft.com/fsharp/fsharp.aspx
0002デフォルトの名無しさん2007/08/02(木) 14:06:09
J#の間違いじゃね?
0003デフォルトの名無しさん2007/08/02(木) 14:08:03
F# のスレっていつの間にかに落ちてたのか
需要無いんかね
0004デフォルトの名無しさん2007/08/02(木) 14:14:43
おおお!!ついにきた!
0005デフォルトの名無しさん2007/08/02(木) 14:22:09
レスの数わずか9で終わったスレ:

>Windows Live プログラミング

5 :デフォルトの名無しさん:2007/05/23(水) 03:51:43
くだらねえ。なんでタダでMSの奴隷にならなあかんの。

7 :デフォルトの名無しさん:2007/06/15(金) 08:37:17
漏れのW-zero3に
LIVEのサービスにシンクロするのを入れたけど
接続しっぱなし、常に電源オンで
頭にきて速攻消した。
OFFICEは付き合いで買ってみたけど
VSはもう川根。

8 :デフォルトの名無しさん:2007/06/15(金) 23:14:07
>>5
Webサービスの類は自前でサーバを作らない限りどこかの会社の奴隷じゃよ

9 :デフォルトの名無しさん:2007/06/16(土) 13:29:16
だからLAMPで組むところが多い
0006デフォルトの名無しさん2007/08/02(木) 14:34:03
ここは6で終わりか
0007デフォルトの名無しさん2007/08/02(木) 14:35:34
7まではいく
0008デフォルトの名無しさん2007/08/02(木) 14:40:07
昔あったF#スレは190レス位で落ちた。
他の関数言語スレも過疎ってるし、単独スレはきついだろうな。
0009デフォルトの名無しさん2007/08/02(木) 14:46:43
せめて、F#〜J#について語れ、とセットにしてはどうだろう?
0010デフォルトの名無しさん2007/08/02(木) 14:48:04
       |
   \  __  /
   _ (m) _ピコーン
      |ミ|
   /  .`´  \
     ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (・∀・∩< C丼以外の#言語を語れ
    (つ  丿 \_________
    ⊂_ ノ
      (_)
0011デフォルトの名無しさん2007/08/02(木) 14:48:10
>>9
G# H# I# ってどんな言語?
0012デフォルトの名無しさん2007/08/02(木) 14:50:41
> H#

目立言語
0013デフォルトの名無しさん2007/08/02(木) 14:59:59
んー?こんな言語できてんだ。
そのうちMSはA#からZ#まで26種類の駄言語を作りかねんな
0014デフォルトの名無しさん2007/08/02(木) 15:01:47
工エエェェ(´д`)ェェエエ工工
0015デフォルトの名無しさん2007/08/02(木) 15:03:32
先にF++を作れよ。

ところでやっぱりドトネト専用言語?
0016デフォルトの名無しさん2007/08/02(木) 15:05:10
>13
昔、そういう1文字言語のリストをどっかで見た覚えが・・・
0017デフォルトの名無しさん2007/08/02(木) 15:26:19
OCamlって具体的にどういう分野が得意なの?なんかおもしろいネタある?
0018デフォルトの名無しさん2007/08/02(木) 15:39:42
F#ってなんだ?
誰か三行で説明してくれ
0019デフォルトの名無しさん2007/08/02(木) 15:40:34
前スレ
http://pc8.2ch.net/test/read.cgi/tech/1054523453/
0020デフォルトの名無しさん2007/08/02(木) 16:02:16
メインフレーム用 JCL# とかどうよ?
0021デフォルトの名無しさん2007/08/02(木) 16:15:05
F#で仕事ある?
ttp://pc11.2ch.net/test/read.cgi/tech/1111656698/l50
0022名無しさん♯2007/08/02(木) 18:16:21
新スレ記念にState Monadを作ってみましたよ。( ゚д゚)ノ

#light

type State<'s, 'a> = ST of ('s -> ('a * 's))
 with
  static member Run (ST x) = x
  static member Get () = ST <| fun s -> (s, s)
  static member Put s = ST <| fun _ -> ((), s)
  static member Eval x = State.Run x >> fst
  static member Exec x = State.Run x >> snd

type StateBuilder () =
 member b.Return a = ST <| fun s -> (a, s)
 member b.Bind (ST x, f) = ST <| fun s -> let (a, s') = x s in State.Run (f a) s'
 member b.Let (x, f) = f x

let state = StateBuilder ()

let _ =
 state
  { let x = 100
   let! s = State.Get ()
   do! State.Put (x + s)
   return () }
 |> State.Exec <| 1000
 |> (print_any >> print_newline)


(実行結果)
1100
0023デフォルトの名無しさん2007/08/02(木) 22:52:49
http://ja.doukaku.org/28/
これどうやればいいのかわからない。誰かヒント下さい。
リフレクションつーことは
http://research.microsoft.com/fsharp/manual/fslib/Microsoft.FSharp.Reflection.html
これを使うんだろうけど・・・正直さっぱりわからん。

ていうか、俺能力無さ杉。

>>22
おお!!使う機会あったら使わせてもらいます。
0024デフォルトの名無しさん2007/08/02(木) 23:05:42
コールスタック見れば楽勝でしょ
0025デフォルトの名無しさん2007/08/02(木) 23:21:28
>>24
うーん。そういうのあんましよくわからないんだわ。
でもがんばってみる。ありがとう!
0026デフォルトの名無しさん2007/08/03(金) 01:03:23
C#のをもろパクってこういうのやってみているんだけど常に
_main()が帰ってくる。
bar(), baz()っていう関数名を返すにはどうすればいいんでしょうか。

#light
open System.Diagnostics

let foo() =
  let stck = new StackTrace()
  let frme = stck.GetFrame 1
  let mthd = frme.GetMethod()
  mthd.Name

let bar() = foo()
let baz() = foo()
0027デフォルトの名無しさん2007/08/03(金) 01:13:53
スタックフレームの浅いのはインデックスの大きいところに入ってるでしょ
0028デフォルトの名無しさん2007/08/03(金) 02:11:10
>>27
インデックスってどのインデックス?(GetMethod ?のところ?)
というか、やっぱりStackTraceよくわからない。
0029デフォルトの名無しさん2007/08/04(土) 16:16:58
F#ってmixinできんの?
0030デフォルトの名無しさん2007/08/05(日) 04:22:22
F#のFってFortranのF?
0031デフォルトの名無しさん2007/08/05(日) 05:20:29
function
0032デフォルトの名無しさん2007/08/05(日) 11:30:39
fuck you
0033デフォルトの名無しさん2007/08/05(日) 19:12:51
fuck me

>>30
違います。弄って見れば分るけどFortranとは別物
0034デフォルトの名無しさん2007/08/05(日) 19:39:10
Formula
0035デフォルトの名無しさん2007/08/05(日) 21:48:01
MS による壮大な fiction
0036名無しさん♯2007/08/06(月) 08:16:02
当たり前といったら当たり前だけど、guardがきちんと動いた。

#light

open Seq

type SeqBuilder () =
 member b.Return a = singleton a
 member b.Bind (m, k) = map_concat k m
 member b.Let (x, f) = f x

let seq = SeqBuilder ()

let guard = function
 | true -> singleton ()
 | _ -> empty

let _ =
 seq { let! x = {1..10}  (* from *)
    do! guard (x > 5) (* where *)
    return (x * x) }  (* select *)
 |> iter (string_of_int >> print_endline)

(実行結果)
36
49
64
81
100
0037デフォルトの名無しさん2007/08/06(月) 10:02:31
>>36
完全に記法の問題だけど、seqの後の{ }がやっぱキモい
0038デフォルトの名無しさん2007/08/06(月) 10:16:25
このスレはのびない。
0039デフォルトの名無しさん2007/08/06(月) 14:15:14
夢にF#が出てきてびびった
0040デフォルトの名無しさん2007/08/06(月) 14:30:57
F#チラッといじてるが、これかなりいいんじゃね?
でかいアプリ作ったときの安定性がどうだか気になるけれど、使いこなせばC#よりはるかにGenericプログラミングできて生産性があがりそう。
VSでの使いかってもまぁまぁだし。
0041デフォルトの名無しさん2007/08/06(月) 14:37:23
よく知らないんですが、
40の意見って何てアストロターフィング?
0042デフォルトの名無しさん2007/08/06(月) 14:51:56
関数型言語が理解できないのなら黙っとけ
0043デフォルトの名無しさん2007/08/06(月) 17:11:39
.NETのgenericsって高階型が使えないのが痛い。
0044デフォルトの名無しさん2007/08/06(月) 19:04:22
IOモナドどうやって作ろう?
0045デフォルトの名無しさん2007/08/06(月) 19:25:23
>>44
ttp://haskell.g.hatena.ne.jp/nobsun/20060907/monadicIO
ttp://haskell.g.hatena.ne.jp/nobsun/20060908/monadicIO

実は>>22のState Monadほとんどそのままだったりする。
0046デフォルトの名無しさん2007/08/06(月) 19:55:21
>>45
実装じゃなくて「入出力する」ということはどういう感じにしたら
モナドになるんだ?って話。

>>実は>>22のState Monadほとんどそのままだったりする。

実は別にState Monad使わなくても作れたりするらしい。
もともと抽象的な実装方法というものがあってそれを満たすものがあれば
なんでもいい。(一番自然なのはStateMonad使う方法になるんだろうけど)
0047デフォルトの名無しさん2007/08/06(月) 19:58:31
よく読んだら意味わかんないこと言ってるな。
つまりその実装で一体何を作ったのか?ってこと
(副作用出ないが云々は抜きで)
0048デフォルトの名無しさん2007/08/07(火) 16:12:03
Foundation of F#って良い感じ?
買ってみようかどうか迷ってるのだが。
0049デフォルトの名無しさん2007/08/09(木) 15:28:45
>>48 良いと思うよ
0050デフォルトの名無しさん2007/08/09(木) 16:15:36
F#と本家Ocamlってやっぱ違う??
ttp://oandrieu.nerim.net/ocaml/
ここにあるものってF#で使えますかね??特にGsl。
0051・∀・)っ-○◎●2007/08/10(金) 02:03:12
岡村
0052デフォルトの名無しさん2007/08/10(金) 08:36:23
OCamler
0053デフォルトの名無しさん2007/08/16(木) 08:27:50
見事に過疎ったな。
0054デフォルトの名無しさん2007/08/16(木) 11:06:15
(´∀`∩)↑age↑
0055デフォルトの名無しさん2007/08/16(木) 14:00:58
⊃・ ・〃 |age|
0056デフォルトの名無しさん2007/08/16(木) 21:35:20
Windows を使っている層と OCaml を使っている層は相容れない感じがするからねえ…
0057デフォルトの名無しさん2007/08/17(金) 12:07:05
F#perになろうとおもってるんだが、いまやってるC#の仕事が落ち着かん(´;ω;`)…
0058デフォルトの名無しさん2007/08/17(金) 21:33:53
ていうか、OCamlって実はユーザ少ないのか?
Scheme >>> OCaml > Haskell
ぐらいかと思っていたけど
実は
Scheme >>> Haskell >> Ocaml
なんじゃまいか
0059デフォルトの名無しさん2007/08/17(金) 21:37:23
もしそうなら現在においては
OCaml >>>>>> F#
なのでOCamlユーザの絶対数が少ないのならF#使いの数は・・・。
0060デフォルトの名無しさん2007/08/18(土) 01:51:41
nagoyaでやれ
0061デフォルトの名無しさん2007/08/18(土) 15:02:24
>>58
Schemeをネタに優越感に浸ってる香具師はよく見かけるが
そういう香具師が仕事で使ってるのはJavaだったりするし
小物ツールはRubyで書いてたりするのがほとんどな希ガス
0062デフォルトの名無しさん2007/08/20(月) 09:12:36
Matrix,LinearAlgebraライブラリに固有値計算の関数ってある?
探しても無いからこれはMatlabあたりと連携させる必要があるのかなぁ。
0063デフォルトの名無しさん2007/09/01(土) 13:43:37
あげ
0064デフォルトの名無しさん2007/09/02(日) 14:01:50
LINQをTECPreviewじゃない正式版として使えるのはいつごろでしょうか?
0065デフォルトの名無しさん2007/09/02(日) 17:35:21
>>64
FLinqサンプルが、May 2006 CTPじゃなくて.NET 3.5 Beta2(以降)に対応しないかってこと?
まあ、FLinqはあくまで標準ライブラリじゃなくてサンプルだから、対応の優先度は低いと思う・・・。
0066デフォルトの名無しさん2007/09/02(日) 17:46:24
>>65 いや、ベータじゃないバージョンでリリースされてるのかということ。
自己責任だとしても製品に使っていいものかどうか。
0067デフォルトの名無しさん2007/09/03(月) 23:14:51
>>66
LINQ自体(.NET 3.5)はまだベータで、RTMは年末頃だけどそういう話?

0068デフォルトの名無しさん2007/09/04(火) 01:15:25
>>67 そういう話。さんくす。
0069デフォルトの名無しさん2007/09/04(火) 14:38:45
全部lazyにしとけば遅延評価として正常に動作するもんどすか?
それともHaskelとかと比べて注意しないといけないとこあり?
0070デフォルトの名無しさん2007/09/28(金) 00:02:20
age
0071デフォルトの名無しさん2007/10/05(金) 07:06:18
普段 Visual C++ で業務アプリ書いている俺が
酔狂で関数言語(関数型言語?)をいじってみようと思うんだけど、
ocaml と haskell とどちらがお勧め?
手続きがたべったりの俺には無理?
0072デフォルトの名無しさん2007/10/05(金) 08:37:50
だから、ドトネッツはクラスベースだって。
0073712007/10/05(金) 09:24:00
F# 入れてみた。おもしれぇ。
Visual Haskell も入れてみたけど、とっつきにくかった。
http://www.haskell.org/visualhaskell/
そういやなんでも IL 上でつくられてね?
IronPython とか IronRuby とか。
0074デフォルトの名無しさん2007/10/05(金) 09:30:50
J#は?
0075デフォルトの名無しさん2007/10/05(金) 09:32:03
JAVAとC#どちらが優れているか教えてください Part2
ttp://pc11.2ch.net/test/read.cgi/prog/1189919634/196

いまのオープンソースの流れから考えてもC#は数年後には今のJ#と同じ道を辿る。

利潤追求の激しい企業が本来ならば仲間にしなければならない開発者までも食い物に
していることも分からず、M$マンセーしている奴は頭を齧られ過ぎて考えることも出来ない
くらいに脳みそがなくなっているんだろ。可哀想だよ。
0076デフォルトの名無しさん2007/10/05(金) 09:52:10
>>71
はじめはOCamlで、慣れてきたらHaskellもやってみるのがよろしいかと。

OCamlだけだと遅延評価とか関数合成あたりが学びづらいし、
Haskellだけだと再帰とかモジュールシステムあたりが学びづらい。
0077デフォルトの名無しさん2007/10/05(金) 10:01:19
____________________________
         (^o^)ノ オワタ   三┌(^o^)┘オワタ          /|
         ノ( ヘヘ       三 ┘>     三 ┌(^o^)┘オワタ | ミ
   (^o^)ノ オワタ        三 ┌(^o^)┘オワタ    ┘>/   |   ミ \( ^o^)/ オワタ
   ノ( ヘヘ    (^o^)ノ オワタ  三  ┘> ┌(^o^)┘オワタ    /    ミ  |_/
          ノ( ヘヘ           三  ┘>  /   / |       ノ ノ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|   /   |  ミ
                                    |  /    |  ヽ(^o^ )ノ オワター      ミ \( ^o^)/ オワタ
_____________________|/      |  \(\ノ             ミ |_/
                              |        |         ミ          ノ ノ
                              |        |        ミ \( ^o^)/ オワタ
  ______    ______      |        |            |_/
  ||//        .||   ||//       ||     │        |            ノ ノ
  ||/       .||   ||/          ||     │        |
  ||        ||   ||._____________ ...||     │        |              ミ
  ||        ||   |||  (^o^)  |  ||     │        |               ミ\(^o^)/ オワタ
   ̄ ̄ ̄ ̄ ̄ ̄     ̄ ̄ ̄ ̄ ̄ ̄      |        |                  ┘|

0078デフォルトの名無しさん2007/10/05(金) 10:02:50
Adobe『AIR』は、「MSによるオフィスアプリ支配」を崩すか
ttp://wiredvision.jp/news/200709/2007090520.html
0079デフォルトの名無しさん2007/10/05(金) 10:31:33
ttp://journal.mycom.co.jp/articles/2007/10/01/moesuku/menu.html
0080デフォルトの名無しさん2007/10/05(金) 10:57:46
J#って何のためにあるの?
ttp://pc11.2ch.net/test/read.cgi/tech/1179314479/l50
0081712007/10/05(金) 12:58:50
>>75
C# はどうなるかわかんないけど、
C++/CLI の出来はいいと思うよ。
Managed C++ でいろいろと改良点が指摘されて
それが十分に生かされていると思う。
0082デフォルトの名無しさん2007/10/05(金) 13:01:43
基地外にマジレス不要
0083デフォルトの名無しさん2007/10/05(金) 17:17:39
うほ。
System.Windows.Forms とか見えてる・・・
もしかして俺が C# で書いたフォームを
Haskell から呼び出したりできるのか??
0084デフォルトの名無しさん2007/10/05(金) 17:18:14
Haskell じゃなかった、 F# だた。
両方並行していじってると頭がおかしくなるみたい。
0085デフォルトの名無しさん2007/10/05(金) 18:05:32
出来るお(´・ω・`)
0086デフォルトの名無しさん2007/10/05(金) 20:09:58
F#速いお
OCamlよりも速いお
立ち上がってからの話だけど・・・
ちょっと言ってみたかっただけだお
0087デフォルトの名無しさん2007/10/05(金) 20:52:17
Python並みにコードが短く、C#のように実行が速い
ttp://www.strangelights.com/blog/archive/2007/06/17/1588.aspx
0088デフォルトの名無しさん2007/10/05(金) 23:21:11
C#って速いか?
C#って速いか?
C#って速いか?
C#って速いか?
C#って速いか?
0089デフォルトの名無しさん2007/10/05(金) 23:29:39
遅いのはGDI+
0090デフォルトの名無しさん2007/10/06(土) 01:02:09
初回起動時のコンパイルもかな
0091デフォルトの名無しさん2007/10/06(土) 07:23:48
>>88
速いと思うよ。 >>90 が言うように初回起動時に
JITコンパイラのようなものが働いているみたいで、
確かにデバッグ・実行繰り返しているときに
いらいらすることがある。デバッグコードだから
かもしれないけど。

あと、実際に多用するかどうかはともかくとして、
C#だとどうしても速く書けない部分があっても
DLLの呼び出しが簡単なので、Cやアセンブラで
書いたコードを呼び出せるし。Javaのネイティブ
メソッドよりも簡単に。
0092デフォルトの名無しさん2007/10/06(土) 09:43:34
>>91
interopでのDLLやCOMの呼び出しは確かに簡単だが、マーシャリングの
コストが高いので細切れにCの小さなコードを呼ぶような使い方はすべきでない。

そういうことがしたいなら、むしろC++/CLIを使うべきだろう。
0093デフォルトの名無しさん2007/10/06(土) 11:46:01
>>92
C#のP/InvokeとC++/CLIの暗黙のP/Invokeのマーシャリングにかかるコストは実は差がない。
違いはC++/CLIではデフォルトでSupressUnmanagedCodeSecurityAttributeが付加され、
C#は付かないということ。
C#のP/Invokeに[SupressUnmanagedCodeSecurity]をつけると途端に速くなるから試してみるといい。
0094デフォルトの名無しさん2007/10/06(土) 17:26:28
UTF-8 で書いておけば日本語もおkなんだね。
0095デフォルトの名無しさん2007/10/06(土) 17:43:08
>>93
それってセキュリティ的にどうなの?
0096デフォルトの名無しさん2007/10/06(土) 17:57:10
>>95 セキュリティって文字列に反応しているようだけど、
この設定はセキュリティ関連のチェックを事前にできるように
するかどうかというだけの設定じゃなかったっけ?

ドトネトなプログラムは実行時にたとえば「ディスクへの書き込み
はしちゃだめだからね」なんていうセキュリティ上の制約を
つけて実行することができるようだけど、プログラムが全体として
その制約を満たしているかどうかを実行開始前にチェックできるように
するか、実行時に「おいおい、書いちゃダメだってば」って
例外を出すようにするかって違いじゃないの?

F#の話から外れて申し訳ないが。
0097デフォルトの名無しさん2007/10/17(水) 01:14:32
ほっしゅほっしゅ

入れてみたよ〜。なんだか面白そうだ。
0098デフォルトの名無しさん2007/10/18(木) 04:04:22
>>97
ttp://blogs.msdn.com/dsyme/archive/2007/10/17/s-somasegar-on-taking-f-forward.aspx
うは、Luke HobanがF#チームに異動か。

まあOrcasでの仕事もほぼ終わったところだろうし、いいタイミングなのかも。
0099982007/10/18(木) 04:05:26
ごめん、>>97は関係ない。
0100名無しさん♯2007/10/18(木) 21:18:06
ttp://blogs.msdn.com/somasegar/archive/2007/10/17/f-a-functional-programming-language.aspx

これって、F#を製品化するって話なの?
表現が微妙でそう読み取れないんだけど、反響を見るとそういう扱いになってる・・・。(´・ω・`)
0101デフォルトの名無しさん2007/10/19(金) 07:33:45
Iron ほげほげといい、F# といい、
Visual Studio で何でもありという感じだなぁ。
その一方で、 Visual Studio 2008 Beta 2 見ると
J# がなくなっている・・・
俺としては継続してほしかった。
さらにライセンス的に無理なんだろうけど
JDK 1.6 にも対応してほしかった。
いまは JDK 1.1.4 相当だから。
スレちがいでごめん。
■ このスレッドは過去ログ倉庫に格納されています