Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
2
Task/Monads-Maybe-monad/Haskell/monads-maybe-monad-1.hs
Normal file
2
Task/Monads-Maybe-monad/Haskell/monads-maybe-monad-1.hs
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
main = do print $ Just 3 >>= (return . (*2)) >>= (return . (+1)) -- prints "Just 7"
|
||||
print $ Nothing >>= (return . (*2)) >>= (return . (+1)) -- prints "Nothing"
|
||||
8
Task/Monads-Maybe-monad/Haskell/monads-maybe-monad-2.hs
Normal file
8
Task/Monads-Maybe-monad/Haskell/monads-maybe-monad-2.hs
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
main = do print (do x <- Just 3
|
||||
y <- return (x*2)
|
||||
z <- return (y+1)
|
||||
return z)
|
||||
print (do x <- Nothing
|
||||
y <- return (x*2)
|
||||
z <- return (y+1)
|
||||
return z)
|
||||
8
Task/Monads-Maybe-monad/Haskell/monads-maybe-monad-3.hs
Normal file
8
Task/Monads-Maybe-monad/Haskell/monads-maybe-monad-3.hs
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
main = do print (do x <- Just 3
|
||||
let y = x*2
|
||||
let z = y+1
|
||||
return z)
|
||||
print (do x <- Nothing
|
||||
let y = x*2
|
||||
let z = y+1
|
||||
return z)
|
||||
13
Task/Monads-Maybe-monad/Haskell/monads-maybe-monad-4.hs
Normal file
13
Task/Monads-Maybe-monad/Haskell/monads-maybe-monad-4.hs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import Control.Monad ((>=>))
|
||||
|
||||
safeVersion :: (a -> b) -> (a -> Bool) -> a -> Maybe b
|
||||
safeVersion f fnSafetyCheck x | fnSafetyCheck x = Just (f x)
|
||||
| otherwise = Nothing
|
||||
|
||||
safeReciprocal = safeVersion (1/) (/=0)
|
||||
safeRoot = safeVersion sqrt (>=0)
|
||||
safeLog = safeVersion log (>0)
|
||||
|
||||
safeLogRootReciprocal = safeReciprocal >=> safeRoot >=> safeLog
|
||||
|
||||
main = print $ map safeLogRootReciprocal [-2, -1, -0.5, 0, exp (-1), 1, 2, exp 1, 3, 4, 5]
|
||||
Loading…
Add table
Add a link
Reference in a new issue