zeroGeneration  :: (RandomGen g)
                => g                -- ^ Random number generator
                -> (g -> (a, g))    -- ^ Random chromosome generator (hint: use closures)
                -> Int              -- ^ Population size
                -> ([a],g)          -- ^ Zero generation and new RNG
zeroGeneration initGen rnd ps =
    L.foldl'
        (\(xs,gen) _ -> let (c, gen') = rnd gen in ((c:xs),gen'))
        ([], initGen) [1..ps]
zeroGeneration  :: (RandomGen g)
                => g                -- ^ Random number generator
                -> (g -> (a, g))    -- ^ Random chromosome generator (hint: use closures)
                -> Int              -- ^ Population size
                -> ([a],g)
zeroGeneration initGen rnd ps =
    L.foldl'
        (\(xs,gen) _ -> let (c, gen') = rnd gen in ((c:xs),gen'))
        ([], initGen) [1..ps]
zeroGeneration initGen rnd ps =
    L.foldl'
        (\(xs,gen) _ -> let (c, gen') = rnd gen in ((c:xs),gen'))
        ([], initGen) [1..ps]