-- An Example!

all2 :: Composed '[(->) Int, IO] [Float]
all2 = liftIO (putStrLn "Hi") *> (work <$> pure (1.0) <*> ask)
  where work :: Float -> Int -> [Float]
        work = flip replicate

-- How to Use Your Own IO Type

-- Note the deriving ApplicativeIO
all2 :: Composed '[(->) Int, IO] [Float]
all2 = liftIO (putStrLn "Hi") *> (work <$> pure (1.0) <*> ask)
  where work :: Float -> Int -> [Float]
        work = flip replicate

-- How to Use Your Own IO Type

-- Note the deriving ApplicativeIO
all2 = liftIO (putStrLn "Hi") *> (work <$> pure (1.0) <*> ask)
  where work :: Float -> Int -> [Float]
        work = flip replicate

-- How to Use Your Own IO Type

-- Note the deriving ApplicativeIO