eo en eo eo en de eo eo en eo eo eo eo eo eo es zh eo eo eo en fr eo pt eo eo eo eo eo eo en eo eo eo eo eo eo eo eo eo eo eo eo eo eo eo eo eo fr eo eo en eo eo en eo en eo eo eo eo eo eo eo eo eo eo eo eo eo eo eo en eo eo lt eo eo eo eo de es eo eo eo eo eo sv ur eo eo eo eo es eo eo eo eo eo eo eo eo tr nl eo eo it eo eo eo eo eo eo eo eo eo eo eo eo ar az lt ru bg bn ca hbs_lat da de el en es et fa fi fr he hbs_lat hu hy it ja ko lt en ml nl nb nb pl pt ro ru ru hbs_lat en sk sl hbs_lat sv ta en tr fy vi zh eo eo eo eo eo eo eo eo eo
El Vikipedio, la libera enciklopedio
Guy L. Steele kaj Gerald G. Sussman
Kreita sub la influo de:
v • d • r
1 Mallonga priskribo de trajtoj
Mallonga priskribo de trajtoj[redakti | redakti fonton]
Treege minimuma sintakso kompare al aliaj programlingvoj.
Precipe funkcia stilo de programado (t. e. "funkcioj vokas funkciojn" sen deviga tempa ordo de komputo), sed ordonema stilo (kiam "agoj sekvas agojn" en strikta tempa ordo) ankaŭ uzeblas.
Listo estas la precipa datuma strukturo (kiel en ĉiu Lispa dialekto).
Unua membro de listo estas normale la nomo de funkcio aŭ operatoro - tial Scheme bezonas neniujn regulojn por operatora prioritato.
Efike realigitaj tabeloj (angle - "arrays").
Statikaj, t.e. blokaj, regionoj de nomoj (tradicie Lisp havis dinamikajn regionojn).
Unu spaco de nomoj por variabloj kaj funkcioj (Common Lisp havas du apartajn spacojn).
Sekuraj "higienaj" makrooj (kvankam malpli potencaj ol la danĝeraj makrooj de Common Lisp).
Realigado de "vosta rekursio" kiel iteracio sur interna malalta nivelo.
Rekta, senpera subtenado de daŭrigoj (angle - "continuations") : programisto havas plenan regon pri ili.
Plena subtenado de "leksike regionigitaj fermoj" (angle - "closures") - fakte, ĉiu funkcio estas ankaŭ la fermo.
Aŭtomata senrubigo (vakigo de neuzata memoro).
Ekzemploj[redakti | redakti fonton]
Simplaj matematikaj operacioj[redakti | redakti fonton]
(+ 2 (* 2 2)) (+ 1 2 3 4)
Voko al operacio estas prezentita kiel listo, komenciĝanta per la signo de la operacio.
Predikatoj de tipo[redakti | redakti fonton]
(number? 5) (number? "foo") (string? "foo")
Laŭ la konvencio, la nomoj de predikataj funkcioj devas finiĝi per simbolo ?.
Predikatoj de egaleco[redakti | redakti fonton]
(eq? "foo" "bar") (eq? 5 (+ 2 3)) (eq? (eq? 2 3) (eq? 3 4))
Difino de funkcio[redakti | redakti fonton]
(define fact (lambda (x) (if (= x 1) 1 (* x (fact (- x 1)))))) (define fib (lambda (n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2))))))) (define sum (lambda (x) (cond ((null? x) 0) (else (+ (car x) (sum (cdr x))))))) (fact 14) (fib 10) (sum '(6 6 6 100)) (sum (map fib '(1 2 3 4)))
Oni konstruas difinon de ĉiu funkcio laŭ jena modelo:
(define nomo-de-funkcio (lambda (listo de argumentoj) (realigado de funkcio)))
(define (nomo-de-funkcio listo de argumentoj) (realigado de funkcio))
Enigo/Eligo[redakti | redakti fonton]
(display "Saluton, mondo!") ; Eligu la frazon "Hello, World!" (display (+ (read) (read))) ; Enigu 2 nombrojn, adiciu ilin kaj eligu sumon
Vidu ankaŭ[redakti | redakti fonton]
Eksteraj ligiloj[redakti | redakti fonton]
Granda koleto de informoj pri Skemo
Skemo Petas por Realigo (SRFI)
Guile - Oficiala programlingvo por etendaĵoj de GNU
Kawa - JVM bazita Skemo.
Reviziita5 Raporto pri la Algoritma Lingva Skemo
Reviziita6 Raporto pri la Algoritma Lingva Skemo
Informoj pri la paĝo
Citi ĉi tiun artikolon
Ĉi tiu paĝo estis lastafoje redaktita je 16:09, 20 aŭg. 2013.
La teksto disponeblas laŭ la permesilo Krea Komunaĵo Atribuite-Samkondiĉe 3.0 Neadaptita; eble aldonaj kondiĉoj aplikeblas. Vidu la uzkondiĉojn por detaloj.
Regularo pri respekto de la privateco
Vidigo por porteblaj aparatoj