unison-runtime-0.0.0
Safe HaskellSafe-Inferred
LanguageHaskell2010

Unison.Runtime.ANF

Documentation

pattern TVar :: Var v => v -> Term ANormalF v Source #

pattern TLit :: Var v => Lit -> Term ANormalF v Source #

pattern TBLit :: Var v => Lit -> Term ANormalF v Source #

pattern TApp :: Var v => Func v -> [v] -> Term ANormalF v Source #

pattern TApv :: Var v => v -> [v] -> Term ANormalF v Source #

pattern TCom :: Var v => Reference -> [v] -> Term ANormalF v Source #

pattern TCon :: Var v => Reference -> CTag -> [v] -> Term ANormalF v Source #

pattern TKon :: Var v => v -> [v] -> Term ANormalF v Source #

pattern TReq :: Var v => Reference -> CTag -> [v] -> Term ANormalF v Source #

pattern TPrm :: Var v => POp -> [v] -> Term ANormalF v Source #

pattern TFOp :: Var v => FOp -> [v] -> Term ANormalF v Source #

pattern THnd :: Var v => [Reference] -> v -> Term ANormalF v -> Term ANormalF v Source #

pattern TLet :: Var v => Direction Word16 -> v -> Mem -> Term ANormalF v -> Term ANormalF v -> Term ANormalF v Source #

pattern TLetD :: Var v => v -> Mem -> Term ANormalF v -> Term ANormalF v -> Term ANormalF v Source #

pattern TFrc :: Var v => v -> Term ANormalF v Source #

pattern TLets :: Var v => Direction Word16 -> [v] -> [Mem] -> Term ANormalF v -> Term ANormalF v -> Term ANormalF v Source #

pattern TName :: Var v => v -> Either Reference v -> [v] -> Term ANormalF v -> Term ANormalF v Source #

pattern TBind :: Var v => Cte v -> ANormal v -> ANormal v Source #

pattern TBinds :: Var v => [Cte v] -> ANormal v -> ANormal v Source #

pattern TShift :: Var v => Reference -> v -> Term ANormalF v -> Term ANormalF v Source #

pattern TMatch :: Var v => v -> Branched (Term ANormalF v) -> Term ANormalF v Source #

data Mem Source #

Constructors

UN 
BX 

Instances

Instances details
Enum Mem Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

succ :: Mem -> Mem #

pred :: Mem -> Mem #

toEnum :: Int -> Mem #

fromEnum :: Mem -> Int #

enumFrom :: Mem -> [Mem] #

enumFromThen :: Mem -> Mem -> [Mem] #

enumFromTo :: Mem -> Mem -> [Mem] #

enumFromThenTo :: Mem -> Mem -> Mem -> [Mem] #

Show Mem Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> Mem -> ShowS #

show :: Mem -> String #

showList :: [Mem] -> ShowS #

Eq Mem Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

Ord Mem Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

compare :: Mem -> Mem -> Ordering #

(<) :: Mem -> Mem -> Bool #

(<=) :: Mem -> Mem -> Bool #

(>) :: Mem -> Mem -> Bool #

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

max :: Mem -> Mem -> Mem #

min :: Mem -> Mem -> Mem #

data Lit Source #

Instances

Instances details
Show Lit Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> Lit -> ShowS #

show :: Lit -> String #

showList :: [Lit] -> ShowS #

Eq Lit Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

data Direction a Source #

Constructors

Indirect a 
Direct 

Instances

Instances details
Foldable Direction Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

fold :: Monoid m => Direction m -> m #

foldMap :: Monoid m => (a -> m) -> Direction a -> m #

foldMap' :: Monoid m => (a -> m) -> Direction a -> m #

foldr :: (a -> b -> b) -> b -> Direction a -> b #

foldr' :: (a -> b -> b) -> b -> Direction a -> b #

foldl :: (b -> a -> b) -> b -> Direction a -> b #

foldl' :: (b -> a -> b) -> b -> Direction a -> b #

foldr1 :: (a -> a -> a) -> Direction a -> a #

foldl1 :: (a -> a -> a) -> Direction a -> a #

toList :: Direction a -> [a] #

null :: Direction a -> Bool #

length :: Direction a -> Int #

elem :: Eq a => a -> Direction a -> Bool #

maximum :: Ord a => Direction a -> a #

minimum :: Ord a => Direction a -> a #

sum :: Num a => Direction a -> a #

product :: Num a => Direction a -> a #

Traversable Direction Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

traverse :: Applicative f => (a -> f b) -> Direction a -> f (Direction b) #

sequenceA :: Applicative f => Direction (f a) -> f (Direction a) #

mapM :: Monad m => (a -> m b) -> Direction a -> m (Direction b) #

sequence :: Monad m => Direction (m a) -> m (Direction a) #

Functor Direction Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

fmap :: (a -> b) -> Direction a -> Direction b #

(<$) :: a -> Direction b -> Direction a #

Semigroup a => Monoid (Direction a) Source # 
Instance details

Defined in Unison.Runtime.ANF

Semigroup a => Semigroup (Direction a) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(<>) :: Direction a -> Direction a -> Direction a #

sconcat :: NonEmpty (Direction a) -> Direction a #

stimes :: Integral b => b -> Direction a -> Direction a #

Show a => Show (Direction a) Source # 
Instance details

Defined in Unison.Runtime.ANF

Eq a => Eq (Direction a) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(==) :: Direction a -> Direction a -> Bool #

(/=) :: Direction a -> Direction a -> Bool #

Ord a => Ord (Direction a) Source # 
Instance details

Defined in Unison.Runtime.ANF

data SuperNormal v Source #

Constructors

Lambda 

Fields

Instances

Instances details
Show v => Show (SuperNormal v) Source # 
Instance details

Defined in Unison.Runtime.ANF

Var v => Eq (SuperNormal v) Source # 
Instance details

Defined in Unison.Runtime.ANF

data SuperGroup v Source #

Constructors

Rec 

Fields

Instances

Instances details
Show v => Show (SuperGroup v) Source # 
Instance details

Defined in Unison.Runtime.ANF

Var v => Eq (SuperGroup v) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(==) :: SuperGroup v -> SuperGroup v -> Bool #

(/=) :: SuperGroup v -> SuperGroup v -> Bool #

BuiltinForeign (SuperGroup Symbol) Source # 
Instance details

Defined in Unison.Runtime.Foreign

ForeignConvention (SuperGroup Symbol) Source # 
Instance details

Defined in Unison.Runtime.Foreign.Function

data POp Source #

Instances

Instances details
Bounded POp Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

minBound :: POp #

maxBound :: POp #

Enum POp Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

succ :: POp -> POp #

pred :: POp -> POp #

toEnum :: Int -> POp #

fromEnum :: POp -> Int #

enumFrom :: POp -> [POp] #

enumFromThen :: POp -> POp -> [POp] #

enumFromTo :: POp -> POp -> [POp] #

enumFromThenTo :: POp -> POp -> POp -> [POp] #

Show POp Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> POp -> ShowS #

show :: POp -> String #

showList :: [POp] -> ShowS #

Eq POp Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

Ord POp Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

compare :: POp -> POp -> Ordering #

(<) :: POp -> POp -> Bool #

(<=) :: POp -> POp -> Bool #

(>) :: POp -> POp -> Bool #

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

max :: POp -> POp -> POp #

min :: POp -> POp -> POp #

close :: (Var v, Monoid a) => Set v -> Term v a -> Term v a Source #

float :: Var v => Monoid a => Map v Reference -> Term v a -> (Term v a, Map Reference Reference, [(Reference, Term v a)], [(Reference, Term v a)]) Source #

floatGroup :: Var v => Monoid a => Map v Reference -> [(v, Term v a)] -> ([(v, Id)], [(Reference, Term v a)], [(Reference, Term v a)]) Source #

lamLift :: Var v => Monoid a => Map v Reference -> Term v a -> (Term v a, Map Reference Reference, [(Reference, Term v a)], [(Reference, Term v a)]) Source #

lamLiftGroup :: Var v => Monoid a => Map v Reference -> [(v, Term v a)] -> ([(v, Id)], [(Reference, Term v a)], [(Reference, Term v a)]) Source #

inlineAlias :: Var v => Monoid a => Term v a -> Term v a Source #

addDefaultCases :: Var v => Monoid a => Text -> Term v a -> Term v a Source #

data ANormalF v e Source #

Constructors

ALet (Direction Word16) [Mem] e e 
AName (Either Reference v) [v] e 
ALit Lit 
ABLit Lit 
AMatch v (Branched e) 
AShift Reference e 
AHnd [Reference] v e 
AApp (Func v) [v] 
AFrc v 
AVar v 

Bundled Patterns

pattern AApv :: v -> [v] -> ANormalF v e 
pattern ACom :: Reference -> [v] -> ANormalF v e 
pattern ACon :: Reference -> CTag -> [v] -> ANormalF v e 
pattern AKon :: v -> [v] -> ANormalF v e 
pattern AReq :: Reference -> CTag -> [v] -> ANormalF v e 
pattern APrm :: POp -> [v] -> ANormalF v e 
pattern AFOp :: FOp -> [v] -> ANormalF v e 

Instances

Instances details
Bifoldable ANormalF Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

bifold :: Monoid m => ANormalF m m -> m #

bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> ANormalF a b -> m #

bifoldr :: (a -> c -> c) -> (b -> c -> c) -> c -> ANormalF a b -> c #

bifoldl :: (c -> a -> c) -> (c -> b -> c) -> c -> ANormalF a b -> c #

Bifunctor ANormalF Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

bimap :: (a -> b) -> (c -> d) -> ANormalF a c -> ANormalF b d #

first :: (a -> b) -> ANormalF a c -> ANormalF b c #

second :: (b -> c) -> ANormalF a b -> ANormalF a c #

Align ANormalF Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

align :: Applicative g => (vl -> vr -> g vs) -> (el -> er -> g es) -> ANormalF vl el -> ANormalF vr er -> Maybe (g (ANormalF vs es)) #

Functor (ANormalF v) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

fmap :: (a -> b) -> ANormalF v a -> ANormalF v b #

(<$) :: a -> ANormalF v b -> ANormalF v a #

(Show e, Show v) => Show (ANormalF v e) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> ANormalF v e -> ShowS #

show :: ANormalF v e -> String #

showList :: [ANormalF v e] -> ShowS #

(Eq e, Eq v) => Eq (ANormalF v e) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(==) :: ANormalF v e -> ANormalF v e -> Bool #

(/=) :: ANormalF v e -> ANormalF v e -> Bool #

data RTag Source #

Instances

Instances details
Enum RTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

succ :: RTag -> RTag #

pred :: RTag -> RTag #

toEnum :: Int -> RTag #

fromEnum :: RTag -> Int #

enumFrom :: RTag -> [RTag] #

enumFromThen :: RTag -> RTag -> [RTag] #

enumFromTo :: RTag -> RTag -> [RTag] #

enumFromThenTo :: RTag -> RTag -> RTag -> [RTag] #

Num RTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(+) :: RTag -> RTag -> RTag #

(-) :: RTag -> RTag -> RTag #

(*) :: RTag -> RTag -> RTag #

negate :: RTag -> RTag #

abs :: RTag -> RTag #

signum :: RTag -> RTag #

fromInteger :: Integer -> RTag #

Read RTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Show RTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> RTag -> ShowS #

show :: RTag -> String #

showList :: [RTag] -> ShowS #

Eq RTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

Ord RTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

compare :: RTag -> RTag -> Ordering #

(<) :: RTag -> RTag -> Bool #

(<=) :: RTag -> RTag -> Bool #

(>) :: RTag -> RTag -> Bool #

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

max :: RTag -> RTag -> RTag #

min :: RTag -> RTag -> RTag #

EnumKey RTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

keyToInt :: RTag -> Int #

intToKey :: Int -> RTag #

Tag RTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

rawTag :: RTag -> Word64 Source #

data CTag Source #

Instances

Instances details
Enum CTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

succ :: CTag -> CTag #

pred :: CTag -> CTag #

toEnum :: Int -> CTag #

fromEnum :: CTag -> Int #

enumFrom :: CTag -> [CTag] #

enumFromThen :: CTag -> CTag -> [CTag] #

enumFromTo :: CTag -> CTag -> [CTag] #

enumFromThenTo :: CTag -> CTag -> CTag -> [CTag] #

Num CTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(+) :: CTag -> CTag -> CTag #

(-) :: CTag -> CTag -> CTag #

(*) :: CTag -> CTag -> CTag #

negate :: CTag -> CTag #

abs :: CTag -> CTag #

signum :: CTag -> CTag #

fromInteger :: Integer -> CTag #

Read CTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Show CTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> CTag -> ShowS #

show :: CTag -> String #

showList :: [CTag] -> ShowS #

Eq CTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

Ord CTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

compare :: CTag -> CTag -> Ordering #

(<) :: CTag -> CTag -> Bool #

(<=) :: CTag -> CTag -> Bool #

(>) :: CTag -> CTag -> Bool #

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

max :: CTag -> CTag -> CTag #

min :: CTag -> CTag -> CTag #

EnumKey CTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

keyToInt :: CTag -> Int #

intToKey :: Int -> CTag #

Tag CTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

rawTag :: CTag -> Word64 Source #

class Tag t where Source #

Methods

rawTag :: t -> Word64 Source #

Instances

Instances details
Tag CTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

rawTag :: CTag -> Word64 Source #

Tag RTag Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

rawTag :: RTag -> Word64 Source #

data GroupRef Source #

Constructors

GR Reference Word64 

Instances

Instances details
Show GroupRef Source # 
Instance details

Defined in Unison.Runtime.ANF

data Value Source #

Instances

Instances details
Show Value Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> Value -> ShowS #

show :: Value -> String #

showList :: [Value] -> ShowS #

BuiltinForeign Value Source # 
Instance details

Defined in Unison.Runtime.Foreign

ForeignConvention Value Source # 
Instance details

Defined in Unison.Runtime.Foreign.Function

Methods

readForeign :: [Int] -> [Int] -> Stack 'UN -> Stack 'BX -> IO ([Int], [Int], Value) Source #

writeForeign :: Stack 'UN -> Stack 'BX -> Value -> IO (Stack 'UN, Stack 'BX) Source #

data Cont Source #

Instances

Instances details
Show Cont Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> Cont -> ShowS #

show :: Cont -> String #

showList :: [Cont] -> ShowS #

type ANFM v = ReaderT (Set v) (State (Word64, Word16, [(v, SuperNormal v)])) Source #

data Branched e Source #

Bundled Patterns

pattern MatchDataCover :: Reference -> EnumMap CTag ([Mem], e) -> Branched e 

Instances

Instances details
Foldable Branched Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

fold :: Monoid m => Branched m -> m #

foldMap :: Monoid m => (a -> m) -> Branched a -> m #

foldMap' :: Monoid m => (a -> m) -> Branched a -> m #

foldr :: (a -> b -> b) -> b -> Branched a -> b #

foldr' :: (a -> b -> b) -> b -> Branched a -> b #

foldl :: (b -> a -> b) -> b -> Branched a -> b #

foldl' :: (b -> a -> b) -> b -> Branched a -> b #

foldr1 :: (a -> a -> a) -> Branched a -> a #

foldl1 :: (a -> a -> a) -> Branched a -> a #

toList :: Branched a -> [a] #

null :: Branched a -> Bool #

length :: Branched a -> Int #

elem :: Eq a => a -> Branched a -> Bool #

maximum :: Ord a => Branched a -> a #

minimum :: Ord a => Branched a -> a #

sum :: Num a => Branched a -> a #

product :: Num a => Branched a -> a #

Traversable Branched Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

traverse :: Applicative f => (a -> f b) -> Branched a -> f (Branched b) #

sequenceA :: Applicative f => Branched (f a) -> f (Branched a) #

mapM :: Monad m => (a -> m b) -> Branched a -> m (Branched b) #

sequence :: Monad m => Branched (m a) -> m (Branched a) #

Functor Branched Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

fmap :: (a -> b) -> Branched a -> Branched b #

(<$) :: a -> Branched b -> Branched a #

Show e => Show (Branched e) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> Branched e -> ShowS #

show :: Branched e -> String #

showList :: [Branched e] -> ShowS #

Eq e => Eq (Branched e) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(==) :: Branched e -> Branched e -> Bool #

(/=) :: Branched e -> Branched e -> Bool #

data Func v Source #

Instances

Instances details
Foldable Func Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

fold :: Monoid m => Func m -> m #

foldMap :: Monoid m => (a -> m) -> Func a -> m #

foldMap' :: Monoid m => (a -> m) -> Func a -> m #

foldr :: (a -> b -> b) -> b -> Func a -> b #

foldr' :: (a -> b -> b) -> b -> Func a -> b #

foldl :: (b -> a -> b) -> b -> Func a -> b #

foldl' :: (b -> a -> b) -> b -> Func a -> b #

foldr1 :: (a -> a -> a) -> Func a -> a #

foldl1 :: (a -> a -> a) -> Func a -> a #

toList :: Func a -> [a] #

null :: Func a -> Bool #

length :: Func a -> Int #

elem :: Eq a => a -> Func a -> Bool #

maximum :: Ord a => Func a -> a #

minimum :: Ord a => Func a -> a #

sum :: Num a => Func a -> a #

product :: Num a => Func a -> a #

Traversable Func Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

traverse :: Applicative f => (a -> f b) -> Func a -> f (Func b) #

sequenceA :: Applicative f => Func (f a) -> f (Func a) #

mapM :: Monad m => (a -> m b) -> Func a -> m (Func b) #

sequence :: Monad m => Func (m a) -> m (Func a) #

Functor Func Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

fmap :: (a -> b) -> Func a -> Func b #

(<$) :: a -> Func b -> Func a #

Show v => Show (Func v) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> Func v -> ShowS #

show :: Func v -> String #

showList :: [Func v] -> ShowS #

Eq v => Eq (Func v) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(==) :: Func v -> Func v -> Bool #

(/=) :: Func v -> Func v -> Bool #

anfTerm :: Var v => Term v a -> ANFM v (DNormal v) Source #

valueLinks :: Monoid a => (Bool -> Reference -> a) -> Value -> a Source #

foldGroupLinks :: (Monoid r, Var v) => (Bool -> Reference -> r) -> SuperGroup v -> r Source #

prettyANF :: Var v => Bool -> Int -> ANormal v -> ShowS Source #