haskell / error-messages

72 stars 18 forks source link

Better MonadFail #29

Open WinstonHartnett opened 2 years ago

WinstonHartnett commented 2 years ago

from Haskell GameDev discord

Given a failable ... <- ... pattern on sum type Request with two variants:

unknown

Most users probably don't want to implement a MonadFail instance for monads defined in a library. The following would be more helpful:

    • Failable pattern in non-failable do statement
      `(HaulRequest (resource, requiredAmount) amount)`
      This pattern fails on:
        `ConstructionRequest`
    • Note: the left pattern of `<-` must succeed on 
      all variants unless `MonadFail` is defined
    • Perhaps you intended to handle each variant with `case`:
        `r0 <- get building
         case r0 of
           HaulRequest ...
           ConstructionRequest ...`
    • Perhaps you intended to define a 
      `MonadFail (SystemT World IO)` instance to
      handle failable patterns
Ericson2314 commented 2 years ago

https://github.com/ghc-proposals/ghc-proposals/pull/319 was supposed to solve this problem, among other things. Alas. Hopefully I can resurrect it after there is a new -XNoIncomplete to bolster its case.