From 55c00566b0c4870d4c4409ab3e93aacf74f8d081 Mon Sep 17 00:00:00 2001 From: Lizzy Hunt Date: Wed, 28 Feb 2024 15:06:00 -0700 Subject: identity function, repl upgrade --- src/interpreter/builtins.ts | 46 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'src/interpreter/builtins.ts') 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); }; -- cgit v1.2.3-70-g09d2