diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-12 19:42:14 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-12 19:42:14 +0000 |
commit | d152639e4495089cabbbf7a16e5bc5129af78bfa (patch) | |
tree | b1f63531e0f02b850ae84721fd5799a4827f64db /print.c | |
parent | fe3ef88c4147c4188066873e570f56212ffeebfd (diff) |
Add dfn parsing, but not evaluation yet
Diffstat (limited to 'print.c')
-rw-r--r-- | print.c | 16 |
1 files changed, 12 insertions, 4 deletions
@@ -10,15 +10,23 @@ ppdatum(Datum d) Rune *result; switch(d.tag){ case ArrayTag: result = pparray(d.array); break; - case FunctionTag: result = runesmprint("%C", primfuncnames[d.func.code]); break; + case FunctionTag: + if(d.func.type == FunctypePrim) + result = runesmprint("%C", primdyadopnames[d.func.code]); + else + result = runesmprint("{%S}", d.func.dfn); + 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 BoundFunctionTag: + if(d.func.type == FunctypePrim) + result = runesmprint("%Sā%C", pparray(d.func.left), primdyadopnames[d.func.code]); + else + result = runesmprint("%Sā{%S}", pparray(d.func.left), d.func.dfn); + 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; |