streamly/examples/applicative.hs

18 lines
540 B
Haskell
Raw Normal View History

2017-06-26 00:45:27 +03:00
{-# LANGUAGE FlexibleContexts #-}
import Control.Applicative ((<$>), (<*>), (<|>))
import Control.Monad.IO.Class (liftIO)
import System.IO
2017-06-30 23:32:39 +03:00
import Asyncly
2017-06-26 00:45:27 +03:00
main = do
hSetBuffering stdout LineBuffering
2017-08-24 01:15:29 +03:00
xs <- runAsyncly $ do
2017-06-26 00:45:27 +03:00
x <- (,) <$> (event 1 <|> event 2) <*> (event 3 <|> event 4)
2017-08-24 01:15:29 +03:00
--x <- (,) <$> (for [1,2] return) <*> (for [3,4] return)
2017-06-26 00:45:27 +03:00
liftIO $ putStrLn $ show x
return x
putStrLn $ show xs
where
2017-08-24 01:15:29 +03:00
event n = liftIO $ (do putStrLn ("event" ++ show n); return n :: IO Int)