export record Core t where constructor MkCore runCore : IO (Either String t) pure : a -> Core a pure x = MkCore (pure (pure x)) export (<*>) : Core (a -> b) -> Core a -> Core b (<*>) (MkCore f) (MkCore a) = MkCore [| f `Prelude.(<*>)` a |] addm : Maybe Int -> Maybe Int -> Maybe Int addm x y = [| x + y |]