NativeEnvironment constructor

NativeEnvironment([
  1. Environment? owner
])

Implementation

NativeEnvironment([super.owner]) {
  // basic functions
  define(Name('define'), _define(_lambda));
  define(Name('define*'), _define(_lambdaStar));
  define(Name('lambda'), _lambda);
  define(Name('lambda*'), _lambdaStar);
  define(Name('quote'), _quote);
  define(Name('quasiquote'), _quasiquote);
  define(Name('eval'), _eval);
  define(Name('apply'), _apply);
  define(Name('let'), _let);
  define(Name('set!'), _set);
  define(Name('print'), _print);
  define(Name('progn'), _progn);
  define(Name('define-macro'), _defineMacro(_macro));
  define(Name('define-macro*'), _defineMacro(_macroStar));
  define(Name('make-symbol'), _makeSymbol);
  define(Name('gensym'), _gensym);

  // control structures
  define(Name('if'), _if);
  define(Name('while'), _while);
  define(Name('and'), _and);
  define(Name('or'), _or);
  define(Name('not'), _not);

  // arithmetic operators
  define(Name('+'), _plus);
  define(Name('-'), _minus);
  define(Name('*'), _multiply);
  define(Name('/'), _divide);
  define(Name('%'), _modulo);

  // arithmetic comparators
  define(Name('<'), _smaller);
  define(Name('<='), _smallerOrEqual);
  define(Name('='), _equal);
  define(Name('!='), _notEqual);
  define(Name('>'), _larger);
  define(Name('>='), _largerOrEqual);

  // other comparators
  define(Name('eq?'), _eq);
  define(Name('pair?'), _isPair);

  // list operators
  define(Name('cons'), _cons);
  define(Name('car'), _car);
  define(Name('car!'), _carSet);
  define(Name('cdr'), _cdr);
  define(Name('cdr!'), _cdrSet);
}