タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

継続に関するgologo13のブックマーク (2)

  • OCaml code by MoCo - 26 lines - codepad

    type t = | Var of int (* variable *) | App of t * t (* application *) | Abs of t (* abstraction *) | Sft of t (* shift *) | Rst of t (* reset *) type value_t = | VInt of int | VFun of (env_t -> cont_t -> value_t) * env_t | VCont of cont_t and cont_t = value_t -> value_t and env_t = value_t list let rec eval t env cont = match t with | Var n -> cont (List.nth env n) | App (t1, t2) -> eval t2 env (f

  • 僕でもわかる継続と部分継続 - まめめも

    callcc と shift/reset についてわかるとこだけ書いてみます。 継続 callcc という操作は、現在から実行終了まで、継続をまるごと取り出します。例題。 p [1] + callcc {|k| [2] + k.call([3]) } #=> [1, 3] callcc では callcc がリターンしてから実行終了するまでの継続 k が取り出せます。k.call([3]) で継続が呼ばれると、いきなり「callcc が [3] を返した瞬間」に実行が飛びます。つまりこんな感じ。 p [1] + [3] あとは自明ですね。"[2] +" のあたりは無視されます。 部分継続 shift という操作は、現在から reset まで、継続の一部だけを取り出します。この継続の一部を部分継続といいます。例題。 p [1] + reset { [2] + shift {|k| [3] +

    僕でもわかる継続と部分継続 - まめめも
    gologo13
    gologo13 2010/05/27
    [shift/reset]
  • 1