Dlaczego proste są wyrażenia pętli ograniczone do zakresów całkowitych?

Zgodnie ze specyfikacją F # (patrz§ 6.5.7), proste pętle są ograniczone liczbą całkowitą (int znany jakoint32 znany jakoSystem.Int32) limitystart istop, np.

for i = start to stop do
    // do sth.

Zastanawiam się, dlaczego muszą być granice iteracji dla tego typu pętli forint32. Dlaczego nie pozwolęuint32? int64? bigint?

Wiem, że sekwencyjne wyrażenia iteracyjne (for ... in ...) może iterować po dowolnych sekwencjach; wymaga to jednak przydzielenia iteratora i wywołaniaMoveNext iCurrent a co nie, a zatem może być znacznie mniej wydajne niż zwykła pętla (licznik przyrostowy, porównanie, skok warunkowy). Aby tego uniknąć, utkniesz przy użyciuwhile i ręcznie zwiększając liczniki pętli ...

O dziwo, F #robi zezwalać na nieint32 granice pętli, jeślifor wyrażenie jest zawinięte w wyrażenie sekwencji, np.

seq { for i = 0I to 10I do
        printfn "%A" i }

Tak więc myślę, że pytanie brzmi: czy istnieje jakiś szczególny powód, dla którego można tylko pozwolićint32 na pętle? I dlaczego to ograniczenie nie dotyczyfor zapętlone pętleseq wyrażenia?

questionAnswers(3)

yourAnswerToTheQuestion