@@ -63,12 +63,12 @@ instance ToEpic (TT Name) where
63 return $ lazy_ arg'
63 return $ lazy_ arg'
64 | (P _ (UN "believe_me") _, [_, _, arg]) <- unApply tm
64 | (P _ (UN "believe_me") _, [_, _, arg]) <- unApply tm
65 = epic' env arg
65 = epic' env arg
66−-- | (P _ (UN "prim__IO") _, [_, v]) <- unApply tm
66+ | (P _ (UN "prim__IO") _, [_, v]) <- unApply tm
67−-- = epic' env v
67+ = epic' env v
68−-- | (P _ (UN "io_bind") _, [_,_,v,k]) <- unApply tm
68+ | (P _ (UN "io_bind") _, [_,_,v,k]) <- unApply tm
69−-- = do v' <- epic' env v
69+ = do v' <- epic' env v
70−-- k' <- epic' env k
70+ k' <- epic' env k
71−-- return (k' @@ v')
71+ return (k' @@ (effect_ v'))
72 epic' env (P (DCon t a) n _) = return $ con_ t
72 epic' env (P (DCon t a) n _) = return $ con_ t
73 epic' env (P (TCon t a) n _) = return $ con_ t
73 epic' env (P (TCon t a) n _) = return $ con_ t
74 epic' env (P _ n _) = return $ ref (ename n)
74 epic' env (P _ n _) = return $ ref (ename n)
@@ -94,7 +94,8 @@ doForeign (_ : fgn : args)
94 rty = mkEty ret in
94 rty = mkEty ret in
95 do args' <- mapM epic args
95 do args' <- mapM epic args
96 -- wrap it in a prim__IO
96 -- wrap it in a prim__IO
97+ -- return $ con_ 0 @@ impossible @@
97− return $ con_ 0 @@ impossible @@ foreign_ rty fgnName (zip args' tys)
98+ return $ foreign_ rty fgnName (zip args' tys)
98 | otherwise = fail "Badly formed foreign function call"
99 | otherwise = fail "Badly formed foreign function call"
100getFTypes :: TT Name -> [E.Type]
101getFTypes :: TT Name -> [E.Type]