我正在为以下代码获取此'程序: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
有谁知道为什么它会给我这个错误或我如何解决它?
答案 0 :(得分:2)
我不确定你在做什么,但我希望你知道,!!
不是一个安全的操作。带索引的元素不一定存在。
因此,如果header
不包含column_name
,则可能会收到此错误。
同样,不确定你究竟想做什么,但是如果有可能没有结果,也许你想用Maybe
包裹结果?