Maybe.map над функцией, которая возвращает пару - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть функция с подписью типа

a -> b -> (a, b)

И у меня есть

Maybe a

Как я могу сопоставить такую ​​функцию, чтобы я мог получить

(a->b->(a,b)) -> Maybe a -> (Maybe a, b)

1 Ответ

0 голосов
/ 26 апреля 2018

Вам нужно немного изменить определение функции

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)
...