Je suis aux prises avec un exercice de Haskell Book (Chapitre 16. Functor). Compte tenu de ce qui suit, il me attend de définir fmap
:Comment écrire l'instance Functor pour ce type?
{-# LANGUAGE FlexibleInstances #-}
newtype Flip f a b =
Flip (f b a)
deriving (Eq, Show)
newtype K a b =
K a
instance Functor (Flip K a) where
fmap = undefined
Dans un exercice précédent, je l'ai déjà fait ce qui suit:
data K a b =
K a
instance Functor (K a) where
fmap f (K x) = K x
Mais pour cela Flip a b
, je ne peux même pas comprendre comment commencer, par exemple comment continuer fmap f Flip ...
.
Je pensais que peut-être avant de le faire que je devrais aussi écrire un foncteur pour le newtype K a b
, semblable à ce que je faisais data K a b
:
instance Functor (K a) where
fmap f (K x) = K x
Mais je ne peux pas comprendre comment procéder à l'instance Functor pour Flip f a b
.
Des idées, des conseils?
Enfin, je suis venu avec quelque chose qui vérifie le type: 'Functor d'instance (Flip K a) où fmap f (Flip (K x)) = Flip (K (f x))'. Mais maintenant je ne peux pas m'expliquer (je ne sais même pas si c'est correct). –