“Const”和仿函数的产品名称?

时间:2014-10-02 19:01:30

标签: haskell functor

SF是否已在任何地方定义,或至少有名称?

data SF a f x = SF a (f x)

instance Functor f => Functor (SF a f) where
  fmap g (SF a fx) = SF a (fmap g fx)

2 个答案:

答案 0 :(得分:4)

你的算子看起来像

type SF a f = (,) a :. f

使用functor-combo表示法。

(我不知何故更喜欢使用合成来看待它,而不是使用产品和Const。)

答案 1 :(得分:1)

您可以定义仿函数产品

data (f :* g) a = P (f a) (g a) deriving Functor

然后直接写

type SF a f = Const a :* f