FunctionDeclaration
FunctionDeclaration[name,typedfun]
declares name to be a typed function suitable for use in a compiler environment.
Details
- FunctionDeclaration is a symbolic representation of a declaration and does not evaluate on its own.
- The typed function in FunctionDeclaration can be of the form Typed[{t1,t2,…}tout]@Function[{x1,x2,…},body].
- A typed function in FunctionDeclaration of the form Typed[{t1,t2,…}tout]@DownValuesFunction[sym] will use function definitions attached to sym.
- FunctionDeclaration can be used inside of CompilerEnvironmentAppendTo and the first argument of functions like FunctionCompile.
- The name used in FunctionDeclaration can be used in more than one declaration so long as they have different types.
- The function declared in FunctionDeclaration can be used in other function declarations.
- The function declared in FunctionDeclaration can be defined for more than one type by using ForAllType.
- The type used in FunctionDeclaration can be built from new types declared by TypeDeclaration.
- A function exported from an external library can be declared by LibraryFunctionDeclaration.
Examples
Basic Examples (7)
FunctionDeclaration can be used in FunctionCompile:
The compilation uses the function declaration:
FunctionDeclaration can be used to add a definition to the default compiler environment:
Use the declaration in a compilation:
The compilation uses the function declaration:
Reset the compiler environment to clear the declaration:
FunctionDeclaration can be used to add a definition to a new compiler environment:
Use the CompilerEnvironment option to specify the environment:
A function name can be used in more than one declaration:
Reset the compiler environment to clear the declaration:
A function declaration can call another declaration:
Compilation uses both declarations:
A function declaration can work for more than one type:
The declaration works for an integer argument:
The same declaration works for a string:
A function declaration can use definitions that use := to set up DownValues for their declarations:
Give the function a name and a type and state that the implementation comes from the DownValues:
Now a function that uses this declaration is compiled:
What is neat is that this workflow is compatible with the uncompiled version:
Text
Wolfram Research (2021), FunctionDeclaration, Wolfram Language function, https://reference.wolfram.com/language/ref/FunctionDeclaration.html.
CMS
Wolfram Language. 2021. "FunctionDeclaration." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/FunctionDeclaration.html.
APA
Wolfram Language. (2021). FunctionDeclaration. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FunctionDeclaration.html