Eval prim_if(Expr args) { Env* env = take_typed(&args, ENVIRONMENT).env; Expr cond = take_arg(&args); Expr cons = take_arg(&args); Expr alt = take_arg(&args); take_nil(args); cond = eval(cond, env); if(cond.type != BOOLEAN) error(L"Condition must evaluate to boolean"); return must_eval(cond.boolean ? cons : alt, env); }
static KIND(empty_beh_kind) { TRACE(fprintf(stderr, "%p(empty_beh_kind)\n", self)); OOP evt = take_arg(); OOP act = as_event(evt)->actor; OOP msg = as_event(evt)->msg; TRACE(fprintf(stderr, " %p: event=%p {actor:%p, msg:%p}\n", self, evt, act, msg)); return o_true; // commit }
int main(int argc, char **argv) { int flag, pos; pos = take_arg(argc, argv, &flag); if (pos >= argc) { my_write(STDERR_FILENO, ARG_NOT_ENOUGHT, my_strlen(ARG_NOT_ENOUGHT)); exit(1); } for (pos = pos; pos < argc; pos++) { my_putstrstr("|=====> Assembling ^\n", argv[pos]); compilation_fichier(argv[pos], flag); my_putstr("______________________________\n"); } return (0); }
Eval prim_quote(Expr args) { take_typed(&args, ENVIRONMENT); Expr e = take_arg(&args); take_nil(args); return final_eval(e); }