result.sml

来自「这是我们参加06年全国开源软件的竞赛作品」· SML 代码 · 共 35 行

SML
35
字号
(* result.sml * * COPYRIGHT (c) 1996 AT&T Research. * *)structure Result :> sig    type 'a result    val result : unit -> 'a result    val put    : ('a result * 'a) -> unit    val putExn : ('a result * exn) -> unit    val get    : 'a result -> 'a    val getEvt : 'a result -> 'a CML.event  end = struct    structure SV = SyncVar    datatype 'a result_val = EXN of exn | RES of 'a    type 'a result = 'a result_val SV.ivar    fun result () = SV.iVar()    fun put (iv, v) = SV.iPut(iv, RES v)    fun putExn (iv, ex) = SV.iPut(iv, EXN ex)    fun wrap (RES v) = v      | wrap (EXN ex) = raise ex    fun get iv = wrap(SV.iGet iv)    fun getEvt iv = CML.wrap(SV.iGetEvt iv, wrap)  end;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?