如何编写Functor实例

我有以下类型data Summish a b = First a | Second b

如何为其编写 Functor 实例?

我试过

instance Functor (Summish a) where
  fmap f (Second a) = Second (f a)

回答

最简单的方法是让编译器为你做(派生)它:

{-# LANGUAGE DeriveFunctor #-}

data Summish a b 
   = First a 
   | Second b
   deriving Functor

这仅适用于您在GHC 中启用了派生函子扩展(用于 GHCi )。:set -XDeriveFunctor

所以我猜你想/需要手动推导它。

正如其他人所说,您只需要案例First即可使其详尽无遗

data Summish a b 
   = First a 
   | Second b

instance Functor (Summish a) where
   fmap f (First b) = First b
   fmap f (Second a) = Second (f a)


以上是如何编写Functor实例的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>