LISP (LISP, din lista de Procesare engleză -. «Liste de prelucrare") - o familie de limbaje de programare bazate pe prezentarea sistemului program de liste liniare de caractere, care, de altfel, sunt structura principală a datelor lingvistice. LISP este al doilea cel mai vechi după Fortran limbaj de programare de nivel înalt.
Limba Lisp a fost propus de J .. McCarthy în 1960 și este axat pe dezvoltarea de programe pentru a rezolva probleme nu caracter numeric. Numele limba engleză a limbii - LISP este un termen de prelucrare LISt prescurtată (prelucrare listă) și subliniază bine sfera de bază a aplicării sale. Termenul „lista“ a fost foarte receptiv. În forma de liste este convenabil pentru a reprezenta expresii algebrice, grafice, elemente ale grupurilor finite, stabilit regulile de inferență, precum și multe alte obiecte complexe. Listele sunt forma cea mai flexibilă de prezentare a informațiilor în memoria calculatorului. Nu este surprinzător, prin urmare, că un limbaj convenabil special conceput pentru tratamentul listelor, a câștigat rapid popularitate.
Marele avantaj al Lisp este orientarea sa funcțională, t. E. Programarea se realizează cu ajutorul funcțiilor. În cazul în care funcția este înțeleasă ca o regulă, este nevoie de un element al unei clase de elemente corespunzătoare ale altei clase. proces de potrivire în sine nu are niciun efect asupra funcționării programului, acesta este singurul rezultat important - valoarea funcției. Acest lucru face relativ ușor de a scrie și de a depana un sisteme mari de software. Programele Claritatea delimitare clară a funcțiilor, nu are efecte secundare dificile în punerea lor în aplicare este o cerință pentru programarea de provocări logice, care sunt provocările inteligenței artificiale. Disciplina în programare devine deosebit de important atunci când mai mult de o persoană care lucrează la program, dar un grup de programatori.
limbaj de programare Lisp destinate în primul rând pentru tratamentul informațiilor caracter. Prin urmare, este firesc ca în lumea Lisp nu joacă nici un rol major. Principalele tipuri de date în Lisp numit „atom“ și „pereche punctată“.
Elemente de sintaxă:
O expresie regulată ID variabilă
orice combinație de caractere care nu conține spații și nu este un număr
Element de identificare a funcției Expresie regulată
Rezultatul acestui cod care rulează în modul interactiv are următoarea formă:
Bună ziua, lume!
NIL
Prima linie cuprinde un standard de ieșire, al doilea - valoarea returnată a codului (în acest caz - lipsa acestora).
factorial:
Acest exemplu utilizează definiția recursivă factorial este natural pentru Lisp. Aceasta demonstrează următoarele caracteristici ale limbii:
- operatorii matematici: (- n 1) - o intrare prefix, infixat echivalent n-1;
- operatori de comparare: (= n 0) returnează T, când n este zero și zero (folosit ca fals) în alt mod;
- condiționată, în cazul. expresiile Lisp sunt definite între paranteze drepte și pot fi stocate ca câteva rânduri;
- Funcția de determinare folosind defun;
- bucla Common Lisp macro;
- O specificație de format în format.
D corespunde unui număr întreg, și
Numerele Fibonacci:
Acesta utilizează definiția recursiv numerelor lui Fibonacci. Partea în final bucla macro este executată după încheierea ciclului.
Numerele Fibonacci:
Acest exemplu utilizează definiția iterativ de numere Fibonacci fără memorare, exprimată în termenii unui apel recursiv la FIB-iter funcția.
factorial:
Bucla interioară cu operare collect creează o listă a numerelor de la 1 la n. * După care operațiunea i se aplică.
ecuația pătratică:
Frecvente Lisp vă permite să lucrați cu numere complexe și să le imprimați în format #c (imag real). Funcția de scriere-la-string convertește numărul la un șir de caractere.
CamelCase:
Bună ziua, World!:
linie de ieșire de imprimare - efect secundar al acestei comenzi este executata. În funcție de punerea în aplicare, echipa va reveni sau text derivate sau valoarea de returnare de studii.
Bună ziua, World!:
factorial:
Se folosește definiția recursivă factorial. Funcția interval cu un singur argument generează o listă de numere de la 0 până la și inclusiv acest număr. str - funcția de concatenare șir. Funcția dec este echivalentă cu (- x 1). doseq - pentru buclă în Clojure.
factorial:
Pentru a calcula intervalul factorial creat de numere de la 2 la acest număr, și produsul acestor numere este calculat (funcția se aplică).
Numerele Fibonacci:
Folosind calculul recursiv al numerelor lui Fibonacci.
factorial:
Se folosește definiția recursivă factorial. Rețineți că vicleșug GNU și schema MIT / GNU afișează rezultatul corect, dar JScheme preaplin are loc, și factorialele cu 13! calculat incorect.
Numerele Fibonacci:
Acesta utilizează definiția recursiv numerelor lui Fibonacci.
ecuația pătratică:
ecuația pătratică:
începe construcția este utilizat pentru a efectua mai multe comenzi într-un rând.
CamelCase:
Acest exemplu ilustrează funcționarea modulului regulate expresii regex. Primele două linii de a conecta modulele necesare. În al treilea rând - citirea unui șir de date de intrare de comandă a spus citit-line (modulul rdelim) - în contrast pentru a citi. citește toate caracterele până la sfârșitul șirului, și nu la primul spațiu - și traduce într-un caz mai mic.
A patra secvență de comandă este toate literele cu litere mici într-un rând. Pentru fiecare astfel de secvență îl înlocuiește cu rezultatul aplicării unei anumite funcții la ea (atașat prin lambda). În acest caz, funcția de coarde-titlecase. transformă primul caracter la majuscule.
În cele din urmă, a cincea comandă elimină de la linia de toate caracterele care nu sunt litere.