Acabo de encontrar algo que llamaría una peculiaridad en F # y me gustaría saber si es por diseño o por error, y si es por diseño, ¿por qué es así? .. Si escribe cualquier expresión de rango donde el primer término es mayor que el segundo término, la secuencia devuelta estará vacía. Una mirada al reflector sugiere que esto es por diseño, pero realmente no puedo encontrar una razón por la que debería ser así. Un ejemplo de reproducir que es:Rangos A a B donde A> B en F #
[1..10] |> List.length
[10..1] |> List.length
La primera imprimirá 10 mientras que el segundo se imprimirá 0. Las pruebas se realizaron en F # CTP 1.9.6.2.
EDIT: gracias por sugerir explicitar el rango, pero todavía hay un caso (que es lo que me inspiró a hacer esta pregunta) que no será cubierto. ¿Qué pasa si A y B son variables y ninguna es constantemente mayor que la otra, aunque siempre son diferentes? Teniendo en cuenta que la expresión de rango no parece optimizarse en tiempo compilado de todos modos, ¿hay alguna buena razón para que el código que determina el paso (no especificado explícitamente) en el caso A y B no permitan pasos negativos?
Pregunta ligeramente relacionada con algún código que pueda ser de interés http://stackoverflow.com/questions/377078/f-floating-point-ranges-are-experimental-and-may-be-deprecated – Benjol