하스켈을 처음 사용합니다. 근본적인 질문 인 경우 죄송합니다.하스켈 : Int가 Int의 목록에 있는지 확인하십시오.
현재 Int의 목록이 있는데 변수 x를 사용하고 변수가 목록에 있는지 여부에 따라 부울을 반환하는 함수를 만들려고합니다.
나는 검색을했고 Data.List 찾기 함수를 찾았지만이 선량은 부울을 반환하는 것 같습니다.
저는 GHCi를 사용하고 있습니다.
감사합니다.
하스켈을 처음 사용합니다. 근본적인 질문 인 경우 죄송합니다.하스켈 : Int가 Int의 목록에 있는지 확인하십시오.
현재 Int의 목록이 있는데 변수 x를 사용하고 변수가 목록에 있는지 여부에 따라 부울을 반환하는 함수를 만들려고합니다.
나는 검색을했고 Data.List 찾기 함수를 찾았지만이 선량은 부울을 반환하는 것 같습니다.
저는 GHCi를 사용하고 있습니다.
감사합니다.
먼저 필요한 기능의 유형을 찾으십시오.
"확인"은 True 또는 False 인 Bool을 반환하는 것을 의미합니다.
그래서 함수는 INT, 지능 (일명 [지능])의리스트를 취하고 부울을 리턴하기 ask hoogle
Int -> [Int] -> Bool
한다.
elem :: Eq a => a -> [a] -> Bool
Hoogle은 매우 유용한 도구입니다. 당신은 integrate it with 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
등
같은 다른 방법이 많이있다.
l=[1,2,3,4,5]
checkIfElem :: Int -> [Int] ->Bool
checkIfElem x l
|x`elem` l =True
|otherwise=False
그것은 실제로 간단합니다. 그러나 그것은 checkIfElem = elem'이라는 정의를 작성하는 엄청나게 복잡한 방법이라고 할 수 있습니다. 왜냐하면 그것과 정확히 동일하기 때문입니다! (가드는 이미 불리언 값을 검사하고,'| condition = True'' | otherwise = False' 그러므로 간단히'= condition'과 같습니다 .' checkIfElem xl = elem xl'을 남겨 둡니다. 양측의 논쟁.) – leftaroundabout
나는 이것이 간단하다고 생각하지 않는다. –
google이 나를 이끌어주고 있습니다. OP에 열성적 일 필요는 없습니다. – fotanus
답변의 색조를 개선하려면 어떻게해야합니까? 나는 가혹한 것을 시도하고있어 않아 다. – AtnNn
나의 나쁜, 나는 "google"을 읽는다 : - D – fotanus