这是我的问题,我需要使用 2 元组(即对)列表构建一个表示有关一个国家拥有县拥有城市的信息的数据库,例如 c1 拥有 c2,拥有 c3,拥有 c4,但是在哪里没有直接说明 c1(等)对 c4 的“间接”所有权。我需要编写一个函数'拥有',给定两个命名国家的字符串返回一个布尔值,指示第一个是否拥有第二个(甚至间接地,如上面的 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