- fixedInst: Lean.Compiler.LCNF.SpecParamInfo
A parameter that is an type class instance (or an arrow that produces a type class instance), and is fixed in recursive declarations. By default, Lean always specializes this kind of argument.
- fixedHO: Lean.Compiler.LCNF.SpecParamInfo
A parameter that is a function and is fixed in recursive declarations. If the user tags a declaration with
@[specialize]
without specifying which arguments should be specialized, Lean will specialize.fixedHO
arguments in addition to.fixedInst
. - fixedNeutral: Lean.Compiler.LCNF.SpecParamInfo
Computationally irrelevant parameters that are fixed in recursive declarations.
- user: Lean.Compiler.LCNF.SpecParamInfo
An argument that has been specified in the
@[specialize]
attribute. Lean specializes it even if it is not fixed in recursive declarations. Non-termination can happen, and Lean interrupts it with an error message based on the stack depth. - other: Lean.Compiler.LCNF.SpecParamInfo
Parameter is not going to be specialized.
Each parameter is associated with a SpecParamInfo
. This information is used by LCNF/Specialize.lean
.
Instances For
Equations
- One or more equations did not get rendered due to their size.
- specInfo : Lean.SMap Lean.Name (Array Lean.Compiler.LCNF.SpecParamInfo)
Instances For
Equations
- Lean.Compiler.LCNF.instInhabitedSpecState = { default := { specInfo := default } }
- declName : Lean.Name
- paramsInfo : Array Lean.Compiler.LCNF.SpecParamInfo
Instances For
Equations
- Lean.Compiler.LCNF.instInhabitedSpecEntry = { default := { declName := default, paramsInfo := default } }
Equations
- Lean.Compiler.LCNF.SpecState.addEntry s e = match s with | { specInfo := specInfo } => { specInfo := Lean.SMap.insert specInfo e.declName e.paramsInfo }
Equations
- Lean.Compiler.LCNF.SpecState.switch _fun_discr = match _fun_discr with | { specInfo := specInfo } => { specInfo := Lean.SMap.switch specInfo }
Extension for storing SpecParamInfo
for declarations being compiled.
Remark: we only store information for declarations that will be specialized.
Save parameter information for decls
.
Remark: this function, similarly to mkFixedArgMap
,
assumes that if a function f
was declared in a mutual block, then decls
contains all (computationally relevant) functions in the mutual block.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lean.Compiler.LCNF.getSpecParamInfoCore? env declName = Lean.SMap.find? (Lean.SimplePersistentEnvExtension.getState Lean.Compiler.LCNF.specExtension env).specInfo declName
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.