首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

#functor

“deriving Functor”到底是做什么的?

导出Functor实例总是做显而易见的事情。这通常是很好的,但偶尔会错过机会。例如,假设我写 data Pair a = Pair a a deriving Functor data Digit a = One a | Two a a deriving Functor data Queue a = Empty | Single a | Deep !(Digit a) (Queue (Pair a)) !(Digit a) deriving Functor 这将生成(在ghc 8.2中) instance Functor Queue where fmap ... x <$ Empty = Empty x <$ Single y = Single x x <$ Deep pr m sf = Deep (x <$ pr) (fmap (x <$) m) (x <$ sf) 用手写最后一个例子是可能的: x <$ Deep pr m sf = Deep (x <$ pr) (Pair x x <$ m) (x <$ sf) 可以看到实际的派生代码-ddump-deriv...... 展开详请
领券