} paramList;
MNode* eval (MNode* ptr, MlEnv* mlenv);
+MNode* vectorDup (MNode* c);
+MNode* vectorEval (MNode* c, MlEnv* mlenv);
+MNode* tableDup (MNode* c);
+MNode* tableEval (MNode* c, MlEnv* mlenv);
double eval_double (MNode* ptr, MlEnv* mlenv);
int eval_int (MNode* ptr, MlEnv* mlenv);
+int64_t eval_int64 (MNode* ptr, MlEnv* mlenv);
ustring eval_str (MNode* ptr, MlEnv* mlenv);
ustring eval_text1 (MNode* cell, MlEnv* mlenv);
ustring eval_asciiword (MNode* cell, MlEnv* mlenv);
void progn_ex (MNode* arg, MlEnv* mlenv);
void checkDefun (MNode* cell, ustring& rname, MNode*& sexp);
MNode* newLambda (MNode* cell);
-bool isLambda (MNode* sexp);
-MNode* buildArgs (int start, std::vector<ustring>& args);
-MNode* buildArgs (int start, std::vector<ustring>& args, const ustring& arg2);
+MNode* buildArgs (int start, const std::vector<ustring>& args);
+MNode* buildArgs (int start, const std::vector<ustring>& args, const ustring& arg2);
MNode* buildArgs (const ustring& arg1);
bool checkDefunArgs (MNode* lambda, MNode* values);
MNode* execDefun (MlEnv* mlenv, MotorVar* pool, const ustring& name, MNode* values);
-MNode* execDefun (MlEnv* mlenv, MNode* sexp, MNode* values);
-void setParams (MNode* list, int nparam, std::vector<MNode*>* params, paramList *kwlist, std::vector<MNode*>* keywords, MNode** rest);
+MNode* execDefun (MlEnv* mlenv, MNode* sexp, MNode* values, const ustring& name);
+void onErrorFn (MNode* fn, MlEnv* mlenv);
+void setParams (MNode* list, int nparam, std::vector<MNode*>* params, paramList *kwlist, std::vector<MNode*>* keywords, MNode** rest, bool padding = false);
#endif /* EXPR_H */