여기 내 질문에, 2 개 튜플 (즉, 쌍)의 목록을 사용하여 카운티 소유 도시를 소유 한 국가에 대한 정보를 나타내는 데이터베이스를 구성해야합니다. 예 : c1은 c4를 소유하고있는 c3을 소유하고 있지만 c1 (등)에 의한 c4의 "간접적 인"소유권은 직접 명시되지 않습니다. 나는 country라는 이름의 두 문자열이 첫 번째가 두 번째를 소유하고 있는지 여부를 나타내는 부울을 반환하는 'owns'함수를 작성해야합니다 (위의 c1과 c4의 경우와 같이 간접적으로). 출력 결과를 기대haskell, 튜플을 사용하여 작은 데이터베이스를 만드는 방법
lst = [("uk","scotland"),("scotland","aberdeen"),("china","hongkong"),("hongkong","kulong")]
owns :: String-> String -> Bool
owns a b
| n = lookup a (fromList lst)
|if b==n
return true
|otherwise m = lookup n (fromlist lst)
if b==m
return true
| otherwise = False
메신저과 같이해야합니다 .... 여기 내 코드이야, 내가 도움이 필요 해요, 제발,이 때문에 .... 내가 하스켈 매우 새로운 새, 꽤 괜찮 아니다 알고 :
Main> owns "uk" "scotland"
True
Main> owns "uk" "aberdeen"
True
Main> owns "uk" "hongkong"
False
가능한 중복 [하스켈, 튜플을 비교하는 방법?] (http://stackoverflow.com/questions/5654850/haskell-how-to-compare-tuples) –
'return'은 여러분이 생각하는대로하지 않습니다 : 함수에서 값을 반환하는 대신 하나의 값을 감싸는 데 사용됩니다 (종종 "결과"의 전 계산, 따라서 이름)을 모나드 컨텍스트 (예 :'do' 표기법)로 사용합니다. – Landei
글쎄, 적어도이 질문에 대한 대답은 .... –