Использование функции a → b в качестве «монадической» функции a → mb

В настоящее время я играю с основами Haskell и наткнулся на следующий «вариант использования»:

ghci> let divideTenBy x | x == 0 = Nothing | otherwise = Just (10 / x)
ghci> let composed = divideTenBy <=< return . (*10) <=< divideTenBy <=< return . (-)5
ghci> Just 5 >>= composed
Nothing
ghci> Just 10 >>= composed
Just (-0.5)

Итак, я в основном смешиваю здесь монадические и чистые функции и компоную их в монадическую функцию. . Это работает, но return . (*10)кажется мне часто используемой вещью, поэтому у меня возникает соблазн определить для нее сокращение, что-то вроде monadify = (return.).

Прежде чем я это сделаю, я хотел бы спросить, есть ли уже помощники, чтобы справиться с такой ситуацией. Конечно, я тоже мог запутаться во всем этом, и есть причины, по которым этого не следует делать. Если это так, пожалуйста, скажите мне.

5
задан Niklas B. 1 April 2012 в 03:26
поделиться