トップ
新規
単語検索
ヘルプ
活動記録/第10回
をテンプレートにして作成
開始行:
-日時 :2006/7/24 (Mon)
-場所 :名大 理学部1号館(多元数理科学研究科) 307室
-時刻 :18:00〜19:40
-参加者:6名
- HaskellでJavascript、面白かったです。[[Bigloo:http://ww...
- [[継続とWeb開発、そしてJavaプログラミング:https://www-0...
Smalltalkの[[Seaside:http://www.seaside.st/]]のようなフレ...
- どうも〜。Biglooをざっと眺めても見つけられなかったので...
- Seasideも面白そうですね。Ajaxと継続サーバーで何か面白い...
- 小笠原さんのConcurrent ML講座がとてもエキサイティングで...
- [[Rhinoでmobility(「継続」 + 「直列化」 ≒ 「移動するプ...
- [[SXML(XML with Scheme):http://www-6.ibm.com/jp/develop...
- Concurrent ML講座、興味深かったです! k.inabaさんのとこ...
- Gaucheのライブラリに、まさにそのSXMLが入ってます☆[[sxml...
- [[Purely Functional Data Structures:http://www.cs.cmu.e...
- おお。Gaucheに入っている! さすが速い. -- [[けいご]] &...
- [[なんでも継続:http://www.shiro.dreamhost.com/scheme/do...
- なんでも継続の続きが、[[なぜSchemeにはreturnが無いのか:...
- や,「戻れるスレッド」というのは言葉足らずだったかもし...
- [[JoCaml:http://moscova.inria.fr/jocaml/]] 今では [[Acu...
- [[ANNOUNCE: HSP.Clientside 0.01:http://www.haskell.org/...
-- An embedding of (typed) JavaScript language in Haskell.
-- A small combinator library for generating JavaScript c...
-- High-level interface to Ajax functionality.
- それでも、最先端のところというか、開拓地に立っている、...
- ありがとう.あと自己レスだけど「誰でも思いつく」という...
おまけ:OCaml による mvar の実装
(方向性を持つチャネルを使うと、より間違いのない実装ができ...
open Event
type 'a mvar = { takeCh : 'a channel; putCh : 'a channel...
let mVar () =
let takeCh = new_channel ()
and putCh = new_channel ()
and ackCh = new_channel ()
in
let rec empty () =
let x = sync (receive putCh) in
sync (send ackCh true);
full x
and full x =
select [
wrap (send takeCh x) empty;
wrap (receive putCh) (fun _ -> sync (send ackCh fals...
]
in
ignore(Thread.create empty ());
{ takeCh = takeCh; putCh = putCh; ackCh = ackCh }
let take { takeCh = takeCh } = receive takeCh
exception Put
let put { putCh = putCh; ackCh = ackCh } x =
sync (send putCh x);
if sync (receive ackCh) then ()
else raise Put
(* 以下、使い方の例 *)
let (@@) f x = f x
let calc_new_value v =
v * 2
let _ =
let m = mVar () in
put m 10;
let _ = put m @@ calc_new_value @@ sync @@ take m in
Printf.printf "m=%d?n" (sync (take m))
;;
終了行:
-日時 :2006/7/24 (Mon)
-場所 :名大 理学部1号館(多元数理科学研究科) 307室
-時刻 :18:00〜19:40
-参加者:6名
- HaskellでJavascript、面白かったです。[[Bigloo:http://ww...
- [[継続とWeb開発、そしてJavaプログラミング:https://www-0...
Smalltalkの[[Seaside:http://www.seaside.st/]]のようなフレ...
- どうも〜。Biglooをざっと眺めても見つけられなかったので...
- Seasideも面白そうですね。Ajaxと継続サーバーで何か面白い...
- 小笠原さんのConcurrent ML講座がとてもエキサイティングで...
- [[Rhinoでmobility(「継続」 + 「直列化」 ≒ 「移動するプ...
- [[SXML(XML with Scheme):http://www-6.ibm.com/jp/develop...
- Concurrent ML講座、興味深かったです! k.inabaさんのとこ...
- Gaucheのライブラリに、まさにそのSXMLが入ってます☆[[sxml...
- [[Purely Functional Data Structures:http://www.cs.cmu.e...
- おお。Gaucheに入っている! さすが速い. -- [[けいご]] &...
- [[なんでも継続:http://www.shiro.dreamhost.com/scheme/do...
- なんでも継続の続きが、[[なぜSchemeにはreturnが無いのか:...
- や,「戻れるスレッド」というのは言葉足らずだったかもし...
- [[JoCaml:http://moscova.inria.fr/jocaml/]] 今では [[Acu...
- [[ANNOUNCE: HSP.Clientside 0.01:http://www.haskell.org/...
-- An embedding of (typed) JavaScript language in Haskell.
-- A small combinator library for generating JavaScript c...
-- High-level interface to Ajax functionality.
- それでも、最先端のところというか、開拓地に立っている、...
- ありがとう.あと自己レスだけど「誰でも思いつく」という...
おまけ:OCaml による mvar の実装
(方向性を持つチャネルを使うと、より間違いのない実装ができ...
open Event
type 'a mvar = { takeCh : 'a channel; putCh : 'a channel...
let mVar () =
let takeCh = new_channel ()
and putCh = new_channel ()
and ackCh = new_channel ()
in
let rec empty () =
let x = sync (receive putCh) in
sync (send ackCh true);
full x
and full x =
select [
wrap (send takeCh x) empty;
wrap (receive putCh) (fun _ -> sync (send ackCh fals...
]
in
ignore(Thread.create empty ());
{ takeCh = takeCh; putCh = putCh; ackCh = ackCh }
let take { takeCh = takeCh } = receive takeCh
exception Put
let put { putCh = putCh; ackCh = ackCh } x =
sync (send putCh x);
if sync (receive ackCh) then ()
else raise Put
(* 以下、使い方の例 *)
let (@@) f x = f x
let calc_new_value v =
v * 2
let _ =
let m = mVar () in
put m 10;
let _ = put m @@ calc_new_value @@ sync @@ take m in
Printf.printf "m=%d?n" (sync (take m))
;;
ページ名: