back to function schemas. basics kinda work without varargs, as it requires sequence schemas. todo: emit clj-kondo annotations for real.
also todo: pretty errors, e.g. https://github.com/metosin/virhe