Define UVECTOR and ATOM
[muddle-interpreter.git] / src / eval.c
index e563fdfd3acd91eab0048e537b7d7a1aba039b7f..f322946410a159bb45490395529367dde5520722 100644 (file)
@@ -111,25 +111,25 @@ eval_rest ()
   // store result of previous call
   pool_object *prev_res = as_pool (&ret);
   list_object *tail = as_list (&cf->locals[1]);
-  *POOL_OBJECT (tail->head) = (pool_object)
+  *POOL_OBJECT (tail->val.head) = (pool_object)
   {
-  .type = prev_res->type,.rest = tail->head + 1,.val = prev_res->val};
+  .type = prev_res->type,.rest = tail->val.head + 1,.val = prev_res->val};
 
   // advance input and output
   assert (cf->args.len == 1);
   list_object *args = as_list (&cf->args.body[0]);
-  assert (args->head);
-  args->head = POOL_OBJECT (args->head)->rest;
-  if (!args->head)
+  assert (args->val.head);
+  args->val.head = POOL_OBJECT (args->val.head)->rest;
+  if (!args->val.head)
     {
-      POOL_OBJECT (tail->head)->rest = 0;
+      POOL_OBJECT (tail->val.head)->rest = 0;
       RETURN (cf->locals[0]);
     }
-  tail->head++;
+  tail->val.head++;
 
   // eval next element
   END_LOCALS ();
-  CALL_THEN (eval, new_tuple ((object *) POOL_OBJECT (args->head), 1),
+  CALL_THEN (eval, new_tuple ((object *) POOL_OBJECT (args->val.head), 1),
             eval_rest);
 }
 
@@ -145,7 +145,7 @@ eval ()
     case EVALTYPE_LIST:
       // Handle `head` now; then iterate on `.rest`.
 
-      if (!cf->args.body[0].list.head)
+      if (!cf->args.body[0].list.val.head)
        RETURN (cf->args.body[0]);
       // locals: { list_object list, list_object tail }
       cst += 2;
@@ -157,11 +157,11 @@ eval ()
       END_LOCALS ();
       CALL_THEN (eval,
                 new_tuple ((object *)
-                           POOL_OBJECT (cf->args.body[0].list.head), 1),
+                           POOL_OBJECT (cf->args.body[0].list.val.head), 1),
                 eval_rest);
     case EVALTYPE_FORM:
       // `<>` is a special case.
-      if (!cf->args.body[0].list.head)
+      if (!cf->args.body[0].list.val.head)
        {
          cf->args.body[0].type = EVALTYPE_FALSE;
          RETURN (cf->args.body[0]);
@@ -170,7 +170,7 @@ eval ()
       END_LOCALS ();
       CALL_THEN (eval,
                 new_tuple ((object *)
-                           POOL_OBJECT (cf->args.body[0].list.head), 1),
+                           POOL_OBJECT (cf->args.body[0].list.val.head), 1),
                 call);
       /*
          case EVALTYPE_VECTOR: TAILCALL(eval_vector);