Membalikkan daftar tertaut menggunakan haskel.
Tentu, saya bisa membantu Anda dalam hal itu. Inilah cara Anda dapat membalikkan daftar tertaut di Haskell:

1. Tentukan struktur data untuk daftar tertaut.

``` haskell
data LinkedList a = Kosong | Node a (Daftar Tertaut a)
```

Ini mendefinisikan daftar tertaut di mana setiap node berisi nilai bertipe `a`, dan penunjuk ke node berikutnya (atau `Empty` jika itu adalah akhir daftar).

2. Tentukan fungsi untuk membalikkan daftar tertaut.

``` haskell
reverseList :: LinkedList a -> LinkedList a
daftar reverseList = daftar reverseListHelper Kosong
  Di mana
    reverseListHelper Kosong acc = acc
    reverseListHelper (Node val berikutnya) acc = reverseListHelper berikutnya (Node val acc)
```

Fungsi ini menggunakan daftar tertaut (`list`) dan akumulator (`acc`) yang dimulai sebagai `Empty`. Ia kemudian memanggil fungsi pembantu (`reverseListHelper`) yang mengambil node saat ini dan akumulator.

Jika node saat ini `Kosong`, fungsi pembantu akan mengembalikan akumulator (yang merupakan daftar terbalik).

Jika node saat ini adalah `Node` dengan nilai (`val`) dan penunjuk ke node berikutnya (`next`), fungsi helper secara rekursif memanggil dirinya sendiri dengan `next` sebagai node saat ini dan `Node val acc` sebagai akumulator baru. Ini secara efektif menambahkan setiap node ke awal akumulator, membalikkan daftar.

3. Uji fungsi dengan contoh daftar tertaut.

``` haskell
-- Tentukan contoh daftar tertaut
sampleList :: LinkedList Int
sampleList = Node 1 (Node 2 (Node 3 Kosong))

-- Membalikkan daftar sampel
reversedList = daftar sampel reverseList

-- Uji hasilnya
-- Output yang diharapkan: Node 3 (Node 2 (Node 1 Kosong))
cetak Daftar terbalik
```

Ini akan menampilkan `Node 3 (Node 2 (Node 1 Kosong))`, yang merupakan versi kebalikan dari daftar sampel asli.