Just adding purrr::rerun is shorthand for replicate(..., simplify = FALSE)
library(purrr)
rerun(10, gen_mat(1))
# [[1]]
# [,1] [,2]
# [1,] 1 1.000000
# [2,] 1 1.918977
# [[2]]
# [,1] [,2]
# [1,] 1 1.000000
# [2,] 1 1.782136
# [[3]]
# [,1] [,2]
# [1,] 1 1.000000
# [2,] 1 1.074565
# [[4]]
# [,1] [,2]
# [1,] 1 1.0000000
# [2,] 1 -0.9893517
# [[5]]
# [,1] [,2]
# [1,] 1 1.000000
# [2,] 1 1.619826
# [[6]]
# [,1] [,2]
# [1,] 1 1.0000000
# [2,] 1 0.9438713
# [[7]]
# [,1] [,2]
# [1,] 1 1.0000000
# [2,] 1 0.8442045
# [[8]]
# [,1] [,2]
# [1,] 1 1.0000000
# [2,] 1 -0.4707524
# [[9]]
# [,1] [,2]
# [1,] 1 1.0000000
# [2,] 1 0.5218499
# [[10]]
# [,1] [,2]
# [1,] 1 1.000000
# [2,] 1 1.417942