Может быть, Int с ElemIndex - PullRequest
       21

Может быть, Int с ElemIndex

0 голосов
/ 21 сентября 2018

У меня есть таблица (список списка строк) и у меня есть метод "выбрать", чтобы удалить определенные строки.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
...