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