Hmm, that sounds like it's well worth playing with in its own right. So, I take it the "functions" are distinct from the "types" they operate on, so a function that uses +,-, etc. can work when fed a value that's a field element instead of a bignum or complex or whatnot?