packages feed

geomancy-0.4.0.0: bench/Bench/Common.hs

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]