> let a = [| 'a'..'d' |];;
val a : char [] = [|'a'; 'b'; 'c'; 'd'|]
ли тривиальная нарезка:странного поведение массива нарезка
> a.[1..2], [1..2];;
val it : char [] * int list = ([|'b'; 'c'|], [1; 2])
Теперь попробуйте с пустой областью:
> a.[1..0], [1..0];;
val it : char [] * int list = ([||], [])
Кажется работать и разумно - мы получили две пустых последовательности.
Но он не здесь:
> a.[5..0];;
System.OverflowException: Arithmetic operation resulted in an overflow.
at <StartupCode$FSI_0018>[email protected]()
Stopped due to error
Конечно, есть обходной путь [| for i in [5..0] -> a.[i] |]
. Но я скучаю по тому, почему a.[5..0]
терпит неудачу? Почему бы просто не вернуть пустой массив? Любые причины такого поведения?
Вы знаете, где «официальный» трекер ошибок для F #? – qehgt
Вы можете отправить отчет об ошибке в fsbugs (at) microsoft (dot) com. – pad