【.NET】F#について語れ【OCAML】at TECH【.NET】F#について語れ【OCAML】 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト150:名無しさん♯ 07/11/20 20:14:12 あ、型コンになってなかった。(´・ω・`) data Async a = Async ((a -> (), Exception -> ()) -> ()) 151:名無しさん♯ 07/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#で表現するのはめんどいのう。(´・ω・`) 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch