No magic coercing is present in the proposal. You need to use explicit newtype wrap and newtype unwrap expressions.
Sent from my iPad On Jan 14, 2013, at 6:42 PM, Johan Tibell <johan.tib...@gmail.com> wrote: > On Mon, Jan 14, 2013 at 3:40 PM, Evan Laforge <qdun...@gmail.com> wrote: >> Wait, what's the runtime error? Do you mean messing up Set's invariants? > > Yes. > >> If you as the library writer don't want to allow unsafe things, then >> don't export the constructor. Then no one can break your invariants, >> even with newtype malarky. If you as the the library user go and >> explicitly import the bare Set constructor from (theoretical) >> Data.Set.Unsafe, then you are in the position to break Set's internal >> invariants anyway, and have already accepted the great power / great >> responsibility tradeoff. > > If it's explicit that this is what you're doing I'm fine with it. I > just don't want magic coercing depending on what's in scope. > > _______________________________________________ > Glasgow-haskell-users mailing list > Glasgow-haskell-users@haskell.org > http://www.haskell.org/mailman/listinfo/glasgow-haskell-users _______________________________________________ Glasgow-haskell-users mailing list Glasgow-haskell-users@haskell.org http://www.haskell.org/mailman/listinfo/glasgow-haskell-users