Elixir - Perpustakaan
Elixir memberikan interoperabilitas yang sangat baik dengan perpustakaan Erlang. Mari kita bahas beberapa perpustakaan secara singkat.
Modul Biner
Modul Elixir String bawaan menangani biner yang dikodekan UTF-8. Modul biner berguna saat Anda berurusan dengan data biner yang belum tentu dikodekan UTF-8. Mari kita pertimbangkan contoh untuk lebih memahami modul Biner -
# UTF-8
IO.puts(String.to_char_list("Ø"))
# binary
IO.puts(:binary.bin_to_list "Ø")
Ketika program di atas dijalankan, menghasilkan hasil sebagai berikut -
[216]
[195, 152]
Contoh di atas menunjukkan perbedaannya; modul String mengembalikan titik kode UTF-8, sedangkan: biner berurusan dengan byte data mentah.
Modul Crypto
Modul kripto berisi fungsi hashing, tanda tangan digital, enkripsi, dan lainnya. Modul ini bukan bagian dari pustaka standar Erlang, tetapi disertakan dengan distribusi Erlang. Ini berarti Anda harus mencantumkan: crypto dalam daftar aplikasi proyek Anda setiap kali Anda menggunakannya. Mari kita lihat contoh menggunakan modul crypto -
IO.puts(Base.encode16(:crypto.hash(:sha256, "Elixir")))
Ketika program di atas dijalankan, menghasilkan hasil sebagai berikut -
3315715A7A3AD57428298676C5AE465DADA38D951BDFAC9348A8A31E9C7401CB
Modul Digraph
Modul digraf berisi fungsi untuk menangani grafik terarah yang dibangun dari simpul dan tepi. Setelah membuat grafik, algoritme di dalamnya akan membantu menemukan, misalnya, jalur terpendek antara dua simpul, atau loop pada grafik. Perhatikan bahwa fungsinyain :digraph mengubah struktur grafik secara tidak langsung sebagai efek samping, sekaligus mengembalikan simpul atau tepi yang ditambahkan.
digraph = :digraph.new()
coords = [{0.0, 0.0}, {1.0, 0.0}, {1.0, 1.0}]
[v0, v1, v2] = (for c <- coords, do: :digraph.add_vertex(digraph, c))
:digraph.add_edge(digraph, v0, v1)
:digraph.add_edge(digraph, v1, v2)
for point <- :digraph.get_short_path(digraph, v0, v2) do
{x, y} = point
IO.puts("#{x}, #{y}")
end
Ketika program di atas dijalankan, menghasilkan hasil sebagai berikut -
0.0, 0.0
1.0, 0.0
1.0, 1.0
Modul Matematika
Modul matematika berisi operasi matematika umum yang mencakup fungsi trigonometri, eksponensial, dan logaritmik. Mari kita perhatikan contoh berikut untuk memahami cara kerja modul Matematika -
# Value of pi
IO.puts(:math.pi())
# Logarithm
IO.puts(:math.log(7.694785265142018e23))
# Exponentiation
IO.puts(:math.exp(55.0))
#...
Ketika program di atas dijalankan, menghasilkan hasil sebagai berikut -
3.141592653589793
55.0
7.694785265142018e23
Modul Antrian
Antrian adalah struktur data yang mengimplementasikan antrian FIFO (first-in first-out) secara efisien. Contoh berikut menunjukkan cara kerja modul Queue -
q = :queue.new
q = :queue.in("A", q)
q = :queue.in("B", q)
{{:value, val}, q} = :queue.out(q)
IO.puts(val)
{{:value, val}, q} = :queue.out(q)
IO.puts(val)
Ketika program di atas dijalankan, menghasilkan hasil sebagai berikut -
A
B