47 lines
1.4 KiB
Markdown
47 lines
1.4 KiB
Markdown
# Function Registry
|
|
|
|
The function registry is a library for organizing function definitions.
|
|
|
|
The main interface is fairly constrained. Basically, write functions like the following, and add them to a big array.
|
|
|
|
```rescript
|
|
Function.make(
|
|
~name="Normal",
|
|
~definitions=[
|
|
FnDefinition.make(
|
|
~name="Normal",
|
|
~definitions=[
|
|
FnDefinition.make(~name="normal", ~inputs=[FRTypeDistOrNumber, FRTypeDistOrNumber], ~run=(
|
|
inputs,
|
|
env,
|
|
) =>
|
|
inputs
|
|
->Prepare.ToValueTuple.twoDistOrNumber
|
|
->E.R.bind(
|
|
Process.twoDistsOrNumbersToDistUsingSymbolicDist(
|
|
~fn=E.Tuple2.toFnCall(SymbolicDist.Normal.make),
|
|
~env,
|
|
~values=_,
|
|
),
|
|
)
|
|
->E.R2.fmap(Wrappers.evDistribution)
|
|
),
|
|
],
|
|
)
|
|
],
|
|
)
|
|
```
|
|
|
|
The Function name is just there for future documentation. The function defintions
|
|
|
|
## Key Files
|
|
|
|
**FunctionRegistry_Core**
|
|
Key types, internal functionality, and a `Registry` module with a `matchAndRun` function to call function definitions.
|
|
|
|
**FunctionRegistry_Library**
|
|
A list of all the Functions defined in the Function Registry.
|
|
|
|
**FunctionRegistry_Helpers**
|
|
A list of helper functions for the FunctionRegistry_Library.
|