Duplicate to value in list Haskell

I wanted my code to do the following in a list: when the index is bigger than 0, duplicate to its value. So for example:

ListOp :: (Int) -> (Int)
ListOp (1, 3, 2) = (1, 3, 3, 3, 2, 2)
ListOp ( 5, 0, 1) = (5, 5, 5, 5, 5, 1)
ListOp ( 3, -2, 1) = (3, 3, 3 , 1)

I was wondering how to improve my code, but without the use of map. My code:

ListOp :: (Int) -> (Int)
ListOp () = ()
ListOp (x:xs) = (listHelper (if x > 0 then x else 0) x) ++ listHelper xs

listHelper :: Int -> Int -> (Int)
listHelper 0 x = ()
listHelper count x = x : listHelper (count - 1) x

Edit: I thought about adding the function replicate, but I’m not sure how