bracket :: InUnion fs IO => Eff fs a -> (a -> Eff fs b) -> (a -> Eff fs c) -> Eff fs c
bracket before after thing = inj (E.bracket (return before) (return . (>>= after)) (return . (>>= thing))) `Then` id
bracket :: InUnion fs IO => Eff fs a -> (a -> Eff fs b) -> (a -> Eff fs c) -> Eff fs c
bracket before after thing = inj (E.bracket (return before) (return . (>>= after)) (return . (>>= thing))) `Then` id
bracket before after thing = inj (E.bracket (return before) (return . (>>= after)) (return . (>>= thing))) `Then` id