unison-runtime-0.0.0
Safe HaskellSafe-Inferred
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
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 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

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

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

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 #

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

Functor GroupRef Source # 
Instance details

Defined in Unison.Runtime.ANF

Methods

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

(<$) :: a -> GroupRef b -> 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.Foreign

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

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 #

Constructors

Text Text 
List (Seq (Value ref)) 
TmLink (Referent' ref) 
TyLink ref 
Bytes Bytes 
Quote (Value ref) 
Code (Code ref) 
BArr ByteArray 
Arr (Array (Value ref)) 
Pos Word64 
Neg Word64 
Char Char 
Float Double 
Map [(Value ref, Value ref)] 

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

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 #

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

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 #

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

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 #