Итак, я следую учебному пособию Изучаю вас на Haskell для отличного блага! и до сих пор я очень люблю Haskell.Но в одной из функций, упомянутых в руководстве, я получаю предупреждение о том, что оператор if является избыточным.
Редактировать: Позвольте мне прояснить, цель функции - действовать точно так же, какработает функция elem (та, которая предоставляется по умолчанию на Haskell).
Вот оригинальная функция:
elem' :: (Eq a) => a -> [a] -> Bool
elem' y ys = foldl (\acc x -> if x == y then True else acc) False ys
Первоначально было два предупреждения, одно было сокращением eta, поэтому я удалилys от начала и конца имени функции до:
elem' :: (Eq a) => a -> [a] -> Bool
elem' y = foldl (\acc x -> if x == y then True else acc) False
Теперь я попытался свести функцию к следующему, и это приводит к ошибке:
elem' :: (Eq a) => a -> [a] -> Bool
elem' y = foldl (\acc x -> x == y)
Iдумаю, я просто новичок в Haskell и не вижу очевидного решения.Может кто-нибудь сказать мне, что изменение кода будет держать функцию работать правильно, и все же удалить предупреждение компилятора?