Terpecahkan: daftar tak terbatas

Pembaharuan Terakhir: 09/11/2023

Haskell adalah bahasa pemrograman yang berfungsi murni dan dikenal dengan fitur dan abstraksi tingkat tinggi. Salah satu bidang luar biasa di mana kekuatan Haskell terpancar adalah bekerja dengan daftar tak terbatas. Dengan evaluasi malas Haskell, kita dapat merepresentasikan dan memanipulasi daftar tak terbatas tanpa mengalami masalah kehabisan memori kecuali kita secara khusus meminta untuk menggunakan daftar tersebut seluruhnya. Bayangkan sebuah daftar yang berjalan terus menerus, seperti angka dari 1 hingga tak terhingga, daftar tersebut adalah daftar yang tak terhingga.

Daftar Tak Terbatas di Haskell

Di Haskell, ada banyak fungsi untuk menangani daftar tak terbatas. Yang paling mendasar adalah

repeat

. Fungsi ini mengambil nilai dan menghasilkan daftar tak terbatas yang terbuat dari nilai tersebut. Contohnya,

repeat 7

akan menghasilkan daftar tujuh yang tak terbatas. Fungsi lain yang berguna dalam konteks ini adalah

iterate

fungsi. Fungsi ini mengambil fungsi dan nilai awal. Ini menerapkan fungsi ke nilai awal, lalu menerapkan fungsi ke hasil, lalu ke hasil, dan seterusnya, menghasilkan daftar tak terbatas.

Daftar tak terbatas, meskipun tampak menakutkan, mudah ditangani di Haskell, berkat model evaluasi malas Haskell. Fitur ini memungkinkan Haskell untuk mengevaluasi ekspresi hanya ketika nilainya diperlukan, sehingga memberikan cara yang efisien untuk bekerja dengan daftar tak terbatas.

Pengkodean dengan Daftar Tak Terbatas

Mari kita pelajari beberapa kode praktis Haskell yang memanfaatkan konsep daftar tak terbatas. Masalah umum yang dapat kita selesaikan dengan daftar tak terhingga adalah membuat daftar semua bilangan prima.

Kode berikut menyelesaikan masalah ini dengan elegan:

primes = filterPrime [2..] 
  where filterPrime (p:xs) = 
          p : filterPrime [x | x <- xs, x `mod` p /= 0&#93;
&#91;/code&#93;

In this code, the function &#91;code lang="Haskell"&#93;filterPrime&#91;/code&#93; takes the first number from the list (which is a prime) and concatenates it with the result of filtering out the multiples of that prime number from the rest of the list. The function &#91;code lang="Haskell"&#93;filterPrime&#91;/code&#93; then recursively calls itself to generate all prime numbers.

<b>With the above code, we not only solved our limitation but also illustrated the power and efficiency of Haskell's infinite lists.</b>

<h2>Understanding the Libraries</h2>

Haskell's standard library, GHC.Base, provides several functions that are crucial to the manipulation of infinite lists. These functions include [code lang="Haskell"]cycle

,

iterate

, dan

repeat

, Antara lain.

Misalnya,

repeat

fungsi menawarkan cara sederhana untuk membuat daftar tanpa batas. Sementara itu,

cycle

fungsi mengambil daftar terbatas dan mereplikasinya tanpa batas.

iterate

, di sisi lain, menawarkan lebih banyak fleksibilitas karena memungkinkan kita membuat daftar tak terbatas dengan menerapkan fungsi berulang kali.

Memahami cara menggunakan pustaka dan fungsi ini merupakan hal mendasar untuk menguasai daftar tak terbatas di Haskell. Berkat ini, membuat dan mengelola daftar tak terbatas menjadi tugas yang dapat kami jalankan dengan mudah dan elegan.

Pos terkait: