LISP - Sintaxis básica

Bloques de construcción básicos en LISP

Los programas LISP se componen de tres componentes básicos:

  • atom

  • list

  • string

Un atomes un número o una cadena de caracteres contiguos. Incluye números y caracteres especiales.

A continuación se muestran ejemplos de algunos átomos válidos:

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

UN list es una secuencia de átomos y / u otras listas entre paréntesis.

A continuación se muestran ejemplos de algunas listas válidas:

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

UN string es un grupo de caracteres entre comillas dobles.

A continuación se muestran ejemplos de algunas cadenas válidas:

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

Agregar comentarios

El símbolo de punto y coma (;) se utiliza para indicar una línea de comentario.

Por ejemplo,

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

; tell them your whereabouts

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

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es:

Hello World

I am at 'Tutorials Point'! Learning LISP

Algunos puntos notables antes de pasar al siguiente

A continuación se presentan algunos de los puntos importantes a tener en cuenta:

  • Las operaciones numéricas básicas en LISP son +, -, * y /

  • LISP representa una llamada de función f (x) como (fx), por ejemplo, cos (45) se escribe como cos 45

  • Las expresiones LISP no distinguen entre mayúsculas y minúsculas, cos 45 o COS 45 son iguales.

  • LISP intenta evaluar todo, incluidos los argumentos de una función. Solo tres tipos de elementos son constantes y siempre devuelven su propio valor

    • Numbers

    • La carta t, eso significa verdad lógica.

    • El valor nil, que significa falso lógico, así como una lista vacía.

Poco más sobre los formularios LISP

En el capítulo anterior, mencionamos que el proceso de evaluación del código LISP toma los siguientes pasos.

  • El lector traduce las cadenas de caracteres a objetos LISP o s-expressions.

  • El evaluador define la sintaxis de Lisp formsque se construyen a partir de expresiones-s. Este segundo nivel de evaluación define una sintaxis que determina qué expresiones-s son formas LISP.

Ahora, un formulario LISP podría ser.

  • Un átomo

  • Vacío o sin lista

  • Cualquier lista que tenga un símbolo como primer elemento

El evaluador funciona como una función que toma una forma LISP válida como argumento y devuelve un valor. Esta es la razón por la que ponemos elLISP expression in parenthesis, porque estamos enviando la expresión / formulario completo al evaluador como argumentos.

Convenciones de nomenclatura en LISP

El nombre o los símbolos pueden constar de cualquier número de caracteres alfanuméricos que no sean espacios en blanco, paréntesis de apertura y cierre, comillas simples y dobles, barra invertida, coma, dos puntos, punto y coma y barra vertical. Para usar estos caracteres en un nombre, debe usar el carácter de escape (\).

Un nombre puede tener dígitos, pero no completamente de dígitos, porque entonces se leería como un número. De manera similar, un nombre puede tener puntos, pero no puede estar compuesto completamente por puntos.

Uso de comillas simples

LISP evalúa todo, incluidos los argumentos de la función y los miembros de la lista.

A veces, necesitamos tomar átomos o listas literalmente y no queremos que sean evaluados o tratados como llamadas a funciones.

Para hacer esto, necesitamos preceder el átomo o la lista con una comilla simple.

El siguiente ejemplo demuestra esto.

Cree un archivo llamado main.lisp y escriba el siguiente código en él.

(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))

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es:

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