Certo, ecco un modo per invertire una lista collegata in Haskell, usando il pattern matching e la ricorsione: ``` data LinkedList a = Nil | Contro a (LinkedList a) reverseLinkedList :: LinkedList a -&gt; LinkedList a reverseLinkedList list = reverseLinkedListHelper list Nil dove reverseLinkedListHelper Nil acc = acc reverseLinkedListHelper (Cons x xs) acc = reverseLinkedListHelper xs (Cons x acc) ``` Il tipo `LinkedList` definizione rappresenta un elenco concatenato singolarmente con un elemento di testa di tipo &quot;a&quot; e una coda di un altro elenco concatenato. La funzione `reverseLinkedListHelper` è una funzione di supporto che utilizza la ricorsione della coda per invertire l'elenco iterando su ciascun elemento nell'elenco originale e aggiungendolo all'inizio dell'elenco accumulato `acc`, fino a quando l'elenco originale è vuoto (rappresentato da ` Nil` nel pattern matching). La funzione `reverseLinkedList` è la funzione di primo livello che inizializza l'elenco accumulato `acc` come vuoto, quindi chiama la funzione `reverseLinkedListHelper` con l'elenco originale e `acc` vuoto. Ciò restituisce l'elenco collegato invertito.
Invertire un elenco collegato utilizzando haskel.