자신의 버전을 lookup
으로 구현하려는 것 같습니다.
lookup' :: String -> [(String,Bool)] -> Bool
lookup' k lkp = head $ [v | (k',v) <- lkp, k'==k]
또는 사용 filter
: 당신은 지능형리스트 사용하여 간단한 버전을 쓸 수
이
lookup'' :: String -> [(String,Bool)] -> Bool
lookup'' k lkp = snd $ head $ filter ((==k) . fst) lkp
공지 사항이 버전은 안전하지 않은 것을 - 즉, 그들은 추한과 가치가없는 오류는 IF와 함께 실패 할 것입니다 당신은 당신의 자신의 사용자 지정 오류 메시지를 작성하여이 문제를 해결할 수
ghci> lookup' "foo" [("bar",True)]
*** Exception: Prelude.head: empty list
: 목록 항목을 포함하지 않는
,536 라이브러리 버전이 방법을 받아,보다 일반적인 서명이
lookupMaybe :: String -> [(String,Bool)] -> Maybe Bool
lookupMaybe k lkp = case [v | (k',v) <- lkp, k'==k] of
(v:_) -> Just v
[] -> Nothing
:
lookupErr :: String -> [(String,Bool)] -> Bool
lookupErr k lkp = case [v | (k',v) <- lkp, k'==k] of
(v:_) -> v
[] -> error "Key not found!"
더 좋은 방법은 Maybe Bool
대신에 반환하는 것입니다
lookup :: (Eq a) => a -> [(a,b)] -> Maybe b
을 당신은 그것의 구현을 읽을 수 here .
질문이 너무 막연합니다. 어떤 기능을 구현하려고합니까? – Benesh
난 그냥 내 튜플에 어떻게 접근 할 수 있는지 이해하려고 노력 중이다. 그래서 보통 나는 비슷한 것을 할 것입니다. aFunc :: String -> Bool -> Bool aFunc stringInput aBool = case aBool of ... 내가 무엇에 배치할까요? 튜플 목록의 항목에 액세스하기 위해 stringInput 또는 aBool 대신. – pmac89
튜플 목록에 특별한 것은 없습니다. 인수를 목록으로 취급해야합니다. 그 항목은 음, 튜플입니다. 좀 더 구체적인 답변이 필요합니다. – Benesh