Подтвердить что ты не робот

Haskell: проверьте, входит ли Int в список Int

Я новичок в Haskell, извините, если это основной вопрос.

В настоящее время у меня есть список Int, и я пытаюсь создать функцию, которая принимает переменную x и возвращает логическое значение, зависящее от того, существует ли переменная в списке.

У меня был поиск и найден функция поиска Data.List, но этот dosent, похоже, возвращает логическое значение.

Я использую GHCi.

Спасибо,

4b9b3361

Ответ 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