Added ok value typeto represent success of a function, ie load.

'ok' now represents this type and can be compared to, also cannot be
used as a symbol/variable.
This commit is contained in:
2014-06-21 22:26:49 +01:00
parent 198367882e
commit f74035fcce
5 changed files with 26 additions and 10 deletions

View File

@@ -362,7 +362,7 @@ lval* builtin_envdef(lenv* env, lval* val, char* type){
}
lval_delete(val);
return lval_s_expr();
return lval_ok();
}
lval* builtin_var(lenv* env, lval* val) {
return builtin_envdef(env, val, "var");
@@ -377,7 +377,7 @@ lval* builtin_listenv(lenv* env, lval* val) {
lval_println(env->syms[i]->lval);
}
lval_delete(val);
return lval_s_expr();
return lval_ok();
}
lval* builtin_exit(lenv* env, lval* val) {
@@ -449,7 +449,7 @@ lval* builtin_do_load(lenv* env, lval* val, BOOL loadonce) {
if (loadonce == TRUE && file_loaded == TRUE) {
lval_delete(val);
return lval_s_expr();
return lval_ok();
}
mpc_result_t result;
@@ -458,7 +458,7 @@ lval* builtin_do_load(lenv* env, lval* val, BOOL loadonce) {
//Evaluate the read lisp file
lval* resultLval = parse(result.output);
mpc_ast_delete(result.output);
lval_println(resultLval);
while(resultLval->cell_count > 0) {
lval* x = eval(env, lval_pop(resultLval, 0));
if (x->type == LVAL_ERR) {
@@ -476,7 +476,7 @@ lval* builtin_do_load(lenv* env, lval* val, BOOL loadonce) {
lval_delete(resultLval);
lval_delete(val);
return lval_s_expr();
return lval_ok();
} else {
//Parse error
char* errorMessage = mpc_err_string(result.error);