有幾種數據類型。進行函數返回的數據結構的標題
data Book =BName| Author deriving (Eq,Show)
data Video = VName deriving (Eq,Show)
data CD =Cname | Auth | NOC deriving (Eq,Show)
data Product = Product Book Video CD deriving (Eq,Show)
使函數getTitle返回結構的名稱(BName,CName或VName)。 例如 的getTitle(圖書「姓名 「NONAME」) - > 「名稱」 的getTitle(參見 「名稱」) - > 「名稱」 等
是否有可能
存在的數據類型?書字段標題和作者,Videocassete與現場作者,CDdisk與字段標題,組合物和作者的數量。 1)創建數據類型產品,其可以引入本數據類型 2)使函數的getTitle返回標題。 3)使函數getTitles返回產品列表中的所有標題(使用函數getTtitle) 4)使函數bookAuthors retu RN書中的產品 5)使功能lookupTitle ::字符串列表作者 - > [產品] - >也許產品返回產品,輸入名稱 6)使功能lookupTitles :: [字符串] - > [產品] - > [產品]哪些輸入參數是名稱和產品列表以及產品列表中每個產品的名稱。在第一個列表中忽略第二個列表中沒有產品的名稱。使用函數lookipTitle。
這一切的任務。
data Book = Book String String deriving(Eq,Show)
data Video = Video String deriving(Eq,Show)
data CDisk = CDisk String String Int deriving(Eq,Show)
--titles
class Titleable a where
getTitle :: a ->String
instance Titleable Book where
getTitle (Book title _) = title
instance Titleable Video where
getTitle (Video title) = title
instance Titleable CDisk where
getTitle(CDisk title _ _) = title
--get titles
getTitles (x:xs) = [ getTitle x | x<-xs ]
lookupTitle _ [] =Nothing
lookupTitle::String->[Product]->Maybe Product
lookupTitle a (x:xs) | getTitle x==a =Just x
| otherwise = lookupTitle a (x:xs)
lookupTitles::[String]->[Product]->[Product]
lookupTitles (x:xs) (y:ys) = [y|x<-xs,y<-ys,x==lookupTitle y]
但 1)我不知道如何使功能bookAuthors(如何發揮作用找到這個參數是書本型?) 2)如何使產品類型?我的意思是是Book或Video或CDisk 3)lookupTitle和lookupTitle是否正確?
你的問題沒有意義。例如,「Book」name「」noname「」甚至不是一個有效的表達式。 – Ingo