Я просто проработал несколько простых упражнений в haskell и задавался вопросом, существует ли простой способ преобразования инструкции if-then-else в тип Maybe
: Nothing
возвращается, если условие ложно, и Just
вход если условие истинно.Есть ли бесплатный способ конвертировать условную проверку в тип Maybe типа ввода?
Короче говоря, учитывая некоторые из них:
maybeIf :: (a -> Bool) -> a -> Maybe a
maybeIf cond a = if cond a then Just a else Nothing
Есть ли реализация, которая является точкой, свободной по отношению к a
? Я также смотрел более конкретную версию, a -> Maybe a
, и чувствую, что может быть ответ где-то в Control.Arrow
. Однако, поскольку Maybe
является типом данных, а операторы if-else управляют потоком данных, я не уверен, есть ли чистый способ сделать это.
'Data.Bool' имеет' bool'. – dfeuer
Очень интересно! Я думаю, что мне нравится этот ответ наилучшим образом, поскольку он имеет самое существенное, чтобы учиться простым и лаконичным образом. Я собираюсь дать это @Peter, так как его ответ является самым читаемым, и я предполагаю, что я попросил только огласить его. – stites