вот мой вопрос, мне нужно создать базу данных, представляющую информацию об одной стране, владеющей городом, владеющим округом, используя список из двух кортежей (т.е. пар)
например, c1 владеет c2, которому принадлежит c3, которому принадлежит c4, но где «косвенное» владение c4 c1 (и т. д.) прямо не указано.
мне нужно написать функцию '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