diff options
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; |