5 = (Data:*) -> (data:(p:World -> Pair World X) -> Data) -> Data
6 IO (X:*) = Monotype (IO_Polytype X)
12 monotype (IO_Polytype X)
13 (λ(Data:*) (data:(World -> Pair World X) -> Data) ->
14 data (λ(w:World) -> pair World X w x))
15 Monad_bind_IO (X:*) (Y:*)
17 = λ(mx:IO X) (my:X -> IO Y) ->
18 monotype (IO_Polytype Y)
19 (λ(Data:*) (oy:(World -> Pair World Y) -> Data) ->
20 polytype (IO_Polytype X) mx Data (λ(px:World -> Pair World X) ->
22 uncurry World X (Pair World Y)
24 polytype (IO_Polytype Y) (my x) (Pair World Y) (λ(py:World -> Pair World Y) ->