Safe Haskell at the export symbol granularity?

Antoine Latter aslatter at
Thu May 17 16:48:45 CEST 2012

On Thu, May 17, 2012 at 8:50 AM, Ryan Newton <rrnewton at> wrote:
> Thanks David.
> I'm glad to see it was discussed in the wiki.  (Btw, my 2 cents is that I
> like the comment pragmas more than new keywords.)
> The issue that I think doesn't make it into the wiki is of splitting, not
> modules, but type-classes. That's where I think it becomes a more serious
> issue.
> Do you think a symbol-level Safe Haskell would be able to distinguish one
> method of a type class as unsafe, while the others are safe?

You can still do this at the module level, with the down-side of
potentially not being able to implement a class with the safe version:

> module Unsafe where
> class MyClass a where
>   safeOp :: a -> Int -> IO ()
>   unsafeOp :: a -> Int -> IO ()
> instance MyClass A where ...

> module Safe
>   (MyClass(safeOp))
>   where
> import Unsafe

I think this works.


More information about the Libraries mailing list