Documentation

Lean.Compiler.Specialize

Marks a definition to never be specialized during code generation.

Marks a definition to always be specialized during code generation.

Specialization is an optimization in the code generator for generating variants of a function that are specialized to specific parameter values. This is in particular useful for functions that take other functions as parameters: Usually when passing functions as parameters, a closure needs to be allocated that will then be called. Using @[specialize] prevents both of these operations by using the provided function directly in the specialization of the inner function.

@[specialize] can take additional arguments for the parameter names or indices (starting at 1) of the parameters that should be specialized. By default, instance and function parameters are specialized.

Equations
    Instances For
      Equations
        Instances For
          Equations
            Instances For
              @[export lean_has_specialize_attribute]
              @[export lean_has_nospecialize_attribute]
              Instances For
                Instances For
                  Instances For
                    Instances For
                      @[export lean_add_specialization_info]
                      Equations
                        Instances For
                          @[export lean_get_specialization_info]
                          Equations
                            Instances For
                              @[export lean_cache_specialization]
                              Equations
                                Instances For
                                  @[export lean_get_cached_specialization]
                                  Equations
                                    Instances For