Определить функцию
pairMaybe :: Maybe a -> Maybe b -> Maybe (a,b)
который дает результат
Just
, только если оба аргумента равныJust
, иNothing
, если любой из аргументов равенNothing
.
Я придумал:
pairMaybe (Just a) (Just b) = Just (a,b)
pairMaybe (Just a) Nothing = Nothing
pairMaybe Nothing (Just b) = Nothing
Я не уверен, что это правильный способ написания. Что-то не так с этим или это способ определить эту функцию?
Также я думаю, что мне, вероятно, хотелось бы лучшего объяснения того, что эта функция на самом деле может делать, поэтому, если я вызову pairMaybe
с двумя аргументами, какие это могут быть аргументы? Конечно, они должны быть типа Maybe
, но какой хороший пример?
:load yourfile.hs
и протестировать функцию самостоятельно. Если вы запрашиваете обзор кода (то есть мнение экспертов и предложения по улучшению), вы, к сожалению, оказались не на том сайте! Возможно, вам повезет больше на codereview.SE. - person kqr   schedule 30.11.2013