タグ

継続に関するtaka-hrのブックマーク (2)

  • ネタ記録庫/継続 - ocaml-nagoya

    何ができるの? † 大域脱出 例外処理 非決定性 wiliki:amb 例えば、 (let ((i (amb 4 6 7)) (j (amb 5 8 11))) (if (prime? (+ i j)) (list i j) (amb))) ;Value 23: (6 5) のようにすると '(4 6 7) と '(5 8 11) のうちから二つの数の和が素数になる組の1つを返します。 これを理解するのに、自分は3ヶ月かかりました。 ambは、バックトラック演算子です。動きを大雑把に言うと、 (let (i (amb 4 6 7))で、 i に 4 が入ると同時に、 この時点のツヅキ、 "6 7)) (j (amb 5 8 11))) (if (prime? (+ i j)) (list i j) (amb)))" を取り出して、スタックにpush。 次の行、 (j (amb 5 8 1

  • delimited continuation - ocaml-nagoya

    限定継続とは? † 継続は「その後の計算」を表現したものです。対して、限定継続は「特定の範囲のその後の計算」を表現したものです。つまり、継続がグローバルな「その後」とイメージするならば、ローカルな継続が限定継続という感じです。 限定継続を扱う演算子には主にshift/resetのペアとprompt/controlのペアがあります。それぞれ静的な演算子、動的な動的な演算子と呼ばれます。(その理由はschmeとかのdynamic bindingとかと関係あるらしいけど、よくわかりません)

  • 1