は私が継続上つもりだと私は構造化継続タイプに2つの異なるアプローチに遭遇しました:私は後者のアプローチはdoesnのことを理解し type C r a = (a -> r) -> r
exampleFunction :: String -> C Bool String
exampleFunction s = \t -> if length s > 10 then t s else False
私は(簡単のためにモナドを使用して回避)非常に単純な継続機能を持っている::基本的に data C a = C {unwrap :: (a -> a) -> a}
、私は、入力タイプに基づいて異なる実装を実行する(sudoのコード)に似た何かをしようとしています data Gadt a where
AString :: String -> Gadt Bool
AInt ::
私はこれに続く続きを一般的に理解しようとしています。tutorial。 しかし、私は困難がセクション2.10で次の例を理解するために持っています: # let get() =
shift (fun k -> fun state -> k state state) ;;
get : unit => ’a = <fun>
state私は考えタイプintです。私が得ないのは、kのタイプで
なぜ「DIV/0」が最初に印刷され、「2」秒後に印刷されるのですか? let printZero = printfn "DIV/0"
let printSuccess x = printfn "%d" x
let div ifZero success x y =
if y = 0
then ifZero
else x/y |> success
let pri