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