Haskell: проверьте, входит ли Int в список Int
Я новичок в Haskell, извините, если это основной вопрос.
В настоящее время у меня есть список Int, и я пытаюсь создать функцию, которая принимает переменную x и возвращает логическое значение, зависящее от того, существует ли переменная в списке.
У меня был поиск и найден функция поиска Data.List, но этот dosent, похоже, возвращает логическое значение.
Я использую GHCi.
Спасибо,
Ответы
Ответ 1
Сначала найдите тип требуемой функции.
В "Проверить, если" означает возврат либо True, либо False, Bool.
Таким образом, функция принимает Int, список Int (aka [Int]) и возвращает Bool:
Int -> [Int] -> Bool
Теперь спросить hoogle.
elem :: Eq a => a -> [a] -> Bool
Hoogle - очень полезный инструмент. Вы можете интегрировать его с ghci.
Ответ 2
Если стандартная функция elem
не существовала, вы могли бы быть на правильном пути с помощью find
.
myElem :: (Eq a) => a -> [a] -> Bool
myElem x = maybe False (const True) . find (== x)
Есть много других способов реализовать его, например
myElem x = any (== x)
myElem x = or . map (== x)
myElem x = not . null . filter (== x)
myElem x = foldr (\y b -> y == x || b) False
и др.
Ответ 3
Я сделал это более просто.
l=[1,2,3,4,5]
checkIfElem :: Int -> [Int] ->Bool
checkIfElem x l
|x`elem` l =True
|otherwise=False