Haskell позволяет выводить экземпляры типов, например:
{-# LANGUAGE DeriveFunctor #-}
data Foo a = MakeFoo a a deriving (Functor)
... но иногда тесты показывают, что производительность улучшается, если вы вручную реализуете экземпляр typeclass и комментируете метод класса класса с INLINE
, например:
data Foo a = MakeFoo a a
instance Functor Foo where
fmap f (MakeFoo x y) = MakeFoo (f x) (f y)
{-# INLINE fmap #-}
Есть ли способ получить лучшее из обоих миров? Другими словами, существует ли способ получить экземпляр typeclass, а также аннотировать полученные производные методы меток с помощью INLINE
?