2015-09-20 4 views
0

Я хочу функцию Int -> [[String]], пытаясь отфильтровать элементы, имеющие определенное значение на Inth spot. Я думал, что могу комбинировать filter и !!, но я не могу заставить его работать. До сих пор у меня есть:Фильтрация списка списков в Haskell

filter (!! (== value)) rows 

где value является String и rows является [[String]]. Я думал, что потребуется Int в сочетании с [String] от rows и проверить, соответствует ли эта конкретная запись value, а затем сохранить эти строки, но она интерпретируется по-разному. Любая помощь будет оценена по достоинству.

+0

Вы говорите, что 'в Int' - но с Int? –

+0

Я не уверен, что я понимаю ваш вопрос. – tbpotn

+0

@tbpotn \ *, который Int – melpomene

ответ

3

(!! (== value)) недействителен, поскольку правый операнд !! должен быть Int. (== value) - это функция.

Ваши варианты

\n -> filter (\xs -> xs !! n == value) rows 

или без явного лямбда

\n -> filter ((== value) . (!! n)) rows 
+0

Это действительно работает. Рад видеть, что моя идея правильная, но моей формулировки не хватало. – tbpotn

+0

@tbpotn Я бы порекомендовал читать на [pointfree style] (https://wiki.haskell.org/Pointfree), чтобы избежать таких будущих проблем, как это. – AJFarmar

Смежные вопросы