Proposal: Add IsString instance for (Maybe a) to base

Conrad Parker conrad at
Mon Jul 15 03:40:05 CEST 2013

On 10 July 2013 05:24, Simon Hengel <sol at> wrote:
> Hi,
> what about adding
>     instance IsString a => IsString (Maybe a) where
>       fromString = Just . fromString
> It makes specifying optional String/Text/... values more convenient.
> Here is an example that uses
> Use
>     shell "ls -l" { cwd = "/home/me" }
> instead of
>     shell "ls -l" { cwd = Just "/home/me" }
> I'm not yet sure how essential it is.  But I somehow can't see any
> issues with it.  So why not?


After reviewing the resulting discussion I agree that there's no
possible ambiguity and Simon's use-case is compelling. I think it's
great that this allows us to write obvious code without cluttering the
common use-case with Justs, while still allowing the underlying types
to be properly expressive (ie. admitting a Nothing value when that is
appropriate). This is especially important for a DSL that uses lots of
strings, like shell scripting.

I think (Maybe String) is a perfectly good string; it's just a string
type that has an extra value of Nothing -- and Nothing doesn't even
play a part in the IsString instance.


More information about the Libraries mailing list