Daftar Isi
- Memulai dan Menulis Ekspresi di IEx
- Membaca Dokumentasi di IEx
- Cara Debugging di IEx
- Keluar dari Sesi IEx atau Menampilkan Opsi Lainnya
- Referensi
Sebelum menulis program yang kompleks, kita perlu memahami cara berinteraksi langsung dengan Elixir melalui Interactive Elixir Shell atau IEx. Lingkungan ini memungkinkan kita menjalankan ekspresi, mengeksplorasi modules dan functions, membaca dokumentasi, serta melakukan debugging secara interaktif. Dengan IEx, kita dapat bereksperimen dan mengamati hasil secara langsung tanpa perlu membuat file atau proyek baru. Pada pelajaran ini, kita akan mempelajari dasar cara menggunakan IEx, mulai dari menulis ekspresi sederhana hingga memanfaatkan fitur bawaan seperti documentation lookup, pipeline inspection, dan runtime debugging.
Memulai dan Menulis Ekspresi di IEx
IEx (Interactive Elixir) adalah shell interaktif bawaan Elixir, berfungsi sebagai REPL (read-eval-print loop) yang memungkinkan kita menjalankan kode langsung dari terminal. Dengan IEx, kita dapat mengeksplorasi fitur bahasa, membaca dokumentasi, melakukan debugging, serta mencoba eksperimen kecil. Karena IEx sudah termasuk dalam distribusi Elixir, kita tidak perlu menginstal apa pun tambahan.
Untuk memulai sesi, jalankan perintah berikut di terminal:
$ iex
Erlang/OTP 26 [erts-14.0] [source] [64-bit] [smp:20:20] [ds:20:20:10]
Interactive Elixir (1.15.0) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> # Di sinilah kita mengetikkan ekspresi Elixir
Saat IEx dijalankan, ia menampilkan versi runtime Erlang dan Elixir yang digunakan. Setelah itu muncul prompt iex(1)> sebagai tempat mengetikkan ekspresi. Angka dalam tanda kurung menunjukkan urutan evaluasi ekspresi.
Contoh ekspresi sederhana:
iex(1)> 1 + 1 ❶
2 ❷
iex(2)> IO.puts("Hello World!") ❸
Hello World! ❹
:ok ❺
Penjelasannya:
- ❶ Kita mengetikkan ekspresi
1 + 1. - ❷ IEx mengevaluasinya dan menampilkan hasil
2. - ❸ Kita menjalankan function
IO.puts/1untuk mencetak teks ke layar. - ❹ Nilai
"Hello World!"muncul di terminal sebagai hasil cetakan. - ❺ Setelah menampilkan teks,
IO.puts/1mengembalikan nilai:ok, menandakan bahwa operasi berhasil tanpa kesalahan.
function IO.puts/1 adalah cara paling dasar untuk menampilkan informasi di terminal. Dalam konteks Elixir, setiap function selalu mengembalikan nilai, bahkan function yang hanya memiliki efek samping seperti mencetak teks. Hal ini memperlihatkan bahwa Elixir tetap menjaga konsistensi paradigma fungsional, yaitu setiap pernyataan adalah ekspresi yang dapat menghasilkan nilai.
Dalam Elixir, hampir semua hal adalah ekspresi (expression), artinya setiap perintah selalu menghasilkan nilai. Memanggil function, menulis if, atau menggunakan case bukan sekadar menjalankan instruksi, melainkan juga menghasilkan sesuatu yang dapat disimpan atau digunakan di bagian lain program.
IEx juga mendukung penulisan ekspresi yang terdiri dari beberapa baris, misalnya:
iex(1)> 2 * ( ❶
...(1)> 3 + 1 ❷
...(1)> ) / 4 ❸
2.0 ❹
Penjelasannya:
- ❶ Kita mulai menulis ekspresi, tetapi tanda kurung belum ditutup.
- ❷ Prompt berubah menjadi
...(1)>, menandakan bahwa ekspresi masih berlanjut. - ❸ Setelah ekspresi lengkap, tekan
Enteruntuk mengeksekusinya. - ❹ IEx mengevaluasi ekspresi dan menampilkan hasil
2.0.
Selama ekspresi belum lengkap, IEx akan tetap menunggu input tambahan. Fitur ini memudahkan kita menulis ekspresi panjang agar lebih rapi dan mudah dibaca.
Membaca Dokumentasi di IEx
IEx memiliki fitur bawaan untuk membaca dokumentasi langsung dari shell. Dengan perintah h, kita dapat menampilkan dokumentasi dari sebuah module atau function tanpa harus keluar dari terminal.
Dalam Elixir, sebuah module berfungsi sebagai wadah yang mengelompokkan sejumlah function yang memiliki keterkaitan logis. Sementara function adalah unit kode yang menerima input, memprosesnya, lalu menghasilkan output. Pembahasan lebih mendalam tentang keduanya akan kita temui di bagian selanjutnya. Untuk saat ini, cukup kita pahami bahwa perintah h dapat digunakan untuk membaca dokumentasi keduanya.
Melihat Dokumentasi Module
Untuk menampilkan dokumentasi sebuah module, gunakan h diikuti nama module-nya. Contohnya, untuk melihat dokumentasi bawaan IEx.Helpers:
iex(2)> h IEx.Helpers
IEx.Helpers
Welcome to Interactive Elixir. You are currently seeing the documentation for
the module IEx.Helpers which provides many helpers to make Elixir's shell more
joyful to work with.
This message was triggered by invoking the helper h(), usually referred to as
h/0 (since it expects 0 arguments).
...... (dan seterusnya)
Hasil tersebut menampilkan dokumentasi lengkap untuk module IEx.Helpers, yang berisi kumpulan helper functions yang dapat digunakan di dalam sesi IEx. Module ini menyediakan berbagai utilitas yang memudahkan kita mengeksplorasi dan memahami fitur-fitur Elixir secara interaktif.
Melihat Dokumentasi Function
Untuk membaca dokumentasi sebuah function, tuliskan h diikuti nama module dan function-nya. Misalnya, untuk melihat dokumentasi IO.puts:
iex(3)> h IO.puts
def puts(device \\ :stdio, item)
@spec puts(device(), chardata() | String.Chars.t()) :: :ok ❶
Writes item to the given device, similar to write/2, but adds a newline at the
end. ❷
By default, the device is the standard output. It returns :ok if it succeeds. ❸
## Examples ❹
IO.puts("Hello World!")
#=> Hello World!
...... (dan seterusnya)
Dari hasil tersebut, kita dapat mempelajari beberapa hal penting:
- ❶ Type spec (
@spec) menjelaskan tipe data dari argumen dan nilai kembalian. Dalam contoh ini, function menerima device (seperti:stdio) dan string atau chardata. - ❷ Deskripsi function menjelaskan bahwa
IO.putsmenulis teks ke perangkat keluaran dan menambahkan baris baru di akhir. - ❸ Nilai kembalian berupa
:okmenunjukkan eksekusi berhasil tanpa kesalahan. - ❹ Contoh penggunaan dapat langsung dijalankan di IEx untuk memastikan perilaku function sesuai deskripsi.
Fitur h menjadikan IEx bukan sekadar alat eksperimen, tetapi juga documentation browser yang cepat dan praktis. Membaca dokumentasi langsung di IEx membantu kita memahami perilaku function dan module tanpa berpindah konteks, yang merupakan kebiasaan penting dalam ekosistem Elixir.
Cara Debugging di IEx
Salah satu cara paling efisien untuk melakukan debugging di IEx adalah dengan menggunakan function dbg/1. Function ini menampilkan ekspresi yang dievaluasi beserta hasilnya di sebelah kanan simbol #=>. Fitur ini sangat berguna untuk melacak perubahan data pada setiap tahap eksekusi, terutama ketika kita ingin memahami bagaimana suatu nilai berubah dari satu langkah ke langkah berikutnya.
Contoh sederhana:
iex(14)> dbg(200 + 20.22)
[iex:14: (file)]
200 + 20.22 #=> 220.22
220.22
Penjelasannya:
-
dbg/1menampilkan ekspresi200 + 20.22dan hasil evaluasinya, yaitu220.22. - Nilai akhir tetap dikembalikan, sehingga tidak mengubah alur eksekusi program.
Karena Elixir merupakan bahasa pemrograman fungsional, logika program biasanya dibangun dengan merangkai banyak function yang mengalirkan data dari satu tahap ke tahap berikutnya. Dalam konteks ini, dbg/1 menjadi function yang sangat membantu untuk memeriksa data di tengah aliran eksekusi.
Menggunakan dbg/1 di Dalam Pipeline
Pipeline adalah mekanisme khas Elixir untuk mengalirkan data melalui serangkaian function menggunakan pipe operator |>. Pembahasan mendalam tentang pipeline akan kita temui di bagian tersendiri, tetapi untuk saat ini cukup kita pahami bahwa dbg/1 memungkinkan kita memantau nilai di setiap tahap proses tanpa menghentikan aliran data.
Contohnya, kita akan mengubah string " hello world " yang memiliki spasi di awal dan akhir menjadi bentuk yang rapi, huruf kapital semua, lalu menghitung panjangnya:
iex> " hello world " |> String.trim() |> String.upcase() |> String.length() |> dbg()
[iex:1: (file)]
" hello world " #=> " hello world "
|> String.trim() #=> "hello world"
|> String.upcase() #=> "HELLO WORLD"
|> String.length() #=> 11
11
Penjelasan langkah-langkahnya:
- Nilai awal
" hello world "dialirkan melalui beberapa function:-
String.trim()menghapus spasi di awal dan akhir. -
String.upcase()mengubah seluruh huruf menjadi kapital. -
String.length()menghitung jumlah karakter dalam string. -
dbg/1menampilkan hasil di setiap tahap pipeline.
-
- Output
dbg/1memperlihatkan bagaimana data berubah dari string mentah menjadi nilai numerik. - Nilai akhir
11tetap dikembalikan sebagai hasil evaluasi ekspresi.
Dengan dbg/1, kita dapat melakukan debugging secara langsung di dalam pipeline tanpa harus memecah ekspresi menjadi beberapa baris kode terpisah. Pendekatan ini sangat sesuai dengan gaya eksplorasi interaktif yang menjadi ciri khas IEx dan filosofi Elixir yang menekankan keterbacaan serta transparansi dalam aliran data.
Keluar dari Sesi IEx atau Menampilkan Opsi Lainnya
Cara paling cepat untuk keluar dari sesi IEx adalah dengan menekan CTRL+C dua kali. Jika hanya ditekan sekali, IEx akan memasuki kondisi BREAK dan menampilkan menu opsi seperti berikut:
$ iex
Erlang/OTP 27 [erts-15.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1] [jit:ns]
Interactive Elixir (1.17.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)>
BREAK: (a)bort (A)bort with dump (c)ontinue (p)roc info (i)nfo
(l)oaded (v)ersion (k)ill (D)b-tables (d)istribution
Ketika IEx berada dalam kondisi BREAK, sistem akan menunggu perintah dari pengguna. Kondisi ini memberi kita kendali untuk melanjutkan sesi, memeriksa status sistem, atau keluar sepenuhnya dari lingkungan interaktif.
Beberapa opsi yang paling umum digunakan antara lain:
-
(a)bort: Mengakhiri sesi IEx sepenuhnya. -
(A)bort with dump: Mengakhiri sesi dan membuat dump file untuk keperluan debugging. -
(c)ontinue: Melanjutkan sesi IEx yang sebelumnya dihentikan sementara.
Untuk benar-benar keluar dari IEx, kita dapat menggunakan salah satu dari dua cara berikut:
- Menekan
CTRL+Cdua kali secara cepat. - Menekan
asaat berada dalam kondisi BREAK.
Kedua cara tersebut akan menutup proses Interactive Elixir Shell dan mengembalikan kontrol ke terminal sistem operasi. Dalam praktik sehari-hari, menekan CTRL+C dua kali adalah cara yang paling umum digunakan karena lebih cepat dan tidak memerlukan interaksi tambahan.
Referensi
- Jurić, S. (2024). Elixir in Action (3rd ed.). Manning Publications.
- Elixir. (2024, December 11). IEx. [Documentation]. Retrieved from https://hexdocs.pm/iex/IEx.html
Top comments (0)