Tipos de datos en Lisp:
En Lisp
tenemos: números, cadenas de caracteres, listas, símbolos y
funciones.
CADENAS DE CARACTERES
Las cadenas de caracteres
van entre comillas, como en otros lenguajes:
> “esto es una
cadena”
“esto es una cadena”
SIMBOLOS
Los símbolos
son espacios de memoria que pueden contener valores tal como lo hacen
las variables en otros lenguajes. Sin embargo, aquí un símbolo es
algo mas que lo que llamamos variable en otros lenguajes, así como
ellas tiene un nombre que es una cadena de caracteres, y puede tener
un valor asociado que puede ser un numero, una cadena o una lista.
Pero además del espacio de valor, posee otros dos espacios: un
espacio de función, y un espacio de lista de propiedades o plist.
Una de las manera de
asignar un valor a un símbolo es usando setq:
> (setq x “Hola”)
“Hola”
> (setq y 45)
45
El
intérprete siempre evalúa lo que pongamos en el prompt. Si
colocamos el símbolo, evaluará y devolverá su valor.
> x
“Hola”
> y
45
Si colocamos cualquier
valor, devolverá el valor mismo.
> “Gato”
“Gato”
Si colocamos una función
devolverá el resultado luego de evaluarla:
> (cuadrado 3)
9
Para desactivar la
evaluación usamos la función quote y nos devolverá el símbolo
mismo:
> (quote x)
X
Para simplificar el uso de
quote se usa la comilla simple:
> 'x
X
> 'y
Y
LISTAS
Las listas
pueden contener números, cadenas, símbolos, funciones y otras
listas. Una de las maneras de hacer una lista es desactivando la
evaluación:
> '(1 4 56)
(1 4 56)
Pues de lo contrario
evaluará a la lista, tomándola como una función:
> (1 4 56)
*** - EVAL: 1 is not a
function name; try using a symbol instead
El
intérprete intenta tomar a 1 como nombre de una función y el resto
serían sus argumentos. Como no se pueden usar números como nombres
de función devuelve error.
Otro ejemplo:
> '(cuadrado 4)
(CUADRADO 4)
Como la
evaluación está desactivada, el intérprete devuelve la lista
formada por el símbolo cuadrado y el número 4. Con la evaluación
activa:
> (cuadrado 4)
16
Evalúa la función
cuadrado y devuelve el resultado correspondiente.
Otro ejemplo de lista y
van...
> '(2.32 -7 4E-5 #C(1
-1) “esta lista es copada” (1 2 3 a) b)
(2.32 -7 “esta lista es
copada” (1 2 3 A) B)
NUMEROS
Los
números pueden ser enteros, decimales, de coma flotante, fracciones
o complejos.
Tipos
|
Ejemplos
|
|
Enteros
|
> -3
-3
|
> 5
5
|
Decimales
|
> 7.8
7.8
|
>
3.14159265
3.14159265
|
Notación Científica
|
>
4.46E4
44600.0
>
1.65E6
1650000.0
|
>
7.9E-12
7.9E-12
>
8.2E32
8.2E32
|
Fracciones
|
> 2/3
2/3
|
> -5/8
-5/8
|
Complejos
El primer valor
corresponde a la parte real, el segundo a la imaginaria.
|
> #C(2
3)
#C(2 3)
|
> #C(-1
5)
#C(-1 5)
|
Algunas
Operaciones Aritméticas
Operación Aritmética
|
Ejemplos
|
|
Suma
|
> (+ 1
2)
> 3
> (+
3.2 7)
10.2
|
> (+
3/2 1/5)
17/10
> (+
#C(2 3) #C(1 -5))
#C(3 -2)
|
Resta
|
> (- 6
9)
-3
|
> (-
#C(1 1) #C(2 3))
#C(-1 -2)
|
Multiplicación
|
> (* 3
4)
12
|
> (* 2
3 7)
42
|
División
|
> (/ 4
-2)
-2
|
> (/ 15
6)
5/2
|
Potencia
|
> (expt
2 3)
8
> (expt
7/8 5)
16807/32768
|
> (expt
#C(4 -1) -2)
#C(15/289 8/289)
|
Raíz cuadrada
|
> (sqrt
16)
4
|
No hay comentarios:
Publicar un comentario