获取错误:前奏。(!!):索引太大

时间:2013-09-30 00:50:57

标签: list haskell indexing

我正在为以下代码获取此'程序:Prelude。(!!):index too large'错误:

select :: Field -> Field -> Table -> Table
select column_name column_value (header:t) = header:filterT t
                where filterT = filter testR
                      field_idx = (elemIndices column_name header)!!0
                      testR r | r!!field_idx == column_value = True
                      testR r | otherwise = False

我认为错误与代码的以下部分有关:

              field_idx = (elemIndices column_name header)!!0
              testR r | r!!field_idx == column_value = True

有谁知道为什么它会给我这个错误或我如何解决它?

1 个答案:

答案 0 :(得分:2)

我不确定你在做什么,但我希望你知道,!!不是一个安全的操作。带索引的元素不一定存在。

因此,如果header不包含column_name,则可能会收到此错误。

同样,不确定你究竟想做什么,但是如果有可能没有结果,也许你想用Maybe包裹结果?