Movatterモバイル変換


[0]ホーム

URL:


Saltu al enhavo
Vikipedio
Serĉi

Scheme

El Vikipedio, la libera enciklopedio
Scheme
Logobildo de Scheme
Logobildo de Scheme
programlingvo • multparadigma programlingvo • funkcia programlingvo • proceda programlingvo • metaprogramlingvo • off-side rule language
Paradigmo:funkcia,struktura
Paradigmo(j): funkcia programado • proceda programado • metaprogramadoordonema programado
Aperis en:1975
Aŭtoro(j):Guy L. Steele kajGerald G. Sussman
Tipa sistemo:Dinamika
Programlingva(j) dialekto(j):multaj
Kreita sub la influo de:LISP
Permesilo(j):multaj
Retejo:http://r7rs.org/
vdr

Scheme (aŭSkimo) estas lafunkciaprogramlingvo, kreita deGuy L. Steele kajGerald G. Sussman je1975, unu el du la plej popularaj dialektoj deLisp (la alia popularaLispa dialekto estasCommon Lisp). Ĝia baza ideo estas minimumeco. Anstataŭ amasigi trajtojn unu post la alia,Scheme provizas kiel eble malmulte primitivajn nociojn, sed ebligas facile efektivigi ĉion super ili.

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 ĉiuLispa dialekto).
  • Unua membro de listo estas normale la nomo de funkcio aŭ operatoro - tialScheme bezonas neniujn regulojn por operatora prioritato.
  • Efike realigitaj tabeloj (angle - "arrays").
  • Statikaj, t.e. blokaj, regionoj de nomoj (tradicieLisp 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 deCommon 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(*22))(+1234)

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(+23))(eq?(eq?23)(eq?34))

En Scheme, ekzistas multaj predikatoj de egaleco, kies sencoj diferenciĝas :eq?,eqv?,equal? kaj=.

Difino de funkcio

[redakti |redakti fonton]
(definefact(lambda(x)(if(=x1)1(*x(fact(-x1))))))(definefib(lambda(n)(cond((=n0)0)((=n1)1)(else(+(fib(-n1))(fib(-n2)))))))(definesum(lambda(x)(cond((null?x)0)(else(+(carx)(sum(cdrx)))))))(fact14)(fib10)(sum'(666100))(sum(mapfib'(1234)))

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]
Elŝutita el "https://eo.wikipedia.org/w/index.php?title=Scheme&oldid=8742189"
Kategorio:
Kaŝita kategorio:

[8]ページ先頭

©2009-2026 Movatter.jp