Scheme
El lenguaje de programación Scheme
1
En cualquier lenguaje tenemos palabras que se combinan siguiendo ciertas reglas para formar frases con signicado. A su vez, estas palabras se forman uniendo las letras de un abecedario. Scheme, como lenguaje de programación, utiliza de manera análoga a las palabras los denominados símbolos y éstos se forman uniendo lasletras del alfabeto (sin distinguir mayúsculas de minúsculas), los dígitos del 0 al 9 y cualquier otro carácter que aparezca en el teclado salvo: ( ) [ ] { } ; , "' ` # \ ya que tienen un signicado especial, similar al que tienen los signos de puntuación. Los caracteres:
+ - . también son especiales y no deben aparecer en primer lugar en un símbolo. Los números no se consideran símbolos enScheme. Un símbolo que es usado para representar un valor se denomina variable. El intérprete determinará el signicado de cada variable; los números tienen su valor usual. Siguiendo la analogía con los lenguajes el equivalente en Scheme a las frases son las expresiones, que pueden consistir en un símbolo, un número o una lista, es decir, un paréntesis izquierdo, seguido de expresiones separadas porespacios en blanco, y para terminar un paréntesis derecho. La primera de dichas expresiones debe evaluar a un procedimiento, evaluándose las restantes como los argumentos del mismo.
Notación
En lo que sigue utilizaremos la siguiente notación al escribir las expresiones: (procedimiento expresion 1 . . . expresion k ) es decir, el nombre del procedimiento aparecerá en negrita y los argumentos enitálica. Además tendremos en cuenta que si el nombre de un argumento es el nombre de un tipo (ver el apartado PREDICADOS DE TIPO), entonces el argumento debe ser del tipo nombrado . Usaremos el siguiente convenio:
z x n k
número complejo número real número entero número natural obj, expresion, ex expresiones
l lista cter carácter cad cadena proc procedimiento decualquier tipo sucesión de expresiones
Utilizaremos los corchetes para denotar expresiones opcionales y los puntos suspensivos para denotar varias ocurrencias.
(procedimiento obj1 . . . objk ) Indica que procedimiento es de aridad variable (procedimiento obj1 [obj 2 ])
Indica que procedimiento tiene dos argumentos y el segundo es opcional
A continuación enumeraremos las expresiones más usualesseguidas de su valor.
CcIa
2
Manual de referencia de Scheme
Predicados de tipo
(symbol? obj ) (procedure? obj ) (number? obj ) (pair? obj ) (null? obj ) (boolean? obj ) (vector? obj ) (char? obj ) (string? obj ) (list? obj )
Si obj es de tipo símbolo entonces #t; e.o.c. #f. Si obj es de tipo procedimiento entonces #t; e.o.c. #f. Si obj es de tipo número entonces #t; e.o.c.#f. Si obj es de tipo par punteado entonces #t; e.o.c. #f. Si obj es la lista vacía entonces #t; e.o.c. #f. Si obj es uno de los valores de verdad (o booleanos), #t o #f, entonces #t; e.o.c. #f. Si obj es de tipo vector entonces #t; e.o.c. #f. Si obj es de tipo carácter entonces #t; e.o.c. #f. Si obj es de tipo cadena entonces #t; e.o.c. #f.
Ningún objeto verica más de uno de lospredicados anteriores; otro predicado útil es: Si obj es de tipo lista entonces #t; e.o.c. #f.
Predicados de igualdad
(= z1 [z2 . . . zk ]) (eq? obj1 obj 2 ) (eqv? obj1 obj 2 ) (equal? obj1 obj 2 )
Igualdad numérica entre los argumentos. Igualdad simbólica. Igualdad numérico-simbólica. Igualdad de valores.
Variables y literales
expresion
Valor de expresion. Le asigna a simbolo elvalor de obj.
(define simbolo obj ) (quote obj ) ≡ 'obj
obj.
Los números, caracteres, cadenas y valores de verdad (o booleanos), evalúan a si mismos por lo que no necesitan quote.
(let ([(simbolo1 obj1 ) . . . (simbolok objk )]) ex 1 [ex2 . . . ex r ])
(Todos los simbolo i deben ser distintos). Evalúa cada obj j , en un entorno local, asigna a cada simbolo s el valor de obj s y a...
Regístrate para leer el documento completo.