@@ -63,12 +63,12 @@ instance ToEpic (TT Name) where
6363 return $ lazy_ arg'
6464 | (P _ (UN "believe_me") _, [_, _, arg]) <- unApply tm
6565 = epic' env arg
66−-- | (P _ (UN "prim__IO") _, [_, v]) <- unApply tm
67−-- = epic' env v
68−-- | (P _ (UN "io_bind") _, [_,_,v,k]) <- unApply tm
69−-- = do v' <- epic' env v
70−-- k' <- epic' env k
71−-- return (k' @@ v')
66+ | (P _ (UN "prim__IO") _, [_, v]) <- unApply tm
67+ = epic' env v
68+ | (P _ (UN "io_bind") _, [_,_,v,k]) <- unApply tm
69+ = do v' <- epic' env v
70+ k' <- epic' env k
71+ return (k' @@ (effect_ v'))
7272 epic' env (P (DCon t a) n _) = return $ con_ t
7373 epic' env (P (TCon t a) n _) = return $ con_ t
7474 epic' env (P _ n _) = return $ ref (ename n)
@@ -94,7 +94,8 @@ doForeign (_ : fgn : args)
9494 rty = mkEty ret in
9595 do args' <- mapM epic args
9696 -- wrap it in a prim__IO
97− return $ con_ 0 @@ impossible @@ foreign_ rty fgnName (zip args' tys)
97+ -- return $ con_ 0 @@ impossible @@
98+ return $ foreign_ rty fgnName (zip args' tys)
9899 | otherwise = fail "Badly formed foreign function call"
99100
100101getFTypes :: TT Name -> [E.Type]