unison-runtime-0.0.0
Safe HaskellNone
LanguageHaskell2010

Unison.Runtime.ANF

Synopsis

Documentation

minimizeCyclesOrCrash :: (Var v, Ord a) => Term v a -> Term v a Source #

pattern TVar :: Var v => v -> ANormal ref v Source #

pattern TLit :: Var v => Lit ref -> ANormal ref v Source #

pattern TBLit :: Var v => Lit ref -> ANormal ref v Source #

pattern TApp :: Var v => Func ref v -> [v] -> ANormal ref v Source #

pattern TApv :: Var v => v -> [v] -> ANormal ref v Source #

pattern TCom :: Var v => ref -> [v] -> ANormal ref v Source #

pattern TCon :: Var v => ref -> CTag -> [v] -> ANormal ref v Source #

pattern TKon :: Var v => v -> [v] -> ANormal ref v Source #

pattern TReq :: Var v => ref -> CTag -> [v] -> ANormal ref v Source #

pattern TPrm :: Var v => POp -> [v] -> ANormal ref v Source #

pattern TFOp :: Var v => ForeignFunc -> [v] -> ANormal ref v Source #

pattern THnd :: Var v => [ref] -> v -> Maybe v -> ANormal ref v -> ANormal ref v Source #

pattern TLet :: Var v => Direction Word16 -> v -> Mem -> ANormal ref v -> ANormal ref v -> ANormal ref v Source #

pattern TLetD :: Var v => v -> Mem -> ANormal ref v -> ANormal ref v -> ANormal ref v Source #

pattern TFrc :: Var v => v -> ANormal ref v Source #

pattern TLets :: Var v => Direction Word16 -> [v] -> [Mem] -> ANormal ref v -> ANormal ref v -> ANormal ref v Source #

pattern TName :: Var v => v -> Either ref v -> [v] -> ANormal ref v -> ANormal ref v Source #

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

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

pattern TShift :: Var v => ref -> v -> ANormal ref v -> ANormal ref v Source #

pattern TMatch :: Var v => v -> Branched ref (ANormal ref v) -> ANormal ref v Source #

pattern TDiscard :: Var v => v -> ANormal ref v Source #

pattern TLocal :: Var v => v -> ANormal ref v -> ANormal ref v Source #

pattern TUpdate :: Var v => Bool -> v -> v -> Term (ANormalF ref) v Source #

data FloatName v Source #

Constructors

FloatName [FloatSeg v] 

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 ref Source #

Constructors

I Int64 
N Word64 
F Double 
T Text 
C Char 
LM (Referent' ref) 
LY ref 

Instances

Instances details
Show ref => Show (Lit ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> Lit ref -> ShowS #

show :: Lit ref -> String #

showList :: [Lit ref] -> ShowS #

Eq ref => Eq (Lit ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

data Cacheability Source #

Whether the evaluation of a given definition is cacheable or not. i.e. it's a top-level pure value.

Constructors

Cacheable 
Uncacheable 

Instances

Instances details
Show Cacheability Source # 
Instance details

Defined in Unison.Runtime.ANF

Eq Cacheability Source # 
Instance details

Defined in Unison.Runtime.ANF

data Direction a Source #

Constructors

Indirect a 
Direct 

Instances

Instances details
Functor Direction Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

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) #

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 ref v Source #

Constructors

Lambda 

Fields

Instances

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

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> SuperNormal ref v -> ShowS #

show :: SuperNormal ref v -> String #

showList :: [SuperNormal ref v] -> ShowS #

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

Defined in Unison.Runtime.ANF

Methods

(==) :: SuperNormal ref v -> SuperNormal ref v -> Bool #

(/=) :: SuperNormal ref v -> SuperNormal ref v -> Bool #

data SuperGroup ref v Source #

Constructors

Rec 

Fields

Instances

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

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> SuperGroup ref v -> ShowS #

show :: SuperGroup ref v -> String #

showList :: [SuperGroup ref v] -> ShowS #

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

Defined in Unison.Runtime.ANF

Methods

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

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

arities :: SuperGroup ref v -> [Int] Source #

data POp Source #

Instances

Instances details
Bounded POp Source # 
Instance details

Defined in Unison.Runtime.ANF.POp

Methods

minBound :: POp #

maxBound :: POp #

Enum POp Source # 
Instance details

Defined in Unison.Runtime.ANF.POp

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.POp

Methods

showsPrec :: Int -> POp -> ShowS #

show :: POp -> String #

showList :: [POp] -> ShowS #

Eq POp Source # 
Instance details

Defined in Unison.Runtime.ANF.POp

Methods

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

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

Ord POp Source # 
Instance details

Defined in Unison.Runtime.ANF.POp

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, Map Reference (FloatName v), [(Reference, Term v a)], [(Reference, Term v a)]) Source #

floatGroup :: (Var v, Monoid a) => Map v Reference -> [(v, Term v a)] -> ([(v, Id)], [(Reference, FloatName v)], [(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, Map Reference (FloatName v), [(Reference, Term v a)], [(Reference, Term v a)]) Source #

lamLiftGroup :: (Var v, Monoid a) => Map v Reference -> [(v, Term v a)] -> ([(v, Id)], [(Reference, FloatName v)], [(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 ref v e Source #

Constructors

ALet (Direction Word16) [Mem] e e 
AName (Either ref v) [v] e 
ALit (Lit ref) 
ABLit (Lit ref) 
AMatch v (Branched ref e) 
AShift ref e 
AHnd [ref] v (Maybe v) e 
AApp (Func ref v) [v] 
AFrc v 
AVar v 
ADiscard v 
ALocal v e 
AUpdate Bool v v 

Bundled Patterns

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

Instances

Instances details
Bifoldable (ANormalF ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

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

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

Bifunctor (ANormalF ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

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

Ord ref => Align (ANormalF ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

Functor (ANormalF ref v) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

Foldable (ANormalF ref v) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

fold :: Monoid m => ANormalF ref v m -> m #

foldMap :: Monoid m => (a -> m) -> ANormalF ref v a -> m #

foldMap' :: Monoid m => (a -> m) -> ANormalF ref v a -> m #

foldr :: (a -> b -> b) -> b -> ANormalF ref v a -> b #

foldr' :: (a -> b -> b) -> b -> ANormalF ref v a -> b #

foldl :: (b -> a -> b) -> b -> ANormalF ref v a -> b #

foldl' :: (b -> a -> b) -> b -> ANormalF ref v a -> b #

foldr1 :: (a -> a -> a) -> ANormalF ref v a -> a #

foldl1 :: (a -> a -> a) -> ANormalF ref v a -> a #

toList :: ANormalF ref v a -> [a] #

null :: ANormalF ref v a -> Bool #

length :: ANormalF ref v a -> Int #

elem :: Eq a => a -> ANormalF ref v a -> Bool #

maximum :: Ord a => ANormalF ref v a -> a #

minimum :: Ord a => ANormalF ref v a -> a #

sum :: Num a => ANormalF ref v a -> a #

product :: Num a => ANormalF ref v a -> a #

Traversable (ANormalF ref v) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

traverse :: Applicative f => (a -> f b) -> ANormalF ref v a -> f (ANormalF ref v b) #

sequenceA :: Applicative f => ANormalF ref v (f a) -> f (ANormalF ref v a) #

mapM :: Monad m => (a -> m b) -> ANormalF ref v a -> m (ANormalF ref v b) #

sequence :: Monad m => ANormalF ref v (m a) -> m (ANormalF ref v a) #

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

Defined in Unison.Runtime.ANF

Methods

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

show :: ANormalF ref v e -> String #

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

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

Defined in Unison.Runtime.ANF

Methods

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

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

type ANormal ref = Term (ANormalF ref) Source #

data RTag Source #

Instances

Instances details
Enum RTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

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.TypeTags

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.TypeTags

Show RTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

Methods

showsPrec :: Int -> RTag -> ShowS #

show :: RTag -> String #

showList :: [RTag] -> ShowS #

Eq RTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

Methods

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

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

Ord RTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

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.TypeTags

Methods

keyToInt :: RTag -> Int #

intToKey :: Int -> RTag #

Tag RTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

Methods

rawTag :: RTag -> Word64 Source #

data CTag Source #

Instances

Instances details
Enum CTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

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.TypeTags

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.TypeTags

Show CTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

Methods

showsPrec :: Int -> CTag -> ShowS #

show :: CTag -> String #

showList :: [CTag] -> ShowS #

Eq CTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

Methods

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

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

Ord CTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

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.TypeTags

Methods

keyToInt :: CTag -> Int #

intToKey :: Int -> CTag #

Tag CTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

Methods

rawTag :: CTag -> Word64 Source #

newtype PackedTag Source #

A combined tag, which is a packed representation of an RTag and a CTag

Constructors

PackedTag Word64 

class Tag t where Source #

Methods

rawTag :: t -> Word64 Source #

Instances

Instances details
Tag CTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

Methods

rawTag :: CTag -> Word64 Source #

Tag RTag Source # 
Instance details

Defined in Unison.Runtime.TypeTags

Methods

rawTag :: RTag -> Word64 Source #

data GroupRef ref Source #

Constructors

GR ref Word64 

Instances

Instances details
Functor GroupRef Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

Foldable GroupRef Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

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

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

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

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

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

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

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

toList :: GroupRef a -> [a] #

null :: GroupRef a -> Bool #

length :: GroupRef a -> Int #

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

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

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

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

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

Traversable GroupRef Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

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

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

Show ref => Show (GroupRef ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> GroupRef ref -> ShowS #

show :: GroupRef ref -> String #

showList :: [GroupRef ref] -> ShowS #

Eq ref => Eq (GroupRef ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(==) :: GroupRef ref -> GroupRef ref -> Bool #

(/=) :: GroupRef ref -> GroupRef ref -> Bool #

data Code ref Source #

Instances

Instances details
Referential Code Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

overRefs :: (Bool -> r -> s) -> Code r -> Code s Source #

foldMapRefs :: Monoid m => (Bool -> r -> m) -> Code r -> m Source #

traverseRefs :: Applicative f => (Bool -> r -> f s) -> Code r -> f (Code s) Source #

Show ref => Show (Code ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> Code ref -> ShowS #

show :: Code ref -> String #

showList :: [Code ref] -> ShowS #

Ord ref => Eq (Code ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(==) :: Code ref -> Code ref -> Bool #

(/=) :: Code ref -> Code ref -> Bool #

BuiltinForeign (Referenced Code) Source # 
Instance details

Defined in Unison.Runtime.Stack

type ValList ref = [Value ref] Source #

A list of either unboxed or boxed values. Each slot is one of unboxed or boxed but not both.

data Value ref Source #

Constructors

Partial (GroupRef ref) (ValList ref) 
Data ref Word64 (ValList ref) 
Cont (ValList ref) (Cont ref) 
BLit (BLit ref) 

Instances

Instances details
Referential Value Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

overRefs :: (Bool -> r -> s) -> Value r -> Value s Source #

foldMapRefs :: Monoid m => (Bool -> r -> m) -> Value r -> m Source #

traverseRefs :: Applicative f => (Bool -> r -> f s) -> Value r -> f (Value s) Source #

Show ref => Show (Value ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> Value ref -> ShowS #

show :: Value ref -> String #

showList :: [Value ref] -> ShowS #

Ord ref => Eq (Value ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(==) :: Value ref -> Value ref -> Bool #

(/=) :: Value ref -> Value ref -> Bool #

BuiltinForeign (Referenced Value) Source # 
Instance details

Defined in Unison.Runtime.Stack

data Cont ref Source #

Constructors

KE 
Mark Word64 [ref] [(ref, Value ref)] (Cont ref) 
Push Word64 Word64 (GroupRef ref) (Cont ref) 

Instances

Instances details
Referential Cont Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

overRefs :: (Bool -> r -> s) -> Cont r -> Cont s Source #

foldMapRefs :: Monoid m => (Bool -> r -> m) -> Cont r -> m Source #

traverseRefs :: Applicative f => (Bool -> r -> f s) -> Cont r -> f (Cont s) Source #

Show ref => Show (Cont ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> Cont ref -> ShowS #

show :: Cont ref -> String #

showList :: [Cont ref] -> ShowS #

Ord ref => Eq (Cont ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(==) :: Cont ref -> Cont ref -> Bool #

(/=) :: Cont ref -> Cont ref -> Bool #

data BLit ref Source #

Instances

Instances details
Referential BLit Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

overRefs :: (Bool -> r -> s) -> BLit r -> BLit s Source #

foldMapRefs :: Monoid m => (Bool -> r -> m) -> BLit r -> m Source #

traverseRefs :: Applicative f => (Bool -> r -> f s) -> BLit r -> f (BLit s) Source #

Show ref => Show (BLit ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

showsPrec :: Int -> BLit ref -> ShowS #

show :: BLit ref -> String #

showList :: [BLit ref] -> ShowS #

Ord ref => Eq (BLit ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

(==) :: BLit ref -> BLit ref -> Bool #

(/=) :: BLit ref -> BLit ref -> Bool #

data Branched ref e Source #

Constructors

MatchIntegral (EnumMap Word64 e) (Maybe e) 
MatchText (Map Text e) (Maybe e) 
MatchRequest [(ref, EnumMap CTag ([Mem], e))] e 
MatchEmpty 
MatchData ref (EnumMap CTag ([Mem], e)) (Maybe e) 
MatchSum (EnumMap Word64 ([Mem], e)) 
MatchNumeric ref (EnumMap Word64 e) (Maybe e) 

Bundled Patterns

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

Instances

Instances details
Functor (Branched ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

Foldable (Branched ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

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

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

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

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

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

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

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

toList :: Branched ref a -> [a] #

null :: Branched ref a -> Bool #

length :: Branched ref a -> Int #

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

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

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

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

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

Traversable (Branched ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

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

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

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

Defined in Unison.Runtime.ANF

Methods

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

show :: Branched ref e -> String #

showList :: [Branched ref e] -> ShowS #

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

Defined in Unison.Runtime.ANF

Methods

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

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

data Func ref v Source #

Constructors

FVar v 
FComb !ref 
FCont v 
FCon !ref !CTag 
FReq !ref !CTag 
FPrim (Either POp ForeignFunc) 

Instances

Instances details
Functor (Func ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

Foldable (Func ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

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

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

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

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

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

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

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

toList :: Func ref a -> [a] #

null :: Func ref a -> Bool #

length :: Func ref a -> Int #

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

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

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

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

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

Traversable (Func ref) Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

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

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

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

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

Defined in Unison.Runtime.ANF

Methods

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

show :: Func ref v -> String #

showList :: [Func ref v] -> ShowS #

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

Defined in Unison.Runtime.ANF

Methods

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

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

data SGEqv ref v Source #

Constructors

NumDefns (SuperGroup ref v) (SuperGroup ref v) 
DefnConventions (SuperNormal ref v) (SuperNormal ref v) 
Subterms (ANormal ref v) (ANormal ref v) 

equivocate :: (Ord ref, Var v) => SuperGroup ref v -> SuperGroup ref v -> Either (SGEqv ref v) () Source #

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

valueTermLinks :: Ord ref => Value ref -> [ref] Source #

collectValueLinks :: Ord ref => Value ref -> (Set ref, Set ref) Source #

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

groupTermLinks :: (Ord ref, Var v) => SuperGroup ref v -> [ref] Source #

replaceConstructors :: (Ord ref, Var v) => Map ref (Map CTag ForeignFunc) -> SuperGroup ref v -> SuperGroup ref v Source #

replaceFunctions :: (Ord ref, Var v) => Map ref ref -> SuperGroup ref v -> SuperGroup ref v Source #

foldGroup :: Monoid m => (SuperGroup ref Symbol -> m) -> Code ref -> m Source #

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

overGroup :: (SuperGroup ref0 Symbol -> SuperGroup ref1 Symbol) -> Code ref0 -> Code ref1 Source #

overGroupLinks :: Var v => (Bool -> ref0 -> ref1) -> SuperGroup ref0 v -> SuperGroup ref1 v Source #

traverseGroup :: Applicative f => (SuperGroup ref0 Symbol -> f (SuperGroup ref1 Symbol)) -> Code ref0 -> f (Code ref1) Source #

traverseGroupLinks :: (Applicative f, Var v) => (Bool -> ref0 -> f ref1) -> SuperGroup ref0 v -> f (SuperGroup ref1 v) Source #

normalLinks :: (Applicative f, Var v) => (Bool -> ref0 -> f ref1) -> SuperNormal ref0 v -> f (SuperNormal ref1 v) Source #