7 | data Promise : Type -> Type where [external]
10 | ToFFI (Promise a) (Promise a) where toFFI = id
13 | FromFFI (Promise a) (Promise a) where fromFFI = Just
15 | %foreign "javascript:lambda:(a,reg,w) => new Promise ((cb) => reg((x) => cb(x))(w))"
16 | prim__promise : ((a -> PrimIO ()) -> PrimIO ()) -> PrimIO (Promise a)
18 | %foreign "javascript:lambda:(a,b,p,succ,err,w) => p.then((x) => succ(x)(w),(x) => err(`${x}`)(w))"
22 | -> (String -> PrimIO b)
23 | -> PrimIO (Promise b)
25 | %foreign "javascript:lambda:(a,b,p,succ,err,w) => p.then((x) => succ(x)(w),(x) => err(`${x}`)(w))"
28 | -> (a -> PrimIO (Promise b))
29 | -> (String -> PrimIO (Promise b))
30 | -> PrimIO (Promise b)
33 | toPromise : ((a -> IO ()) -> IO ()) -> IO (Promise a)
34 | toPromise reg = primIO $
prim__promise (\f => toPrim (reg $
\x => fromPrim $
f x))
38 | onPromise : Promise a -> (a -> IO b) -> (String -> IO b) -> IO (Promise b)
40 | primIO $
prim__then p (\x => toPrim $
f x) (\x => toPrim $
g x)
46 | -> (a -> IO (Promise b))
47 | -> (String -> IO (Promise b))
50 | primIO $
prim__thenp p (\x => toPrim $
f x) (\x => toPrim $
g x)