Я изучаю F # (новичок в функциональном программировании в целом, хотя использовал функциональные аспекты С# в течение многих лет, но пусть сталкивается с этим, это довольно разные), и одна из вещей, которые я прочитал, заключается в том, что компилятор F # идентифицирует хвостовую рекурсию и компилирует его в цикл while (см. http://thevalerios.net/matt/2009/01/recursion-in-f-and-the-tail-recursion-police/).
То, что я не понимаю, - это то, почему вы должны писать рекурсивную функцию вместо цикла while, если это то, во что она превратится. Особенно учитывая, что вам нужно сделать дополнительную работу, чтобы сделать вашу функцию рекурсивной.
У меня есть чувство, что кто-то может сказать, что цикл while не особенно функциональен, и вы хотите действовать все функционально, а что-то не так, как вы используете рекурсию, но почему же для этого достаточно, чтобы компилятор превратил его в цикл while?
Может кто-нибудь объяснить это мне?