That's not a type system thing... Whether a call gets TCO'd isn't represented in the type system if it's just an annotation on a return statement.