First attempt at Model type
This commit is contained in:
parent
8d42aaacd0
commit
7393f88bfd
68
src/Model.re
Normal file
68
src/Model.re
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
module IOTypes = {
|
||||||
|
type singleChoice = {options: list(string)};
|
||||||
|
type floatPoint = {validatations: list(float => bool)};
|
||||||
|
type withDefault('a) = {default: option('a)};
|
||||||
|
};
|
||||||
|
|
||||||
|
module Input = {
|
||||||
|
type parameterType =
|
||||||
|
| Year(IOTypes.withDefault(float))
|
||||||
|
| SingleChoice(IOTypes.singleChoice)
|
||||||
|
| FloatPoint
|
||||||
|
| FloatCdf;
|
||||||
|
|
||||||
|
type parameter = {
|
||||||
|
name: string,
|
||||||
|
parameterType,
|
||||||
|
};
|
||||||
|
|
||||||
|
let make = (name, parameterType) => {name, parameterType};
|
||||||
|
};
|
||||||
|
|
||||||
|
module Output = {
|
||||||
|
type parameterType =
|
||||||
|
| Year
|
||||||
|
| SingleChoice(IOTypes.singleChoice)
|
||||||
|
| FloatPoint
|
||||||
|
| FloatCdf;
|
||||||
|
|
||||||
|
type parameter = {
|
||||||
|
name: string,
|
||||||
|
parameterType,
|
||||||
|
};
|
||||||
|
|
||||||
|
let make = (name, parameterType) => {name, parameterType};
|
||||||
|
};
|
||||||
|
|
||||||
|
type props = {
|
||||||
|
name: string,
|
||||||
|
author: string,
|
||||||
|
assumptions: list(Input.parameter),
|
||||||
|
inputs: list(Input.parameter),
|
||||||
|
outputs: list(Output.parameter),
|
||||||
|
};
|
||||||
|
|
||||||
|
let model1 = {
|
||||||
|
name: "Calculate the payments and payouts of EA Funds based on existing data.",
|
||||||
|
author: "George Harrison",
|
||||||
|
assumptions: [Input.make("Yearly Growth Rate", FloatPoint)],
|
||||||
|
inputs: [
|
||||||
|
Input.make(
|
||||||
|
"Fund",
|
||||||
|
SingleChoice({
|
||||||
|
options: [
|
||||||
|
"Animal Welfare Fund",
|
||||||
|
"Global Health Fund",
|
||||||
|
"Long Term Future Fund",
|
||||||
|
"Meta Fund",
|
||||||
|
"Total",
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
{name: "Year", parameterType: Year({default: Some(2030.0)})},
|
||||||
|
],
|
||||||
|
outputs: [
|
||||||
|
Output.make("Payments", FloatCdf),
|
||||||
|
Output.make("Payouts", FloatCdf),
|
||||||
|
],
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user