[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 05/09 13:54 / Filesize : 121 KB / Number-of Response : 478
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/08/02(木) 14:03:05 ]
MSResearchから出てきた.NETで使える関数型言語のひとつF#
OCAMLの流れを汲むこの言語、いろいろと面白そうなことができそう。
まだまだ英語の情報しかないこの言語について、幅広く語れ。

research.microsoft.com/fsharp/fsharp.aspx

116 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 10:25:49 ]
F#はじめました。クロージャもどきを作ってみましたが、
let rec makeclr v n = 
    let pr n = printf "closure %d\n" n in
      if n < 1 then v else (fun () -> pr(n)) :: (makeclr v (n - 1))
let makecl = makeclr [] ;;
let v = makecl 10 in
  List.iter (fun x -> x()) v ;;

リストの後方に追加するスマートな方法があったら教えてください。
逆にしたら怒られた。
(makeclr v (n - 1)) :: (fun () -> pr(n)) 

117 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 13:42:18 ]
>>116
3行目で if n < 1 then rev v が定石かと思われ。

(makeclr v (n - 1)) @ [fun () -> pr n] は効率の面でおすすめできない。(´・ω・`)

118 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 14:37:10 ]
>>117
ありがとう。最後にまとめて反転させたほうが早いわけですね。
末尾再帰になってなかったのでそうしたら反転の必要もなくなりました。
最初はforやwhileを使ってたのですがなんだかうまくないようです。
あまりforやwhileは使わないのでしょうか。配列専用の機能のように思えました。

let rec makeclr v n = 
      if n < 1 then v else makeclr ((fun () -> printf "closure %d\n" n) :: v) (n - 1)
let makecl = makeclr [] ;;
let v = makecl 10 in List.iter (fun x -> x()) v ;;


119 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 15:11:11 ]
>>118
ループとしてのfor, whileはほとんど使いません。(つーか、構文忘れてるし・・・。)
ただし、内包表記のforはよく使います。

let makeclr n =
 [ for i in [1..n] ->
   fun () -> printf "closure %d\n" i ]

でもまあ、最初のうちは再帰で解決する習慣を身につけるべきかと。(´・ω・`)

120 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 15:12:06 ]
F#のメリットってなんですか?
C#より優れてるところ、劣ってるところはなんですか?
F#にできてC#にできないことってありますか?

121 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 16:04:01 ]
>>119
こういうforの使い方があるのか。おいしくいただきまます。

122 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 20:08:41 ]
あかん・・・手続き型べったりの俺には
簡単なコードで頭の体操するのが精いっぱい。

しかし使い慣れた Visual Studio で動くので
なんとなく使えてる気になるけど。
やっぱり理論的な基礎をしっかりとやってない
専門学校上がりのコーダーには扱えないのかね。

Emacs における Emacs Lisp のように、
既存のネイティブ or ドトネトなプログラムの
マクロ言語としておもしろい?とかオモタけど、
妄想だけにしときます。

123 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 01:28:33 ]
>>118を1行で。

[1..10] |> List.map (fun n () -> printf "closure %d\n" n) |> List.iter ((|>) ())

124 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 01:30:32 ]
暗号にしかみえんがみなさんはこういうのにメリット感じるの?



125 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 01:55:17 ]
Microsoft、関数型言語F#をVisual Studioに統合へ――開発者からはおおむね好意的な反応
opentechpress.jp/developer/07/10/24/0310251.shtml

126 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 01:58:35 ]
手を広げすぎ

127 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 02:12:00 ]
let flip f a b = f b a
let delay f = fun () -> f

let _ = [1..10] |> List.map (printf "closure %d\n" |> (delay >> flip)) |> List.iter ((|>) ())

128 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 04:27:16 ]
right to leftの方が読みやすいかな。

let _ =
 List.iter ((|>) ()) << List.map (flip << delay <| printf "closure %d\n") <| [1..10]

129 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 08:26:45 ]
型推論ってなんですか?

130 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 09:46:24 ]
型を推論してくれるんです。

131 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 09:59:05 ]
やけに賑やかDaNa

132 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 22:11:15 ]
OCaml は整数型と実数型で足し算の演算子すら違って面倒だという話を聞いたことがありますが,本当ですか?
F#もそうなってるんですか?

133 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 22:16:40 ]
整数の演算子 :
+ - * /

実数の演算子 :
+. -. *. /.

134 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 22:47:06 ]
めんどくさ



135 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:50:47 ]
>>132

> 1 + 0.1;;

  1 + 0.1;;
  ----^^^^

stdin(7,4): error: FS0001: This expression has type
        float
but is here used with type
        int
stopped due to error

> 1.0 + 0.1;;
val it : float = 1.1

> 1.0 +. 0.1;;

  1.0 +. 0.1;;
  ----^^^

stdin(9,4): warning: FS0062: This construct is for compatibility with OCaml. Use
 the overloaded infix operator '+' instead. Disable this warning using --no-warn
 62 or #nowarn "62"
val it : float = 1.1

136 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 10:22:05 ]
>>132
F#では演算子は共通になった。
.NETのサポートするデータ型を全部サポートしなきゃいけないのでこうなったものと思われる。
ただし暗黙の型変換はないので整数+実数の計算は変換が必要になる。

> 3.2 + float 2;;
val it : float = 5.2

137 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 10:24:25 ]
F#ってVS2008についてくんの?

138 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 13:41:11 ]
OCamlってフランス製だっけ?

139 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 15:13:40 ]
そうざます

140 名前:デフォルトの名無しさん mailto:sage [2007/11/07(水) 23:39:11 ]
おフランスwww

141 名前:デフォルトの名無しさん mailto:sage [2007/11/13(火) 01:04:38 ]
140が見えない

142 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 00:21:33 ]
なんで?

143 名前:名無しさん♯ mailto:age [2007/11/19(月) 14:52:34 ]
F# 1.9.3.4が出ますた。( ゚д゚)ノ

Asyncの実装がまた微妙に変わってますがな・・・。(´・ω・`)

144 名前:デフォルトの名無しさん [2007/11/19(月) 16:38:48 ]
おぉ〜

この言語は普及するのかな



145 名前:名無しさん♯ mailto:sage [2007/11/19(月) 20:25:01 ]
ありゃ、ライブラリのマニュアル、バージョン古いままだ・・・。(´・ω・`)

146 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 23:47:01 ]
普及するわけないだろwwwwwwwwwww

147 名前:デフォルトの名無しさん [2007/11/20(火) 16:06:16 ]
並列計算の需要がものすごく増えてきてるから普及するんじゃないかねぇ

148 名前:名無しさん♯ mailto:sage [2007/11/20(火) 16:20:04 ]
Async型って、Haskellで

 type Async a = Cont () (Either a Exception)

って脳内変換すれば、unit, bindの実装の意味が理解できることに最近気がついた。

で、ごく一部の方々がActionを使った継続をやけに議論してた意味もようやくわかった。(つД`)

149 名前:名無しさん♯ mailto:sage [2007/11/20(火) 20:05:10 ]
Eitherじゃぜんぜんダメだった・・・。orz
エラー系の継続を最初からずっと保持してなきゃならんので、結局

 type Async a = (a -> (), Exception -> ()) -> ()

こうするしかないですわ。(´・ω・`)

でも、Asyncってモナド則を満たしてるんかいなという新たな疑問も・・・。

150 名前:名無しさん♯ mailto:sage [2007/11/20(火) 20:14:12 ]
あ、型コンになってなかった。(´・ω・`)

 data Async a = Async ((a -> (), Exception -> ()) -> ())

151 名前:名無しさん♯ mailto:sage [2007/11/21(水) 08:05:42 ]
Asyncを単純化するとこんな感じなのかな?( ´・ω・)


#light

type Async<'a> = Async of (('a -> unit) * (exn -> unit) -> unit)
 with
  static member Run (Async x) = x

let unit a = Async (fun (cont, _) -> cont a)

let bind m k =
 Async (fun (cont, econt) ->
  let cnext = fun a -> try Async.Run (k a) (cont, econt) with exn -> econt exn
  Async.Run m (cnext, econt))


で、実際にはここでのunit→resultPrim, bind→bindAsyncPrim相当でしかなくて、
これにキャンセルサポート(AsyncGroup)を追加してはじめてresultAsync, bindAsync相当になる、と。

モナドの定義自体にはスレッド云々は関係なくて、モナドを起動する側(Run, Spawn)の方で
スレッドに結びつけてる、と。

これをC#で表現するのはめんどいのう。(´・ω・`)

152 名前:デフォルトの名無しさん [2007/11/21(水) 13:31:20 ]
関数型言語は図で説明できますか?
フローチャートのように。
それが出来ないと、企業で使うのは難しいと思う。


153 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 13:48:56 ]
フローチャート(笑)

154 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 13:53:48 ]
次の質問をどうぞ



155 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 14:30:48 ]
質問が正確じゃないな。

  「Javaはむずかしすぎて使えません!」とギャグでなく主張する
  ド低脳にとっては関数型言語のほうが簡単なのですか?
  そうでないと、ドカタが使うのは難しいと思う。

こうだろ。

156 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 14:38:19 ]
おもしろくないよ

157 名前:名無しさん♯ mailto:sage [2007/11/21(水) 21:33:54 ]
あ、>>151間違えとる。(´・ω・`)

Async.Runは Async<'a> -> 'a にしないとダメなのか・・・。
>>151の実装は flip asyncApp 相当に過ぎないか。

158 名前:名無しさん♯ mailto:sage [2007/11/22(木) 01:13:05 ]
うーん、やっぱりキャンセルサポートなしでAsync.Runまで作っても複雑になるなあ・・・。

#light

type Async<'a> = Async of (('a -> unit) * (exn -> unit) -> unit)

let app (Async x) = x

let unit a = Async (fun (cont, _) -> cont a)

let bind m k =
 Async (fun (cont, econt) ->
  let c = fun a -> try app (k a) (cont, econt) with exn -> econt exn
  app m (c, econt))

let catch p =
 Async (fun (cont, _) ->
  app p (cont << Choice2_1, cont << Choice2_2))

let start p = app p ((fun () -> ()), (fun exn -> raise exn))

type Async<'a> with
 static member Run p =
  let res = ref None // val res : Choice<'a, exn> option ref
  let cont = fun r -> res := Some r; unit ()
  start (bind (catch p) cont)
  match Option.get !res with
  | Choice2_1 a -> a
  | Choice2_2 exn -> raise exn

これでAsync.Spawn, Async.Parallelまで挑戦するのは無理ぽ。(´・ω・`)

159 名前:デフォルトの名無しさん [2007/11/22(木) 12:12:02 ]
1.9.3.6リリース

160 名前:デフォルトの名無しさん [2007/11/22(木) 23:56:53 ]
>153-154
図星だったようだね。


161 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 00:06:19 ]


162 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 01:28:54 ]
政治的な理由で図が必要なら、Executable UMLでも
使ってれば?
あと>>155が答え。

163 名前:名無しさん♯ mailto:sage [2007/11/23(金) 12:20:33 ]
CPSだとアピールするよう、>>158のstartをプチ改良。w

let id x = x

let start p = app p (id, (fun exn -> raise exn))

164 名前:名無しさん♯ mailto:sage [2007/11/23(金) 17:12:31 ]
これはすばらしすぎるwww
ttp://channel9.msdn.com/Showpost.aspx?postid=358968

コメント欄もなかなか熱い。(;^ω^)



165 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:29:29 ]
もうちょっとHaskellよりなOCamlがいいと思う

166 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 01:46:59 ]
OCamlは副作用に対して寛大で、保守性や開発効率を保ったまま言語仕様を定めるのが忙しくて
165の様な要望に対しては手一杯

167 名前:名無しさん♯ mailto:sage [2007/11/27(火) 22:37:56 ]
F#のオブジェクト機能をちょっとまじめに使ってみますた。( ゚д゚)
ttp://cid-c42499cb3a347006.skydrive.live.com/self.aspx/Public/DLRSample.fs

168 名前:デフォルトの名無しさん [2007/11/28(水) 01:53:52 ]
日本語の解説はないの?
htmlは読みにくいからpdfのドキュメントはないの?

169 名前:名無しさん♯ mailto:sage [2007/11/28(水) 17:21:32 ]
両方ともにすばらしい。(´ー`)

(.ppt注意)
ttp://qcon.infoq.com/sanfrancisco/file?path=/QConSF2007/slides/public/ErikMeijer_LINQIntro.ppt
ttp://qcon.infoq.com/sanfrancisco/file?path=/QConSF2007/slides/public/ErikMeijer_Confessions.ppt

モナドの観点では、LINQの標準クエリ演算子で最重要なのは実は SelectMany なのね。


>>168
日本語の解説は見たことないです。
英語のなら最近すごくいい入門記事が出ましたが・・・。

ttp://tomasp.net/articles/fsharp-i-introduction/article.pdf

170 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 21:07:15 ]
>>169
モンドリアン風なのが気に入ったw

171 名前:デフォルトの名無しさん [2007/11/29(木) 01:54:58 ]
F#がC#より優れている点ってあるの?
すべてにおいてC#が優っているように思えるのだが。

172 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 02:04:46 ]
んじゃC#使えばいいじゃにあか

173 名前:デフォルトの名無しさん [2007/11/29(木) 02:06:18 ]
そうだけど何かメリットがあるならF#を使ってみようかと思って。
無いなら使わないけど。

174 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 04:51:48 ]
F#とC#は使い所が違うんじゃないかな



175 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 05:38:33 ]
(::)が関数として使えないんだけどそういうもん?

176 名前:デフォルトの名無しさん [2007/11/29(木) 20:23:52 ]
F#の機能とかっていずれC#も取り込みそうな気がする。C#って何気に巨大言語だよね。

177 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 20:49:05 ]
へじたんの夢の固まりだからな

178 名前:デフォルトの名無しさん [2007/11/29(木) 21:22:37 ]
C#でできることすべてはF#でできない。
F#でできることすべてはC#でできる。


179 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:29:16 ]
逆だろ

180 名前:デフォルトの名無しさん [2007/11/30(金) 01:30:02 ]
逆じゃない。

181 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:41:23 ]
C#、F#でできることの集合をそのままC#、F#と書く
1行目から C# ∩ F# = φ
2行目から F# ⊆ C#

∴F# = φ

アッー

182 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:45:50 ]
aho

183 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:52:06 ]
(C#でできることすべて)はF#でできない。
ではなく
C#でできることにはF#でできないことがある。
という意味なのか

184 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 01:59:02 ]
仕様書でこういうどちらとも取れる言葉遣いをしていたら揉め事の種になるな



185 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:00:23 ]
F#使ったことないけど、
C#では

var f = i=>i

で型推論が働かず、コンパイルが通らない。
F#ではできる!(=F#でしかできない事)

という認識で良いでしょうか?

186 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 09:14:42 ]
開発はなに使ってますか?VS2008?

187 名前:名無しさん♯ mailto:sage [2007/11/30(金) 10:30:03 ]
気がつけば、F# 1.9.3.7にマイナーアップデート。
ttp://research.microsoft.com/research/downloads/Details/e8478d6b-49c0-4750-80eb-0e424d1631a3/Details.aspx

そして待望のこれ。F#との相性よろし。(´ー`)
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba&DisplayLang=en

改めてこちらにも注目。
ttp://research.microsoft.com/research/downloads/Details/f9d6994e-45f6-49b8-b3c9-2a44bb2a4c50/Details.aspx

188 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 10:50:05 ]
C#で航海関数(なぜか変換できない)かけるのかとこ一時間

189 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 10:58:20 ]
ハァ?

190 名前:名無しさん♯ mailto:sage [2007/11/30(金) 18:05:31 ]
System.Linq.ParallelEnumerable
System.Linq.Parallel.Enumerable

まぎらわしい・・・。(´・ω・`)
前者はIParallelEnumerable用、後者はIEnumerable用。

191 名前:名無しさん♯ mailto:sage [2007/11/30(金) 19:00:00 ]
ParallelEnumerableに、ForAllなんていうAction系の拡張メソッドが。
オリジナルのEnumerableにもこれ付けてほしかったのに。(つД`)

192 名前:名無しさん♯ mailto:sage [2007/11/30(金) 19:36:06 ]
Parallel.Aggregateはどこへ行った?と思ったら、

 Parallel.For<TLocal>
 Parallel.ForEach<TSource, TLocal>

がその代わりらしい。でも、使い方がちょっとわかりにくい・・・。(´・ω・`)

193 名前:名無しさん♯ mailto:sage [2007/11/30(金) 20:05:28 ]
>>191のForAllは、inverted enumerationというやつだった。
ForEachのつもりで使うと、順番がバラバラで困ったことになる。

MSDN Magazineできちんと解説してた内容をすっかり忘れてた・・・。orz
ttp://msdn.microsoft.com/msdnmag/issues/07/10/PLINQ/default.aspx

194 名前:デフォルトの名無しさん [2007/11/30(金) 23:25:34 ]
research.microsoft.com/research/downloads/Details/e8478d6b-49c0-4750-80eb-0e424d1631a3/Details.aspx
www.microsoft.com/downloads/details.aspx?FamilyID=e848dc1d-5be3-4941-8705-024bc7f180ba&DisplayLang=en
research.microsoft.com/research/downloads/Details/f9d6994e-45f6-49b8-b3c9-2a44bb2a4c50/Details.aspx



195 名前:名無しさん♯ mailto:sage [2007/12/01(土) 00:16:49 ]
SEQUENTIAL_THRESHOLDがからむと、チューニング(値決め)がむずかしそうですのう。(´・ω・`)

196 名前:名無しさん♯ mailto:sage [2007/12/01(土) 13:20:31 ]
TPLむずかし杉ワロタw

#r "System.Core.dll";
#r "System.Threading.dll";

#light

open System
open System.Linq
open System.Threading
open Int32

let _ =
 let sum = ref (to_int64 0)
 do Parallel.For(0, 1000000,
         new Func<_>(fun _ -> !sum),
         new Action<_,ParallelState<_>>(fun i st ->
          st.ThreadLocalState <- st.ThreadLocalState + (to_int64 (i + 1))),
         new Action<_>(fun localSum -> Interlocked.Add (sum, localSum) |> ignore))
 Console.WriteLine("TPL  : {0}", !sum)

let _ =
 let seq = ParallelEnumerable.Range(1, 1000000)
 ParallelEnumerable.Aggregate(seq, to_int64 0, new Func<_,_,_>(fun sum i -> sum + (to_int64 i)))
 |> fun sum -> Console.WriteLine("PLinq : {0}", sum)

197 名前:名無しさん♯ mailto:sage [2007/12/02(日) 01:01:31 ]
dual coreでのパフォーマンスアップは1.5〜1.6倍といったところでしょうか。
quadで動かしてみたいのう。(´・ω・`)

198 名前:名無しさん♯ mailto:sage [2007/12/02(日) 23:54:31 ]
F#じゃないけど、こんなのを取りまとめ中。
ttp://cid-c42499cb3a347006.skydrive.live.com/self.aspx/Public/LinqUtils.cs

C#も十分関数的ですのう。(´・ω・`)

199 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 03:17:53 ]
なんかむずむずする関数名だな。

200 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 04:41:19 ]
>>198
・Unitは確かにムズムズするな。unit 型と混乱しそう。
・IsEmptyの実装は Enumerable.Count<T>使うより
 Enumerable.Any<T>使った方が良いんでは?
 Count使うと無限リストで死ねる。
 てかAnyがあるからIsEmpty要らん気もするけど。個人的には。

201 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 09:10:48 ]
C#もラムダ式で再帰を書く方法の改善と末尾再帰の最適化をやってくれるようになったら
関数型っぽく遊べるようになるんだがな。

202 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 09:14:32 ]
その辺は棲み分けでしょ
.net frameworkって糊を上手く使う所ってことで

203 名前:名無しさん♯ mailto:sage [2007/12/03(月) 10:49:17 ]
>>200
コメント感謝です。

> ・Unitは確かにムズムズするな。unit 型と混乱しそう。

前は「Lift」って名前にしてたんですが、そっちの方がわかりやすいでしょうか?

> ・IsEmptyの実装は Enumerable.Count<T>使うより
>  Enumerable.Any<T>使った方が良いんでは?

Anyの使い方を知らなかっただけでつ。(´・ω:;.:...
勉強になりますのう。

204 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 11:17:49 ]
>>203
個人的にはLiftで良いと思う。
ただ、.NET全般として見たときには
Nullableのところで"Lift"を使っちゃってて面倒鴨。

ttp://msdn2.microsoft.com/en-us/library/system.linq.expressions.unaryexpression.islifted(VS.90).aspx

monadがあればこの辺のメタな名前の衝突は回避できるというか統合できるのかのぅ。



205 名前:名無しさん♯ mailto:sage [2007/12/03(月) 11:29:57 ]
>>204
修正しますた。ついでに使用例も。( ゚д゚)ノ
ttp://cid-c42499cb3a347006.skydrive.live.com/self.aspx/Public/LinqUtilsDemo.cs

> monadがあればこの辺のメタな名前の衝突は回避できるというか統合できるのかのぅ。

monoid派が「Unit, Bindにすべし!」と言い出す悪寒・・・。

206 名前:名無しさん♯ mailto:sage [2007/12/03(月) 23:16:44 ]
うーん、結局のところ

 かなり必要 → ZipWith
 できれば必要 → Lift (T -> IEnumerable<T> のインターフェイスで)

ぐらいで、他は別にイラネって感じかもしれん・・・。(´・ω・`)

207 名前:名無しさん♯ mailto:sage [2007/12/03(月) 23:35:51 ]
Cycleは漏れ的にはお気に入りだけど、実際には使わんよなあ・・・。(;´Д`)

208 名前:デフォルトの名無しさん mailto:sage [2007/12/04(火) 00:29:38 ]
OCamlは糞言語だな。F#は大丈夫なんだろうな。

209 名前:名無しさん♯ mailto:sage [2007/12/04(火) 20:11:20 ]
TPLは、TaskManagerPolicyを変えて、ParallelよりもConcurrentライブラリとして使えば便利かもしれん。
でもそれって何てjava.util.concurrent?(´・ω・`)

210 名前:デフォルトの名無しさん [2007/12/20(木) 02:46:46 ]
Lisp系に比べるとML系って泥臭いというか、洗練されていない感じがする。頭悪そうな感じ。

211 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 08:06:21 ]
でも得てしてそういう言語の方が広まったりしない?

212 名前:デフォルトの名無しさん [2007/12/21(金) 08:42:24 ]
MLは普及してないだろ。

213 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:10:28 ]
まさに目くそ鼻くそ

214 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:41:19 ]
MS は # シリーズが Z までいったら,
次は $ シリーズを展開してくれると期待している.



215 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 23:44:56 ]
M$

216 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:59:49 ]
>>210
CL, Scheme, SML, OCaml なんかを比べているのであれば、
どれも大差無い様に見えるけど。歴史的に一番泥臭いのは
CL だろうけど…






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<121KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef