summaryrefslogtreecommitdiff
path: root/print.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-11 23:21:05 +0000
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-11 23:21:05 +0000
commit37fe04b08b3cae7390f75eb1bb25d8fd4e958384 (patch)
tree53a6fd51258c5a7113b7bd7fa3766a47a0173070 /print.c
parentba681c740d09deb36587b847a3307c68de933c4c (diff)
First try at implementing variables
Diffstat (limited to 'print.c')
-rw-r--r--print.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/print.c b/print.c
index e0443b3..588ce0a 100644
--- a/print.c
+++ b/print.c
@@ -10,16 +10,20 @@ ppdatum(Datum d)
Rune *result;
switch(d.tag){
case ArrayTag: result = pparray(d.array); break;
- case FunctionTag: result = runesmprint("%C", primfuncnames[d.code]); break;
- case HybridTag: result = runesmprint("%C", primhybridnames[d.code]); break;
- case MonadicOpTag: result = runesmprint("%C", primmonopnames[d.code]); break;
- case DyadicOpTag: result = runesmprint("%C", primdyadopnames[d.code]); break;
+ case FunctionTag: result = runesmprint("%C", primfuncnames[d.func.code]); break;
+ case HybridTag: result = runesmprint("%C", primhybridnames[d.func.code]); break;
+ case MonadicOpTag: result = runesmprint("%C", primmonopnames[d.func.code]); break;
+ case DyadicOpTag: result = runesmprint("%C", primdyadopnames[d.func.code]); break;
+ case BoundFunctionTag: result = runesmprint("%S∘%C", pparray(d.func.left), primfuncnames[d.func.code]); break;
case LParTag: result = runestrdup(L"("); break;
case RParTag: result = runestrdup(L")"); break;
case LCurlTag: result = runestrdup(L"{"); break;
case RCurlTag: result = runestrdup(L"}"); break;
case LBracketTag: result = runestrdup(L"["); break;
case RBracketTag: result = runestrdup(L"]"); break;
+ case ArrowTag: result = runestrdup(L"←"); break;
+ case AssignmentTag: result = runesmprint("%S←", d.symbol->name); break;
+ case NameTag: result = runestrdup(d.symbol->name); break;
default: result = runesmprint("<not printable %d>", d.tag);
}
return result;