2

我收到以下代码的“程序:前奏曲。(!!):索引太大”错误:

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

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

4

1 回答 1

3

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

因此,您可能会收到此错误,例如,如果header不包含column_name.

同样,不确定您到底想做什么,但是如果有机会没有结果,也许您想用Maybe?

于 2013-09-30T00:57:46.447 回答