This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-#LANGUAGE BangPatterns #-} | |
import GHC.Magic | |
import Data.IORef | |
import Control.Monad | |
import Control.Monad.Trans | |
data Stream a m r = Yield a (Stream a m r) | Done r | Delay (() -> m (Stream a m r)) | |
instance Functor m => Functor (Stream a m) where | |
fmap f (Done r) = Done (f r) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-#LANGUAGE BangPatterns #-} | |
import GHC.Magic | |
import Data.IORef | |
import Control.Monad | |
import Control.Monad.Trans | |
data Stream a m r = Yield a (Stream a m r) | Done r | Delay (() -> m (Stream a m r)) | |
instance Functor m => Functor (Stream a m) where | |
fmap f (Done r) = Done (f r) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-#LANGUAGE BangPatterns #-} | |
import Pipes | |
import qualified Pipes.Prelude as P | |
import Control.Monad.Trans.State.Strict | |
import GHC.Magic | |
import qualified Pipes.Internal as I | |
import Data.IORef | |
import Control.Monad | |
emit :: Int -> Int -> IORef Int -> Producer Int IO () |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-#LANGUAGE BangPatterns #-} | |
import Pipes | |
import qualified Pipes.Prelude as P | |
import Control.Monad.Trans.State.Strict | |
import GHC.Magic | |
import qualified Pipes.Internal as I | |
import Data.IORef | |
import Control.Monad | |
await' :: Monad m => Proxy () a y' y m a |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Main (main) where | |
import System.IO.Error | |
import GHC.Magic | |
data Sink = Await (Maybe Char -> Sink) | Done Int | |
countFrom :: Int -> Sink | |
countFrom n = let k = countFrom $! n + 1 | |
-- in Await $ \mi -> case mi of |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Main where | |
import qualified Foundation as F | |
import qualified Foundation.Collection as F | |
import qualified Foundation.String as F | |
import qualified Foundation.Compat.ByteString as F | |
import Criterion.Main | |
import qualified Data.Text as T |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Main where | |
import qualified Foundation as F | |
import qualified Foundation.Collection as F | |
import qualified Foundation.String as F | |
import Criterion.Main | |
import qualified Data.Text as T |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-#LANGUAGE BangPatterns #-} | |
module Main (main) where | |
import Data.Conduit as C | |
import qualified Data.Conduit.Combinators as C | |
import Pipes as P | |
import qualified Pipes.Prelude as P | |
import qualified Streaming.Prelude as Str |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{-#LANGUAGE BangPatterns #-} | |
-- module Main (main) where | |
import Data.Conduit as C | |
import qualified Data.Conduit.Combinators as C | |
import Pipes as P | |
import qualified Pipes.Prelude as P | |
import qualified Streaming.Prelude as Str |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
benchmarking fold/streaming | |
time 1.493 ms (1.400 ms .. 1.591 ms) | |
0.978 R² (0.973 R² .. 0.987 R²) | |
mean 1.365 ms (1.331 ms .. 1.414 ms) | |
std dev 131.6 μs (100.7 μs .. 169.4 μs) | |
variance introduced by outliers: 69% (severely inflated) | |
benchmarking fold/conduit | |
time 3.539 ms (3.431 ms .. 3.663 ms) | |
0.991 R² (0.985 R² .. 0.995 R²) |