[Haskell-cafe] Call for discussion: OverloadedLists extension

Heinrich Apfelmus apfelmus at quantentunnel.de
Tue Sep 25 18:21:24 CEST 2012


Michael Snoyman wrote:
> 
> Note that I wasn't necessarily advocating such a pragma. And a lot of
> my XML code actually *does* use two IsString instances at the same
> time, e.g.:
> 
>     Element ("img" :: Name) (singleton ("href" :: Name) ("foo.png" ::
> Text)) [NodeComment ("No content inside an image" :: Text)]

In this particular case, would it make sense to use smart constructors 
instead?

The idea is that you can put the polymorphism in two places: either make 
the "output" polymorphic, or make the "input" polymorphic. The latter 
would correspond to a type

    element :: (IsString name, IsString s, IsMap map)
        => name -> map name s -> [Element]
    element name map = Element (toName name) (toMap map)

One benefit would be that the function will accept any list as a map, 
not just list literals.


Best regards,
Heinrich Apfelmus

--
http://apfelmus.nfshost.com




More information about the Haskell-Cafe mailing list