Porównanie dialektów Lispu - Google

Porównanie dialektów Lispu

Z Wikipedii

Skocz do: nawigacji, szukaj

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".
Linki: Strona g³ówna