I have to create a list of length n with the value v so I write
let lst = [v | _ <- [1..n]]
Is there a faster way because n may be huge?
I have to create a list of length n with the value v so I write
let lst = [v | _ <- [1..n]]
Is there a faster way because n may be huge?
 
    
     
    
    You can work with replicate :: Int -> a -> [a] which might be a bit faster:
let lst = replicate n vbut regardless how large n is, you here do not construct a list. Haskell is lazy, so that means that you it simply will store an "expression" to construct a list. If you are only interested in the second element, then it will not construct the rest of the list.
Note that due to list fusion [ghc-doc], the compiler can sometimes rewrite the expression, such that the list is never constructed, and immediately consumed.
