diff options
author | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-21 16:05:41 +0000 |
---|---|---|
committer | Peter Mikkelsen <petermikkelsen10@gmail.com> | 2022-01-21 16:05:41 +0000 |
commit | 80ebae7887e21f58ef09a18515e5521c5162053c (patch) | |
tree | 6b62ff6497d44fc9fe5c05b9a92a65cf2efee386 /functions.c | |
parent | e12450d52dce2d6271d12720bf18175d082a0003 (diff) |
Get ready for hybrids
Diffstat (limited to 'functions.c')
-rw-r--r-- | functions.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/functions.c b/functions.c index 3e5c902..3d62828 100644 --- a/functions.c +++ b/functions.c @@ -158,6 +158,13 @@ runfunc(Function f, Array *left, Array *right) } return m(right); } + }else if(f.type == FunctypeOp && f.operator.type == OperatortypeHybrid){ + opmonad m = hybridoperatordefs[f.operator.code]; + if(m == nil){ + Rune *err = runesmprint("monadic %C", primhybridnames[f.operator.code]); + throwerror(err, ENotImplemented); + } + return m(f.operator.left, left, right); }else if(f.type == FunctypeOp){ /* TODO assumes prim op, not dop */ if(f.operator.dyadic){ @@ -189,6 +196,13 @@ runfunc(Function f, Array *left, Array *right) } return f.quad->monadfn(right); } + }else if(f.type == FunctypeHybrid){ + fndyad d = hybridfunctiondefs[f.code]; + if(d == nil){ + Rune *err = runesmprint("dyadic %C", primhybridnames[f.code]); + throwerror(err, ENotImplemented); + } + return d(left, right); }else return nil; } |