utility-ht-0.0.11: src/Data/Tuple/Example.hs
module Data.Tuple.Example where
import qualified Data.Tuple.Lazy as Lazy
import qualified Data.Tuple.Strict as Strict
import Data.List.HT (sieve, )
partitionLazy :: (a -> Bool) -> [a] -> ([a], [a])
partitionLazy p =
foldr
(\x -> (if p x then Lazy.mapFst else Lazy.mapSnd) (x:))
([], [])
partitionStrict :: (a -> Bool) -> [a] -> ([a], [a])
partitionStrict p =
foldr
(\x -> (if p x then Strict.mapFst else Strict.mapSnd) (x:))
([], [])
mainPartitionRuns :: IO ()
mainPartitionRuns =
print $ partitionLazy (>=0) $ repeat (0::Int)
mainPartitionBlocks :: IO ()
mainPartitionBlocks =
print $ partitionStrict (>=0) $ repeat (0::Int)
printSomeChars :: (Show a) => a -> IO ()
printSomeChars = putStrLn . sieve 100000 . show
mainMemoryOk :: IO ()
mainMemoryOk =
printSomeChars $ Strict.mapSnd (1+) $ (iterate (1+) (0::Int), 0::Int)
mainMemoryLeak :: IO ()
mainMemoryLeak =
printSomeChars $ Lazy.mapSnd (1+) $ (iterate (1+) (0::Int), 0::Int)