It's kind of bad that we have a `const` system that basically requires tail recursion in cases like this one (if you don't want to break the type system), and yet we are (for some reason??) allergic to recursion. 