On Tue, Nov 30, 2021 at 2:20 PM Brandon Allbery <allbery.b@gmail.com> wrote:
Because the primary purpose of fail is to provide for failed pattern
matches, which invoke it with a String representing the pattern match
error.

I see the purpose, but fail with just literal string is not very informative.
It is easier for debugging supplying an error message with Showable parameters.
Custom Prelude has show :: a - >Text so fail looks like:

    oops -> fail $ "functionX is not implemented for " <> show oops



On Tue, Nov 30, 2021 at 2:16 PM Daneel Yaitskov <dyaitskov@gmail.com> wrote:
>
> Dear Cafe,
>
> MonadFail.fail takes String.
> I wasn't able to find MonadFail for custom error type.
> Is there any proposals to base?
>
> Let's say Data.Text, which gains popularity with OverloadedStrings extensions.
>
> class MonadFail m where
>   fail :: String -> m a
>
> Why not ?
> class MonadFail m where
>   fail :: (forall s. IsString s => s) -> m a
>
> class MonadFailWith m s where
>   fail :: s -> m a
>
>
>
>
>
>
>
> --
>
> Best regards,
> Daniil Iaitskov
>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.



--
brandon s allbery kf8nh
allbery.b@gmail.com


--

Best regards,
Daniil Iaitskov