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/