Scheme: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
m drobne techniczne
m +infobox, WP:SK+mSK+ToS
Linia 1:
{{Język programowania infobox
| nazwa = Scheme
| logo = Lambda lc.svg
| wielkość_loga =
| data = 1970
| paradygmat = [[Programowanie wieloparadygmatowe|wieloparadygmatowy]], [[Programowanie funkcyjne|funkcyjny]], [[Programowanie proceduralne|proceduralny]], [[Metaprogramowanie|meta]]
| typowanie = [[Typowanie dynamiczne|dynamiczne]], [[Typowanie silne|silne]]
| implementacje =
| pochodne =
| wersja = R7RS
| wersja testowa =
| twórca = Guy L. Steele Jr., Gerald Jay Sussman
| licencja =
| platforma = [[Wieloplatformowość|wieloplatformowy]]
| system = [[Wieloplatformowość|wieloplatformowy]]
| wikibooks =
| www = http://www.scheme-reports.org/
}}
'''Scheme''' – [[programowanie funkcyjne|funkcyjny]] [[język programowania]], dialekt (wariant) [[Lisp]]u, który został zaprojektowany na [[Massachusetts Institute of Technology|MIT]] przez [[Guy L. Steele|Guy L. Steele-a]] i [[Gerald Jay Sussman|Geralda Jay Sussmana]] w latach 70. Jego główną ideą jest minimalizm, co oznacza, że sam język zawiera jedynie podstawowe mechanizmy, a na ich bazie, już z użyciem Scheme, tworzone są bardziej zaawansowane rozwiązania. Scheme nie jest czysto funkcyjnym językiem programowania, co oznacza, że dopuszczalne są efekty uboczne obliczeń. Scheme umożliwia również tworzenie programów w stylu proceduralnym i obiektowym. Jest to język o dynamicznym systemie typów. Zarządzanie pamięcią jest w pełni automatyczne. Scheme był pierwszym dialektem [[Lisp]]u, który używał zmiennych leksykalnych i pierwszym który wymagał od implementacji optymalizacji wywołań z rekurencją ogonową. Scheme jest ustandaryzowany przez organizację [[Institute of Electrical and Electronics Engineers|IEEE]] oraz przez dokumenty ''Revised<sup>n</sup> Report on the Algorithmic Language Scheme'' (R''n''RS), z których najczęściej implementowane są R5RS z 1998 roku oraz R6RS z 2007 roku.
 
Linia 224 ⟶ 242:
(write-line (car list) port)
(loop (cdr list)))))
; unless to jest macro
(define-macro (unless test . body)
`(if (not ,test) (begin ,@body)))
; lub
(define (write-lines list port)
(for-each (lambda (line) (write-line line port)) list))
Linia 254 ⟶ 272:
* [[:en:MIT/GNU Scheme|MIT/GNU Scheme]] – implementacja stworzona przez FSF
* [[Gambit (Scheme implementation)|Gambit]] – kompilator i interpreter stworzony przez FSF
* [[Racket]] – implementacja udostępniona na licencji [[GNU_Lesser_General_Public_LicenseGNU Lesser General Public License|LGPL]]
 
{{Przypisy}}