ZIO in Haskell

Run Settings
LanguageHaskell
Language Version
Run Command
{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE UnboxedTuples #-} import Control.Monad.Reader.Class (MonadReader (..)) import Data.Void (Void) import GHC.IO (IO (..)) import GHC.Prim (RealWorld, State#) newtype ZIO s r e a = ZIO ((# State# s, r #) -> (# State# s, a #)) instance Functor (ZIO s r e) where fmap f (ZIO z) = ZIO $ \(# s, r #) -> let (# s', a #) = z (# s, r #) in (# s', f a #) instance Applicative (ZIO s r e) where pure x = ZIO $ \(# s, _ #) -> (# s, x #) ZIO z <*> ZIO aa = ZIO $ \(# s, r #) -> let (# s', z' #) = z (# s, r #) in let (# s'', aa' #) = aa (# s', r #) in (# s'', z' aa' #) instance Monad (ZIO s r e) where ZIO z >>= k = ZIO $ \(# s, r #) -> let (# s', a #) = z (# s, r #) in let ZIO aa = k a in aa (# s', r #) instance MonadReader r (ZIO s r e) where ask = ZIO $ \(# s, r #) -> (# s, r #) local f (ZIO z) = ZIO $ \(# s, r #) -> z (# s, f r #) runZIO :: ZIO RealWorld r Void a -> r -> IO a runZIO (ZIO z) r = IO $ \s -> z (# s, r #) main' :: ZIO s r e () main' = pure () main :: IO () main = runZIO main' ()
Editor Settings
Theme
Key bindings
Full width
Lines