¿Por qué son simples las expresiones de bucle restringidas a rangos enteros?
De acuerdo con la especificación F # (ver§6.5.7), los bucles simples están delimitados por un entero (int
aliasint32
aliasSystem.Int32
) límitesstart
ystop
, p.ej.
for i = start to stop do
// do sth.
Me pregunto por qué se requieren los límites de iteración para este tipo de bucle for.int32
. Por que no permitiruint32
? int64
? bigint
?
Soy consciente de que las expresiones de iteración de secuencia (for ... in ...
) puede iterar sobre secuencias arbitrarias; que sin embargo requiere asignar un iterador y llamarMoveNext
yCurrent
y lo que no, y por lo tanto puede ser considerablemente menos eficiente de lo que podría ser un bucle plano (contador de incrementos, comparación, salto condicional). Para evitar eso, estás atascado con el usowhile
y un contador de bucle de incremento manual ...
Por extraño que parezca, F #hace permitir que noint32
bucles, si elfor
la expresión está envuelta en una expresión de secuencia, p.
seq { for i = 0I to 10I do
printfn "%A" i }
Entonces, supongo que la pregunta es: ¿hay alguna razón en particular para permitir soloint32
para bucles? ¿Y por qué esta restricción no se aplica afor
bucles envueltos enseq
expresiones?