data-debruijn-0.1.0.0: Fast and safe implementation of common compiler machinery.
Safe HaskellNone
LanguageGHC2021

Data.DeBruijn.Index

Synopsis

DeBruijn Indexes

data Ix (n :: Nat) where #

Bundled Patterns

pattern FZ :: () => Pos n => Ix n 
pattern FS :: () => Pos n => Ix (Pred n) -> Ix n 

Instances

Instances details
Thin Ix 
Instance details

Defined in Data.DeBruijn.Thinning.Fast

Methods

thin :: forall (n :: Nat) (m :: Nat). (n :<= m) -> Ix n -> Ix m #

thick :: forall (n :: Nat) (m :: Nat). (n :<= m) -> Ix m -> Maybe (Ix n) #

Show (Ix n) 
Instance details

Defined in Data.DeBruijn.Index.Fast

Methods

showsPrec :: Int -> Ix n -> ShowS #

show :: Ix n -> String #

showList :: [Ix n] -> ShowS #

NFData (Ix n) 
Instance details

Defined in Data.DeBruijn.Index.Fast

Methods

rnf :: Ix n -> () #

Eq (Ix n) 
Instance details

Defined in Data.DeBruijn.Index.Fast

Methods

(==) :: Ix n -> Ix n -> Bool #

(/=) :: Ix n -> Ix n -> Bool #

eqIx :: forall (n :: Nat) (m :: Nat). Ix n -> Ix m -> Bool #

fromIx :: forall i (n :: Nat). Integral i => Ix n -> i #

fromIxRaw :: forall (n :: Nat). Ix n -> IxRep #

isPos :: forall (n :: Nat) a. Ix n -> (Pos n => a) -> a #

thin :: forall (n :: Nat). Ix ('S n) -> Ix n -> Ix ('S n) #

thick :: forall (n :: Nat). Ix ('S n) -> Ix ('S n) -> Maybe (Ix n) #

inject :: forall (n :: Nat) (m :: Nat). Ix n -> SNat m -> Ix (n + m) #

raise :: forall (n :: Nat) (m :: Nat). SNat n -> Ix m -> Ix (n + m) #

Existential Wrapper

data SomeIx #

Constructors

SomeIx 

Fields

Instances

Instances details
Show SomeIx 
Instance details

Defined in Data.DeBruijn.Index.Fast

NFData SomeIx 
Instance details

Defined in Data.DeBruijn.Index.Fast

Methods

rnf :: SomeIx -> () #

Eq SomeIx 
Instance details

Defined in Data.DeBruijn.Index.Fast

Methods

(==) :: SomeIx -> SomeIx -> Bool #

(/=) :: SomeIx -> SomeIx -> Bool #

withSomeIx :: (forall (n :: Nat). SNat n -> Ix n -> a) -> SomeIx -> a #

toSomeIx :: (Integral n, Integral i) => (n, i) -> SomeIx #

fromSomeIx :: (Integral n, Integral i) => SomeIx -> (n, i) #

Specialised target for conversion

type IxRep = Int #