On 27 Aug 2013, at 08:33, Niklas Hambüchen wrote:

> @Malcolm, would you mind a change towards throwing an exception that is
> different from error so that it can be easily caught, or even better, a
> change from
> 
>    runCpphs :: ... -> IO String
> 
> to
> 
>    runCpphs :: ... -> IO (Either String String)
> 
> or similar?

Have you tried simply wrapping the call to runCpphs in a "catch"?  Something 
like

    safeRunCpphs :: ... -> IO (Either String String)
    safeRunCpphs foo = fmap Right (runCpphs foo) `catch` (\(UserError s)-> Left 
s

> If an exception based interface is kept, it would be nice to add some
> haddock to `runCpphs`; not knowing about the existence of #error, it is
> easy to assume that the IO is only used for accessing the FilePath
> passed in.

The IO is used also for reading #include'd files, of course.  I'd be happy to 
add some extra documentation making the behaviour on #error clearer, if you can 
suggest some text that would have helped you.

Regards,
    Malcolm
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to