Ebooks, Audobooks and Classical Music from Liber Liber
a b c d e f g h i j k l m n o p q r s t u v w x y z





Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
Porównanie dialektów Lispa - Wikipedia, wolna encyklopedia

Porównanie dialektów Lispa

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 jeden rodzaj 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)
Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com