У меня есть таблица (список списка строк) и у меня есть метод "выбрать", чтобы удалить определенные строки.Select принимает имя столбца и значение и удаляет все строки, у которых нет этого значения в этом столбце.Я использовал elemIndex
и получаю ошибку несоответствия типов (может быть Int -> Int).
type Field = String
type Row = [Field]
type Table = [Row]
select :: Field -> Field -> Table -> Table
select column value table@(header:rows)
= header : (filter rowHasValue rows)
where columnIndex = elemIndex column header
rowHasValue row = (row !! columnIndex) == value;
Я пытался создать другую функцию, но при этом возникает ошибка синтаксического анализа, где
maybeValue :: Field -> Field -> Int
maybeValue column header = case maybeValue of
Just n -> n
Nothing ->
where maybeValue = elemIndex column header;
Точное сообщение об ошибке:
Main.hs:85:39: error:
* Couldn't match expected type `Int' with actual type `Maybe Int'
* In the second argument of `(!!)', namely `columnIndex'
In the first argument of `(==)', namely `(row !! columnIndex)'
In the expression: (row !! columnIndex) == value
|
85 | rowHasValue row = (row !! columnIndex) == value