Привет
учим в универех хаскель
есть лаба
суть задания - есть спискок названий и список товаров(Товар - новый тип с 3мя конструкторами). Надо для каждого названия извлечь из списка товаров товары с этим названием
получилось так
lookupTitle :: Title -> [Product] -> Maybe Product
lookupTitle _ [] = Nothing
lookupTitle title (x:xs)
| (getTitle x) == title = Just x
| otherwise = lookupTitle title xs
lookupTitles :: [Title] -> [Product] -> [Product]
lookupTitles _ [] = []
lookupTitles [] _ = []
lookupTitles (tx:txs) (px:pxs) = head(maybeToList (lookupTitle tx (px:pxs))) : (lookupTitles txs (px:pxs))
НО! Далее шла лаба с функциями высшего порядка
и теперь новое задание - переписать вот ту городулину на функциях высшего порядка. Желательно избежать явного прохода по спискам
родил такое, но незавершенное
lookupTitle :: Title -> [Product] -> Maybe Product
lookupTitle _ [] = Nothing
lookupTitle title xs = Just (head (filter (\x -> (getTitle x == title)) xs))
lookupTitles :: [Title] -> [Product] -> [Product]
lookupTitles _ [] = []
lookupTitles [] _ = []
lookupTitles (tx:txs) (pxl) = filter (\x -> not(null(lookupTitle tx pxl))) pxl
ну и с типами косяк из-за этого Maybe. Кстати вот тоже не знаю, как разMaybe'ить список