„Scheme” változatai közötti eltérés
[nem ellenőrzött változat] | [nem ellenőrzött változat] |
Tartalom törölve Tartalom hozzáadva
a Bot: következő hozzáadása: simple:Scheme (programming language) |
a kozmetikai javítások |
||
1. sor:
A '''Scheme''' [[
== A nyelv nagyon rövid története ==
40. sor:
A Scheme-ben a [[Lisp]] más nyelvjárásaiban szokásos függvény elnevezés helyett az eljárás szót használják.
A Scheme-ben a Lisp történetében szokatlan módon a lexikális hatókör szabálya érvényesül (mint az [[
(let ((d 1))
46. sor:
Ez a kifejezés a <tt>6</tt> értéket adja vissza, mivel az <tt>f</tt> eljárás definíciós környezetében a <tt>d</tt> változó értéke <tt>5</tt>.
Ha a dinamikus hatókör lenne érvényben (mint például a [[
A Scheme-ben az adatok típusa nem a változókhoz, hanem az értékekhez van kötve, azaz a Scheme dinamikus típusokat használó nyelv (mint a többi [[Lisp]]):
65. sor:
(define plusz2 (osszeado 2))
Az <tt>osszeado</tt> eljárással egy tetszőleges számmal növelő eljárást tudunk létrehozni. Annak ellenére, hogy a program futása – a kifejezések kiértékelése – közben újabb és újabb tárterületeket használ el ez általában nem jelenti azt, hogy gyorsan elfogy a rendszerünk összes tárkapacitása: ha egy érték többé már nem elérhető a rendszer az általa elfoglalt helyet újrahasznosítja. Ez a folyamat a ''szemétgyűjtés'' (ilyet más nyelvek is használnak, mint pl. a [[
Az eljárások hívásánál a paraméterek átadása mindig ''érték szerint'' történik (call-by-value) (mint általában a [[Lisp]]ben, a [[
(define (moho x y) x)
90. sor:
((if (> x 0) + *) x y))
Ez az eljárás összeadja két paraméterét ha <tt>x</tt> nagyobb mint <tt>0</tt>, egyébként összeszorozza őket. (A [[
A Scheme nyelv talán egyik legérdekesebb fogalma a '''folytatás''' (continuation). A ''folytatás'' egy adott számítás menetének jövőjét jelenti, azaz egy program kifejezése kiértékelésének egy adott pillanatától számított további működését. A ''folytatás'' a más nyelvekben megtalálható goto, exit, return, catch névvel illetett utasítások, illetve mechanizmusok általánosítása. A ''folytatás'' megvalósítására a <tt>call-with-current-continuation</tt> (szokásos rövid neve: <tt>call/cc</tt>) eljárás szolgál.
|