seval.js 1.1.1 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,KAAK,EAAiC,MAAM,UAAU,CAAA;AAEpE,OAAO,KAAK,EACR,WAAW,EAEX,gBAAgB,EAGhB,KAAK,EACR,MAAM,SAAS,CAAA;AAGhB;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB;qBAmSrC,KAAK,QAAO,WAAW;uBACrB,MAAM,QAAO,WAAW;EAElD;AAGD,eAAO,MAAM,gBAAgB;qBANJ,KAAK,QAAO,WAAW;uBACrB,MAAM,QAAO,WAAW;CAKF,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,QAAQ,SAXI,KAAK,QAAO,WAAW,UAWC,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,UAAU,SAfI,MAAM,QAAO,WAAW,UAeE,CAAA"}
1
+ {"version":3,"file":"evaluator.d.ts","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,KAAK,EAA4B,MAAM,UAAU,CAAA;AAE/D,OAAO,KAAK,EACR,WAAW,EAEX,gBAAgB,EAGhB,KAAK,EACR,MAAM,SAAS,CAAA;AA+DhB;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB;qBAkR9B,KAAK,QAAO,WAAW;uBAKrB,MAAM,QAAO,WAAW;EAMzD;AAGD,eAAO,MAAM,gBAAgB;qBAdG,KAAK,QAAO,WAAW;uBAKrB,MAAM,QAAO,WAAW;CAST,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,QAAQ,SAnBW,KAAK,QAAO,WAAW,UAmBN,CAAA;AAEjD;;GAEG;AACH,eAAO,MAAM,UAAU,SAnBW,MAAM,QAAO,WAAW,UAmBL,CAAA"}
package/dist/evaluator.js CHANGED
@@ -10,6 +10,57 @@
10
10
  import { isSymbol, parse, symName } from './parser';
11
11
  import { defaultPrimitives } from './primitives';
12
12
  import { isLambda } from './types';
13
+ const ENV_MARK = Symbol('seval.env');
14
+ function isRuntimeEnv(env) {
15
+ return Boolean(env[ENV_MARK]);
16
+ }
17
+ function markEnv(env) {
18
+ if (!isRuntimeEnv(env)) {
19
+ Object.defineProperty(env, ENV_MARK, { value: true, enumerable: false });
20
+ if (Object.getPrototypeOf(env) === Object.prototype) {
21
+ Object.setPrototypeOf(env, null);
22
+ }
23
+ }
24
+ return env;
25
+ }
26
+ function createEnv(parent) {
27
+ const env = Object.create(parent ?? null);
28
+ Object.defineProperty(env, ENV_MARK, { value: true, enumerable: false });
29
+ return env;
30
+ }
31
+ function ensureEnv(env) {
32
+ if (!env) {
33
+ return createEnv(null);
34
+ }
35
+ return markEnv(env);
36
+ }
37
+ function getParentEnv(env) {
38
+ return Object.getPrototypeOf(env) ?? null;
39
+ }
40
+ function findBinding(env, name) {
41
+ if (!env)
42
+ return null;
43
+ if (Object.prototype.hasOwnProperty.call(env, name)) {
44
+ return env;
45
+ }
46
+ return findBinding(getParentEnv(env), name);
47
+ }
48
+ function assignBinding(env, name, value) {
49
+ const target = findBinding(env, name);
50
+ if (target) {
51
+ target[name] = value;
52
+ }
53
+ else {
54
+ env[name] = value;
55
+ }
56
+ return value;
57
+ }
58
+ function getBinding(env, name) {
59
+ if (name in env) {
60
+ return env[name];
61
+ }
62
+ return undefined;
63
+ }
13
64
  /**
14
65
  * Create a new evaluator instance with optional custom primitives
15
66
  */
@@ -19,269 +70,259 @@ export function createEvaluator(options = {}) {
19
70
  ...options.primitives,
20
71
  };
21
72
  const maxDepth = options.maxDepth ?? 100;
22
- function evaluate(expr, env, depth = 0) {
73
+ function evalLambda(fn, argValues, depth) {
74
+ const closureEnv = ensureEnv(fn.closure);
75
+ const callEnv = createEnv(closureEnv);
76
+ fn.params.forEach((param, index) => {
77
+ callEnv[param] = argValues[index];
78
+ });
79
+ return evalExpr(fn.body, callEnv, depth + 1);
80
+ }
81
+ function evalExpr(expr, env, depth = 0) {
23
82
  if (depth > maxDepth) {
24
83
  throw new Error('Maximum evaluation depth exceeded');
25
84
  }
26
- // Null
27
85
  if (expr === null)
28
86
  return null;
29
- // Literal values
30
87
  if (typeof expr === 'number')
31
88
  return expr;
32
89
  if (typeof expr === 'boolean')
33
90
  return expr;
34
- // String literal - return as-is
35
91
  if (typeof expr === 'string')
36
92
  return expr;
37
- // Symbol - look up in environment
38
93
  if (isSymbol(expr)) {
39
94
  const name = symName(expr);
40
- if (name in env) {
41
- return env[name];
42
- }
43
- // Symbol not found - return the name as string (might be a primitive name)
44
- return name;
95
+ const value = getBinding(env, name);
96
+ return value ?? name;
45
97
  }
46
- // List (function application)
47
- if (Array.isArray(expr)) {
48
- if (expr.length === 0)
49
- return [];
50
- const [op, ...args] = expr;
51
- const opName = isSymbol(op) ? symName(op) : null;
52
- // Special forms (check by symbol name)
53
- if (opName === 'if') {
54
- const [cond, thenExpr, elseExpr] = args;
55
- const condResult = evaluate(cond, env, depth + 1);
56
- return condResult
57
- ? evaluate(thenExpr, env, depth + 1)
58
- : evaluate(elseExpr, env, depth + 1);
59
- }
60
- if (opName === 'let') {
61
- // (let ((x 1) (y 2)) body)
62
- const [bindings, body] = args;
63
- const newEnv = { ...env };
64
- for (const binding of bindings) {
65
- const [nameExpr, value] = binding;
66
- const name = isSymbol(nameExpr) ? symName(nameExpr) : String(nameExpr);
67
- newEnv[name] = evaluate(value, newEnv, depth + 1);
68
- }
69
- return evaluate(body, newEnv, depth + 1);
98
+ if (!Array.isArray(expr)) {
99
+ throw new Error(`Cannot evaluate: ${JSON.stringify(expr)}`);
100
+ }
101
+ if (expr.length === 0)
102
+ return [];
103
+ const [op, ...args] = expr;
104
+ const opName = isSymbol(op) ? symName(op) : null;
105
+ if (opName === 'if') {
106
+ const [cond, thenExpr, elseExpr] = args;
107
+ const condResult = evalExpr(cond, env, depth + 1);
108
+ return condResult
109
+ ? evalExpr(thenExpr, env, depth + 1)
110
+ : evalExpr(elseExpr, env, depth + 1);
111
+ }
112
+ if (opName === 'let') {
113
+ const [bindings, body] = args;
114
+ const letEnv = createEnv(env);
115
+ for (const binding of bindings) {
116
+ const [nameExpr, valueExpr] = binding;
117
+ const name = isSymbol(nameExpr) ? symName(nameExpr) : String(nameExpr);
118
+ letEnv[name] = evalExpr(valueExpr, letEnv, depth + 1);
70
119
  }
71
- if (opName === 'cond') {
72
- // (cond (test1 expr1) (test2 expr2) (else exprN))
73
- for (const clause of args) {
74
- const [test, result] = clause;
75
- const isElse = isSymbol(test) && symName(test) === 'else';
76
- if (isElse || evaluate(test, env, depth + 1)) {
77
- return evaluate(result, env, depth + 1);
78
- }
120
+ return evalExpr(body, letEnv, depth + 1);
121
+ }
122
+ if (opName === 'cond') {
123
+ for (const clause of args) {
124
+ const [test, result] = clause;
125
+ const isElse = isSymbol(test) && symName(test) === 'else';
126
+ if (isElse || evalExpr(test, env, depth + 1)) {
127
+ return evalExpr(result, env, depth + 1);
79
128
  }
80
- return null;
81
129
  }
82
- if (opName === 'begin' || opName === 'progn' || opName === 'do') {
83
- let result = null;
84
- for (const subExpr of args) {
85
- result = evaluate(subExpr, env, depth + 1);
86
- }
87
- return result;
130
+ return null;
131
+ }
132
+ if (opName === 'begin' || opName === 'progn' || opName === 'do') {
133
+ let result = null;
134
+ for (const subExpr of args) {
135
+ result = evalExpr(subExpr, env, depth + 1);
88
136
  }
89
- if (opName === 'quote') {
90
- const val = args[0];
91
- // For symbols, return the name as string
92
- if (isSymbol(val)) {
93
- return symName(val);
94
- }
95
- return val;
137
+ return result;
138
+ }
139
+ if (opName === 'quote') {
140
+ const val = args[0];
141
+ if (isSymbol(val)) {
142
+ return symName(val);
96
143
  }
97
- // Lambda: (lambda (x y) (+ x y)) or (fn (x y) (+ x y))
98
- if (opName === 'lambda' || opName === 'fn') {
99
- const [params, body] = args;
100
- return {
144
+ return val;
145
+ }
146
+ if (opName === 'lambda' || opName === 'fn') {
147
+ const [params, body] = args;
148
+ return {
149
+ __lambda: true,
150
+ params: params.map((p) => (isSymbol(p) ? symName(p) : String(p))),
151
+ body: body,
152
+ closure: env,
153
+ };
154
+ }
155
+ if (opName === 'define' || opName === 'defun') {
156
+ const first = args[0];
157
+ if (Array.isArray(first)) {
158
+ const [nameExpr, ...paramExprs] = first;
159
+ const name = isSymbol(nameExpr) ? symName(nameExpr) : String(nameExpr);
160
+ const params = paramExprs.map((p) => (isSymbol(p) ? symName(p) : String(p)));
161
+ const body = args[1];
162
+ const fn = {
101
163
  __lambda: true,
102
- params: params.map((p) => (isSymbol(p) ? symName(p) : String(p))),
164
+ params,
103
165
  body: body,
104
166
  closure: env,
105
167
  };
168
+ assignBinding(env, name, fn);
169
+ return fn;
106
170
  }
107
- // Define: (define name value) or (define (name args...) body)
108
- if (opName === 'define' || opName === 'defun') {
109
- const first = args[0];
110
- if (Array.isArray(first)) {
111
- // (define (name args...) body) - function definition shorthand
112
- const [nameExpr, ...paramExprs] = first;
113
- const name = isSymbol(nameExpr) ? symName(nameExpr) : String(nameExpr);
114
- const params = paramExprs.map((p) => (isSymbol(p) ? symName(p) : String(p)));
115
- const body = args[1];
116
- const fn = {
117
- __lambda: true,
118
- params,
119
- body: body,
120
- closure: env,
121
- };
122
- env[name] = fn;
123
- return fn;
124
- }
125
- // (define name value)
126
- const name = isSymbol(first) ? symName(first) : String(first);
127
- const value = evaluate(args[1], env, depth + 1);
128
- env[name] = value;
129
- return value;
130
- }
131
- // Apply: (apply fn list-of-args)
132
- if (opName === 'apply') {
133
- const fn = evaluate(args[0], env, depth + 1);
134
- const fnArgs = evaluate(args[1], env, depth + 1);
135
- if (isLambda(fn)) {
136
- const callEnv = { ...fn.closure, ...env };
137
- fn.params.forEach((param, i) => {
138
- callEnv[param] = fnArgs[i];
139
- });
140
- return evaluate(fn.body, callEnv, depth + 1);
141
- }
142
- throw new Error(`Cannot apply non-function: ${fn}`);
171
+ const name = isSymbol(first) ? symName(first) : String(first);
172
+ const value = evalExpr(args[1], env, depth + 1);
173
+ return assignBinding(env, name, value);
174
+ }
175
+ if (opName === 'apply') {
176
+ const fnValue = evalExpr(args[0], env, depth + 1);
177
+ const fnArgs = evalExpr(args[1], env, depth + 1);
178
+ if (isLambda(fnValue)) {
179
+ return evalLambda(fnValue, fnArgs, depth);
143
180
  }
144
- // Higher-order functions with inline predicates or lambda
145
- if (opName === 'filter') {
146
- const [predExpr, listExpr] = args;
147
- const pred = evaluate(predExpr, env, depth + 1);
148
- const list = evaluate(listExpr, env, depth + 1);
149
- if (isLambda(pred)) {
150
- return list.filter((item) => {
151
- const callEnv = { ...pred.closure, ...env };
152
- callEnv[pred.params[0]] = item;
153
- return evaluate(pred.body, callEnv, depth + 1);
154
- });
155
- }
156
- // Inline expression form
181
+ throw new Error(`Cannot apply non-function: ${fnValue}`);
182
+ }
183
+ if (opName === 'filter') {
184
+ const [predExpr, listExpr] = args;
185
+ const list = evalExpr(listExpr, env, depth + 1);
186
+ const pred = evalExpr(predExpr, env, depth + 1);
187
+ if (isLambda(pred)) {
157
188
  return list.filter((item) => {
158
- const itemEnv = { ...env, '@': item, it: item };
159
- return evaluate(predExpr, itemEnv, depth + 1);
189
+ const callEnv = createEnv(ensureEnv(pred.closure));
190
+ callEnv[pred.params[0]] = item;
191
+ return evalExpr(pred.body, callEnv, depth + 1);
160
192
  });
161
193
  }
162
- if (opName === 'map') {
163
- const [mapExpr, listExpr] = args;
164
- const mapper = evaluate(mapExpr, env, depth + 1);
165
- const list = evaluate(listExpr, env, depth + 1);
166
- if (isLambda(mapper)) {
167
- return list.map((item) => {
168
- const callEnv = { ...mapper.closure, ...env };
169
- callEnv[mapper.params[0]] = item;
170
- return evaluate(mapper.body, callEnv, depth + 1);
171
- });
172
- }
173
- // Inline expression form
194
+ return list.filter((item) => {
195
+ const itemEnv = createEnv(env);
196
+ itemEnv['@'] = item;
197
+ itemEnv.it = item;
198
+ return evalExpr(predExpr, itemEnv, depth + 1);
199
+ });
200
+ }
201
+ if (opName === 'map') {
202
+ const [mapExpr, listExpr] = args;
203
+ const list = evalExpr(listExpr, env, depth + 1);
204
+ const mapper = evalExpr(mapExpr, env, depth + 1);
205
+ if (isLambda(mapper)) {
174
206
  return list.map((item) => {
175
- const itemEnv = { ...env, '@': item, it: item };
176
- return evaluate(mapExpr, itemEnv, depth + 1);
207
+ const callEnv = createEnv(ensureEnv(mapper.closure));
208
+ callEnv[mapper.params[0]] = item;
209
+ return evalExpr(mapper.body, callEnv, depth + 1);
177
210
  });
178
211
  }
179
- if (opName === 'find') {
180
- const [listExpr, predExpr] = args;
181
- const list = evaluate(listExpr, env, depth + 1);
182
- return (list.find((item) => {
183
- const itemEnv = { ...env, '@': item, it: item };
184
- return evaluate(predExpr, itemEnv, depth + 1);
185
- }) ?? null);
186
- }
187
- if (opName === 'find-index') {
188
- const [listExpr, predExpr] = args;
189
- const list = evaluate(listExpr, env, depth + 1);
190
- return list.findIndex((item) => {
191
- const itemEnv = { ...env, '@': item, it: item };
192
- return evaluate(predExpr, itemEnv, depth + 1);
193
- });
194
- }
195
- if (opName === 'sort-by') {
196
- const [listExpr, keyExpr] = args;
197
- const list = evaluate(listExpr, env, depth + 1);
198
- return [...list].sort((a, b) => {
199
- const aKey = evaluate(keyExpr, { ...env, '@': a, it: a }, depth + 1);
200
- const bKey = evaluate(keyExpr, { ...env, '@': b, it: b }, depth + 1);
201
- return aKey - bKey;
202
- });
203
- }
204
- if (opName === 'count') {
205
- const [listExpr, predExpr] = args;
206
- const list = evaluate(listExpr, env, depth + 1);
207
- if (!predExpr)
208
- return list.length;
209
- return list.filter((item) => {
210
- const itemEnv = { ...env, '@': item, it: item };
211
- return evaluate(predExpr, itemEnv, depth + 1);
212
- }).length;
212
+ return list.map((item) => {
213
+ const itemEnv = createEnv(env);
214
+ itemEnv['@'] = item;
215
+ itemEnv.it = item;
216
+ return evalExpr(mapExpr, itemEnv, depth + 1);
217
+ });
218
+ }
219
+ if (opName === 'find') {
220
+ const [listExpr, predExpr] = args;
221
+ const list = evalExpr(listExpr, env, depth + 1);
222
+ return (list.find((item) => {
223
+ const itemEnv = createEnv(env);
224
+ itemEnv['@'] = item;
225
+ itemEnv.it = item;
226
+ return evalExpr(predExpr, itemEnv, depth + 1);
227
+ }) ?? null);
228
+ }
229
+ if (opName === 'find-index') {
230
+ const [listExpr, predExpr] = args;
231
+ const list = evalExpr(listExpr, env, depth + 1);
232
+ return list.findIndex((item) => {
233
+ const itemEnv = createEnv(env);
234
+ itemEnv['@'] = item;
235
+ itemEnv.it = item;
236
+ return evalExpr(predExpr, itemEnv, depth + 1);
237
+ });
238
+ }
239
+ if (opName === 'sort-by') {
240
+ const [listExpr, keyExpr] = args;
241
+ const list = evalExpr(listExpr, env, depth + 1);
242
+ return [...list].sort((a, b) => {
243
+ const aEnv = createEnv(env);
244
+ aEnv['@'] = a;
245
+ aEnv.it = a;
246
+ const bEnv = createEnv(env);
247
+ bEnv['@'] = b;
248
+ bEnv.it = b;
249
+ const aKey = evalExpr(keyExpr, aEnv, depth + 1);
250
+ const bKey = evalExpr(keyExpr, bEnv, depth + 1);
251
+ return aKey - bKey;
252
+ });
253
+ }
254
+ if (opName === 'count') {
255
+ const [listExpr, predExpr] = args;
256
+ const list = evalExpr(listExpr, env, depth + 1);
257
+ if (!predExpr)
258
+ return list.length;
259
+ return list.filter((item) => {
260
+ const itemEnv = createEnv(env);
261
+ itemEnv['@'] = item;
262
+ itemEnv.it = item;
263
+ return evalExpr(predExpr, itemEnv, depth + 1);
264
+ }).length;
265
+ }
266
+ if (opName === 'reduce' || opName === 'fold') {
267
+ const [listExpr, initExpr, ...rest] = args;
268
+ const list = evalExpr(listExpr, env, depth + 1);
269
+ let acc = evalExpr(initExpr, env, depth + 1);
270
+ if (rest.length === 2) {
271
+ const [params, body] = rest;
272
+ const [accExpr, itemExpr] = params;
273
+ const accName = isSymbol(accExpr) ? symName(accExpr) : String(accExpr);
274
+ const itemName = isSymbol(itemExpr) ? symName(itemExpr) : String(itemExpr);
275
+ for (const item of list) {
276
+ const reduceEnv = createEnv(env);
277
+ reduceEnv[accName] = acc;
278
+ reduceEnv[itemName] = item;
279
+ acc = evalExpr(body, reduceEnv, depth + 1);
280
+ }
213
281
  }
214
- // Reduce: (reduce list init-value (acc item) body) or (reduce list init-value fn)
215
- if (opName === 'reduce' || opName === 'fold') {
216
- const [listExpr, initExpr, ...rest] = args;
217
- const list = evaluate(listExpr, env, depth + 1);
218
- let acc = evaluate(initExpr, env, depth + 1);
219
- if (rest.length === 2) {
220
- // Inline form: (reduce list init (acc item) body)
221
- const [params, body] = rest;
222
- const [accExpr, itemExpr] = params;
223
- const accName = isSymbol(accExpr) ? symName(accExpr) : String(accExpr);
224
- const itemName = isSymbol(itemExpr) ? symName(itemExpr) : String(itemExpr);
282
+ else {
283
+ const fnValue = evalExpr(rest[0], env, depth + 1);
284
+ if (isLambda(fnValue)) {
225
285
  for (const item of list) {
226
- const reduceEnv = { ...env, [accName]: acc, [itemName]: item };
227
- acc = evaluate(body, reduceEnv, depth + 1);
286
+ const callEnv = createEnv(ensureEnv(fnValue.closure));
287
+ callEnv[fnValue.params[0]] = acc;
288
+ callEnv[fnValue.params[1]] = item;
289
+ acc = evalExpr(fnValue.body, callEnv, depth + 1);
228
290
  }
229
291
  }
230
292
  else {
231
- // Function form: (reduce list init fn)
232
- const fn = evaluate(rest[0], env, depth + 1);
233
- if (isLambda(fn)) {
234
- for (const item of list) {
235
- const callEnv = { ...fn.closure, ...env };
236
- callEnv[fn.params[0]] = acc;
237
- callEnv[fn.params[1]] = item;
238
- acc = evaluate(fn.body, callEnv, depth + 1);
239
- }
240
- }
241
- else {
242
- throw new Error('reduce requires a function');
243
- }
293
+ throw new Error('reduce requires a function');
244
294
  }
245
- return acc;
246
- }
247
- // Regular function call or lambda invocation
248
- // First check if op is a symbol that resolves to a lambda
249
- const opValue = opName && opName in env ? env[opName] : null;
250
- if (isLambda(opValue)) {
251
- // Call user-defined function
252
- const evaluatedArgs = args.map((arg) => evaluate(arg, env, depth + 1));
253
- const callEnv = { ...opValue.closure, ...env };
254
- opValue.params.forEach((param, i) => {
255
- callEnv[param] = evaluatedArgs[i];
256
- });
257
- return evaluate(opValue.body, callEnv, depth + 1);
258
295
  }
259
- // Check if it's a primitive function (by symbol name)
260
- if (opName) {
261
- const fn = primitives[opName];
262
- if (fn) {
263
- const evaluatedArgs = args.map((arg) => evaluate(arg, env, depth + 1));
264
- const evalFn = (e, newEnv) => evaluate(e, newEnv, depth + 1);
265
- return fn(evaluatedArgs, env, evalFn);
266
- }
267
- }
268
- // Maybe op itself is a lambda expression (not a symbol)
269
- const evaluatedOp = evaluate(op, env, depth + 1);
270
- if (isLambda(evaluatedOp)) {
271
- const evaluatedArgs = args.map((arg) => evaluate(arg, env, depth + 1));
272
- const callEnv = { ...evaluatedOp.closure, ...env };
273
- evaluatedOp.params.forEach((param, i) => {
274
- callEnv[param] = evaluatedArgs[i];
275
- });
276
- return evaluate(evaluatedOp.body, callEnv, depth + 1);
296
+ return acc;
297
+ }
298
+ const opValue = opName ? getBinding(env, opName) : undefined;
299
+ if (opValue && isLambda(opValue)) {
300
+ const evaluatedArgs = args.map((arg) => evalExpr(arg, env, depth + 1));
301
+ return evalLambda(opValue, evaluatedArgs, depth);
302
+ }
303
+ if (opName) {
304
+ const primitive = primitives[opName];
305
+ if (primitive) {
306
+ const evaluatedArgs = args.map((arg) => evalExpr(arg, env, depth + 1));
307
+ const evalFn = (expression, nextEnv = env) => evalExpr(expression, ensureEnv(nextEnv), depth + 1);
308
+ return primitive(evaluatedArgs, env, evalFn);
277
309
  }
278
- throw new Error(`Unknown function: ${opName ?? String(op)}`);
279
310
  }
280
- throw new Error(`Cannot evaluate: ${JSON.stringify(expr)}`);
311
+ const evaluatedOp = evalExpr(op, env, depth + 1);
312
+ if (isLambda(evaluatedOp)) {
313
+ const evaluatedArgs = args.map((arg) => evalExpr(arg, env, depth + 1));
314
+ return evalLambda(evaluatedOp, evaluatedArgs, depth);
315
+ }
316
+ throw new Error(`Unknown function: ${opName ?? String(op)}`);
281
317
  }
318
+ const evaluateRoot = (expr, env = {}) => {
319
+ const runtimeEnv = ensureEnv(env);
320
+ return evalExpr(expr, runtimeEnv, 0);
321
+ };
322
+ const evalStringRoot = (code, env = {}) => evaluateRoot(parse(code), env);
282
323
  return {
283
- evaluate: (expr, env = {}) => evaluate(expr, env),
284
- evalString: (code, env = {}) => evaluate(parse(code), env),
324
+ evaluate: evaluateRoot,
325
+ evalString: evalStringRoot,
285
326
  };
286
327
  }
287
328
  // Default evaluator instance
@@ -1 +1 @@
1
- {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evaluator.js","sourceRoot":"","sources":["../src/evaluator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "seval.js",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "S-expression evaluator for TypeScript/JavaScript",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -12,9 +12,7 @@
12
12
  "types": "./dist/index.d.ts"
13
13
  }
14
14
  },
15
- "files": [
16
- "dist"
17
- ],
15
+ "files": ["dist"],
18
16
  "scripts": {
19
17
  "build": "tsc",
20
18
  "dev": "tsc --watch",
@@ -27,13 +25,7 @@
27
25
  "format:check": "biome format --write . && git diff --exit-code",
28
26
  "prepublishOnly": "bun run build"
29
27
  },
30
- "keywords": [
31
- "s-expression",
32
- "sexp",
33
- "lisp",
34
- "evaluator",
35
- "interpreter"
36
- ],
28
+ "keywords": ["s-expression", "sexp", "lisp", "evaluator", "interpreter"],
37
29
  "author": "cpunion",
38
30
  "license": "MIT",
39
31
  "repository": {