module Data.Digit.Digitc(
Digitc(..)
) where
import Papa
import Data.Digit.Dc(Dc(dc))
import Prelude(Bounded, RealFrac)
newtype Digitc a =
Digitc a
deriving (Eq, Ord, Bounded, Show, Enum, Floating, Fractional, Num, Integral, Real, RealFloat, RealFrac)
instance Dc a => Dc (Digitc a) where
dc =
_Wrapped . dc
instance Functor Digitc where
fmap f (Digitc a) =
Digitc (f a)
instance Apply Digitc where
Digitc f <.> Digitc a =
Digitc (f a)
instance Applicative Digitc where
pure =
Digitc
(<*>) =
(<.>)
instance Bind Digitc where
Digitc a >>- f =
f a
instance Monad Digitc where
return =
pure
(>>=) =
(>>-)
instance Foldable Digitc where
foldMap f (Digitc a) =
f a
instance Foldable1 Digitc where
foldMap1 f (Digitc a) =
f a
instance Traversable Digitc where
traverse f (Digitc a) =
Digitc <$> f a
instance Traversable1 Digitc where
traverse1 f (Digitc a) =
Digitc <$> f a
instance Semigroup a => Semigroup (Digitc a) where
Digitc x <> Digitc y =
Digitc (x <> y)
instance Monoid a => Monoid (Digitc a) where
Digitc x `mappend` Digitc y =
Digitc (x `mappend` y)
mempty =
Digitc mempty
instance Field1 (Digitc a) (Digitc b) a b where
_1 =
_Wrapped
instance FunctorWithIndex () Digitc where
imap f =
fmap (f ())
instance FoldableWithIndex () Digitc where
ifoldMap f =
foldMap (f ())
instance TraversableWithIndex () Digitc where
itraverse f =
traverse (f ())
instance Each (Digitc a) (Digitc b) a b where
each =
traverse
type instance Index (Digitc a) =
()
type instance IxValue (Digitc a) =
a
instance Ixed (Digitc a) where
ix () f (Digitc a) =
Digitc <$> f a
makeWrapped ''Digitc