summaryrefslogtreecommitdiff
path: root/src/interpreter/builtins.ts
diff options
context:
space:
mode:
authorLizzy Hunt <lizzy.hunt@usu.edu>2024-02-28 15:06:00 -0700
committerLizzy Hunt <lizzy.hunt@usu.edu>2024-02-28 15:06:00 -0700
commit55c00566b0c4870d4c4409ab3e93aacf74f8d081 (patch)
tree4226b7e518a3ab88987d544ea892da42952255ee /src/interpreter/builtins.ts
parentd39cf84965dffd11cab440f5a4efa1b16932ba73 (diff)
downloadcps-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.ts46
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);
};