
Hi all, Can someone explain to me why exactly when defining the Functor instance for type that has polimorphic parameter constraint I am not allowed to put that parameter in definition. So basically: data Four a b c d = Four a b c d instance Functor (Four a b c) where <-- why can't I specify also param d here ?? fmap f (Four a b c d) = Four a b c (f d) I asked the same question on IRC and got the answer that it is because of Functor has kind * -> *. I thought I understand it but it is not clear to me completely. I understand type kinds on examples I looked at before but when looking at this Functor instance why exactly I don't specify all params for the type and while we are at it why don't I also specify f param for the Functor like this "instance Functor f (Four a b c d) where ...". Thanks, Sasa { name: Bogicevic Sasa phone: +381606006200 }