Хвостовая рекурсия F # и почему бы не написать цикл while?

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

Я не понимаю, почему вы должны написать рекурсивную функцию вместо цикла while, если это то, во что она все равно превратится. Особенно учитывая, что вам нужно проделать дополнительную работу, чтобы сделать вашу функцию рекурсивной.

У меня такое чувство, что кто-то может сказать, что цикл while не является особенно функциональным, и вы хотите действовать полностью функционально, поэтому вы используете рекурсию, но тогда почему компилятору достаточно превратить его в цикл while?

Может ли кто-нибудь мне это объяснить?

11
задан hackerhasid 6 May 2011 в 18:20
поделиться