これが私の質問です。たとえば、c1 は c2 を所有し、c3 を所有し、c4 を所有していますが、 c1(など)によるc4の「間接的な」所有権は直接述べられていません。国を指定する 2 つの文字列が指定された場合、最初のものが 2 番目のものを所有しているかどうかを示すブール値を返す関数 'owns' を作成する必要があります (上記の c1 と c4 の場合のように、間接的であっても)。ここに私のコードがあります。私はそれが正しくないことを知っています。
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