module Bench.Common ( clones , chain ) where import qualified Data.List as List clones :: Applicative f => Int -> a -> b -> f ([a], [b]) clones n geo lin = (,) <$> genMat4s <*> genM44s where genMat4s = pure $! replicate n geo genM44s = pure $! replicate n lin chain :: (a -> a) -> a -> Int -> a chain f x0 n = List.foldl' (\x _ -> f x) x0 [1 .. n]