PureScript中类似Haskell的范围吗?

时间:2019-05-17 15:06:53

标签: purescript

是否存在本机函数,其行为类似于Haskell的范围?

我发现2..1在PureScript中返回列表[2, 1],这与Haskell的[2..1]返回空列表[]不同。谷歌搜索之后,我发现该行为写在Differences from Haskell文档中,但没有给出背后的理由。

我认为,这种行为有点不方便/不直观,因为当0 .. (len - 1)为零时len不会提供空白列表,这可能会导致隐秘的错误。

  1. 有没有一种方法可以获取期望的数组(即长度len的范围从0开始递增)而无需每次都处理length == 0情况?
  2. 此外,为什么PureScript决定使范围具有这种行为?

P.S。我怎么遇到这个问题:我想编写一个getLocalStorageKeys函数,该函数从本地存储中获取所有密钥。我的实现使用length函数获取键的数量,创建从0到numKeys - 1的范围,然后使用key函数遍历该范围。但是,该范围的表现不符合我的预期。

1 个答案:

答案 0 :(得分:0)

如何自己制作?

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

至于“为什么”,我只能推测,我的想法是要避免这种if fy逻辑来创建“反向”范围-这确实可以解决我偶尔在Haskell。