Online Clojure - IDE, Editör, Derleyici, Yorumlayıcı

RSS

Clojure kodunu Small Clojure Interpreter (SCI) ile online çalıştırın: fonksiyonlar, map'ler, vektörler, threading makroları ve tembel diziler, doğrudan tarayıcınızda.

ClojureScript via SCI (Scittle 0.8) · Tarayıcınızda çalışır, böylece kodunuz sunucularımıza hiç ulaşmaz.
main.cljsClojure
Çıktı

            
        
Çalıştırmak için Ctrl/⌘ + Enter

Online Clojure derleyicinin özellikleri (IDE, editör & yorumlayıcı)

Clojure kodunu online ve ücretsiz olarak yazın, çalıştırın ve test edin. Bu sayfa online Clojure IDE'si, kod editörü, derleyicisi ve yorumlayıcısı olarak tek bir yerde çalışır: kodunuzu yazın, Çalıştır'a basın ve çıktıyı hemen görün. Her şey tarayıcınızda çalışır; kurulacak bir şey ya da açılacak bir hesap yoktur.

  • Kodu anında çalıştırın: ClojureScript via SCI (Scittle 0.8), ilk yüklemeden sonra bir saniyeden kısa sürede çıktı.
  • Kod editörü: sözdizimi vurgulama, satır numaraları, parantez eşleştirme ve otomatik parantez kapatma.
  • Anlaşılır hatalar: hata mesajları ve uyarılar, kendi bilgisayarınızda olduğu gibi çıktı panelinde görünür.
  • Tam ekran: Ctrl/⌘ + Shift + F, ayarlanabilir yazı boyutu, yan yana veya alt alta düzen ve yeniden boyutlandırılabilir paneller.
  • Otomatik kaydetme: kodunuz tarayıcınızda saklanır; tek tıkla main.cljs olarak indirin veya kopyalayın.
  • Güvenle deneyin: süre sınırı ve Durdur düğmesi sonsuz döngüleri sonlandırır.
  • Gizli: Clojure çalışma ortamı cihazınızda çalışır, böylece kodunuz asla yüklenmez.
  • Karanlık mod ve klavye kısayolları: Ctrl/⌘ + Enter kodu çalıştırır.
  • Ücretsiz: kayıt yok, kullanım sınırı yok.

Diğer programlama dillerini öğrenin

Online Clojure derleyici nasıl kullanılır?

  1. Clojure kodunuzu editöre yazın ya da yapıştırın. Örneği sıfırla, bir faktöriyel, sıralı bir harita (map) listesi, frequencies ve bir ->> boru hattı içeren başlangıç programını geri getirir.
  2. Çalıştır'a basın ya da Ctrl + Enter tuşlarını kullanın (Mac'te ⌘ + Enter).
  3. println ile yazdırılan metin Çıktı panelinde görünür. Çalıştırmadan sonra son formun değeri, okunabilir pr-str biçiminde => ... olarak yazdırılır. Bu değer nil ise, örneğin program println ile bitiyorsa, fazladan bir şey gösterilmez. Hatalar mesajlarıyla gösterilir.
  4. 5, 15 veya 60 saniyelik bir süre sınırı seçin ya da bir çalıştırmayı erken bitirmek için Durdur'a basın.

İlk çalıştırmada sayfa yorumlayıcıyı indirir; boyutu yaklaşık 1 MB'tır. Kopyala ve main.cljs kodunuzu kaydeder, A−/A+ ise metin boyutunu değiştirir.

Her şey tarayıcınızdaki bir Web Worker içinde çalışır. Kodunuz hiçbir zaman bir sunucuya gönderilmez. Editör, son programınızı tarayıcınıza her derleyici için ayrı olarak otomatik kaydeder.

Clojure, ClojureScript ve SCI hakkında

Clojure, değiştirilemez (immutable) veri yapıları ve fonksiyonel programlama üzerine kurulu modern bir Lisp'tir. Özgün Clojure Java Sanal Makinesi (JVM) üzerinde çalışır; ClojureScript ise JavaScript'i hedefleyen sürümdür. Bu sayfa, tarayıcı için SCI'yi (Small Clojure Interpreter) paketleyen Scittle 0.8'i kullanır. SCI kodunuzu doğrudan ClojureScript anlambilimiyle yorumlar; JVM ya da derleme aracı gerekmez.

Neler destekleniyor?

  • Tanımlar ve kontrol akışı: def, defn, fn ve #(...) sabit değerleri, let, if, when, cond ve loop/recur.
  • Kalıcı koleksiyonlar: haritalar, vektörler, kümeler ve listeler, anahtar sözcükler ile let ve fonksiyon argümanlarında yapı çözme (destructuring).
  • Dizi fonksiyonları: map, filter, reduce, sort-by, group-by ve frequencies dahil; ayrıca range ve iterate gibi tembel (lazy) diziler.
  • Zincirleme makroları -> ve ->>; ayrıca yönetilen değiştirilebilir durum için atom'lar.
  • ClojureScript tarzında JavaScript birlikte çalışabilirliği; örneğin (js/Math.sqrt 16) ya da (.toUpperCase "abc").

Sınırlamalar:

  • JVM birlikte çalışabilirliği yok. java.util.Date ya da Thread gibi sınıflar yoktur.
  • Leiningen ya da deps.edn yok. Harici kütüphane eklenemez; bu yüzden yalnızca editördeki kod ve yerleşik ad alanları kullanılabilir.
  • Girdi kutusu yok ve DOM da yok. Test verilerinizi programın içinde tanımlayın.

Çözümlü örnek: değiştirilemezlik ve zincirleme

(def inventory {:apples 3 :pears 0})
(def restocked (assoc inventory :pears 12))
(println inventory)   ; {:apples 3, :pears 0}  (değişmedi)
(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 yeni bir harita döndürür ve özgün haritayı değiştirmeden bırakır. Zaman içinde değişen bir değere ihtiyacınız olduğunda onu bir atom'da tutun ve swap! ile güncelleyin. Son form bir ->> boru hattıdır. Vektörü her adıma son argüman olarak geçirir ve sonucu => 130 olarak yazdırılır. Bunun yerine -> kullanın: değerin ilk argüman olması gerektiğinde, bir haritada assoc ve update ile olduğu gibi.

JVM Clojure'dan farklar ve sık yapılan hatalar

  • Sayılar JavaScript sayılarıdır. ClojureScript anlambiliminde oranlar (ratio) ya da büyük tamsayılar yoktur. (/ 1 3) 0.3333333333333333 döndürür ve çok büyük tamsayılar hassasiyet kaybeder.
  • Ayrı bir karakter türü yoktur. \a gibi bir karakter sabiti tek harfli bir metindir; bu yüzden (frequencies "mississippi") metin anahtarlarına sahiptir.
  • Tembellik yan etkileri gizler. Sonuç hiç kullanılmazsa (map println xs) hiçbir şey yazdırmayabilir. Yan etkiler için doseq ya da run! kullanın.
  • Sonsuz diziler. (range) ve iterate hiç bitmez; bu yüzden onları her zaman take ile sınırlayın. Sonsuz bir diziyi yazdırırsanız çalıştırma, süre sınırı durdurana kadar sürer.
  • println ve prn farkı. println, koleksiyonların içindeki metinleri tırnaksız yazdırır. prn tırnakları korur; bu da veriyi okumayı kolaylaştırır.

Sıkça sorulan sorular

Bu gerçek Clojure mu?

Bu, JVM uygulaması değil, ClojureScript anlambilimiyle SCI tarafından çalıştırılan Clojure kodudur. Çekirdek dil, koleksiyonlar ve dizi kütüphanesi aynı şekilde çalışır; bu yüzden saf Clojure kodunun çoğu değişmeden çalışır. Java birlikte çalışabilirliği ve JVM'ye özgü davranışlar çalışmaz.

Kütüphane ekleyebilir ya da proje dosyası kullanabilir miyim?

Hayır. Leiningen, deps.edn ve Maven bağımlılıkları kullanılamaz. Her çalıştırma, editördeki tek dosyayı yorumlar.

Dosyanın adı neden main.cljs?

Çünkü kod ClojureScript anlambilimiyle çalışır. JavaScript birlikte çalışabilirliğine dayanmadığı sürece içeriği bir .clj ya da .cljc dosyasına yapıştırabilirsiniz.

Başka hangi dilleri deneyebilirim?

Online Scheme Yorumlayıcı, keşfedebileceğiniz başka bir Lisp'tir. JavaScript'in kendisi için Online JavaScript Derleyici'yi kullanın ya da tüm online derleyicilere bakın.

Güncellendi

Panoya kopyalandı