Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Unison.Runtime.ANF
Synopsis
- minimizeCyclesOrCrash :: (Var v, Ord a) => Term v a -> Term v a
- pattern TVar :: Var v => v -> ANormal ref v
- pattern TLit :: Var v => Lit ref -> ANormal ref v
- pattern TBLit :: Var v => Lit ref -> ANormal ref v
- pattern TApp :: Var v => Func ref v -> [v] -> ANormal ref v
- pattern TApv :: Var v => v -> [v] -> ANormal ref v
- pattern TCom :: Var v => ref -> [v] -> ANormal ref v
- pattern TCon :: Var v => ref -> CTag -> [v] -> ANormal ref v
- pattern UFalse :: Var v => ANormal TypeReference v
- pattern UTrue :: Var v => ANormal TypeReference v
- pattern TKon :: Var v => v -> [v] -> ANormal ref v
- pattern TReq :: Var v => ref -> CTag -> [v] -> ANormal ref v
- pattern TPrm :: Var v => POp -> [v] -> ANormal ref v
- pattern TFOp :: Var v => ForeignFunc -> [v] -> ANormal ref v
- pattern THnd :: Var v => [ref] -> v -> Maybe v -> ANormal ref v -> ANormal ref v
- pattern TLet :: Var v => Direction Word16 -> v -> Mem -> ANormal ref v -> ANormal ref v -> ANormal ref v
- pattern TLetD :: Var v => v -> Mem -> ANormal ref v -> ANormal ref v -> ANormal ref v
- pattern TFrc :: Var v => v -> ANormal ref v
- pattern TLets :: Var v => Direction Word16 -> [v] -> [Mem] -> ANormal ref v -> ANormal ref v -> ANormal ref v
- pattern TName :: Var v => v -> Either ref v -> [v] -> ANormal ref v -> ANormal ref v
- pattern TBind :: Var v => Cte v -> ANormal Reference v -> ANormal Reference v
- pattern TBinds :: Var v => [Cte v] -> ANormal Reference v -> ANormal Reference v
- pattern TShift :: Var v => ref -> v -> ANormal ref v -> ANormal ref v
- pattern TMatch :: Var v => v -> Branched ref (ANormal ref v) -> ANormal ref v
- pattern TDiscard :: Var v => v -> ANormal ref v
- pattern TLocal :: Var v => v -> ANormal ref v -> ANormal ref v
- pattern TUpdate :: Var v => Bool -> v -> v -> Term (ANormalF ref) v
- data FloatName v = FloatName [FloatSeg v]
- prettyFloatName :: Var v => PrettyPrintEnv -> FloatName v -> Pretty ColorText
- data Mem
- data Lit ref
- data Cacheability
- data Direction a
- data SuperNormal ref v = Lambda {
- conventions :: [Mem]
- bound :: ANormal ref v
- arity :: SuperNormal ref v -> Int
- data SuperGroup ref v = Rec {
- group :: [(v, SuperNormal ref v)]
- entry :: SuperNormal ref v
- arities :: SuperGroup ref v -> [Int]
- data POp
- = ADDI
- | SUBI
- | MULI
- | DIVI
- | SGNI
- | NEGI
- | MODI
- | POWI
- | SHLI
- | SHRI
- | ANDI
- | IORI
- | XORI
- | COMI
- | INCI
- | DECI
- | LEQI
- | LESI
- | EQLI
- | NEQI
- | TRNC
- | ADDN
- | SUBN
- | DRPN
- | MULN
- | DIVN
- | MODN
- | TZRO
- | LZRO
- | POPC
- | POWN
- | SHLN
- | SHRN
- | ANDN
- | IORN
- | XORN
- | COMN
- | INCN
- | DECN
- | LEQN
- | LESN
- | EQLN
- | NEQN
- | ADDF
- | SUBF
- | MULF
- | DIVF
- | MINF
- | MAXF
- | LEQF
- | LESF
- | EQLF
- | NEQF
- | POWF
- | EXPF
- | SQRT
- | LOGF
- | LOGB
- | ABSF
- | CEIL
- | FLOR
- | TRNF
- | RNDF
- | COSF
- | ACOS
- | COSH
- | ACSH
- | SINF
- | ASIN
- | SINH
- | ASNH
- | TANF
- | ATAN
- | TANH
- | ATNH
- | ATN2
- | CATT
- | TAKT
- | DRPT
- | SIZT
- | IXOT
- | UCNS
- | USNC
- | EQLT
- | LEQT
- | PAKT
- | UPKT
- | CATS
- | TAKS
- | DRPS
- | SIZS
- | CONS
- | SNOC
- | IDXS
- | BLDS
- | VWLS
- | VWRS
- | SPLL
- | SPLR
- | PAKB
- | UPKB
- | TAKB
- | DRPB
- | IXOB
- | IDXB
- | SIZB
- | FLTB
- | CATB
- | ITOF
- | NTOF
- | ITOT
- | NTOT
- | TTOI
- | TTON
- | TTOF
- | FTOT
- | CAST
- | FORK
- | EQLU
- | CMPU
- | LEQU
- | LESU
- | EROR
- | MISS
- | CACH
- | LKUP
- | LOAD
- | CVLD
- | SDBX
- | VALU
- | TLTT
- | PRNT
- | INFO
- | TRCE
- | DBTX
- | ATOM
- | TFRC
- | SDBL
- | SDBV
- | REFN
- | REFR
- | REFW
- | RCAS
- | RRFC
- | TIKR
- | NOTB
- | ANDB
- | IORB
- close :: (Var v, Monoid a) => Set v -> Term v a -> Term v a
- saturate :: (Var v, Monoid a) => Map ConstructorReference Int -> Term v a -> Term v a
- 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)])
- 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)])
- 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)])
- 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)])
- litRef :: Lit ref -> Reference
- inlineAlias :: Var v => Monoid a => Term v a -> Term v a
- addDefaultCases :: Var v => Monoid a => Text -> Term v a -> Term v a
- data ANormalF ref v e where
- 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
- 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
- type ANormal ref = Term (ANormalF ref)
- data RTag
- data CTag
- newtype PackedTag = PackedTag Word64
- class Tag t where
- data GroupRef ref = GR ref Word64
- data Code ref = CodeRep (SuperGroup ref Symbol) Cacheability
- type ValList ref = [Value ref]
- data Value ref
- data Cont ref
- data BLit ref
- packTags :: RTag -> CTag -> PackedTag
- unpackTags :: PackedTag -> (RTag, CTag)
- maskTags :: PackedTag -> Word64
- type ANFM v = ReaderT (Set v) (State (Word64, Word16, [(v, SuperNormal Reference v)]))
- data Branched ref e where
- 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)
- pattern MatchDataCover :: ref -> EnumMap CTag ([Mem], e) -> Branched ref e
- data Func ref v
- data SGEqv ref v
- = 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) ()
- superNormalize :: Var v => Term v a -> SuperGroup Reference v
- anfTerm :: Var v => Term v a -> ANFM v (DNormal v)
- codeGroup :: Code ref -> SuperGroup ref Symbol
- valueTermLinks :: Ord ref => Value ref -> [ref]
- valueLinks :: Monoid a => (Bool -> ref -> a) -> Value ref -> a
- groupTermLinks :: (Ord ref, Var v) => SuperGroup ref v -> [ref]
- replaceConstructors :: (Ord ref, Var v) => Map ref (Map CTag ForeignFunc) -> SuperGroup ref v -> SuperGroup ref v
- replaceFunctions :: (Ord ref, Var v) => Map ref ref -> SuperGroup ref v -> SuperGroup ref v
- foldGroup :: Monoid m => (SuperGroup ref Symbol -> m) -> Code ref -> m
- foldGroupLinks :: (Monoid r, Var v) => (Bool -> ref -> r) -> SuperGroup ref v -> r
- overGroup :: (SuperGroup ref0 Symbol -> SuperGroup ref1 Symbol) -> Code ref0 -> Code ref1
- overGroupLinks :: Var v => (Bool -> ref0 -> ref1) -> SuperGroup ref0 v -> SuperGroup ref1 v
- traverseGroup :: Applicative f => (SuperGroup ref0 Symbol -> f (SuperGroup ref1 Symbol)) -> Code ref0 -> f (Code ref1)
- traverseGroupLinks :: (Applicative f, Var v) => (Bool -> ref0 -> f ref1) -> SuperGroup ref0 v -> f (SuperGroup ref1 v)
- normalLinks :: (Applicative f, Var v) => (Bool -> ref0 -> f ref1) -> SuperNormal ref0 v -> f (SuperNormal ref1 v)
- prettyGroup :: Var v => String -> SuperGroup Reference v -> ShowS
- prettySuperNormal :: Var v => Int -> SuperNormal Reference v -> ShowS
- prettyANF :: Var v => Bool -> Int -> ANormal Reference v -> ShowS
Documentation
pattern TLet :: Var v => Direction Word16 -> v -> Mem -> ANormal ref v -> ANormal ref v -> ANormal ref v Source #
pattern TLets :: Var v => Direction Word16 -> [v] -> [Mem] -> ANormal ref v -> ANormal ref v -> ANormal ref v Source #
prettyFloatName :: Var v => PrettyPrintEnv -> FloatName v -> Pretty ColorText Source #
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
Show Cacheability Source # | |
Defined in Unison.Runtime.ANF Methods showsPrec :: Int -> Cacheability -> ShowS # show :: Cacheability -> String # showList :: [Cacheability] -> ShowS # | |
Eq Cacheability Source # | |
Defined in Unison.Runtime.ANF |
Instances
Foldable Direction Source # | |
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] # length :: Direction a -> Int # elem :: Eq a => a -> Direction a -> Bool # maximum :: Ord a => Direction a -> a # minimum :: Ord a => Direction a -> a # | |
Traversable Direction Source # | |
Defined in Unison.Runtime.ANF | |
Functor Direction Source # | |
Semigroup a => Monoid (Direction a) Source # | |
Semigroup a => Semigroup (Direction a) Source # | |
Show a => Show (Direction a) Source # | |
Eq a => Eq (Direction a) Source # | |
Ord a => Ord (Direction a) Source # | |
Defined in Unison.Runtime.ANF |
data SuperNormal ref v Source #
Constructors
Lambda | |
Fields
|
Instances
(Show v, Show ref) => Show (SuperNormal ref v) Source # | |
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 # | |
Defined in Unison.Runtime.ANF Methods (==) :: SuperNormal ref v -> SuperNormal ref v -> Bool # (/=) :: SuperNormal ref v -> SuperNormal ref v -> Bool # |
arity :: SuperNormal ref v -> Int Source #
data SuperGroup ref v Source #
Constructors
Rec | |
Fields
|
Instances
(Show v, Show ref) => Show (SuperGroup ref v) Source # | |
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 # | |
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 #
Constructors
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 #
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
Bifoldable (ANormalF ref) Source # | |
Defined in Unison.Runtime.ANF | |
Bifunctor (ANormalF ref) Source # | |
Ord ref => Align (ANormalF ref) Source # | |
Defined in Unison.Runtime.ANF | |
Foldable (ANormalF ref v) Source # | |
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 # | |
Traversable (ANormalF ref v) Source # | |
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 # | |
(Show ref, Show e, Show v) => Show (ANormalF ref v e) Source # | |
(Eq ref, Eq e, Eq v) => Eq (ANormalF ref v e) Source # | |
A combined tag, which is a packed representation of an RTag and a CTag
Instances
Read PackedTag Source # | |
Show PackedTag Source # | |
Eq PackedTag Source # | |
Ord PackedTag Source # | |
EnumKey PackedTag Source # | |
Instances
Foldable GroupRef Source # | |
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 # elem :: Eq a => a -> GroupRef a -> Bool # maximum :: Ord a => GroupRef a -> a # minimum :: Ord a => GroupRef a -> a # | |
Traversable GroupRef Source # | |
Functor GroupRef Source # | |
Show ref => Show (GroupRef ref) Source # | |
Eq ref => Eq (GroupRef ref) Source # | |
Constructors
CodeRep (SuperGroup ref Symbol) Cacheability |
Instances
Referential Code Source # | |
Defined in Unison.Runtime.ANF | |
Show ref => Show (Code ref) Source # | |
Ord ref => Eq (Code ref) Source # | |
BuiltinForeign (Referenced Code) Source # | |
Defined in Unison.Runtime.Foreign Methods foreignName :: Tagged (Referenced Code) String Source # |
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.
Constructors
Partial (GroupRef ref) (ValList ref) | |
Data ref Word64 (ValList ref) | |
Cont (ValList ref) (Cont ref) | |
BLit (BLit ref) |
Instances
Referential Value Source # | |
Defined in Unison.Runtime.ANF | |
Show ref => Show (Value ref) Source # | |
Ord ref => Eq (Value ref) Source # | |
BuiltinForeign (Referenced Value) Source # | |
Defined in Unison.Runtime.Foreign Methods |
Constructors
KE | |
Mark Word64 [ref] [(ref, Value ref)] (Cont ref) | |
Push Word64 Word64 (GroupRef ref) (Cont ref) |
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)] |
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
Foldable (Branched ref) Source # | |
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 # | |
Traversable (Branched ref) Source # | |
Defined in Unison.Runtime.ANF | |
Functor (Branched ref) Source # | |
(Show e, Show ref) => Show (Branched ref e) Source # | |
(Eq e, Eq ref) => Eq (Branched ref e) Source # | |
Constructors
FVar v | |
FComb !ref | |
FCont v | |
FCon !ref !CTag | |
FReq !ref !CTag | |
FPrim (Either POp ForeignFunc) |
Instances
Foldable (Func ref) Source # | |
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 # elem :: Eq a => a -> Func ref a -> Bool # maximum :: Ord a => Func ref a -> a # minimum :: Ord a => Func ref a -> a # | |
Traversable (Func ref) Source # | |
Functor (Func ref) Source # | |
(Show v, Show ref) => Show (Func ref v) Source # | |
(Eq v, Eq ref) => Eq (Func 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 #
superNormalize :: Var v => Term v a -> SuperGroup Reference v Source #
valueTermLinks :: Ord ref => Value ref -> [ref] 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 #
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 #
prettyGroup :: Var v => String -> SuperGroup Reference v -> ShowS Source #
prettySuperNormal :: Var v => Int -> SuperNormal Reference v -> ShowS Source #