data Book = Book String String
data Video = Video String
data CDisk = CDisk String String Int
data Product = Product Book Video CDisk
--для разных товаров
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
--получение тайтлов
getTitles (x:xs) = [ getTitle x | x<-xs ]
--получение товаров
lookupTitles (x:xs) (y:ys) = [y|x<-xs,y<-ys,x==lookupTitle y]
типы данных.(Haskell)
В современных web- магазинах часто продают книги, видеокассеты и компакт диски. База данных такого магазина для каждого типа товаров должна содержать следующие характеристики
*книги - название и автор
*видеокассеты - название
*компакт диск - название, исполнитель и кол-во композиций
1)разработать тип данных Product который может представлять эти виды товаров
2)определить функцию getTitle возвращающую название товара
3)на её основе определите функцию getTitles которая по списку товаров возвращает список названий
4)определите функцию bookAuthors которая по списку товаров возвращает список авторов книг
5)определите функцию lookupTitle::String->[Product]->Maybe Product которая возвращает товар с заданным названием
6)определите функцию lookupTitles::[String]->[Product]->[Product]
Она принимает в качестве параметров список названий и список товаров и для каждого названия извлекает из второго соответствующие товары. Названия которым не соответствуют никакой товар игнорируются. при определении функции обязательно используйте функцию lookupTitle
вот что я написал.
Код:
но у меня затруднения с определением функции lookupTitle и функцией bookAuthors. Также мне непонятно как переменные объявить чтобы проверить написанные мной функции.