@@ -369,28 +369,6 @@ inline auto tryMacroCall(ExprPtr const& expr, std::shared_ptr<Env> const& env) -
369
369
return expr;
370
370
}
371
371
372
- inline auto parseAndEvalMacroCall (ExprPtr const & expr, std::shared_ptr<Env> const & env) -> ExprPtr
373
- {
374
- auto cons = dynamic_cast <Cons*>(expr.get ());
375
- if (!cons)
376
- {
377
- return expr;
378
- }
379
- auto car = cons->car ();
380
- auto cdr = cons->cdr ();
381
- auto carStr = asString (car);
382
- if (!carStr.has_value ())
383
- {
384
- // do nothing
385
- return expr;
386
- }
387
- if (env->variableDefined (carStr.value ()))
388
- {
389
- return parse (expr)->eval (env);
390
- }
391
- return expr;
392
- }
393
-
394
372
inline auto parse (ExprPtr const & expr) -> ExprPtr
395
373
{
396
374
if (auto e = tryCons (expr))
@@ -466,34 +444,14 @@ inline auto parseAsQuoted(ExprPtr const& expr, std::optional<int32_t> quasiquote
466
444
return consToQuoted (expr, quasiquoteLevel);
467
445
}
468
446
469
- template <typename Func>
470
- void forEach (ExprPtr const & expr, Func func)
471
- {
472
- if (auto e = dynamic_cast <Cons const *>(expr.get ()))
473
- {
474
- forEach (e->car (), func);
475
- forEach (e->cdr (), func);
476
- }
477
- func (expr);
478
- }
479
-
480
- inline auto defineMacros (ExprPtr const & expr, std::shared_ptr<Env> const & env) -> ExprPtr
481
- {
482
- auto func = [&env](auto const & expr)
483
- {
484
- if (auto macroDefinition = parseMacroDefinition (expr))
485
- {
486
- macroDefinition->eval (env);
487
- return nil ();
488
- }
489
- return expr;
490
- };
491
- return transform (expr, func);
492
- }
493
-
494
447
// FIXME
495
448
inline auto expandMacros (ExprPtr const & expr, std::shared_ptr<Env> const & env) -> ExprPtr
496
449
{
450
+ if (auto macroDefinition = parseMacroDefinition (expr))
451
+ {
452
+ macroDefinition->eval (env);
453
+ return nil ();
454
+ }
497
455
if (auto e = tryMacroCall (expr, env))
498
456
{
499
457
return e;
0 commit comments