{-# LANGUAGE DerivingVia #-}

module U.Codebase.Sqlite.LocalIds where

import Control.Lens
import Data.Bifoldable (Bifoldable (bifoldMap))
import Data.Bitraversable (Bitraversable (bitraverse))
import Data.Bits (Bits)
import Data.Vector (Vector)
import Data.Word (Word64)
import U.Codebase.Sqlite.DbId

-- | A mapping between index ids that are local to an object and the ids in the database
data LocalIds' t h = LocalIds
  { forall t h. LocalIds' t h -> Vector t
textLookup :: Vector t,
    forall t h. LocalIds' t h -> Vector h
defnLookup :: Vector h
  }
  deriving ((forall a b. (a -> b) -> LocalIds' t a -> LocalIds' t b)
-> (forall a b. a -> LocalIds' t b -> LocalIds' t a)
-> Functor (LocalIds' t)
forall a b. a -> LocalIds' t b -> LocalIds' t a
forall a b. (a -> b) -> LocalIds' t a -> LocalIds' t b
forall t a b. a -> LocalIds' t b -> LocalIds' t a
forall t a b. (a -> b) -> LocalIds' t a -> LocalIds' t b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
$cfmap :: forall t a b. (a -> b) -> LocalIds' t a -> LocalIds' t b
fmap :: forall a b. (a -> b) -> LocalIds' t a -> LocalIds' t b
$c<$ :: forall t a b. a -> LocalIds' t b -> LocalIds' t a
<$ :: forall a b. a -> LocalIds' t b -> LocalIds' t a
Functor, Int -> LocalIds' t h -> ShowS
[LocalIds' t h] -> ShowS
LocalIds' t h -> String
(Int -> LocalIds' t h -> ShowS)
-> (LocalIds' t h -> String)
-> ([LocalIds' t h] -> ShowS)
-> Show (LocalIds' t h)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall t h. (Show t, Show h) => Int -> LocalIds' t h -> ShowS
forall t h. (Show t, Show h) => [LocalIds' t h] -> ShowS
forall t h. (Show t, Show h) => LocalIds' t h -> String
$cshowsPrec :: forall t h. (Show t, Show h) => Int -> LocalIds' t h -> ShowS
showsPrec :: Int -> LocalIds' t h -> ShowS
$cshow :: forall t h. (Show t, Show h) => LocalIds' t h -> String
show :: LocalIds' t h -> String
$cshowList :: forall t h. (Show t, Show h) => [LocalIds' t h] -> ShowS
showList :: [LocalIds' t h] -> ShowS
Show)

type LocalIds = LocalIds' TextId ObjectId

type WatchLocalIds = LocalIds' TextId HashId

-- | represents an index into a textLookup
newtype LocalTextId = LocalTextId Word64 deriving (LocalTextId -> LocalTextId -> Bool
(LocalTextId -> LocalTextId -> Bool)
-> (LocalTextId -> LocalTextId -> Bool) -> Eq LocalTextId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LocalTextId -> LocalTextId -> Bool
== :: LocalTextId -> LocalTextId -> Bool
$c/= :: LocalTextId -> LocalTextId -> Bool
/= :: LocalTextId -> LocalTextId -> Bool
Eq, Eq LocalTextId
Eq LocalTextId =>
(LocalTextId -> LocalTextId -> Ordering)
-> (LocalTextId -> LocalTextId -> Bool)
-> (LocalTextId -> LocalTextId -> Bool)
-> (LocalTextId -> LocalTextId -> Bool)
-> (LocalTextId -> LocalTextId -> Bool)
-> (LocalTextId -> LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId -> LocalTextId)
-> Ord LocalTextId
LocalTextId -> LocalTextId -> Bool
LocalTextId -> LocalTextId -> Ordering
LocalTextId -> LocalTextId -> LocalTextId
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: LocalTextId -> LocalTextId -> Ordering
compare :: LocalTextId -> LocalTextId -> Ordering
$c< :: LocalTextId -> LocalTextId -> Bool
< :: LocalTextId -> LocalTextId -> Bool
$c<= :: LocalTextId -> LocalTextId -> Bool
<= :: LocalTextId -> LocalTextId -> Bool
$c> :: LocalTextId -> LocalTextId -> Bool
> :: LocalTextId -> LocalTextId -> Bool
$c>= :: LocalTextId -> LocalTextId -> Bool
>= :: LocalTextId -> LocalTextId -> Bool
$cmax :: LocalTextId -> LocalTextId -> LocalTextId
max :: LocalTextId -> LocalTextId -> LocalTextId
$cmin :: LocalTextId -> LocalTextId -> LocalTextId
min :: LocalTextId -> LocalTextId -> LocalTextId
Ord, Int -> LocalTextId -> ShowS
[LocalTextId] -> ShowS
LocalTextId -> String
(Int -> LocalTextId -> ShowS)
-> (LocalTextId -> String)
-> ([LocalTextId] -> ShowS)
-> Show LocalTextId
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LocalTextId -> ShowS
showsPrec :: Int -> LocalTextId -> ShowS
$cshow :: LocalTextId -> String
show :: LocalTextId -> String
$cshowList :: [LocalTextId] -> ShowS
showList :: [LocalTextId] -> ShowS
Show, Integer -> LocalTextId
LocalTextId -> LocalTextId
LocalTextId -> LocalTextId -> LocalTextId
(LocalTextId -> LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId)
-> (Integer -> LocalTextId)
-> Num LocalTextId
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: LocalTextId -> LocalTextId -> LocalTextId
+ :: LocalTextId -> LocalTextId -> LocalTextId
$c- :: LocalTextId -> LocalTextId -> LocalTextId
- :: LocalTextId -> LocalTextId -> LocalTextId
$c* :: LocalTextId -> LocalTextId -> LocalTextId
* :: LocalTextId -> LocalTextId -> LocalTextId
$cnegate :: LocalTextId -> LocalTextId
negate :: LocalTextId -> LocalTextId
$cabs :: LocalTextId -> LocalTextId
abs :: LocalTextId -> LocalTextId
$csignum :: LocalTextId -> LocalTextId
signum :: LocalTextId -> LocalTextId
$cfromInteger :: Integer -> LocalTextId
fromInteger :: Integer -> LocalTextId
Num, Num LocalTextId
Ord LocalTextId
(Num LocalTextId, Ord LocalTextId) =>
(LocalTextId -> Rational) -> Real LocalTextId
LocalTextId -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: LocalTextId -> Rational
toRational :: LocalTextId -> Rational
Real, Int -> LocalTextId
LocalTextId -> Int
LocalTextId -> [LocalTextId]
LocalTextId -> LocalTextId
LocalTextId -> LocalTextId -> [LocalTextId]
LocalTextId -> LocalTextId -> LocalTextId -> [LocalTextId]
(LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId)
-> (Int -> LocalTextId)
-> (LocalTextId -> Int)
-> (LocalTextId -> [LocalTextId])
-> (LocalTextId -> LocalTextId -> [LocalTextId])
-> (LocalTextId -> LocalTextId -> [LocalTextId])
-> (LocalTextId -> LocalTextId -> LocalTextId -> [LocalTextId])
-> Enum LocalTextId
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: LocalTextId -> LocalTextId
succ :: LocalTextId -> LocalTextId
$cpred :: LocalTextId -> LocalTextId
pred :: LocalTextId -> LocalTextId
$ctoEnum :: Int -> LocalTextId
toEnum :: Int -> LocalTextId
$cfromEnum :: LocalTextId -> Int
fromEnum :: LocalTextId -> Int
$cenumFrom :: LocalTextId -> [LocalTextId]
enumFrom :: LocalTextId -> [LocalTextId]
$cenumFromThen :: LocalTextId -> LocalTextId -> [LocalTextId]
enumFromThen :: LocalTextId -> LocalTextId -> [LocalTextId]
$cenumFromTo :: LocalTextId -> LocalTextId -> [LocalTextId]
enumFromTo :: LocalTextId -> LocalTextId -> [LocalTextId]
$cenumFromThenTo :: LocalTextId -> LocalTextId -> LocalTextId -> [LocalTextId]
enumFromThenTo :: LocalTextId -> LocalTextId -> LocalTextId -> [LocalTextId]
Enum, Enum LocalTextId
Real LocalTextId
(Real LocalTextId, Enum LocalTextId) =>
(LocalTextId -> LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId -> (LocalTextId, LocalTextId))
-> (LocalTextId -> LocalTextId -> (LocalTextId, LocalTextId))
-> (LocalTextId -> Integer)
-> Integral LocalTextId
LocalTextId -> Integer
LocalTextId -> LocalTextId -> (LocalTextId, LocalTextId)
LocalTextId -> LocalTextId -> LocalTextId
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: LocalTextId -> LocalTextId -> LocalTextId
quot :: LocalTextId -> LocalTextId -> LocalTextId
$crem :: LocalTextId -> LocalTextId -> LocalTextId
rem :: LocalTextId -> LocalTextId -> LocalTextId
$cdiv :: LocalTextId -> LocalTextId -> LocalTextId
div :: LocalTextId -> LocalTextId -> LocalTextId
$cmod :: LocalTextId -> LocalTextId -> LocalTextId
mod :: LocalTextId -> LocalTextId -> LocalTextId
$cquotRem :: LocalTextId -> LocalTextId -> (LocalTextId, LocalTextId)
quotRem :: LocalTextId -> LocalTextId -> (LocalTextId, LocalTextId)
$cdivMod :: LocalTextId -> LocalTextId -> (LocalTextId, LocalTextId)
divMod :: LocalTextId -> LocalTextId -> (LocalTextId, LocalTextId)
$ctoInteger :: LocalTextId -> Integer
toInteger :: LocalTextId -> Integer
Integral, Eq LocalTextId
LocalTextId
Eq LocalTextId =>
(LocalTextId -> LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId -> LocalTextId)
-> (LocalTextId -> LocalTextId)
-> (LocalTextId -> Int -> LocalTextId)
-> (LocalTextId -> Int -> LocalTextId)
-> LocalTextId
-> (Int -> LocalTextId)
-> (LocalTextId -> Int -> LocalTextId)
-> (LocalTextId -> Int -> LocalTextId)
-> (LocalTextId -> Int -> LocalTextId)
-> (LocalTextId -> Int -> Bool)
-> (LocalTextId -> Maybe Int)
-> (LocalTextId -> Int)
-> (LocalTextId -> Bool)
-> (LocalTextId -> Int -> LocalTextId)
-> (LocalTextId -> Int -> LocalTextId)
-> (LocalTextId -> Int -> LocalTextId)
-> (LocalTextId -> Int -> LocalTextId)
-> (LocalTextId -> Int -> LocalTextId)
-> (LocalTextId -> Int -> LocalTextId)
-> (LocalTextId -> Int)
-> Bits LocalTextId
Int -> LocalTextId
LocalTextId -> Bool
LocalTextId -> Int
LocalTextId -> Maybe Int
LocalTextId -> LocalTextId
LocalTextId -> Int -> Bool
LocalTextId -> Int -> LocalTextId
LocalTextId -> LocalTextId -> LocalTextId
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: LocalTextId -> LocalTextId -> LocalTextId
.&. :: LocalTextId -> LocalTextId -> LocalTextId
$c.|. :: LocalTextId -> LocalTextId -> LocalTextId
.|. :: LocalTextId -> LocalTextId -> LocalTextId
$cxor :: LocalTextId -> LocalTextId -> LocalTextId
xor :: LocalTextId -> LocalTextId -> LocalTextId
$ccomplement :: LocalTextId -> LocalTextId
complement :: LocalTextId -> LocalTextId
$cshift :: LocalTextId -> Int -> LocalTextId
shift :: LocalTextId -> Int -> LocalTextId
$crotate :: LocalTextId -> Int -> LocalTextId
rotate :: LocalTextId -> Int -> LocalTextId
$czeroBits :: LocalTextId
zeroBits :: LocalTextId
$cbit :: Int -> LocalTextId
bit :: Int -> LocalTextId
$csetBit :: LocalTextId -> Int -> LocalTextId
setBit :: LocalTextId -> Int -> LocalTextId
$cclearBit :: LocalTextId -> Int -> LocalTextId
clearBit :: LocalTextId -> Int -> LocalTextId
$ccomplementBit :: LocalTextId -> Int -> LocalTextId
complementBit :: LocalTextId -> Int -> LocalTextId
$ctestBit :: LocalTextId -> Int -> Bool
testBit :: LocalTextId -> Int -> Bool
$cbitSizeMaybe :: LocalTextId -> Maybe Int
bitSizeMaybe :: LocalTextId -> Maybe Int
$cbitSize :: LocalTextId -> Int
bitSize :: LocalTextId -> Int
$cisSigned :: LocalTextId -> Bool
isSigned :: LocalTextId -> Bool
$cshiftL :: LocalTextId -> Int -> LocalTextId
shiftL :: LocalTextId -> Int -> LocalTextId
$cunsafeShiftL :: LocalTextId -> Int -> LocalTextId
unsafeShiftL :: LocalTextId -> Int -> LocalTextId
$cshiftR :: LocalTextId -> Int -> LocalTextId
shiftR :: LocalTextId -> Int -> LocalTextId
$cunsafeShiftR :: LocalTextId -> Int -> LocalTextId
unsafeShiftR :: LocalTextId -> Int -> LocalTextId
$crotateL :: LocalTextId -> Int -> LocalTextId
rotateL :: LocalTextId -> Int -> LocalTextId
$crotateR :: LocalTextId -> Int -> LocalTextId
rotateR :: LocalTextId -> Int -> LocalTextId
$cpopCount :: LocalTextId -> Int
popCount :: LocalTextId -> Int
Bits) via Word64

-- | represents an index into a defnLookup
--
-- In this context, "definition" means an object that is either a term component or a (type) decl component, not a
-- patch, namespace, or any other kind of object.
newtype LocalDefnId = LocalDefnId Word64 deriving (LocalDefnId -> LocalDefnId -> Bool
(LocalDefnId -> LocalDefnId -> Bool)
-> (LocalDefnId -> LocalDefnId -> Bool) -> Eq LocalDefnId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LocalDefnId -> LocalDefnId -> Bool
== :: LocalDefnId -> LocalDefnId -> Bool
$c/= :: LocalDefnId -> LocalDefnId -> Bool
/= :: LocalDefnId -> LocalDefnId -> Bool
Eq, Eq LocalDefnId
Eq LocalDefnId =>
(LocalDefnId -> LocalDefnId -> Ordering)
-> (LocalDefnId -> LocalDefnId -> Bool)
-> (LocalDefnId -> LocalDefnId -> Bool)
-> (LocalDefnId -> LocalDefnId -> Bool)
-> (LocalDefnId -> LocalDefnId -> Bool)
-> (LocalDefnId -> LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId -> LocalDefnId)
-> Ord LocalDefnId
LocalDefnId -> LocalDefnId -> Bool
LocalDefnId -> LocalDefnId -> Ordering
LocalDefnId -> LocalDefnId -> LocalDefnId
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: LocalDefnId -> LocalDefnId -> Ordering
compare :: LocalDefnId -> LocalDefnId -> Ordering
$c< :: LocalDefnId -> LocalDefnId -> Bool
< :: LocalDefnId -> LocalDefnId -> Bool
$c<= :: LocalDefnId -> LocalDefnId -> Bool
<= :: LocalDefnId -> LocalDefnId -> Bool
$c> :: LocalDefnId -> LocalDefnId -> Bool
> :: LocalDefnId -> LocalDefnId -> Bool
$c>= :: LocalDefnId -> LocalDefnId -> Bool
>= :: LocalDefnId -> LocalDefnId -> Bool
$cmax :: LocalDefnId -> LocalDefnId -> LocalDefnId
max :: LocalDefnId -> LocalDefnId -> LocalDefnId
$cmin :: LocalDefnId -> LocalDefnId -> LocalDefnId
min :: LocalDefnId -> LocalDefnId -> LocalDefnId
Ord, Int -> LocalDefnId -> ShowS
[LocalDefnId] -> ShowS
LocalDefnId -> String
(Int -> LocalDefnId -> ShowS)
-> (LocalDefnId -> String)
-> ([LocalDefnId] -> ShowS)
-> Show LocalDefnId
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LocalDefnId -> ShowS
showsPrec :: Int -> LocalDefnId -> ShowS
$cshow :: LocalDefnId -> String
show :: LocalDefnId -> String
$cshowList :: [LocalDefnId] -> ShowS
showList :: [LocalDefnId] -> ShowS
Show, Integer -> LocalDefnId
LocalDefnId -> LocalDefnId
LocalDefnId -> LocalDefnId -> LocalDefnId
(LocalDefnId -> LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId)
-> (Integer -> LocalDefnId)
-> Num LocalDefnId
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: LocalDefnId -> LocalDefnId -> LocalDefnId
+ :: LocalDefnId -> LocalDefnId -> LocalDefnId
$c- :: LocalDefnId -> LocalDefnId -> LocalDefnId
- :: LocalDefnId -> LocalDefnId -> LocalDefnId
$c* :: LocalDefnId -> LocalDefnId -> LocalDefnId
* :: LocalDefnId -> LocalDefnId -> LocalDefnId
$cnegate :: LocalDefnId -> LocalDefnId
negate :: LocalDefnId -> LocalDefnId
$cabs :: LocalDefnId -> LocalDefnId
abs :: LocalDefnId -> LocalDefnId
$csignum :: LocalDefnId -> LocalDefnId
signum :: LocalDefnId -> LocalDefnId
$cfromInteger :: Integer -> LocalDefnId
fromInteger :: Integer -> LocalDefnId
Num, Num LocalDefnId
Ord LocalDefnId
(Num LocalDefnId, Ord LocalDefnId) =>
(LocalDefnId -> Rational) -> Real LocalDefnId
LocalDefnId -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: LocalDefnId -> Rational
toRational :: LocalDefnId -> Rational
Real, Int -> LocalDefnId
LocalDefnId -> Int
LocalDefnId -> [LocalDefnId]
LocalDefnId -> LocalDefnId
LocalDefnId -> LocalDefnId -> [LocalDefnId]
LocalDefnId -> LocalDefnId -> LocalDefnId -> [LocalDefnId]
(LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId)
-> (Int -> LocalDefnId)
-> (LocalDefnId -> Int)
-> (LocalDefnId -> [LocalDefnId])
-> (LocalDefnId -> LocalDefnId -> [LocalDefnId])
-> (LocalDefnId -> LocalDefnId -> [LocalDefnId])
-> (LocalDefnId -> LocalDefnId -> LocalDefnId -> [LocalDefnId])
-> Enum LocalDefnId
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: LocalDefnId -> LocalDefnId
succ :: LocalDefnId -> LocalDefnId
$cpred :: LocalDefnId -> LocalDefnId
pred :: LocalDefnId -> LocalDefnId
$ctoEnum :: Int -> LocalDefnId
toEnum :: Int -> LocalDefnId
$cfromEnum :: LocalDefnId -> Int
fromEnum :: LocalDefnId -> Int
$cenumFrom :: LocalDefnId -> [LocalDefnId]
enumFrom :: LocalDefnId -> [LocalDefnId]
$cenumFromThen :: LocalDefnId -> LocalDefnId -> [LocalDefnId]
enumFromThen :: LocalDefnId -> LocalDefnId -> [LocalDefnId]
$cenumFromTo :: LocalDefnId -> LocalDefnId -> [LocalDefnId]
enumFromTo :: LocalDefnId -> LocalDefnId -> [LocalDefnId]
$cenumFromThenTo :: LocalDefnId -> LocalDefnId -> LocalDefnId -> [LocalDefnId]
enumFromThenTo :: LocalDefnId -> LocalDefnId -> LocalDefnId -> [LocalDefnId]
Enum, Enum LocalDefnId
Real LocalDefnId
(Real LocalDefnId, Enum LocalDefnId) =>
(LocalDefnId -> LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId -> (LocalDefnId, LocalDefnId))
-> (LocalDefnId -> LocalDefnId -> (LocalDefnId, LocalDefnId))
-> (LocalDefnId -> Integer)
-> Integral LocalDefnId
LocalDefnId -> Integer
LocalDefnId -> LocalDefnId -> (LocalDefnId, LocalDefnId)
LocalDefnId -> LocalDefnId -> LocalDefnId
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: LocalDefnId -> LocalDefnId -> LocalDefnId
quot :: LocalDefnId -> LocalDefnId -> LocalDefnId
$crem :: LocalDefnId -> LocalDefnId -> LocalDefnId
rem :: LocalDefnId -> LocalDefnId -> LocalDefnId
$cdiv :: LocalDefnId -> LocalDefnId -> LocalDefnId
div :: LocalDefnId -> LocalDefnId -> LocalDefnId
$cmod :: LocalDefnId -> LocalDefnId -> LocalDefnId
mod :: LocalDefnId -> LocalDefnId -> LocalDefnId
$cquotRem :: LocalDefnId -> LocalDefnId -> (LocalDefnId, LocalDefnId)
quotRem :: LocalDefnId -> LocalDefnId -> (LocalDefnId, LocalDefnId)
$cdivMod :: LocalDefnId -> LocalDefnId -> (LocalDefnId, LocalDefnId)
divMod :: LocalDefnId -> LocalDefnId -> (LocalDefnId, LocalDefnId)
$ctoInteger :: LocalDefnId -> Integer
toInteger :: LocalDefnId -> Integer
Integral, Eq LocalDefnId
LocalDefnId
Eq LocalDefnId =>
(LocalDefnId -> LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> LocalDefnId)
-> (LocalDefnId -> Int -> LocalDefnId)
-> (LocalDefnId -> Int -> LocalDefnId)
-> LocalDefnId
-> (Int -> LocalDefnId)
-> (LocalDefnId -> Int -> LocalDefnId)
-> (LocalDefnId -> Int -> LocalDefnId)
-> (LocalDefnId -> Int -> LocalDefnId)
-> (LocalDefnId -> Int -> Bool)
-> (LocalDefnId -> Maybe Int)
-> (LocalDefnId -> Int)
-> (LocalDefnId -> Bool)
-> (LocalDefnId -> Int -> LocalDefnId)
-> (LocalDefnId -> Int -> LocalDefnId)
-> (LocalDefnId -> Int -> LocalDefnId)
-> (LocalDefnId -> Int -> LocalDefnId)
-> (LocalDefnId -> Int -> LocalDefnId)
-> (LocalDefnId -> Int -> LocalDefnId)
-> (LocalDefnId -> Int)
-> Bits LocalDefnId
Int -> LocalDefnId
LocalDefnId -> Bool
LocalDefnId -> Int
LocalDefnId -> Maybe Int
LocalDefnId -> LocalDefnId
LocalDefnId -> Int -> Bool
LocalDefnId -> Int -> LocalDefnId
LocalDefnId -> LocalDefnId -> LocalDefnId
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: LocalDefnId -> LocalDefnId -> LocalDefnId
.&. :: LocalDefnId -> LocalDefnId -> LocalDefnId
$c.|. :: LocalDefnId -> LocalDefnId -> LocalDefnId
.|. :: LocalDefnId -> LocalDefnId -> LocalDefnId
$cxor :: LocalDefnId -> LocalDefnId -> LocalDefnId
xor :: LocalDefnId -> LocalDefnId -> LocalDefnId
$ccomplement :: LocalDefnId -> LocalDefnId
complement :: LocalDefnId -> LocalDefnId
$cshift :: LocalDefnId -> Int -> LocalDefnId
shift :: LocalDefnId -> Int -> LocalDefnId
$crotate :: LocalDefnId -> Int -> LocalDefnId
rotate :: LocalDefnId -> Int -> LocalDefnId
$czeroBits :: LocalDefnId
zeroBits :: LocalDefnId
$cbit :: Int -> LocalDefnId
bit :: Int -> LocalDefnId
$csetBit :: LocalDefnId -> Int -> LocalDefnId
setBit :: LocalDefnId -> Int -> LocalDefnId
$cclearBit :: LocalDefnId -> Int -> LocalDefnId
clearBit :: LocalDefnId -> Int -> LocalDefnId
$ccomplementBit :: LocalDefnId -> Int -> LocalDefnId
complementBit :: LocalDefnId -> Int -> LocalDefnId
$ctestBit :: LocalDefnId -> Int -> Bool
testBit :: LocalDefnId -> Int -> Bool
$cbitSizeMaybe :: LocalDefnId -> Maybe Int
bitSizeMaybe :: LocalDefnId -> Maybe Int
$cbitSize :: LocalDefnId -> Int
bitSize :: LocalDefnId -> Int
$cisSigned :: LocalDefnId -> Bool
isSigned :: LocalDefnId -> Bool
$cshiftL :: LocalDefnId -> Int -> LocalDefnId
shiftL :: LocalDefnId -> Int -> LocalDefnId
$cunsafeShiftL :: LocalDefnId -> Int -> LocalDefnId
unsafeShiftL :: LocalDefnId -> Int -> LocalDefnId
$cshiftR :: LocalDefnId -> Int -> LocalDefnId
shiftR :: LocalDefnId -> Int -> LocalDefnId
$cunsafeShiftR :: LocalDefnId -> Int -> LocalDefnId
unsafeShiftR :: LocalDefnId -> Int -> LocalDefnId
$crotateL :: LocalDefnId -> Int -> LocalDefnId
rotateL :: LocalDefnId -> Int -> LocalDefnId
$crotateR :: LocalDefnId -> Int -> LocalDefnId
rotateR :: LocalDefnId -> Int -> LocalDefnId
$cpopCount :: LocalDefnId -> Int
popCount :: LocalDefnId -> Int
Bits) via Word64

-- | a local index to a hash, used when the corresponding object is allowed to be absent
newtype LocalHashId = LocalHashId Word64 deriving (LocalHashId -> LocalHashId -> Bool
(LocalHashId -> LocalHashId -> Bool)
-> (LocalHashId -> LocalHashId -> Bool) -> Eq LocalHashId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LocalHashId -> LocalHashId -> Bool
== :: LocalHashId -> LocalHashId -> Bool
$c/= :: LocalHashId -> LocalHashId -> Bool
/= :: LocalHashId -> LocalHashId -> Bool
Eq, Eq LocalHashId
Eq LocalHashId =>
(LocalHashId -> LocalHashId -> Ordering)
-> (LocalHashId -> LocalHashId -> Bool)
-> (LocalHashId -> LocalHashId -> Bool)
-> (LocalHashId -> LocalHashId -> Bool)
-> (LocalHashId -> LocalHashId -> Bool)
-> (LocalHashId -> LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId -> LocalHashId)
-> Ord LocalHashId
LocalHashId -> LocalHashId -> Bool
LocalHashId -> LocalHashId -> Ordering
LocalHashId -> LocalHashId -> LocalHashId
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: LocalHashId -> LocalHashId -> Ordering
compare :: LocalHashId -> LocalHashId -> Ordering
$c< :: LocalHashId -> LocalHashId -> Bool
< :: LocalHashId -> LocalHashId -> Bool
$c<= :: LocalHashId -> LocalHashId -> Bool
<= :: LocalHashId -> LocalHashId -> Bool
$c> :: LocalHashId -> LocalHashId -> Bool
> :: LocalHashId -> LocalHashId -> Bool
$c>= :: LocalHashId -> LocalHashId -> Bool
>= :: LocalHashId -> LocalHashId -> Bool
$cmax :: LocalHashId -> LocalHashId -> LocalHashId
max :: LocalHashId -> LocalHashId -> LocalHashId
$cmin :: LocalHashId -> LocalHashId -> LocalHashId
min :: LocalHashId -> LocalHashId -> LocalHashId
Ord, Int -> LocalHashId -> ShowS
[LocalHashId] -> ShowS
LocalHashId -> String
(Int -> LocalHashId -> ShowS)
-> (LocalHashId -> String)
-> ([LocalHashId] -> ShowS)
-> Show LocalHashId
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LocalHashId -> ShowS
showsPrec :: Int -> LocalHashId -> ShowS
$cshow :: LocalHashId -> String
show :: LocalHashId -> String
$cshowList :: [LocalHashId] -> ShowS
showList :: [LocalHashId] -> ShowS
Show, Integer -> LocalHashId
LocalHashId -> LocalHashId
LocalHashId -> LocalHashId -> LocalHashId
(LocalHashId -> LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId)
-> (Integer -> LocalHashId)
-> Num LocalHashId
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: LocalHashId -> LocalHashId -> LocalHashId
+ :: LocalHashId -> LocalHashId -> LocalHashId
$c- :: LocalHashId -> LocalHashId -> LocalHashId
- :: LocalHashId -> LocalHashId -> LocalHashId
$c* :: LocalHashId -> LocalHashId -> LocalHashId
* :: LocalHashId -> LocalHashId -> LocalHashId
$cnegate :: LocalHashId -> LocalHashId
negate :: LocalHashId -> LocalHashId
$cabs :: LocalHashId -> LocalHashId
abs :: LocalHashId -> LocalHashId
$csignum :: LocalHashId -> LocalHashId
signum :: LocalHashId -> LocalHashId
$cfromInteger :: Integer -> LocalHashId
fromInteger :: Integer -> LocalHashId
Num, Num LocalHashId
Ord LocalHashId
(Num LocalHashId, Ord LocalHashId) =>
(LocalHashId -> Rational) -> Real LocalHashId
LocalHashId -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: LocalHashId -> Rational
toRational :: LocalHashId -> Rational
Real, Int -> LocalHashId
LocalHashId -> Int
LocalHashId -> [LocalHashId]
LocalHashId -> LocalHashId
LocalHashId -> LocalHashId -> [LocalHashId]
LocalHashId -> LocalHashId -> LocalHashId -> [LocalHashId]
(LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId)
-> (Int -> LocalHashId)
-> (LocalHashId -> Int)
-> (LocalHashId -> [LocalHashId])
-> (LocalHashId -> LocalHashId -> [LocalHashId])
-> (LocalHashId -> LocalHashId -> [LocalHashId])
-> (LocalHashId -> LocalHashId -> LocalHashId -> [LocalHashId])
-> Enum LocalHashId
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: LocalHashId -> LocalHashId
succ :: LocalHashId -> LocalHashId
$cpred :: LocalHashId -> LocalHashId
pred :: LocalHashId -> LocalHashId
$ctoEnum :: Int -> LocalHashId
toEnum :: Int -> LocalHashId
$cfromEnum :: LocalHashId -> Int
fromEnum :: LocalHashId -> Int
$cenumFrom :: LocalHashId -> [LocalHashId]
enumFrom :: LocalHashId -> [LocalHashId]
$cenumFromThen :: LocalHashId -> LocalHashId -> [LocalHashId]
enumFromThen :: LocalHashId -> LocalHashId -> [LocalHashId]
$cenumFromTo :: LocalHashId -> LocalHashId -> [LocalHashId]
enumFromTo :: LocalHashId -> LocalHashId -> [LocalHashId]
$cenumFromThenTo :: LocalHashId -> LocalHashId -> LocalHashId -> [LocalHashId]
enumFromThenTo :: LocalHashId -> LocalHashId -> LocalHashId -> [LocalHashId]
Enum, Enum LocalHashId
Real LocalHashId
(Real LocalHashId, Enum LocalHashId) =>
(LocalHashId -> LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId -> (LocalHashId, LocalHashId))
-> (LocalHashId -> LocalHashId -> (LocalHashId, LocalHashId))
-> (LocalHashId -> Integer)
-> Integral LocalHashId
LocalHashId -> Integer
LocalHashId -> LocalHashId -> (LocalHashId, LocalHashId)
LocalHashId -> LocalHashId -> LocalHashId
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: LocalHashId -> LocalHashId -> LocalHashId
quot :: LocalHashId -> LocalHashId -> LocalHashId
$crem :: LocalHashId -> LocalHashId -> LocalHashId
rem :: LocalHashId -> LocalHashId -> LocalHashId
$cdiv :: LocalHashId -> LocalHashId -> LocalHashId
div :: LocalHashId -> LocalHashId -> LocalHashId
$cmod :: LocalHashId -> LocalHashId -> LocalHashId
mod :: LocalHashId -> LocalHashId -> LocalHashId
$cquotRem :: LocalHashId -> LocalHashId -> (LocalHashId, LocalHashId)
quotRem :: LocalHashId -> LocalHashId -> (LocalHashId, LocalHashId)
$cdivMod :: LocalHashId -> LocalHashId -> (LocalHashId, LocalHashId)
divMod :: LocalHashId -> LocalHashId -> (LocalHashId, LocalHashId)
$ctoInteger :: LocalHashId -> Integer
toInteger :: LocalHashId -> Integer
Integral, Eq LocalHashId
LocalHashId
Eq LocalHashId =>
(LocalHashId -> LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId -> LocalHashId)
-> (LocalHashId -> LocalHashId)
-> (LocalHashId -> Int -> LocalHashId)
-> (LocalHashId -> Int -> LocalHashId)
-> LocalHashId
-> (Int -> LocalHashId)
-> (LocalHashId -> Int -> LocalHashId)
-> (LocalHashId -> Int -> LocalHashId)
-> (LocalHashId -> Int -> LocalHashId)
-> (LocalHashId -> Int -> Bool)
-> (LocalHashId -> Maybe Int)
-> (LocalHashId -> Int)
-> (LocalHashId -> Bool)
-> (LocalHashId -> Int -> LocalHashId)
-> (LocalHashId -> Int -> LocalHashId)
-> (LocalHashId -> Int -> LocalHashId)
-> (LocalHashId -> Int -> LocalHashId)
-> (LocalHashId -> Int -> LocalHashId)
-> (LocalHashId -> Int -> LocalHashId)
-> (LocalHashId -> Int)
-> Bits LocalHashId
Int -> LocalHashId
LocalHashId -> Bool
LocalHashId -> Int
LocalHashId -> Maybe Int
LocalHashId -> LocalHashId
LocalHashId -> Int -> Bool
LocalHashId -> Int -> LocalHashId
LocalHashId -> LocalHashId -> LocalHashId
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: LocalHashId -> LocalHashId -> LocalHashId
.&. :: LocalHashId -> LocalHashId -> LocalHashId
$c.|. :: LocalHashId -> LocalHashId -> LocalHashId
.|. :: LocalHashId -> LocalHashId -> LocalHashId
$cxor :: LocalHashId -> LocalHashId -> LocalHashId
xor :: LocalHashId -> LocalHashId -> LocalHashId
$ccomplement :: LocalHashId -> LocalHashId
complement :: LocalHashId -> LocalHashId
$cshift :: LocalHashId -> Int -> LocalHashId
shift :: LocalHashId -> Int -> LocalHashId
$crotate :: LocalHashId -> Int -> LocalHashId
rotate :: LocalHashId -> Int -> LocalHashId
$czeroBits :: LocalHashId
zeroBits :: LocalHashId
$cbit :: Int -> LocalHashId
bit :: Int -> LocalHashId
$csetBit :: LocalHashId -> Int -> LocalHashId
setBit :: LocalHashId -> Int -> LocalHashId
$cclearBit :: LocalHashId -> Int -> LocalHashId
clearBit :: LocalHashId -> Int -> LocalHashId
$ccomplementBit :: LocalHashId -> Int -> LocalHashId
complementBit :: LocalHashId -> Int -> LocalHashId
$ctestBit :: LocalHashId -> Int -> Bool
testBit :: LocalHashId -> Int -> Bool
$cbitSizeMaybe :: LocalHashId -> Maybe Int
bitSizeMaybe :: LocalHashId -> Maybe Int
$cbitSize :: LocalHashId -> Int
bitSize :: LocalHashId -> Int
$cisSigned :: LocalHashId -> Bool
isSigned :: LocalHashId -> Bool
$cshiftL :: LocalHashId -> Int -> LocalHashId
shiftL :: LocalHashId -> Int -> LocalHashId
$cunsafeShiftL :: LocalHashId -> Int -> LocalHashId
unsafeShiftL :: LocalHashId -> Int -> LocalHashId
$cshiftR :: LocalHashId -> Int -> LocalHashId
shiftR :: LocalHashId -> Int -> LocalHashId
$cunsafeShiftR :: LocalHashId -> Int -> LocalHashId
unsafeShiftR :: LocalHashId -> Int -> LocalHashId
$crotateL :: LocalHashId -> Int -> LocalHashId
rotateL :: LocalHashId -> Int -> LocalHashId
$crotateR :: LocalHashId -> Int -> LocalHashId
rotateR :: LocalHashId -> Int -> LocalHashId
$cpopCount :: LocalHashId -> Int
popCount :: LocalHashId -> Int
Bits) via Word64

newtype LocalPatchObjectId = LocalPatchObjectId Word64 deriving (LocalPatchObjectId -> LocalPatchObjectId -> Bool
(LocalPatchObjectId -> LocalPatchObjectId -> Bool)
-> (LocalPatchObjectId -> LocalPatchObjectId -> Bool)
-> Eq LocalPatchObjectId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
== :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
$c/= :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
/= :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
Eq, Eq LocalPatchObjectId
Eq LocalPatchObjectId =>
(LocalPatchObjectId -> LocalPatchObjectId -> Ordering)
-> (LocalPatchObjectId -> LocalPatchObjectId -> Bool)
-> (LocalPatchObjectId -> LocalPatchObjectId -> Bool)
-> (LocalPatchObjectId -> LocalPatchObjectId -> Bool)
-> (LocalPatchObjectId -> LocalPatchObjectId -> Bool)
-> (LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> Ord LocalPatchObjectId
LocalPatchObjectId -> LocalPatchObjectId -> Bool
LocalPatchObjectId -> LocalPatchObjectId -> Ordering
LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: LocalPatchObjectId -> LocalPatchObjectId -> Ordering
compare :: LocalPatchObjectId -> LocalPatchObjectId -> Ordering
$c< :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
< :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
$c<= :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
<= :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
$c> :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
> :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
$c>= :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
>= :: LocalPatchObjectId -> LocalPatchObjectId -> Bool
$cmax :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
max :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
$cmin :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
min :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
Ord, Int -> LocalPatchObjectId -> ShowS
[LocalPatchObjectId] -> ShowS
LocalPatchObjectId -> String
(Int -> LocalPatchObjectId -> ShowS)
-> (LocalPatchObjectId -> String)
-> ([LocalPatchObjectId] -> ShowS)
-> Show LocalPatchObjectId
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LocalPatchObjectId -> ShowS
showsPrec :: Int -> LocalPatchObjectId -> ShowS
$cshow :: LocalPatchObjectId -> String
show :: LocalPatchObjectId -> String
$cshowList :: [LocalPatchObjectId] -> ShowS
showList :: [LocalPatchObjectId] -> ShowS
Show, Integer -> LocalPatchObjectId
LocalPatchObjectId -> LocalPatchObjectId
LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
(LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId)
-> (Integer -> LocalPatchObjectId)
-> Num LocalPatchObjectId
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
+ :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
$c- :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
- :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
$c* :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
* :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
$cnegate :: LocalPatchObjectId -> LocalPatchObjectId
negate :: LocalPatchObjectId -> LocalPatchObjectId
$cabs :: LocalPatchObjectId -> LocalPatchObjectId
abs :: LocalPatchObjectId -> LocalPatchObjectId
$csignum :: LocalPatchObjectId -> LocalPatchObjectId
signum :: LocalPatchObjectId -> LocalPatchObjectId
$cfromInteger :: Integer -> LocalPatchObjectId
fromInteger :: Integer -> LocalPatchObjectId
Num, Num LocalPatchObjectId
Ord LocalPatchObjectId
(Num LocalPatchObjectId, Ord LocalPatchObjectId) =>
(LocalPatchObjectId -> Rational) -> Real LocalPatchObjectId
LocalPatchObjectId -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: LocalPatchObjectId -> Rational
toRational :: LocalPatchObjectId -> Rational
Real, Int -> LocalPatchObjectId
LocalPatchObjectId -> Int
LocalPatchObjectId -> [LocalPatchObjectId]
LocalPatchObjectId -> LocalPatchObjectId
LocalPatchObjectId -> LocalPatchObjectId -> [LocalPatchObjectId]
LocalPatchObjectId
-> LocalPatchObjectId -> LocalPatchObjectId -> [LocalPatchObjectId]
(LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId)
-> (Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int)
-> (LocalPatchObjectId -> [LocalPatchObjectId])
-> (LocalPatchObjectId
    -> LocalPatchObjectId -> [LocalPatchObjectId])
-> (LocalPatchObjectId
    -> LocalPatchObjectId -> [LocalPatchObjectId])
-> (LocalPatchObjectId
    -> LocalPatchObjectId
    -> LocalPatchObjectId
    -> [LocalPatchObjectId])
-> Enum LocalPatchObjectId
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: LocalPatchObjectId -> LocalPatchObjectId
succ :: LocalPatchObjectId -> LocalPatchObjectId
$cpred :: LocalPatchObjectId -> LocalPatchObjectId
pred :: LocalPatchObjectId -> LocalPatchObjectId
$ctoEnum :: Int -> LocalPatchObjectId
toEnum :: Int -> LocalPatchObjectId
$cfromEnum :: LocalPatchObjectId -> Int
fromEnum :: LocalPatchObjectId -> Int
$cenumFrom :: LocalPatchObjectId -> [LocalPatchObjectId]
enumFrom :: LocalPatchObjectId -> [LocalPatchObjectId]
$cenumFromThen :: LocalPatchObjectId -> LocalPatchObjectId -> [LocalPatchObjectId]
enumFromThen :: LocalPatchObjectId -> LocalPatchObjectId -> [LocalPatchObjectId]
$cenumFromTo :: LocalPatchObjectId -> LocalPatchObjectId -> [LocalPatchObjectId]
enumFromTo :: LocalPatchObjectId -> LocalPatchObjectId -> [LocalPatchObjectId]
$cenumFromThenTo :: LocalPatchObjectId
-> LocalPatchObjectId -> LocalPatchObjectId -> [LocalPatchObjectId]
enumFromThenTo :: LocalPatchObjectId
-> LocalPatchObjectId -> LocalPatchObjectId -> [LocalPatchObjectId]
Enum, Enum LocalPatchObjectId
Real LocalPatchObjectId
(Real LocalPatchObjectId, Enum LocalPatchObjectId) =>
(LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId
    -> LocalPatchObjectId -> (LocalPatchObjectId, LocalPatchObjectId))
-> (LocalPatchObjectId
    -> LocalPatchObjectId -> (LocalPatchObjectId, LocalPatchObjectId))
-> (LocalPatchObjectId -> Integer)
-> Integral LocalPatchObjectId
LocalPatchObjectId -> Integer
LocalPatchObjectId
-> LocalPatchObjectId -> (LocalPatchObjectId, LocalPatchObjectId)
LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
quot :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
$crem :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
rem :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
$cdiv :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
div :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
$cmod :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
mod :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
$cquotRem :: LocalPatchObjectId
-> LocalPatchObjectId -> (LocalPatchObjectId, LocalPatchObjectId)
quotRem :: LocalPatchObjectId
-> LocalPatchObjectId -> (LocalPatchObjectId, LocalPatchObjectId)
$cdivMod :: LocalPatchObjectId
-> LocalPatchObjectId -> (LocalPatchObjectId, LocalPatchObjectId)
divMod :: LocalPatchObjectId
-> LocalPatchObjectId -> (LocalPatchObjectId, LocalPatchObjectId)
$ctoInteger :: LocalPatchObjectId -> Integer
toInteger :: LocalPatchObjectId -> Integer
Integral, Eq LocalPatchObjectId
LocalPatchObjectId
Eq LocalPatchObjectId =>
(LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int -> LocalPatchObjectId)
-> LocalPatchObjectId
-> (Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int -> Bool)
-> (LocalPatchObjectId -> Maybe Int)
-> (LocalPatchObjectId -> Int)
-> (LocalPatchObjectId -> Bool)
-> (LocalPatchObjectId -> Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int -> LocalPatchObjectId)
-> (LocalPatchObjectId -> Int)
-> Bits LocalPatchObjectId
Int -> LocalPatchObjectId
LocalPatchObjectId -> Bool
LocalPatchObjectId -> Int
LocalPatchObjectId -> Maybe Int
LocalPatchObjectId -> LocalPatchObjectId
LocalPatchObjectId -> Int -> Bool
LocalPatchObjectId -> Int -> LocalPatchObjectId
LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
.&. :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
$c.|. :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
.|. :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
$cxor :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
xor :: LocalPatchObjectId -> LocalPatchObjectId -> LocalPatchObjectId
$ccomplement :: LocalPatchObjectId -> LocalPatchObjectId
complement :: LocalPatchObjectId -> LocalPatchObjectId
$cshift :: LocalPatchObjectId -> Int -> LocalPatchObjectId
shift :: LocalPatchObjectId -> Int -> LocalPatchObjectId
$crotate :: LocalPatchObjectId -> Int -> LocalPatchObjectId
rotate :: LocalPatchObjectId -> Int -> LocalPatchObjectId
$czeroBits :: LocalPatchObjectId
zeroBits :: LocalPatchObjectId
$cbit :: Int -> LocalPatchObjectId
bit :: Int -> LocalPatchObjectId
$csetBit :: LocalPatchObjectId -> Int -> LocalPatchObjectId
setBit :: LocalPatchObjectId -> Int -> LocalPatchObjectId
$cclearBit :: LocalPatchObjectId -> Int -> LocalPatchObjectId
clearBit :: LocalPatchObjectId -> Int -> LocalPatchObjectId
$ccomplementBit :: LocalPatchObjectId -> Int -> LocalPatchObjectId
complementBit :: LocalPatchObjectId -> Int -> LocalPatchObjectId
$ctestBit :: LocalPatchObjectId -> Int -> Bool
testBit :: LocalPatchObjectId -> Int -> Bool
$cbitSizeMaybe :: LocalPatchObjectId -> Maybe Int
bitSizeMaybe :: LocalPatchObjectId -> Maybe Int
$cbitSize :: LocalPatchObjectId -> Int
bitSize :: LocalPatchObjectId -> Int
$cisSigned :: LocalPatchObjectId -> Bool
isSigned :: LocalPatchObjectId -> Bool
$cshiftL :: LocalPatchObjectId -> Int -> LocalPatchObjectId
shiftL :: LocalPatchObjectId -> Int -> LocalPatchObjectId
$cunsafeShiftL :: LocalPatchObjectId -> Int -> LocalPatchObjectId
unsafeShiftL :: LocalPatchObjectId -> Int -> LocalPatchObjectId
$cshiftR :: LocalPatchObjectId -> Int -> LocalPatchObjectId
shiftR :: LocalPatchObjectId -> Int -> LocalPatchObjectId
$cunsafeShiftR :: LocalPatchObjectId -> Int -> LocalPatchObjectId
unsafeShiftR :: LocalPatchObjectId -> Int -> LocalPatchObjectId
$crotateL :: LocalPatchObjectId -> Int -> LocalPatchObjectId
rotateL :: LocalPatchObjectId -> Int -> LocalPatchObjectId
$crotateR :: LocalPatchObjectId -> Int -> LocalPatchObjectId
rotateR :: LocalPatchObjectId -> Int -> LocalPatchObjectId
$cpopCount :: LocalPatchObjectId -> Int
popCount :: LocalPatchObjectId -> Int
Bits) via Word64

newtype LocalBranchChildId = LocalBranchChildId Word64 deriving (LocalBranchChildId -> LocalBranchChildId -> Bool
(LocalBranchChildId -> LocalBranchChildId -> Bool)
-> (LocalBranchChildId -> LocalBranchChildId -> Bool)
-> Eq LocalBranchChildId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LocalBranchChildId -> LocalBranchChildId -> Bool
== :: LocalBranchChildId -> LocalBranchChildId -> Bool
$c/= :: LocalBranchChildId -> LocalBranchChildId -> Bool
/= :: LocalBranchChildId -> LocalBranchChildId -> Bool
Eq, Eq LocalBranchChildId
Eq LocalBranchChildId =>
(LocalBranchChildId -> LocalBranchChildId -> Ordering)
-> (LocalBranchChildId -> LocalBranchChildId -> Bool)
-> (LocalBranchChildId -> LocalBranchChildId -> Bool)
-> (LocalBranchChildId -> LocalBranchChildId -> Bool)
-> (LocalBranchChildId -> LocalBranchChildId -> Bool)
-> (LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> Ord LocalBranchChildId
LocalBranchChildId -> LocalBranchChildId -> Bool
LocalBranchChildId -> LocalBranchChildId -> Ordering
LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: LocalBranchChildId -> LocalBranchChildId -> Ordering
compare :: LocalBranchChildId -> LocalBranchChildId -> Ordering
$c< :: LocalBranchChildId -> LocalBranchChildId -> Bool
< :: LocalBranchChildId -> LocalBranchChildId -> Bool
$c<= :: LocalBranchChildId -> LocalBranchChildId -> Bool
<= :: LocalBranchChildId -> LocalBranchChildId -> Bool
$c> :: LocalBranchChildId -> LocalBranchChildId -> Bool
> :: LocalBranchChildId -> LocalBranchChildId -> Bool
$c>= :: LocalBranchChildId -> LocalBranchChildId -> Bool
>= :: LocalBranchChildId -> LocalBranchChildId -> Bool
$cmax :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
max :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
$cmin :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
min :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
Ord, Int -> LocalBranchChildId -> ShowS
[LocalBranchChildId] -> ShowS
LocalBranchChildId -> String
(Int -> LocalBranchChildId -> ShowS)
-> (LocalBranchChildId -> String)
-> ([LocalBranchChildId] -> ShowS)
-> Show LocalBranchChildId
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LocalBranchChildId -> ShowS
showsPrec :: Int -> LocalBranchChildId -> ShowS
$cshow :: LocalBranchChildId -> String
show :: LocalBranchChildId -> String
$cshowList :: [LocalBranchChildId] -> ShowS
showList :: [LocalBranchChildId] -> ShowS
Show, Integer -> LocalBranchChildId
LocalBranchChildId -> LocalBranchChildId
LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
(LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId)
-> (Integer -> LocalBranchChildId)
-> Num LocalBranchChildId
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
+ :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
$c- :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
- :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
$c* :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
* :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
$cnegate :: LocalBranchChildId -> LocalBranchChildId
negate :: LocalBranchChildId -> LocalBranchChildId
$cabs :: LocalBranchChildId -> LocalBranchChildId
abs :: LocalBranchChildId -> LocalBranchChildId
$csignum :: LocalBranchChildId -> LocalBranchChildId
signum :: LocalBranchChildId -> LocalBranchChildId
$cfromInteger :: Integer -> LocalBranchChildId
fromInteger :: Integer -> LocalBranchChildId
Num, Num LocalBranchChildId
Ord LocalBranchChildId
(Num LocalBranchChildId, Ord LocalBranchChildId) =>
(LocalBranchChildId -> Rational) -> Real LocalBranchChildId
LocalBranchChildId -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: LocalBranchChildId -> Rational
toRational :: LocalBranchChildId -> Rational
Real, Int -> LocalBranchChildId
LocalBranchChildId -> Int
LocalBranchChildId -> [LocalBranchChildId]
LocalBranchChildId -> LocalBranchChildId
LocalBranchChildId -> LocalBranchChildId -> [LocalBranchChildId]
LocalBranchChildId
-> LocalBranchChildId -> LocalBranchChildId -> [LocalBranchChildId]
(LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId)
-> (Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int)
-> (LocalBranchChildId -> [LocalBranchChildId])
-> (LocalBranchChildId
    -> LocalBranchChildId -> [LocalBranchChildId])
-> (LocalBranchChildId
    -> LocalBranchChildId -> [LocalBranchChildId])
-> (LocalBranchChildId
    -> LocalBranchChildId
    -> LocalBranchChildId
    -> [LocalBranchChildId])
-> Enum LocalBranchChildId
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: LocalBranchChildId -> LocalBranchChildId
succ :: LocalBranchChildId -> LocalBranchChildId
$cpred :: LocalBranchChildId -> LocalBranchChildId
pred :: LocalBranchChildId -> LocalBranchChildId
$ctoEnum :: Int -> LocalBranchChildId
toEnum :: Int -> LocalBranchChildId
$cfromEnum :: LocalBranchChildId -> Int
fromEnum :: LocalBranchChildId -> Int
$cenumFrom :: LocalBranchChildId -> [LocalBranchChildId]
enumFrom :: LocalBranchChildId -> [LocalBranchChildId]
$cenumFromThen :: LocalBranchChildId -> LocalBranchChildId -> [LocalBranchChildId]
enumFromThen :: LocalBranchChildId -> LocalBranchChildId -> [LocalBranchChildId]
$cenumFromTo :: LocalBranchChildId -> LocalBranchChildId -> [LocalBranchChildId]
enumFromTo :: LocalBranchChildId -> LocalBranchChildId -> [LocalBranchChildId]
$cenumFromThenTo :: LocalBranchChildId
-> LocalBranchChildId -> LocalBranchChildId -> [LocalBranchChildId]
enumFromThenTo :: LocalBranchChildId
-> LocalBranchChildId -> LocalBranchChildId -> [LocalBranchChildId]
Enum, Enum LocalBranchChildId
Real LocalBranchChildId
(Real LocalBranchChildId, Enum LocalBranchChildId) =>
(LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId
    -> LocalBranchChildId -> (LocalBranchChildId, LocalBranchChildId))
-> (LocalBranchChildId
    -> LocalBranchChildId -> (LocalBranchChildId, LocalBranchChildId))
-> (LocalBranchChildId -> Integer)
-> Integral LocalBranchChildId
LocalBranchChildId -> Integer
LocalBranchChildId
-> LocalBranchChildId -> (LocalBranchChildId, LocalBranchChildId)
LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
quot :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
$crem :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
rem :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
$cdiv :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
div :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
$cmod :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
mod :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
$cquotRem :: LocalBranchChildId
-> LocalBranchChildId -> (LocalBranchChildId, LocalBranchChildId)
quotRem :: LocalBranchChildId
-> LocalBranchChildId -> (LocalBranchChildId, LocalBranchChildId)
$cdivMod :: LocalBranchChildId
-> LocalBranchChildId -> (LocalBranchChildId, LocalBranchChildId)
divMod :: LocalBranchChildId
-> LocalBranchChildId -> (LocalBranchChildId, LocalBranchChildId)
$ctoInteger :: LocalBranchChildId -> Integer
toInteger :: LocalBranchChildId -> Integer
Integral, Eq LocalBranchChildId
LocalBranchChildId
Eq LocalBranchChildId =>
(LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> LocalBranchChildId)
-> (LocalBranchChildId -> Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int -> LocalBranchChildId)
-> LocalBranchChildId
-> (Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int -> Bool)
-> (LocalBranchChildId -> Maybe Int)
-> (LocalBranchChildId -> Int)
-> (LocalBranchChildId -> Bool)
-> (LocalBranchChildId -> Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int -> LocalBranchChildId)
-> (LocalBranchChildId -> Int)
-> Bits LocalBranchChildId
Int -> LocalBranchChildId
LocalBranchChildId -> Bool
LocalBranchChildId -> Int
LocalBranchChildId -> Maybe Int
LocalBranchChildId -> LocalBranchChildId
LocalBranchChildId -> Int -> Bool
LocalBranchChildId -> Int -> LocalBranchChildId
LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
.&. :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
$c.|. :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
.|. :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
$cxor :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
xor :: LocalBranchChildId -> LocalBranchChildId -> LocalBranchChildId
$ccomplement :: LocalBranchChildId -> LocalBranchChildId
complement :: LocalBranchChildId -> LocalBranchChildId
$cshift :: LocalBranchChildId -> Int -> LocalBranchChildId
shift :: LocalBranchChildId -> Int -> LocalBranchChildId
$crotate :: LocalBranchChildId -> Int -> LocalBranchChildId
rotate :: LocalBranchChildId -> Int -> LocalBranchChildId
$czeroBits :: LocalBranchChildId
zeroBits :: LocalBranchChildId
$cbit :: Int -> LocalBranchChildId
bit :: Int -> LocalBranchChildId
$csetBit :: LocalBranchChildId -> Int -> LocalBranchChildId
setBit :: LocalBranchChildId -> Int -> LocalBranchChildId
$cclearBit :: LocalBranchChildId -> Int -> LocalBranchChildId
clearBit :: LocalBranchChildId -> Int -> LocalBranchChildId
$ccomplementBit :: LocalBranchChildId -> Int -> LocalBranchChildId
complementBit :: LocalBranchChildId -> Int -> LocalBranchChildId
$ctestBit :: LocalBranchChildId -> Int -> Bool
testBit :: LocalBranchChildId -> Int -> Bool
$cbitSizeMaybe :: LocalBranchChildId -> Maybe Int
bitSizeMaybe :: LocalBranchChildId -> Maybe Int
$cbitSize :: LocalBranchChildId -> Int
bitSize :: LocalBranchChildId -> Int
$cisSigned :: LocalBranchChildId -> Bool
isSigned :: LocalBranchChildId -> Bool
$cshiftL :: LocalBranchChildId -> Int -> LocalBranchChildId
shiftL :: LocalBranchChildId -> Int -> LocalBranchChildId
$cunsafeShiftL :: LocalBranchChildId -> Int -> LocalBranchChildId
unsafeShiftL :: LocalBranchChildId -> Int -> LocalBranchChildId
$cshiftR :: LocalBranchChildId -> Int -> LocalBranchChildId
shiftR :: LocalBranchChildId -> Int -> LocalBranchChildId
$cunsafeShiftR :: LocalBranchChildId -> Int -> LocalBranchChildId
unsafeShiftR :: LocalBranchChildId -> Int -> LocalBranchChildId
$crotateL :: LocalBranchChildId -> Int -> LocalBranchChildId
rotateL :: LocalBranchChildId -> Int -> LocalBranchChildId
$crotateR :: LocalBranchChildId -> Int -> LocalBranchChildId
rotateR :: LocalBranchChildId -> Int -> LocalBranchChildId
$cpopCount :: LocalBranchChildId -> Int
popCount :: LocalBranchChildId -> Int
Bits) via Word64

-- | causal hashes are treated differently from HashIds, which don't have dependencies
newtype LocalCausalHashId = LocalCausalHashId Word64 deriving (LocalCausalHashId -> LocalCausalHashId -> Bool
(LocalCausalHashId -> LocalCausalHashId -> Bool)
-> (LocalCausalHashId -> LocalCausalHashId -> Bool)
-> Eq LocalCausalHashId
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LocalCausalHashId -> LocalCausalHashId -> Bool
== :: LocalCausalHashId -> LocalCausalHashId -> Bool
$c/= :: LocalCausalHashId -> LocalCausalHashId -> Bool
/= :: LocalCausalHashId -> LocalCausalHashId -> Bool
Eq, Eq LocalCausalHashId
Eq LocalCausalHashId =>
(LocalCausalHashId -> LocalCausalHashId -> Ordering)
-> (LocalCausalHashId -> LocalCausalHashId -> Bool)
-> (LocalCausalHashId -> LocalCausalHashId -> Bool)
-> (LocalCausalHashId -> LocalCausalHashId -> Bool)
-> (LocalCausalHashId -> LocalCausalHashId -> Bool)
-> (LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> Ord LocalCausalHashId
LocalCausalHashId -> LocalCausalHashId -> Bool
LocalCausalHashId -> LocalCausalHashId -> Ordering
LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: LocalCausalHashId -> LocalCausalHashId -> Ordering
compare :: LocalCausalHashId -> LocalCausalHashId -> Ordering
$c< :: LocalCausalHashId -> LocalCausalHashId -> Bool
< :: LocalCausalHashId -> LocalCausalHashId -> Bool
$c<= :: LocalCausalHashId -> LocalCausalHashId -> Bool
<= :: LocalCausalHashId -> LocalCausalHashId -> Bool
$c> :: LocalCausalHashId -> LocalCausalHashId -> Bool
> :: LocalCausalHashId -> LocalCausalHashId -> Bool
$c>= :: LocalCausalHashId -> LocalCausalHashId -> Bool
>= :: LocalCausalHashId -> LocalCausalHashId -> Bool
$cmax :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
max :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
$cmin :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
min :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
Ord, Int -> LocalCausalHashId -> ShowS
[LocalCausalHashId] -> ShowS
LocalCausalHashId -> String
(Int -> LocalCausalHashId -> ShowS)
-> (LocalCausalHashId -> String)
-> ([LocalCausalHashId] -> ShowS)
-> Show LocalCausalHashId
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> LocalCausalHashId -> ShowS
showsPrec :: Int -> LocalCausalHashId -> ShowS
$cshow :: LocalCausalHashId -> String
show :: LocalCausalHashId -> String
$cshowList :: [LocalCausalHashId] -> ShowS
showList :: [LocalCausalHashId] -> ShowS
Show, Integer -> LocalCausalHashId
LocalCausalHashId -> LocalCausalHashId
LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
(LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId)
-> (Integer -> LocalCausalHashId)
-> Num LocalCausalHashId
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
$c+ :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
+ :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
$c- :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
- :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
$c* :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
* :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
$cnegate :: LocalCausalHashId -> LocalCausalHashId
negate :: LocalCausalHashId -> LocalCausalHashId
$cabs :: LocalCausalHashId -> LocalCausalHashId
abs :: LocalCausalHashId -> LocalCausalHashId
$csignum :: LocalCausalHashId -> LocalCausalHashId
signum :: LocalCausalHashId -> LocalCausalHashId
$cfromInteger :: Integer -> LocalCausalHashId
fromInteger :: Integer -> LocalCausalHashId
Num, Num LocalCausalHashId
Ord LocalCausalHashId
(Num LocalCausalHashId, Ord LocalCausalHashId) =>
(LocalCausalHashId -> Rational) -> Real LocalCausalHashId
LocalCausalHashId -> Rational
forall a. (Num a, Ord a) => (a -> Rational) -> Real a
$ctoRational :: LocalCausalHashId -> Rational
toRational :: LocalCausalHashId -> Rational
Real, Int -> LocalCausalHashId
LocalCausalHashId -> Int
LocalCausalHashId -> [LocalCausalHashId]
LocalCausalHashId -> LocalCausalHashId
LocalCausalHashId -> LocalCausalHashId -> [LocalCausalHashId]
LocalCausalHashId
-> LocalCausalHashId -> LocalCausalHashId -> [LocalCausalHashId]
(LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId)
-> (Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int)
-> (LocalCausalHashId -> [LocalCausalHashId])
-> (LocalCausalHashId -> LocalCausalHashId -> [LocalCausalHashId])
-> (LocalCausalHashId -> LocalCausalHashId -> [LocalCausalHashId])
-> (LocalCausalHashId
    -> LocalCausalHashId -> LocalCausalHashId -> [LocalCausalHashId])
-> Enum LocalCausalHashId
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: LocalCausalHashId -> LocalCausalHashId
succ :: LocalCausalHashId -> LocalCausalHashId
$cpred :: LocalCausalHashId -> LocalCausalHashId
pred :: LocalCausalHashId -> LocalCausalHashId
$ctoEnum :: Int -> LocalCausalHashId
toEnum :: Int -> LocalCausalHashId
$cfromEnum :: LocalCausalHashId -> Int
fromEnum :: LocalCausalHashId -> Int
$cenumFrom :: LocalCausalHashId -> [LocalCausalHashId]
enumFrom :: LocalCausalHashId -> [LocalCausalHashId]
$cenumFromThen :: LocalCausalHashId -> LocalCausalHashId -> [LocalCausalHashId]
enumFromThen :: LocalCausalHashId -> LocalCausalHashId -> [LocalCausalHashId]
$cenumFromTo :: LocalCausalHashId -> LocalCausalHashId -> [LocalCausalHashId]
enumFromTo :: LocalCausalHashId -> LocalCausalHashId -> [LocalCausalHashId]
$cenumFromThenTo :: LocalCausalHashId
-> LocalCausalHashId -> LocalCausalHashId -> [LocalCausalHashId]
enumFromThenTo :: LocalCausalHashId
-> LocalCausalHashId -> LocalCausalHashId -> [LocalCausalHashId]
Enum, Enum LocalCausalHashId
Real LocalCausalHashId
(Real LocalCausalHashId, Enum LocalCausalHashId) =>
(LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId
    -> LocalCausalHashId -> (LocalCausalHashId, LocalCausalHashId))
-> (LocalCausalHashId
    -> LocalCausalHashId -> (LocalCausalHashId, LocalCausalHashId))
-> (LocalCausalHashId -> Integer)
-> Integral LocalCausalHashId
LocalCausalHashId -> Integer
LocalCausalHashId
-> LocalCausalHashId -> (LocalCausalHashId, LocalCausalHashId)
LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
forall a.
(Real a, Enum a) =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> (a, a))
-> (a -> a -> (a, a))
-> (a -> Integer)
-> Integral a
$cquot :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
quot :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
$crem :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
rem :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
$cdiv :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
div :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
$cmod :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
mod :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
$cquotRem :: LocalCausalHashId
-> LocalCausalHashId -> (LocalCausalHashId, LocalCausalHashId)
quotRem :: LocalCausalHashId
-> LocalCausalHashId -> (LocalCausalHashId, LocalCausalHashId)
$cdivMod :: LocalCausalHashId
-> LocalCausalHashId -> (LocalCausalHashId, LocalCausalHashId)
divMod :: LocalCausalHashId
-> LocalCausalHashId -> (LocalCausalHashId, LocalCausalHashId)
$ctoInteger :: LocalCausalHashId -> Integer
toInteger :: LocalCausalHashId -> Integer
Integral, Eq LocalCausalHashId
LocalCausalHashId
Eq LocalCausalHashId =>
(LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> LocalCausalHashId)
-> (LocalCausalHashId -> Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int -> LocalCausalHashId)
-> LocalCausalHashId
-> (Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int -> Bool)
-> (LocalCausalHashId -> Maybe Int)
-> (LocalCausalHashId -> Int)
-> (LocalCausalHashId -> Bool)
-> (LocalCausalHashId -> Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int -> LocalCausalHashId)
-> (LocalCausalHashId -> Int)
-> Bits LocalCausalHashId
Int -> LocalCausalHashId
LocalCausalHashId -> Bool
LocalCausalHashId -> Int
LocalCausalHashId -> Maybe Int
LocalCausalHashId -> LocalCausalHashId
LocalCausalHashId -> Int -> Bool
LocalCausalHashId -> Int -> LocalCausalHashId
LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
$c.&. :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
.&. :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
$c.|. :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
.|. :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
$cxor :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
xor :: LocalCausalHashId -> LocalCausalHashId -> LocalCausalHashId
$ccomplement :: LocalCausalHashId -> LocalCausalHashId
complement :: LocalCausalHashId -> LocalCausalHashId
$cshift :: LocalCausalHashId -> Int -> LocalCausalHashId
shift :: LocalCausalHashId -> Int -> LocalCausalHashId
$crotate :: LocalCausalHashId -> Int -> LocalCausalHashId
rotate :: LocalCausalHashId -> Int -> LocalCausalHashId
$czeroBits :: LocalCausalHashId
zeroBits :: LocalCausalHashId
$cbit :: Int -> LocalCausalHashId
bit :: Int -> LocalCausalHashId
$csetBit :: LocalCausalHashId -> Int -> LocalCausalHashId
setBit :: LocalCausalHashId -> Int -> LocalCausalHashId
$cclearBit :: LocalCausalHashId -> Int -> LocalCausalHashId
clearBit :: LocalCausalHashId -> Int -> LocalCausalHashId
$ccomplementBit :: LocalCausalHashId -> Int -> LocalCausalHashId
complementBit :: LocalCausalHashId -> Int -> LocalCausalHashId
$ctestBit :: LocalCausalHashId -> Int -> Bool
testBit :: LocalCausalHashId -> Int -> Bool
$cbitSizeMaybe :: LocalCausalHashId -> Maybe Int
bitSizeMaybe :: LocalCausalHashId -> Maybe Int
$cbitSize :: LocalCausalHashId -> Int
bitSize :: LocalCausalHashId -> Int
$cisSigned :: LocalCausalHashId -> Bool
isSigned :: LocalCausalHashId -> Bool
$cshiftL :: LocalCausalHashId -> Int -> LocalCausalHashId
shiftL :: LocalCausalHashId -> Int -> LocalCausalHashId
$cunsafeShiftL :: LocalCausalHashId -> Int -> LocalCausalHashId
unsafeShiftL :: LocalCausalHashId -> Int -> LocalCausalHashId
$cshiftR :: LocalCausalHashId -> Int -> LocalCausalHashId
shiftR :: LocalCausalHashId -> Int -> LocalCausalHashId
$cunsafeShiftR :: LocalCausalHashId -> Int -> LocalCausalHashId
unsafeShiftR :: LocalCausalHashId -> Int -> LocalCausalHashId
$crotateL :: LocalCausalHashId -> Int -> LocalCausalHashId
rotateL :: LocalCausalHashId -> Int -> LocalCausalHashId
$crotateR :: LocalCausalHashId -> Int -> LocalCausalHashId
rotateR :: LocalCausalHashId -> Int -> LocalCausalHashId
$cpopCount :: LocalCausalHashId -> Int
popCount :: LocalCausalHashId -> Int
Bits) via Word64

instance Bitraversable LocalIds' where
  bitraverse :: forall (f :: * -> *) a c b d.
Applicative f =>
(a -> f c) -> (b -> f d) -> LocalIds' a b -> f (LocalIds' c d)
bitraverse a -> f c
f b -> f d
g (LocalIds Vector a
t Vector b
d) = Vector c -> Vector d -> LocalIds' c d
forall t h. Vector t -> Vector h -> LocalIds' t h
LocalIds (Vector c -> Vector d -> LocalIds' c d)
-> f (Vector c) -> f (Vector d -> LocalIds' c d)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (a -> f c) -> Vector a -> f (Vector c)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Vector a -> f (Vector b)
traverse a -> f c
f Vector a
t f (Vector d -> LocalIds' c d) -> f (Vector d) -> f (LocalIds' c d)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (b -> f d) -> Vector b -> f (Vector d)
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Vector a -> f (Vector b)
traverse b -> f d
g Vector b
d

instance Bifoldable LocalIds' where
  bifoldMap :: forall m a b.
Monoid m =>
(a -> m) -> (b -> m) -> LocalIds' a b -> m
bifoldMap a -> m
f b -> m
g (LocalIds Vector a
t Vector b
d) = (a -> m) -> Vector a -> m
forall m a. Monoid m => (a -> m) -> Vector a -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap a -> m
f Vector a
t m -> m -> m
forall a. Semigroup a => a -> a -> a
<> (b -> m) -> Vector b -> m
forall m a. Monoid m => (a -> m) -> Vector a -> m
forall (t :: * -> *) m a.
(Foldable t, Monoid m) =>
(a -> m) -> t a -> m
foldMap b -> m
g Vector b
d

instance Bifunctor LocalIds' where
  bimap :: forall a b c d.
(a -> b) -> (c -> d) -> LocalIds' a c -> LocalIds' b d
bimap a -> b
f c -> d
g (LocalIds Vector a
t Vector c
d) = Vector b -> Vector d -> LocalIds' b d
forall t h. Vector t -> Vector h -> LocalIds' t h
LocalIds (a -> b
f (a -> b) -> Vector a -> Vector b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Vector a
t) (c -> d
g (c -> d) -> Vector c -> Vector d
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Vector c
d)

t_ :: Traversal (LocalIds' t h) (LocalIds' t' h) t t'
t_ :: forall t h t' (f :: * -> *).
Applicative f =>
(t -> f t') -> LocalIds' t h -> f (LocalIds' t' h)
t_ t -> f t'
f (LocalIds Vector t
t Vector h
d) = Vector t' -> Vector h -> LocalIds' t' h
forall t h. Vector t -> Vector h -> LocalIds' t h
LocalIds (Vector t' -> Vector h -> LocalIds' t' h)
-> f (Vector t') -> f (Vector h -> LocalIds' t' h)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (t -> f t') -> Vector t -> f (Vector t')
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Vector a -> f (Vector b)
traverse t -> f t'
f Vector t
t f (Vector h -> LocalIds' t' h)
-> f (Vector h) -> f (LocalIds' t' h)
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Vector h -> f (Vector h)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Vector h
d

h_ :: Traversal (LocalIds' t h) (LocalIds' t h') h h'
h_ :: forall t h h' (f :: * -> *).
Applicative f =>
(h -> f h') -> LocalIds' t h -> f (LocalIds' t h')
h_ h -> f h'
f (LocalIds Vector t
t Vector h
d) = Vector t -> Vector h' -> LocalIds' t h'
forall t h. Vector t -> Vector h -> LocalIds' t h
LocalIds (Vector t -> Vector h' -> LocalIds' t h')
-> f (Vector t) -> f (Vector h' -> LocalIds' t h')
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Vector t -> f (Vector t)
forall a. a -> f a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Vector t
t f (Vector h' -> LocalIds' t h')
-> f (Vector h') -> f (LocalIds' t h')
forall a b. f (a -> b) -> f a -> f b
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> (h -> f h') -> Vector h -> f (Vector h')
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
(a -> f b) -> t a -> f (t b)
forall (f :: * -> *) a b.
Applicative f =>
(a -> f b) -> Vector a -> f (Vector b)
traverse h -> f h'
f Vector h
d