Clojure Online - IDE, Editor, Compiler, Interpreter

Jalankan kode Clojure secara online dengan SCI, Small Clojure Interpreter: fungsi, map, vector, threading macro, dan lazy sequence, langsung di browser Anda.

ClojureScript via SCI (Scittle 0.8) · Berjalan di browser Anda, sehingga kode Anda tidak pernah sampai ke server kami.
main.cljsClojure
Output

            
        
Ctrl/⌘ + Enter untuk menjalankan

Fitur compiler Clojure online (IDE, editor & interpreter)

Tulis, jalankan, dan uji kode Clojure online secara gratis. Halaman ini berfungsi sebagai IDE, editor kode, compiler, dan interpreter Clojure online sekaligus: ketik kode Anda, tekan Jalankan, dan lihat outputnya seketika. Semuanya berjalan di browser Anda, tanpa perlu menginstal apa pun dan tanpa membuat akun.

  • Jalankan kode seketika: ClojureScript via SCI (Scittle 0.8), dengan output dalam waktu kurang dari satu detik setelah pemuatan pertama.
  • Editor kode: penyorotan sintaks, nomor baris, pencocokan kurung, dan penutupan kurung otomatis.
  • Error yang jelas: pesan error dan peringatan muncul di panel output, seperti di komputer Anda sendiri.
  • Layar penuh: Ctrl/⌘ + Shift + F, ukuran font yang dapat diatur, tata letak berdampingan atau bertumpuk, dan panel yang dapat diubah ukurannya.
  • Simpan otomatis: kode Anda disimpan di browser; download sebagai main.cljs atau salin dengan satu klik.
  • Aman untuk bereksperimen: batas waktu dan tombol Hentikan mengakhiri loop tak terbatas.
  • Privat: runtime Clojure berjalan di perangkat Anda, sehingga kode Anda tidak pernah diupload.
  • Mode gelap dan pintasan keyboard: Ctrl/⌘ + Enter menjalankan kode.
  • Gratis: tanpa daftar, tanpa batas penggunaan.

Pelajari bahasa pemrograman lain

Cara menggunakan compiler Clojure online

  1. Tulis atau tempel kode Clojure ke editor. Reset contoh mengembalikan program awal berisi faktorial, daftar map yang terurut, frequencies, dan pipeline ->>.
  2. Tekan Jalankan atau gunakan Ctrl + Enter (⌘ + Enter di Mac).
  3. Teks yang dicetak dengan println muncul di panel Output. Setelah dijalankan, nilai form terakhir dicetak sebagai => ... dalam bentuk pr-str yang mudah dibaca. Jika nilainya nil, misalnya saat program berakhir dengan println, tidak ada tambahan yang ditampilkan. Kesalahan ditampilkan beserta pesannya.
  4. Pilih batas waktu 5, 15, atau 60 detik, atau tekan Hentikan untuk mengakhiri proses lebih awal.

Saat pertama kali dijalankan, halaman mengunduh interpreter yang berukuran sekitar 1 MB. Salin dan main.cljs menyimpan kode Anda, dan A−/A+ mengubah ukuran teks.

Semuanya berjalan di Web Worker di browser Anda. Kode Anda tidak pernah dikirim ke server. Editor menyimpan otomatis program terakhir Anda di browser, terpisah untuk setiap compiler.

Tentang Clojure, ClojureScript, dan SCI

Clojure adalah Lisp modern yang dibangun di sekitar struktur data immutable dan pemrograman fungsional. Clojure asli berjalan di Java Virtual Machine, dan ClojureScript adalah versi yang menargetkan JavaScript. Halaman ini memakai Scittle 0.8, yang mengemas SCI, Small Clojure Interpreter, untuk browser. SCI menafsirkan kode Anda langsung dengan semantik ClojureScript, tanpa JVM atau alat build apa pun.

Yang didukung

  • Definisi dan alur kontrol: def, defn, fn dan literal #(...), let, if, when, cond, serta loop/recur.
  • Koleksi persisten: map, vector, set, dan list, keyword, serta destructuring pada let dan argumen fungsi.
  • Fungsi sequence, termasuk map, filter, reduce, sort-by, group-by, dan frequencies, ditambah lazy sequence seperti range dan iterate.
  • Threading macro -> dan ->>, serta atom untuk state mutable yang terkelola.
  • Interop JavaScript bergaya ClojureScript, seperti pada (js/Math.sqrt 16) atau (.toUpperCase "abc").

Keterbatasan:

  • Tanpa interop JVM. Kelas seperti java.util.Date atau Thread tidak ada.
  • Tanpa Leiningen atau deps.edn. Library eksternal tidak bisa ditambahkan, jadi hanya kode di editor dan namespace bawaan yang tersedia.
  • Tanpa kotak input dan tanpa DOM. Tentukan data uji Anda di dalam program.

Contoh: immutability dan threading

(def inventory {:apples 3 :pears 0})
(def restocked (assoc inventory :pears 12))
(println inventory)   ; {:apples 3, :pears 0}  (tidak berubah)
(println restocked)   ; {:apples 3, :pears 12}

(def counter (atom 0))
(dotimes [_ 5] (swap! counter inc))
(println @counter)    ; 5

(->> [3 8 1 9 4]
     (filter odd?)
     (map #(* % 10))
     (reduce +))      ; => 130

assoc mengembalikan map baru dan membiarkan yang asli tidak berubah. Jika Anda butuh nilai yang berubah seiring waktu, simpan di dalam atom dan perbarui dengan swap!. Form terakhir adalah pipeline ->>. Pipeline ini meneruskan vector melalui setiap langkah sebagai argumen terakhir, dan hasilnya dicetak sebagai => 130. Gunakan -> sebagai gantinya jika nilai itu harus menjadi argumen pertama, seperti pada assoc dan update untuk sebuah map.

Perbedaan dari Clojure JVM dan jebakan yang umum

  • Angka adalah angka JavaScript. Dengan semantik ClojureScript tidak ada rasio atau integer besar. (/ 1 3) menghasilkan 0.3333333333333333, dan integer yang sangat besar kehilangan presisi.
  • Tidak ada tipe karakter tersendiri. Literal karakter seperti \a adalah string satu huruf, sehingga (frequencies "mississippi") memiliki key berupa string.
  • Laziness menyembunyikan efek samping. (map println xs) bisa tidak mencetak apa pun jika hasilnya tidak pernah dipakai. Gunakan doseq atau run! untuk efek samping.
  • Sequence tak hingga. (range) dan iterate tidak pernah berakhir, jadi selalu batasi dengan take. Jika Anda mencetak sequence tak hingga, proses terus berjalan sampai batas waktu menghentikannya.
  • println vs prn. println mencetak string di dalam koleksi tanpa tanda kutip. prn mempertahankan tanda kutip, sehingga data lebih mudah dibaca.

Pertanyaan yang sering diajukan

Apakah ini Clojure yang sebenarnya?

Ini adalah kode Clojure yang dijalankan oleh SCI dengan semantik ClojureScript, bukan implementasi JVM. Bahasa inti, koleksi, dan library sequence bekerja dengan cara yang sama, sehingga sebagian besar kode Clojure murni berjalan tanpa perubahan. Interop Java dan perilaku khusus JVM tidak berfungsi.

Bisakah saya menambahkan library atau memakai file proyek?

Tidak. Leiningen, deps.edn, dan dependensi Maven tidak tersedia. Setiap proses menafsirkan satu file di editor.

Mengapa file ini bernama main.cljs?

Karena kode berjalan dengan semantik ClojureScript. Anda bisa menempelkan isinya ke file .clj atau .cljc, selama tidak bergantung pada interop JavaScript.

Bahasa lain apa yang bisa saya coba?

Interpreter Scheme Online adalah Lisp lain yang bisa dijelajahi. Untuk JavaScript sendiri, gunakan Compiler JavaScript Online, atau lihat semua compiler online.

Diperbarui

Tersalin ke clipboard