summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-24 21:18:01 +0000
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-24 21:18:01 +0000
commit468e0f6313fb620bd2f7ea469178fe02412ddc31 (patch)
tree7bec5259864136c98c9b3d7dbc972e1ab2be458f /eval.c
parent07fe0f96352967457d64ff349f4383c5568bcd42 (diff)
Implement ⍺⍵⍶⍹ as get-set variables, which may make it easier to do TCO later.
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/eval.c b/eval.c
index 60c2e0d..a2d4d43 100644
--- a/eval.c
+++ b/eval.c
@@ -151,6 +151,7 @@ lookup(Datum var)
incref(val->array); /* since the value is now in the var AND in the code */
}
val->shy = 0;
+ traceprint("VAR %S = %S\n", var.symbol->name, ppdatum(*val));
return val;
}
@@ -225,11 +226,7 @@ nameis(Datum left, Datum right)
Datum
assign(Datum left, Datum right)
{
- if(runestrcmp(left.symbol->name, L"⍵") == 0)
- throwerror(nil, ESyntax);
- else if(runestrcmp(left.symbol->name, L"⍺") == 0 && !left.symbol->undefined)
- goto end;
- else if(left.symbol->setfn != nil)
+ if(left.symbol->setfn != nil)
left.symbol->setfn(right);
else{
if(left.symbol->undefined == 0 && left.symbol->value.tag == ArrayTag)
@@ -241,7 +238,6 @@ assign(Datum left, Datum right)
incref(right.array); /* for the binding */
}
}
-end:
right.shy = 1;
if(right.tag == ArrayTag)
incref(right.array); /* for the returned array */