LISP - podstawowa składnia

Podstawowe bloki konstrukcyjne w LISP

Programy LISP składają się z trzech podstawowych bloków konstrukcyjnych -

  • atom

  • list

  • string

Na atomto liczba lub ciąg ciągłych znaków. Zawiera cyfry i znaki specjalne.

Poniżej znajdują się przykłady niektórych prawidłowych atomów -

hello-from-tutorials-point
name
123008907
*hello*
Block#221
abc123

ZA list jest sekwencją atomów i / lub innych list umieszczonych w nawiasach.

Poniżej znajdują się przykłady niektórych prawidłowych list -

( i am a list)
(a ( a b c) d e fgh)
(father tom ( susan bill joe))
(sun mon tue wed thur fri sat)
( )

ZA string to grupa znaków ujęta w podwójne cudzysłowy.

Poniżej znajdują się przykłady niektórych prawidłowych ciągów -

" I am a string"
"a ba c d efg #$%^&!"
"Please enter the following details :"
"Hello from 'Tutorials Point'! "

Dodawanie komentarzy

Symbol średnika (;) służy do wskazania wiersza komentarza.

Na przykład,

(write-line "Hello World") ; greet the world

; tell them your whereabouts

(write-line "I am at 'Tutorials Point'! Learning LISP")

Kiedy klikniesz przycisk Wykonaj lub naciśniesz Ctrl + E, LISP wykona go natychmiast, a zwrócony wynik to -

Hello World

I am at 'Tutorials Point'! Learning LISP

Kilka ważnych punktów przed przejściem do następnego

Poniżej przedstawiono kilka ważnych punktów, na które należy zwrócić uwagę -

  • Podstawowe operacje numeryczne w LISP to +, -, * i /

  • LISP reprezentuje wywołanie funkcji f (x) jako (fx), na przykład cos (45) jest zapisywane jako cos 45

  • W wyrażeniach LISP nie jest rozróżniana wielkość liter, cos 45 lub COS 45 są takie same.

  • LISP próbuje ocenić wszystko, łącznie z argumentami funkcji. Tylko trzy typy elementów są stałymi i zawsze zwracają własną wartość

    • Numbers

    • Litera t, to oznacza logiczną prawdę.

    • Wartość nil, co oznacza logiczne fałsz, a także pustą listę.

Niewiele więcej o formularzach LISP

W poprzednim rozdziale wspomnieliśmy, że proces oceny kodu LISP obejmuje następujące kroki.

  • Czytelnik tłumaczy ciągi znaków na obiekty LISP lub s-expressions.

  • Ewaluator definiuje składnię Lisp formsktóre są zbudowane z s-wyrażeń. Ten drugi poziom oceny definiuje składnię, która określa, które wyrażenia s są formami LISP.

Teraz mogą być formularze LISP-a.

  • Atom

  • Pusta lub nie będąca listą

  • Każda lista, której pierwszym elementem jest symbol

Ewaluator działa jako funkcja, która przyjmuje prawidłową formę LISP jako argument i zwraca wartość. To jest powód, dla którego umieściliśmyLISP expression in parenthesis, ponieważ wysyłamy całe wyrażenie / formularz do oceniającego jako argumenty.

Konwencje nazewnictwa w LISP

Nazwa lub symbole mogą składać się z dowolnej liczby znaków alfanumerycznych innych niż spacje, nawiasy otwierające i zamykające, cudzysłowy podwójne i pojedyncze, ukośnik odwrotny, przecinek, dwukropek, średnik i kreska pionowa. Aby użyć tych znaków w nazwie, musisz użyć znaku zmiany znaczenia (\).

Nazwa może mieć cyfry, ale nie w całości składać się z cyfr, ponieważ wtedy byłaby czytana jako liczba. Podobnie nazwa może mieć kropki, ale nie może składać się wyłącznie z kropek.

Stosowanie pojedynczego cudzysłowu

LISP ocenia wszystko, łącznie z argumentami funkcji i członkami listy.

Czasami musimy wziąć atomy lub listy dosłownie i nie chcemy, aby były one oceniane lub traktowane jako wywołania funkcji.

Aby to zrobić, musimy poprzedzić atom lub listę pojedynczym cudzysłowem.

Poniższy przykład ilustruje to.

Utwórz plik o nazwie main.lisp i wpisz w nim następujący kod.

(write-line "single quote used, it inhibits evaluation")
(write '(* 2 3))
(write-line " ")
(write-line "single quote not used, so expression evaluated")
(write (* 2 3))

Kiedy klikniesz przycisk Wykonaj lub naciśniesz Ctrl + E, LISP wykona go natychmiast, a zwrócony wynik to -

single quote used, it inhibits evaluation
(* 2 3) 
single quote not used, so expression evaluated
6