NativeEnvironment constructor
NativeEnvironment([
- 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);
}