【问题标题】:How do I index an element from an array consisting of arrays in purescript?如何索引由 purescript 中的数组组成的数组中的元素?
【发布时间】:2018-01-18 06:20:50
【问题描述】:

a = [ 1, 2, 3] 一种 [1,2,3]

b = [ 3, 4, 5] b [3,4,5]

c = [a ,b] C [[1,2,3],[3,4,5]]

一个!! 2 (只有 3 个)

一个!! 2 (只有 3 个)

一个!! 1 (只有 2 个)

c !! 2 什么都没有

c !! 1 (只是 [3,4,5])

c !! 1!! 0 发现错误: 在模块 $PSCI 在第 1 行第 1 列 - 第 1 行第 11 列

无法匹配类型

Maybe

有类型

Array

尝试匹配类型 Maybe (Array Int) 类型为数组 t0 同时检查表达式(索引 c)1 具有类型数组 t0 在价值声明中

其中 t0 是未知类型

【问题讨论】:

    标签: purescript


    【解决方案1】:

    对数组的索引返回的不是普通元素,而是包装在Maybe 中的值,因为数组可能在给定索引处没有元素。在您的情况下,c !! 1 的结果类型为 Maybe (Array Int)。所以你必须以某种方式处理Maybe

    我猜你希望最终结果是Maybe Int 类型。有不同的方法可以做到这一点。可能最明确的一个是:

    case c !! 1 of
      Nothing  -> Nothing
      (Just x) -> x !! 0
    

    (这将返回Just 3

    因为像这样的“链接”函数很常见,所以有一些抽象会导致相同的结果,例如:

    (c !! 1) >>= (_ !! 0)
    

    无论如何,诀窍是进入第一个结果(如果成功),然后尝试第二个索引。如果两者都成功,则返回最终结果。如果失败,返回Nothing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-07
      • 2016-06-09
      • 1970-01-01
      • 2021-05-24
      • 2019-10-12
      • 1970-01-01
      • 2012-01-23
      • 1970-01-01
      相关资源
      最近更新 更多