Varios
1.- INTRODUCCIÓN
1.1.- Introducción
GCLISP entra en el bucle principal del intérprete que va, indefinidamente a leer una expresión sobre el terminal, evaluarla e imprimir el valor de esta evaluación. GCLISP indica que espera la lectura de una expresión imprimiendo el carácter * al comienzo de cada línea. El valor de la evaluación de una expresión se imprime en la líneasiguiente.
C>GLISP // Para cargar el Golden Common Lisp.
Ejemplo:
C> GCLISP
// El sistema responde
GOLDEN COMMON LISP, Version 1.01
Copyright (C) 1985 by Gold Hill Computers
; Reading file INIT.LSP
Type Alt-H for Help
Top-Level
* (+ 2 3)
5
* (EXIT) // Para salir.
C>
1.2.- Objetos básicos
1.2.1.- Átomos
Símbolos:
Los símbolos son cadenas continuasde caracteres (conteniendo al menos un carácter no numérico).
Ejemplo:
- HIELO
- B5
- VAR-AUX
- +
Números:
GCLISP manipula números enteros sobre 16 bits (permitiendo calcular en el intervalo [¡215 + 1; 215 ¡ 1] , i.e. [-32767, 32767]) y números flotantes sobre 128 bits (permitiendo calcular en el intervalo [-1.0F+38, 1.0F+38]).
Ejemplo:
- (+ 4 9)- 13
Cadena de caracteres:
Una cadena de caracteres es una sucesión de caracteres, con o sin huecos, que comienza y termina por dobles comillas.
Ejemplo:
- “10 8 C”
- “JOSE MANUEL”
1.2.2.- Listas
Una lista es una sucesión ordenada, posiblemente vacía, de objetos. Sintácticamente, se compone de un paréntesis abierto, objetos separados por huecos y un paréntesis cerrado.Ejemplo:
- (a b c 1 2 12)
- ( )
- (a b ( x ))
1.3.- Función básica de intérprete:
1.3.1.- Evaluación de los átomos:
El valor de un número es el propio número.
El valor de un símbolo es:
- El número que tenga asignado si actúa como variable numérica.
- La S-Expresión que tenga asignada en caso contrario.
El valor de una cadena de caracteres es lapropia cadena.
Ejemplo:
- CL-USER 1 > setq CAD “A B C” //Para una cadena.
“A B C”
- CL-USER 1 > setq NUM 12 //Para un símbolo.
12
1.3.2.- Evaluación de listas:
Se interpreta como llamadas a funciones.
Ejemplo:
- CL-USER 1 > setq L (+ 2 +3)
5
- CL-USER 2 > setq M (+ 4 5)
9
- CL-USER 3 > setq SUMA(+ L M)
14
2.-DEFINICIÓN DE FUNCIONES:
2.1.- Funciones anónimas
((LAMBDA (var1...varN) s1...sM) val1...valN)
Asocia los valores val1,..., valN a las variables var1,..., varN; evalúa las expresiones s1,..., sM y devuelve el valor de sM.
Ejemplo:
- CL-USER 1 > ((Lambda (M N) (+ M N)) 4 5)
9
- CL-USER 2 > (Mapcar #'(Lambda (N)(* 2 N))'(3 2 4))
(6 4 8)
2.2 Funciones con nombres(DEFUN simb l s1...sN)
Permite definir nuevas funciones.
simb es el nombre de la función definida.
l es la lista de parámetros (argumentos); son variables locales que no afectan a posibles valores previos, en general. Si no hay argumentos, es obligatorio poner (). s1,..., sN son las expresiones que definen el cuerpo de la función.
Devuelve simb.
Ejemplo:
- CL-USER 6 > (Defun Cubo(C)(* C C))
CUBO
CL-USER 7 > (CUBO 3)
9
- CL-USER 8 > (Defun Doble (D)(* 2 D))
DOBLE
CL-USER 9 > (Doble 4)
8
3.- PREDICADOS:
3.1.- Valores lógicos
NIL su valor es NIL y representa “lo falso”. Puede escribirse como ().
T su valor es T y representa “lo verdadero”.^
Ejemplo:
- CL-USER 15 > ( )
NIL- CL-USER 16 > Nil
NIL
3.2.- Predicados de tipos
(NULL s) Devuelve T, si s es NIL y NIL, si no.
Ejemplo:
- CL-USER 14 > setq S ()
NIL
- CL-USER 15 > NULL S
T
(ATOM s) Devuelve T, si s es un átomo y NIL, si no.
Ejemplo:
- CL-USER 16 > (Atom 12)
T
- CL-USER 17 > (Atom '(X Y Z))
NIL
(SYMBOLP s) Devuelve T, si s...
Regístrate para leer el documento completo.