Why do we need the "tailrec" modifier? To me it seems it just contributes one more special case: Why can't kotlin just automatically use tail-recursion if possible? And if we do have the keyword, then why doesn't the compiler give an error if the function body is not tail recursive?