Рассмотрим следующий тип:
data SomeType m a = SomeType (m Integer) [a]
Мы можем легко сделать этот тип экземпляром Functor со следующим кодом:
instance Functor (SomeType m) where
fmap f (SomeType m lst) = SomeType m (map f lst)
Однако, если вместо этого были заменены параметры типа SomeType
:
data SomeType2 a m = SomeType2 (m Integer) [a]
Тогда указанное выше определение экземпляра не работает.
Есть ли способ сделать SomeType2
экземпляр Functor? Если нет, есть ли какие-либо дополнения и дополнения к haskell/ghc, которые позволили бы это сделать?