Привет, ребята, я отношусь к noob с Haskell и все еще изучаю, так почему это не работает?нет. p related filter
filterFirst :: (a -> Bool) -> [a] -> [a]
filterFirst p xs = delete (not . p) (filter (not . p) xs)
Как я получаю следующее сообщение об ошибке в моем терминале:
ERROR "FirstLiterate.lhs":58 - Type error in application
*** Expression : delete (not . p) (filter (not . p) xs)
*** Term : not . p
*** Type : a -> Bool
*** Does not match : a
*** Because : unification would give infinite type
Так что я понимаю, что этот тип не соответствует типу в моем определении. Как я могу изменить это, так что мне не нужно менять (a -> Bool)?
Что вы пытаетесь сделать? 'filter' удалит все элементы, которые не удовлетворяют' p', поэтому неясно, что вы хотите удалить после этого. Вы собираетесь удалить первый элемент, который удовлетворяет некоторому «нет». p'? – kqr
Я хочу удалить первый элемент, который не соответствует свойству p. –
'\ p -> uncurry (++). второй (падение 1). span p', с 'first' из' Control.Arrow' –