簡體   English   中英

Haskell:檢查Int是否在Int列表中

[英]Haskell: Check if Int is in a list of Int's

我是Haskell的新手,對不起,如果這是一個基本問題。

我目前有一個Int的列表,我正在嘗試創建一個函數,它接受一個變量x並返回一個布爾值,具體取決於該變量是否存在於列表中。

我有一個搜索,發現Data.List查找函數,但這個dosent似乎返回一個布爾值。

我正在使用GHCi。

謝謝,

首先找到您需要的功能類型。

要“檢查是否”意味着返回True或False,一個Bool。

所以函數接受一個I​​nt,一個Int(又名[Int])列表並返回Bool:

Int -> [Int] -> Bool

現在問一下hoogle

elem :: Eq a => a -> [a] -> Bool

Hoogle是一個非常有用的工具。 您可以將它與ghci集成

如果標准的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

等等

我在閑暇時間嘗試學習Haskell的兩個月。 從專業角度來說,我做了幾年的C / C ++。 我必須說,學習Haskell的第一個月是一個令人頭疼的經歷。 如果問題很簡單而不是像elem那樣使用現有的API,我總是試着自己做事。 我正在慢慢學習FP方式,下面是我的解決方案:

isMember n [] = False
isMember n (x:xs)
    | n == x = True
    | otherwise = isMember n xs

用法:

isMember 2 [1,9,4,5] -- False
isMember 2 [4,5,2,9] -- True

我更簡單地這樣做了。

l=[1,2,3,4,5]


checkIfElem :: Int -> [Int] ->Bool
checkIfElem x l 
         |x`elem` l =True
         |otherwise=False

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM