Есть ли встроенная функция, которая ведет себя как диапазон Хаскелла?
Я обнаружил, что 2..1
возвращает список [2, 1]
в PureScript, в отличие от [2..1]
Хаскелла, возвращающего пустой список []
. После поиска в Google я обнаружил, что поведение написано в документации Отличия от Haskell , но это не дает обоснования.
На мой взгляд, это поведение несколько неудобно / не интуитивно понятно, поскольку 0 .. (len - 1)
не дает пустой список, когда len
равен нулю, и это может привести к загадочным ошибкам.
- Есть ли способ получить ожидаемый массив (то есть диапазон длины
len
с шагом 0), не обрабатывая каждый раз случай length == 0
?
- Кроме того, почему PureScript решил заставить диапазон вести себя так?
P.S. Как я столкнулся с этим вопросом: я хотел написать функцию getLocalStorageKeys
, которая получает все ключи из локального хранилища. Моя реализация получает количество ключей с помощью функции length , создает диапазон от 0 до numKeys - 1
, а затем обходит его с помощью функции key . Однако диапазон не вел себя так, как я ожидал.