Porównanie dialektów Lispu
Z Wikipedii
Lisp nie jest jednym językiem programowania, lecz całą rodziną różniących się czasem znacznie języków.
Najbardziej odbiegajÄ…cym od tradycji Lispowej jest Scheme.
Spis treści |
[edytuj] Podstawowe stałe symboliczne
Stałe które występują w każdym Lispie to prawda, fałsz i lista pusta.
[edytuj] Scheme
- Prawda - #t
- Fałsz - #f
- Lista pusta - ()
[edytuj] Common Lisp i Emacs Lisp
- Prawda - t
- Fałsz - nil
- Lista pusta - nil, można używać też ()
[edytuj] Definicje
W Scheme istnieje tylko jedna przestrzeń nazw obejmujący stałe i funkcje oraz zmienne "zwykłe" i zmienne funkcyjne. W Common Lispie i Emacs Lispie funkcje i stałe traktowane są inaczej.
Dla przykładu zdefiniujmy stałą 2π oraz funkcję wyższego rzędu która przekazaną funkcję aplikuje na argumentach 2 i 3.
[edytuj] Scheme
(define two_pi 6.28318) (define (apply2_3 f) (f 2 3)) (/ two_pi 3.14159) ;; 2.0 (apply2_3 +) ;; 5 (apply2_3 >) ;; #f
[edytuj] Common Lisp
Istnieją osobne systemy definiowania funkcji i definiowania stałych. Funkcje przekazywane jako argumenty trzeba poprzedzić #'
(defconstant two_pi 6.28318) (defun apply2_3 (f) (funcall f 2 3)) (/ two_pi 3.14159) ;; 2.0 (apply2_3 #'+) ;; 5 (apply2_3 #'>) ;; nil
[edytuj] Emacs Lisp
(defconst two_pi 6.28318) (defun apply2_3 (f) (funcall f 2 3)) (/ two_pi 3.14159) ;; 2.0 (apply2_3 #'+) ;; 5 (apply2_3 #'>) ;; nil
[edytuj] Operacje na listach
We wszystkich dialektach jest możliwe posługiwanie się podstawowymi operacjami:
- Konstruktor listy pustej: ()
- Konstruktor listy z pary głowa ogon: (cons głowa ogon)
- Bezpośrednia konstrukcja listy: '(element1 element2 element3 element4)
- Pobranie głowy: (car lista)
- Pobranie ogona: (cdr lista)
Zdefiniowane są też zwykle kombinacje dwóch do czterech car i cdr postaci, czytane z prawej do lewej, np.:
- (cadr '(1 2 3))
- (car (cdr '(1 2 3)))
- (car '(2 3))
- 2
Różnią się one traktowaniem listy nie zawierającej wystarczająco dużo argumentów - w Scheme jest to błąd, w Common Lisp i Emacs Lisp zwracany jest nil.
W Common Lisp i Emacs Lisp istnieją też aliasy:
- first, równy car - pierwszy element listy
- second, równy cadr - drugi element listy
- third, równy caddr - trzeci element listy
- itd., aż do tenth
[edytuj] Funkcje logiczne
W Scheme dość konsekwentnie stosuje się zasadę kończenia funkcji zwracających wartości logiczne znakiem zapytania:
(equal? 3 4) ;; #f (equal? 4 4) ;; #t
Czego nie robi siÄ™ w innych omawianych Lispach:
(equal 3 4) ;; nil (equal 4 4) ;; t
Pytania o typ w Scheme kończą się również znakiem zapytania:
(number? "cztery") ;; #f (number? 4) ;; #t
Natomiast w innych Lispach literÄ… p:
(numberp "cztery") ;; nil (numberp 4) ;; t
[edytuj] Funkcje anonimowe i mapowanie list
Funkcje anonimowe tworzy siÄ™ za pomocÄ… lambdy i stosuje jak normalne funkcje:
(lambda (x) (+ x 1)) ((lambda (x) (+ x 1)) 2) ;; 3
Do mapowania w Scheme służy funkcjonał map:
(map (lambda (x) (+ x 1)) '(1 2 3)) ;; (2 3 4)
W innych Lispach zaÅ› mapcar:
(mapcar (lambda (x) (+ x 1)) '(1 2 3)) ;; (2 3 4)
| Audycja o gwiazdach show-biznesu w RMF FM |
|
Od jutra RMF FM bÄ™dzie emitowaÅ‚ cotygodniowy program "SzoÅ‚" z informacjami o gwiazdach show-biznesu. Magazyn o tak samo brzmiÄ…cym tytule zacznie wkrótce wydawać wÅ‚aÅ›ciciel rozgÅ‚oÅ›ni – Wydawnictwo Bauer.
|
| TVP wybrała audytora do sprawdzenia rezerw |
|
Audyt w Telewizji Polskiej SA w zakresie zasad tworzenia i rozwiązywania rezerw przeprowadzi firma Finanse-Servis Zespół Doradców Finansowo-Księgowych.
|
| 13 wnioskodawców w konkursach koncesyjnych |
|
Trzynastu chętnych ubiega się o częstotliwości radiowe w sześciu konkursach ogłoszonych przez Krajową Radę Radiofonii i Telewizji. Najwięcej wnioskodawców zgłosiło się do walki o częstotliwość stołeczną.
|
| Polsat: 400 osób do obsługi siatkarskiego mundialu |
|
Przy realizacji transmisji z Mistrzostw Świata w siatkówce mężczyzn, które w 2014 roku odbędą się w Polsce, pracować ma w Polsacie 350-400 osób.
|
| Nowy dwutygodnik "Show" |
|
Nowe pismo Wydawnictwa Bauer ”Show. Magazyn o Gwiazdach” bÄ™dzie dwutygodnikiem – dowiedziaÅ‚ siÄ™ nieoficjalnie "Presserwis".
|