List Pada OCaml
List merupakan tipe data majemuk yang dapat mengantre banyak nilai.
Tipe data majemuk yaitu tipe data yang menampung banyak jumlah nilai. List dalam bahasa indonesia disebut Senarai.
Tipe data tunggal seperti int
,bool
,float
atau record buatan hanya menampung satu buah nilai. List merupakan salah satu tipe data majemuk.
List bekerja dengan prinsip antrean dari kiri ke kanan, mengambil data dari paling kiri dan menambahkan nilai dari paling kanan.
Nilai paling kiri disebut sebagai head
dari List. Nilai setelah head
disebut tail
.
Berikut aturan pembangkitan List
[ <nilai> ; <nilai> ; <nilai> ];;
List mengunakan sepasang kurung siku []
untuk dibangkitkan.
Berikut penerapan List dalam daftar album lagu
let album_eshen = ["For Sis";"Say Hi"];;
Penulis dengan tipe langsung
let album_eshen: string list = ["For Sis";"Say Hi"];;
List dapat menambahkan dengan operator ::
,operator ini menghasilkan list yang telah ditambah dan tidak menimpah nilai list sebelumnya.
let album_eshen = ["For Sis";"Say Hi"];;
"Earlier Than Today" :: album_eshen;;
(* ["Earlier Than Today";"For Sis";"Say Hi"] *)
List dapat di gabung dengan List lain (concatination) mengunakan operator @
, operator ini menghasilkan gabungan dari List.
let album_eshen = ["For Sis";"Say Hi"];;
let album_tatsh = ["Daylight";"from RestedPoint"];;
album_eshen @ album_tatsh;;
(* ["For Sis";"Say Hi";"Daylight";"from RestedPoint"] *)
List memiliki head dan tail untuk mengambilnya dapat mengunakan List.hd
dan List.tl
.
let album_eshen = ["Earlier Than Today";"For Sis";"Say Hi"];;
List.hd album_eshen;;
(* "Earlier Than Today" *)
List.tl album_eshen;;
(* ["For Sis";"Say Hi"] *)
List dapat diketahui isinya menggunakan List.length
.
let album_eshen = ["For Sis";"Say Hi"];;
List.length album_eshen;;
(* 2 *)
Membaca keseluruhan List untuk keperluan ekspresi, dapat menggunakan List.iter
dan lambda.
List.iter (fun a -> print_endline (a ^ " - Eshen")) ["For Sis";"Say Hi"];;
(*
For Sis - Eshen
Say Hi - Eshen
*)
Memetakan isi List dan mengembalikan nilai hasil ekspresi dalam List, dapat menggunakan List.map
dan lambda.
List.map (fun a -> (a ^ " - Eshen")) ["For Sis";"Say Hi"];;
(* ["For Sis - Eshen"; "Say Hi - Eshen"] *)