Ciao a tutti...

Ho scritto una funzione in Haskell che crea una lista di interi, così:

codice:
listDown 0 = [0]
listDown x = x : listDown (x-1)
Se l'argomento è 0, ritorna la lista che contiene solo 0, se l'argomento è diverso da 0, aggiunge l'argomento alla lista dei numeri prima di lui... in pratica

codice:
listDown 3 == 3: (2: (1: ([0]))) == 3:2:1:[0]
E fin qui tutto bene... però non riesco a scrivere una funzione che faccia l'opposto, ovvero che crei la lista in ordine crescente!

Questo perchè i 2 punti (l'operatore cons) permettono di aggiungere un oggetto solo in testa alla lista...

codice:
1:[2,3,4] == [1,2,3,4]
[4,3,2]:1 --> errore
[4,3]:[2,1] --> errore
e quindi non so come scriverlo... ovviamente un modo ci deve essere, ma non riesco a capire come scriverlo in modo ricorsivo... qualche idea?