Je voudrais avoir une classe de types de types qui peuvent éventuellement être castés vers d'autres types lorsque c'est possible.Comment faire des classes de types spécialisées pour certains types, l'implémentation par défaut pour le reste des types
class Castable a b where
cast :: a -> Maybe b
cast _ = Nothing -- default implementation
Maintenant, la classe serait mis en œuvre pour certains types et pour tous les autres je voudrais avoir la mise en œuvre par défaut.
Comment on peut faire ça?
Dans mon cas aussi {- # LANGUAGE IncoherentInstances # -} étaient nécessaires, mais c'est la réponse à ma question. Merci! – Tener
Salut Don - comment l'instance particulière est-elle choisie? c'est-à-dire que GHC décide toujours d'utiliser l'instance la plus spécifique, en particulier en présence de modules séparés? Il y a un mois ou deux, il y avait un fil à propos de cela sur Haskell Cafe, mais personne n'a fourni de réponse. –
Selon la documentation: "L'indicateur -XOverlappingInstances indique à GHC de permettre la correspondance de plusieurs instances, à condition qu'il y en ait une plus spécifique.S'il n'y a pas de correspondance la plus spécifique, le programme est rejeté." –