I think it's reasonable to assume that all the builtins have fixed signature that match the one declared as data type. We should close this PR as variable arity %apply is a bad idea. On other hand "lambda" intermediate language supports only simple single argument apply.

I think there are many higher-priority items on the agenda. Furthermore, use of % primitives outside the compiler distribution is not to be encouraged---if you play with fire, you should expect to get burnt occasionally. Closing this issue; please submit a patch via Github if you feel strongly enough.