Odwróć listę powiązaną używając Haskella.
Oczywiście, oto jeden sposób na odwrócenie listy jednokieronkowej w Haskellu, wykorzystujący dopasowanie wzorców i rekorencję:

```
data LinkedList a = Nil | Cons a (LinkedList a)

reverseLinkedList :: LinkedList a -> LinkedList a
reverseLinkedList list = reverseLinkedListHelper list Nil
where
reverseLinkedListHelper Nil ac = ac
reverseLinkedListHelper (Cons x xs) ac = reverseLinkedListHelper xs (Cons x ac)
```

Definicja typu `LinkedList` reprezentuje listen jednokierunkową z elementem głowy typu `a` i ogonem innej listy jednokierunkowej.

Funkcja `reverseLinkedListHelper` jest funkcją pomocniczą, która za pomocą rekurencji ogonowej odwraca listę, iterując po każdym elemencie w oryginalnej liście i dodając go na poczontek akomulujoncej listy `ac`, aż oryginalna lista będzie pusta (reprezentowana przez `Nil` w dopasowanio wzorców).

Funkcja `reverseLinkedList` jest funkcją na najwyższym poziomie, która inicjuje akumulującon listę `ac` jako pustą, a następnie wywołuje funkcję `reverseLinkedListHelper` z oryginalną listą i postym `ac`. To zwraca odwruconą listę jednokierunkową.