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

RSS

Scheme kodunu online çalıştırın: tarayıcınızda çalışan bir Scheme yorumlayıcısında fonksiyonlar tanımlayın; özyineleme, listeler, lambda'lar ve kuyruk çağrıları kullanın.

R7RS-style Scheme (BiwaScheme 0.8) · Tarayıcınızda çalışır, böylece kodunuz sunucularımıza hiç ulaşmaz.
main.scmScheme
Çıktı

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

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

Scheme kodunu online ve ücretsiz olarak yazın, çalıştırın ve test edin. Bu sayfa online Scheme 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: R7RS-style Scheme (BiwaScheme 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.scm 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: Scheme ç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 Scheme yorumlayıcı nasıl kullanılır?

  1. Düzenleyiciye Scheme kodu yazın veya yapıştırın. Örneği sıfırla, bir faktöriyel, ilk on Fibonacci sayısı ve bir kareler toplamı yazdıran başlangıç programını geri getirir.
  2. Çalıştır'a basın ya da Ctrl + Enter (Mac'te ⌘ + Enter) kısayolunu kullanın.
  3. display, write ve newline ile yazılan metin Çıktı panelinde görünür. Program bittiğinde, değer belirsiz değilse son ifadenin değeri => değer olarak yazdırılır. Hatalar BiwaScheme'in kendi mesajıyla bildirilir.
  4. Süre sınırı olarak 5, 15 veya 60 saniye seçin. Sonsuz döngü otomatik olarak durdurulur; Durdur ise çalışmayı hemen sonlandırır.

Yorumlayıcı yalnızca yaklaşık 0,3 MB olduğundan sayfa neredeyse anında hazır olur. Kopyala ve main.scm programınızı kaydeder; Tam ekran (Ctrl/⌘ + Shift + F, çıkmak için Esc) düzenleyiciye pencerenin tamamını verir.

Kodunuz tarayıcınızdaki bir Web Worker içinde çalışır ve hiçbir zaman bir sunucuya gönderilmez. Düzenleyici, son programınızı tarayıcınızın yerel depolama alanına otomatik kaydeder; bu kayıt sitedeki her derleyici için ayrıdır.

Scheme ve BiwaScheme hakkında

Scheme, Lisp'in küçük bir lehçesidir. Programlar parantezli ifadelerden oluşur, fonksiyonlar sıradan değerlerdir ve döngü kurmanın olağan yolu özyinelemedir (recursion). Küçük çekirdeği, onu closure'ları, yüksek dereceli fonksiyonları ve yorumlayıcıları öğretmek için sevilen bir dil yapar.

Bu sayfa, JavaScript ile yazılmış bir Scheme yorumlayıcısı olan BiwaScheme 0.8.3'ü çalıştırır. Üslup olarak R6RS ve R7RS standartlarını izler ve en yaygın Scheme özelliklerini kapsar. Yine de bu standartlardan hiçbirinin eksiksiz bir uygulaması değildir.

Neler destekleniyor?

  • Çekirdek biçimler: define, lambda, let, let*, letrec, if, cond, begin ve set!.
  • Listeler ve yüksek dereceli fonksiyonlar: cons, car, cdr, list, map, apply ve '(1 2 3) gibi alıntılanmış veriler.
  • Doğru kuyruk çağrıları (proper tail calls); böylece adlandırılmış let veya kuyruk özyinelemeli fonksiyonlar olarak yazılan döngüler sabit yığın alanında çalışır.

Sınırlamalar:

  • Girdi kutusu yok. Test verisini doğrudan programa koyun.
  • Tam bir standart uygulaması değil. MIT Scheme, Racket veya Guile gibi diğer Scheme'lere özgü prosedürler eksik olabilir.
  • Yalnızca düzenleyicideki kod çalışır. Yüklenecek dosya ve paket yöneticisi yoktur.

Örnek: özyineleme ve adlandırılmış let

;; Düz özyineleme: her çağrı bir sonrakinin dönmesini bekler.
(define (sum-list lst)
  (if (null? lst)
      0
      (+ (car lst) (sum-list (cdr lst)))))

;; Adlandırılmış let: birikimli (akümülatörlü) kuyruk özyinelemeli bir döngü.
(define (sum-to n)
  (let loop ((i 1) (acc 0))
    (if (> i n)
        acc
        (loop (+ i 1) (+ acc i)))))

(display (sum-list '(1 2 3 4))) (newline)   ; 10
(sum-to 100000)                             ; => 5000050000

Son ifade yazdırılmadığı için değeri => 5000050000 olarak görünür. sum-list bekleyen toplamlar biriktirir; sum-to ise loop'u kuyruk konumunda çağırır ve bir while döngüsü gibi davranır.

Sık yapılan hatalar

  • Listeyi alıntılamayı (quote) unutmak. (1 2 3), 1'i fonksiyon olarak çağırmaya çalışır ve başarısız olur. '(1 2 3) ya da (list 1 2 3) yazın. İkisi farklıdır: '(a b), a ve b sembollerinin listesidir; (list a b) ise değişkenleri değerlendirir.
  • define ve let farkı. Üst düzey bir define genel bir ad oluşturur. let ise yalnızca gövdesinin içinde var olan yerel adlar oluşturur. Düz bir let içinde bir bağlama diğerine başvuramaz; sonraki bir değer öncekine bağlıysa let* kullanın.
  • display ve write farkı. display dizeleri tırnaksız yazdırır. write tırnakları korur; bu, veriyi hata ayıklarken işe yarar.
  • Eşitlik. Sayılar için =, semboller için eq?, listeleri ya da dizeleri içeriğe göre karşılaştırmak için equal? kullanın.

Sıkça sorulan sorular

Bu bir Scheme derleyicisi mi, yorumlayıcısı mı?

Yorumlayıcı. BiwaScheme, programınızı ayrı bir derleme adımı olmadan doğrudan tarayıcıda çalıştırır.

Hangi Scheme standardı destekleniyor?

BiwaScheme üslup olarak R6RS ve R7RS'yi izler ve en yaygın özellikleri kapsar. define, lambda, let, cond, listeler ve özyineleme kullanan standart ders kitabı kodları beklendiği gibi çalışır. Tek bir uygulamanın kütüphanelerine bağlı kodun değiştirilmesi gerekebilir.

SICP veya ders alıştırmaları için kullanabilir miyim?

Evet, çekirdek Scheme üzerine kurulu alıştırmalar için. Bir alıştırma tanımsız bir prosedür kullanıyorsa, programın başına onun küçük bir sürümünü kendiniz yazın.

Programım neden hiçbir şey yazdırmıyor?

Yalnızca display, write ve newline çıktı üretir; bir de son ifadenin değeri için => satırı. Bir define ile biten program değer göstermez, çünkü o sonuç belirsizdir.

Online olarak başka hangi dilleri çalıştırabilirim?

Başka bir Lisp için Online Clojure Derleyici'yi, mantık programlama için Online Prolog Derleyici'yi deneyin ya da tüm online derleyicilere göz atın.

Güncellendi

Panoya kopyalandı