DEV Community

Cover image for IEx: Shell Interaktif Elixir
Muzhawir Amri
Muzhawir Amri

Posted on • Edited on • Originally published at muzhawir.com

IEx: Shell Interaktif Elixir

Daftar Isi

Memulai dan Menulis Ekspresi di IEx

Memulai Sesi IEx dan Mengevaluasi Ekspresi

IEx (Interactive Elixir) adalah shell interaktif atau REPL (read–eval–print loop) bawaan Elixir yang memungkinkan kita menjalankan kode secara langsung di terminal. Melalui IEx, kita bisa mengeksplorasi fitur bahasa, membaca dokumentasi, melakukan debugging, dan masih banyak lagi. Karena sudah menjadi bagian dari Elixir, kita tidak perlu menginstal apa pun untuk mulai menggunakannya.

Untuk memulai sesi, cukup jalankan perintah iex 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
Enter fullscreen mode Exit fullscreen mode

Saat IEx berjalan, ia menampilkan versi runtime Erlang dan Elixir yang sedang digunakan. Setelah itu, akan muncul prompt iex(1)>, tempat kita bisa mengetikkan ekspresi. Angka dalam tanda kurung menunjukkan urutan evaluasi ekspresi.

Mari kita coba ekspresi pertama:

iex(1)> 1 + 1  
2  
Enter fullscreen mode Exit fullscreen mode

Penjelasannya:

  • ❶ Kita mengetikkan ekspresi 1 + 1.
  • ❷ IEx mengevaluasi ekspresi tersebut dan mencetak hasilnya, yaitu 2.

Di Elixir, hampir semua hal adalah ekspresi yang menghasilkan nilai, termasuk pemanggilan function, if, case dan masih banyak lagi.

Ekspresi Multi Baris

IEx juga mendukung penulisan ekspresi dalam beberapa baris:

iex(1)> 2 * (    
...(1)>   3 + 1  
...(1)> ) / 4    
2.0              
Enter fullscreen mode Exit fullscreen mode

Penjelasannya:

  • ❶ Kita mulai menulis ekspresi, tetapi belum lengkap karena tanda kurung belum ditutup.
  • Prompt ...(1)> menunjukkan bahwa ekspresi masih berlanjut ke baris berikutnya.
  • ❸ Setelah ekspresi lengkap, tekan Enter sekali lagi untuk menjalankannya.
  • ❹ IEx mengevaluasi ekspresi tersebut dan mencetak hasilnya, yaitu 2.0.

Selama ekspresi belum lengkap, IEx akan terus menunggu input tambahan. Fitur ini berguna ketika kita ingin menulis ekspresi panjang agar lebih rapi dan mudah dibaca.

Membaca Dokumentasi di IEx

IEx menyediakan fitur bantuan untuk membaca dokumentasi langsung dari dalam shell. Untuk memulainya, kita cukup mengetikkan h:

iex(2)> h

                                  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)
Enter fullscreen mode Exit fullscreen mode

Perintah ini akan menampilkan dokumentasi dari module IEx.Helpers, yang berisi berbagai helper untuk mempermudah eksplorasi dan penggunaan IEx.

Kalau ingin melihat dokumentasi sebuah function, misalnya IO.puts, kita bisa gunakan h diikuti dengan nama module dan nama function-nya:

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)
Enter fullscreen mode Exit fullscreen mode

Dari output ini, kita bisa melihat type spec (tipe data yang diterima oleh argumen dan nilai kembalian pada suatu function), penjelasan singkat function IO.puts, nilai kembalian yang diberikan, serta contoh penggunaannya.

Cara Debugging di IEx

Salah satu cara melakukan debug di IEx adalah dengan menggunakan function dbg/1. Function ini mencetak ekspresi yang dievaluasi beserta hasilnya, lalu menampilkannya di sebelah kanan simbol #=>. Ini memudahkan kita melacak bagaimana data diproses di setiap langkah.

Contoh sederhana:

iex(14)> dbg(200 + 20.22)
[iex:14: (file)]
200 + 20.22 #=> 220.22

220.22
Enter fullscreen mode Exit fullscreen mode

Di sini, dbg mencetak ekspresi 200 + 20.22 dan hasil evaluasinya, yaitu 220.22. Output akhirnya tetap dikembalikan seperti biasa.

Karena Elixir adalah bahasa pemrograman fungsional, kita akan sering membangun logika kompleks dengan merangkai banyak function. Dalam konteks ini, dbg sangat membantu terutama saat bekerja dengan ekspresi panjang yang menggunakan pipeline. Pipeline adalah cara khas Elixir untuk mengalirkan data melalui rangkaian function menggunakan pipe operator |>.

Pembahasan lengkap tentang pipeline akan kita bahas di bagian tersendiri. Untuk sekarang, cukup pahami bahwa dbg memungkinkan kita menelusuri nilai di setiap tahap dalam alur eksekusi:

iex(16)> -100 |> div(4) |> abs() |> to_string() |> dbg() 
[iex:16: (file)]          
-100 #=> -100             ❷
|> div(4) #=> -25         ❷
|> abs() #=> 25           ❷
|> to_string() #=> "25"   ❷

"25"                      
Enter fullscreen mode Exit fullscreen mode

Penjelasannya:

  • ❶ Kita membuat sebuah pipeline sederhana. Nilai awal -100 dialirkan ke setiap function secara berurutan:
    • div(4) menghasilkan -25
    • abs() menghasilkan 25
    • to_string() menghasilkan "25"
    • dbg/1 mencetak hasil evaluasi di setiap langkah
  • ❷ Ini adalah output yang dihasilkan oleh dbg, menunjukkan evaluasi dari setiap tahap dalam pipeline
  • ❸ Nilai akhir dari seluruh ekspresi tetap dikembalikan, dalam hal ini: "25"

Dengan dbg, kita bisa memantau alur eksekusi secara rinci tanpa harus menambahkan print manual seperti IO.puts di setiap langkah.

Keluar dari Sesi IEx atau Menampilkan Opsi Lainnya

Cara tercepat untuk keluar dari sesi IEx adalah dengan menekan CTRL+C dua kali. Jika hanya ditekan sekali, IEx akan masuk ke kondisi BREAK dan menampilkan sejumlah 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
Enter fullscreen mode Exit fullscreen mode

Saat memasuki kondisi BREAK, IEx akan menunggu perintah dari kita. Beberapa opsi yang umum digunakan:

  • (a)bort: Keluar dari sesi IEx.
  • (A)bort with dump: Keluar sambil menghasilkan dump untuk keperluan debugging.
  • (c)ontinue: Melanjutkan sesi IEx yang sedang berhenti.

Untuk keluar sepenuhnya dari IEx, kita bisa:

  • Menekan CTRL+C dua kali secara cepat, atau
  • Menekan a saat berada di kondisi BREAK.

Karena IEx adalah alat yang akan sering kita gunakan selama proses pengembangan, memahami cara mengelola sesi ini sejak awal akan sangat membantu dalam menjaga alur kerja tetap lancar.

Referensi

  • Saša Jurić. (2024). Elixir In Action (3rd ed.). Manning Publications.
  • Elixir. (2024, December 11). IEx [Documentation]. https://hexdocs.pm/iex/IEx.html

Top comments (0)