diff options
author | Lizzy Hunt <lizzy.hunt@usu.edu> | 2024-02-28 15:06:00 -0700 |
---|---|---|
committer | Lizzy Hunt <lizzy.hunt@usu.edu> | 2024-02-28 15:06:00 -0700 |
commit | 55c00566b0c4870d4c4409ab3e93aacf74f8d081 (patch) | |
tree | 4226b7e518a3ab88987d544ea892da42952255ee /src/interpreter/builtins.ts | |
parent | d39cf84965dffd11cab440f5a4efa1b16932ba73 (diff) | |
download | cps-interpreter-55c00566b0c4870d4c4409ab3e93aacf74f8d081.tar.gz cps-interpreter-55c00566b0c4870d4c4409ab3e93aacf74f8d081.zip |
identity function, repl upgrade
Diffstat (limited to 'src/interpreter/builtins.ts')
-rw-r--r-- | src/interpreter/builtins.ts | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/interpreter/builtins.ts b/src/interpreter/builtins.ts index bc666e9..16322f1 100644 --- a/src/interpreter/builtins.ts +++ b/src/interpreter/builtins.ts @@ -202,6 +202,51 @@ const addBinaryArithmeticOperationsTo = (env: Environment) => { return env; }; +const addIdentityFunctionTo = (env: Environment) => { + env.set('id', { + type: 'function', + value: { + signatures: [ + { + arguments: ['null'], + return: 'null', + }, + { + arguments: ['int'], + return: 'int', + }, + { + arguments: ['real'], + return: 'real', + }, + { + arguments: ['bool'], + return: 'bool', + }, + { + arguments: ['string'], + return: 'string', + }, + { + arguments: ['bytearray'], + return: 'bytearray', + }, + { + arguments: ['function'], + return: 'function', + }, + { + arguments: ['reference'], + return: 'reference', + }, + ], + body: ({ value }: Denotable) => value, + }, + }); + + return env; +}; + export const putBuiltinsOnEnvironemtn = (env: Environment) => { return [ addBinaryArithmeticOperationsTo, @@ -210,5 +255,6 @@ export const putBuiltinsOnEnvironemtn = (env: Environment) => { addNumberComparisonOperationsTo, addBooleanAlgebraOperationsTo, addEqualityOperationsTo, + addIdentityFunctionTo, ].reduce((acc, builtinsAdder) => builtinsAdder(acc), env); }; |