From d152639e4495089cabbbf7a16e5bc5129af78bfa Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Wed, 12 Jan 2022 19:42:14 +0000 Subject: Add dfn parsing, but not evaluation yet --- print.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'print.c') diff --git a/print.c b/print.c index 588ce0a..1d0856d 100644 --- a/print.c +++ b/print.c @@ -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; -- cgit v1.2.3