Handle is no good because it clashes with file handles. How about Reaction?
On Jul 14, 2016 1:53 PM, "Andreas Abel" <andreas.abel@ifi.lmu.de> wrote:Maybe rather
data Handle a = Rethrow | Handle (IO a)
!?
On 14.07.2016 19:12, David Feuer wrote:
That makes sense, I guess. Something like
data Handle a = Rethrow | Catch (IO a)
I suppose? My names are awful though.
On Jul 14, 2016 12:56 PM, "Oliver Charles" <ollie@ocharles.org.uk
<mailto:ollie@ocharles.org.uk>> wrote:
On Tue, 12 Jul 2016, 1:23 a.m. David Feuer, <david.feuer@gmail.com
<mailto:david.feuer@gmail.com>> wrote:
The catchJust and handleJust functions seem a bit weird and
unidiomatic.
catchJust
:: Exception e
=> (e -> Maybe b) -- ^ Predicate to select
exceptions
-> IO a -- ^ Computation to run
-> (b -> IO a) -- ^ Handler
-> IO a
catchJust p a handler = catch a handler'
where handler' e = case p e of
Nothing -> throwIO e
Just b -> handler b
This takes two functions and then puts them together. I would
think the more natural API would be
catchMaybe :: Exception e => IO a -> (e -> Maybe (IO a)) -> IO a
catchMaybe m handler = catch m handler' where
handler' e = fromMaybe (throwIO e) (handler e)
A point don't feel super strongly about, but feel I should raise, is
that Nothing seems to be somewhat confusing. catchJust
(\FileNotFound -> Nothing) seems to suggest that if FileNotFound
occurs then nothing will happen, that is - the exception is ignored.
However, that is not the case, rather than Nothing happening
something certainly happens - an exception is (re)thrown!
Whether or not this confusion is likely to happen in practice I
don't know, but it suggests a type isomorphic to Maybe is a better fit.
Ollie
_______________________________________________
Libraries mailing list
Libraries@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/libraries
--
Andreas Abel <>< Du bist der geliebte Mensch.
Department of Computer Science and Engineering
Chalmers and Gothenburg University, Sweden
andreas.abel@gu.se
http://www2.tcs.ifi.lmu.de/~abel/