Haskell-类似于 PureScript 中的范围?

Haskell-like range in PureScript?

有没有像 Haskell 的 运行ge 那样的本机函数?

我发现 2..1 returns 在 PureScript 中是一个列表 [2, 1],不像 Haskell 的 [2..1] 返回一个空列表 [].谷歌搜索后,我发现该行为写在 Differences from Haskell 文档中,但它没有给出背后的基本原理。

在我看来,这种行为有点 inconvenient/unintuitive,因为当 len 为零时 0 .. (len - 1) 不会给出空列表,这可能会导致神秘的错误。

  1. 有没有办法在每次不处理 length == 0 情况的情况下获得预期的数组(即 运行ge 的长度 len 从 0 开始递增?
  2. 此外,为什么 PureScript 决定让 运行ge 表现得像那样?

P.S。我如何 运行 进入这个问题:我想写一个 getLocalStorageKeys 函数,它从本地存储中获取所有密钥。我的实现使用 length function, creates a range from 0 to numKeys - 1, and then traverses it with the key 函数获取键的数量。然而,运行ge 并没有像我预期的那样运行。

自己做怎么样?

indicies :: Int -> Array Int
indicies n = if n <= 0 then [] else 0..(n-1)

至于 "why",我只能推测,我的推测是这个想法是为了避免这种 iffy 逻辑来创建 "reverse" 范围 - 这是Haskell 中我偶尔会想到一些事情。