0 | module Data.Functor.Const
3 | record Const (a : Type) (b : Type) where
8 | Eq a => Eq (Const a b) where
9 | (==) = (==) `on` getConst
12 | Ord a => Ord (Const a b) where
13 | compare = compare `on` getConst
16 | Show a => Show (Const a b) where
17 | showPrec p = showCon p "MkConst" . showArg . getConst
20 | Functor (Const a) where
21 | map _ (MkConst a)= MkConst a
24 | Monoid a => Applicative (Const a) where
25 | pure _ = MkConst neutral
26 | MkConst f <*> MkConst a = MkConst $
f <+> a
29 | Foldable (Const a) where
35 | Traversable (Const a) where
36 | traverse _ (MkConst v) = pure (MkConst v)
39 | Bifunctor Const where
40 | bimap f _ (MkConst a) = MkConst (f a)
43 | Bifoldable Const where
44 | bifoldl f _ acc (MkConst a) = f acc a
45 | bifoldr f _ acc (MkConst a) = f a acc
49 | Bitraversable Const where
50 | bitraverse f _ (MkConst a) = MkConst <$> f a