У меня есть функция с подписью типа
a -> b -> (a, b)
И у меня есть
Maybe a
Как я могу сопоставить такую функцию, чтобы я мог получить
(a->b->(a,b)) -> Maybe a -> (Maybe a, b)
Вам нужно немного изменить определение функции
g : (a -> b -> (a,b)) -> Maybe a -> b -> (Maybe a, b) g f ma b = case ma of Nothing -> (Nothing, b) Just a -> let r = f a b in (Just (first r), second r)