{-# LANGUAGE DeriveAnyClass        #-}
{-# LANGUAGE DeriveFunctor         #-}
{-# LANGUAGE DeriveGeneric         #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables   #-}
{-# LANGUAGE TypeFamilies          #-}

module HaskellWorks.Data.Bits.Broadword.Type
  ( Broadword(..)
  , broadword
  ) where

import Control.DeepSeq
import Data.Word
import GHC.Generics

newtype Broadword a = Broadword a deriving (Broadword a -> Broadword a -> Bool
(Broadword a -> Broadword a -> Bool)
-> (Broadword a -> Broadword a -> Bool) -> Eq (Broadword a)
forall a. Eq a => Broadword a -> Broadword a -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Broadword a -> Broadword a -> Bool
$c/= :: forall a. Eq a => Broadword a -> Broadword a -> Bool
== :: Broadword a -> Broadword a -> Bool
$c== :: forall a. Eq a => Broadword a -> Broadword a -> Bool
Eq, Int -> Broadword a -> ShowS
[Broadword a] -> ShowS
Broadword a -> String
(Int -> Broadword a -> ShowS)
-> (Broadword a -> String)
-> ([Broadword a] -> ShowS)
-> Show (Broadword a)
forall a. Show a => Int -> Broadword a -> ShowS
forall a. Show a => [Broadword a] -> ShowS
forall a. Show a => Broadword a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Broadword a] -> ShowS
$cshowList :: forall a. Show a => [Broadword a] -> ShowS
show :: Broadword a -> String
$cshow :: forall a. Show a => Broadword a -> String
showsPrec :: Int -> Broadword a -> ShowS
$cshowsPrec :: forall a. Show a => Int -> Broadword a -> ShowS
Show, a -> Broadword b -> Broadword a
(a -> b) -> Broadword a -> Broadword b
(forall a b. (a -> b) -> Broadword a -> Broadword b)
-> (forall a b. a -> Broadword b -> Broadword a)
-> Functor Broadword
forall a b. a -> Broadword b -> Broadword a
forall a b. (a -> b) -> Broadword a -> Broadword b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: a -> Broadword b -> Broadword a
$c<$ :: forall a b. a -> Broadword b -> Broadword a
fmap :: (a -> b) -> Broadword a -> Broadword b
$cfmap :: forall a b. (a -> b) -> Broadword a -> Broadword b
Functor, (forall x. Broadword a -> Rep (Broadword a) x)
-> (forall x. Rep (Broadword a) x -> Broadword a)
-> Generic (Broadword a)
forall x. Rep (Broadword a) x -> Broadword a
forall x. Broadword a -> Rep (Broadword a) x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
forall a x. Rep (Broadword a) x -> Broadword a
forall a x. Broadword a -> Rep (Broadword a) x
$cto :: forall a x. Rep (Broadword a) x -> Broadword a
$cfrom :: forall a x. Broadword a -> Rep (Broadword a) x
Generic, Broadword a -> ()
(Broadword a -> ()) -> NFData (Broadword a)
forall a. NFData a => Broadword a -> ()
forall a. (a -> ()) -> NFData a
rnf :: Broadword a -> ()
$crnf :: forall a. NFData a => Broadword a -> ()
NFData)

broadword :: Broadword Word64 -> Word64
broadword :: Broadword Word64 -> Word64
broadword (Broadword Word64
a) = Word64
a
{-# INLINE broadword #-}