summaryrefslogtreecommitdiff
path: root/print.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-12 19:42:14 +0000
committerPeter Mikkelsen <petermikkelsen10@gmail.com>2022-01-12 19:42:14 +0000
commitd152639e4495089cabbbf7a16e5bc5129af78bfa (patch)
treeb1f63531e0f02b850ae84721fd5799a4827f64db /print.c
parentfe3ef88c4147c4188066873e570f56212ffeebfd (diff)
Add dfn parsing, but not evaluation yet
Diffstat (limited to 'print.c')
-rw-r--r--print.c16
1 files changed, 12 insertions, 4 deletions
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;