La soluzione più rapida è questa
codice:
listUp x = [0..x]
Oppure puoi semplificare un po' quella che hai scritto

codice:
listUp x = listUp' 0 x

listUp' start end
  | start <= end = start : listUp' (start + 1) end
  | otherwise       = []
mi pare abbastanza ragionevole come soluzione, di certo non molto molto sporca, ma tieni presente che non sono certamente un guru di Haskell.