Está en la página 1de 15

Manual de referencia de Scheme

El lenguaje de programacin Scheme

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 programacin, utiliza de manera anloga a las palabras los denominados smbolos y stos se forman uniendo las letras del alfabeto (sin distinguir maysculas de minsculas), los dgitos del 0 al 9 y cualquier otro carcter que aparezca en el teclado salvo: ( ) [ ] { } ; , "' ` # \ ya que tienen un signicado especial, similar al que tienen los signos de puntuacin. Los caracteres:

+ - . tambin son especiales y no deben aparecer en primer lugar en un smbolo. Los nmeros no se consideran smbolos en Scheme. Un smbolo que es usado para representar un valor se denomina variable. El intrprete determinar el signicado de cada variable; los nmeros tienen su valor usual. Siguiendo la analoga con los lenguajes el equivalente en Scheme a las frases son las expresiones, que pueden consistir en un smbolo, un nmero o una lista, es decir, un parntesis izquierdo, seguido de expresiones separadas por espacios en blanco, y para terminar un parntesis derecho. La primera de dichas expresiones debe evaluar a un procedimiento, evalundose las restantes como los argumentos del mismo.
Notacin

En lo que sigue utilizaremos la siguiente notacin al escribir las expresiones: (procedimiento expresion 1 . . . expresion k ) es decir, el nombre del procedimiento aparecer en negrita y los argumentos en itlica. Adems 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

nmero complejo nmero real nmero entero nmero natural obj, expresion, ex expresiones

l lista cter carcter cad cadena proc procedimiento de cualquier tipo sucesin 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 continuacin enumeraremos las expresiones ms usuales seguidas de su valor.

CcIa

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 smbolo entonces #t; e.o.c. #f. Si obj es de tipo procedimiento entonces #t; e.o.c. #f. Si obj es de tipo nmero entonces #t; e.o.c. #f. Si obj es de tipo par punteado entonces #t; e.o.c. #f. Si obj es la lista vaca 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 carcter entonces #t; e.o.c. #f. Si obj es de tipo cadena entonces #t; e.o.c. #f.

Ningn objeto verica ms de uno de los predicados 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 numrica entre los argumentos. Igualdad simblica. Igualdad numrico-simblica. Igualdad de valores.

Variables y literales

expresion

Valor de expresion. Le asigna a simbolo el valor de obj.

(define simbolo obj ) (quote obj ) 'obj

obj.

Los nmeros, caracteres, cadenas y valores de verdad (o booleanos), evalan 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). Evala cada obj j , en un entorno local, asigna a cada simbolo s el valor de obj s y a continuacin evala de forma consecutiva ex1 . . . ex r , devolviendo el valor de la ltima.

CcIa

Manual de referencia de Scheme

3 En un entorno local, asigna, de manera secuencial, a cada simbolo s el valor de obj s y a continuacin evala de forma consecutiva ex1 . . . ex r , devolviendo el valor de la ltima. Similar a let, pero permite hacer deniciones de procedimientos recursivos. Asigna el valor de expresion a simbolo, que ya debe tener asignado algn valor. Devuelve un valor no especco.

(let* ([(simbolo1 obj1 ) . . . (simbolok objk )]) ex 1 [ex2 . . . ex r ]) (letrec variables cuerpo ) (set! simbolo expresion )

Expresiones lambda

(lambda argumentos cuerpo )


argumentos puede ser: (simbolo1 . . . simbolo k )

Devuelve un procedimiento. Lista de smbolos (todos distintos) que representan a cada argumento de la funcin, la cual ser, por tanto, de aridad la longitud de dicha lista. Smbolo que representa a una lista con los argumentos. Por tanto ser de aridad variable. Los primeros k argumentos se guardan en las variables simb1 a simbk . El resto de argumentos se guardan en una lista en variable. El procedimiento es, por tanto, de aridad al menos k .

variable

(simb1 . . . simbk . variable )

cuerpo : Sucesin de expresiones que describen la funcin.

(define (simb simb1 . . . simbk ) Equivalente a cuerpo ) (define simb (lambda (simb1 . . . simbk ) cuerpo )) (define (simbolo . variable ) cuerpo )
Equivalente a (define simbolo (lambda variable cuerpo )) Equivalente a (define simb

(define (simb s1 . . . sk . var ) cuerpo )

(lambda (s1 . . . sk . var ) cuerpo ))

Abstraccin de procedimientos

(apply proc ex 1 [ex2 . . . exk ])

(ex k una lista), aplica proc con argumentos ex1 . . . ex k1 y los elementos de ex k .

CcIa

Manual de referencia de Scheme

(map proc l 1 [l2 . . . l k ])

Aplica proc a cada elemento de l 1 ; si existe ms de una lista, todas han de tener la misma longitud y aplica proc tomando como argumentos un elemento de cada lista, devuelve la lista de los resultados. Aplica proc a cada elemento de l 1 ; si existe ms de una lista, todas han de tener la misma longitud y aplica proc tomando como argumentos un elemento de cada lista, devuelve un valor no especco.

(for-each proc l 1 [l2 . . . l k ])

Procedimientos numricos

(+ [z1 . . . zk ]) (- z1 [z2 . . . zk ]) (* [z1 . . . zk ]) (/ z1 [z2 . . . zk ]) (sqrt z ) (abs x ) (sin z ) (cos z ) (tan z ) (asin z ) (acos z ) (atan z ) (max x1 [x2 . . . xk ]) (min x1 [x2 . . . xk ]) (quotient n1 n2 ) (remainder n1 n2 ) (expt z1 z2 ) (exp z ) (log z ) (gcd [n1 . . . nk ])

Suma de los argumentos; sin argumentos, 0. Resta de los argumentos, asociando por la izquierda; con un solo argumento, z1 . Producto de los argumentos; sin argumentos, 1. Divisin de los argumentos asociando por la izquierda; con un solo argumento, 1/z . Raz cuadrada principal de z (si z es real, la raz cuadrada positiva). Valor absoluto de x. Seno de z. Coseno de z. Tangente de z. Arcoseno de z. Arcocoseno de z. Arcotangente de z. Mximo entre los argumentos. Mnimo entre los argumentos. (n2 distinto de cero), cociente de n1 entre n2 . (n2 distinto de cero), resto de n1 entre n2 . La potencia z1 z2 (con 00 = 1). La potencia ez . Logaritmo en base e de z. Mximo comn divisor entre los argumentos; sin argumentos, 0.

CcIa

Manual de referencia de Scheme

(lcm [n1 . . . nk ]) (floor x ) (ceiling x ) (truncate x ) (round x ) (exact->inexact z ) (inexact->exact z )

Mnimo comn mltiplo entre los argumentos; sin argumentos, 1. Mayor entero menor o igual que x. Menor entero mayor o igual que x. Parte entera de x. Entero ms cercano a x, en caso de equidistancia nmero entero par ms cercano. El nmero inexacto numricamente ms cercano a z. El nmero exacto numricamente ms cercano a z.

Predicados numricos

(complex? obj ) (real? obj ) (rational? obj ) (exact? z ) (inexact? z ) (integer? obj ) (even? n ) (odd? n ) (zero? z ) (positive? x ) (negative? x )

Si obj es un nmero complejo entonces #t; e.o.c. #f. Si obj es un nmero real entonces #t; e.o.c. #f. Si obj es un nmero racional entonces #t; e.o.c. #f. Si z es exacto, entonces #t; e.o.c #f. Si z es inexacto, entonces #t; e.o.c #f. Si obj es un nmero entero entonces #t; e.o.c. #f. Si n es par entonces #t; e.o.c. #f. Si n es impar entonces #t; e.o.c. #f. Si z es el cero entonces #t; e.o.c. #f. Si x es mayor estricto que cero entonces #t; e.o.c. #f. Si x es menor estricto que cero entonces #t; e.o.c. #f.

Relaciones numricas

(> x1 [x2 . . . xk ]) (< x1 [x2 . . . xk ]) (>= x1 [x2 . . . xk ]) (<= x1 [x2 . . . xk ])

Los argumentos estn en orden decreciente. Los argumentos estn en orden creciente. Los argumentos estn en orden no creciente. Los argumentos estn en orden no decreciente.

CcIa

6
Pares

Manual de referencia de Scheme

(cons obj1 obj 2 ) (car par ) (cdr par )

El par cuyo car es obj1 y cuyo cdr es obj2 . Primer elemento de par. Segundo elemento de par.

Procedimientos sobre listas

(cons obj lista ) (list [obj1 . . . obj k ]) (car lista ) (cdr lista ) (caar lista ) (cadr lista ) . . . (cdddar lista ) (cddddr lista ) (append [lista1 . . . lista k ]) (reverse lista ) (length lista ) (list-ref lista k ) (list-tail lista k ) (set-car! lista obj ) (set-cdr! lista obj )

Lista que resulta al incluir obj como primer elemento de lista. La lista de los argumentos; sin argumentos la lista vaca. Primer elemento de lista. Lista que resulta al quitarle el primer elemento a lista.

Composiciones de car y cdr.

Lista que resulta al unir los argumentos; sin argumentos, la lista vaca. Una lista con los mismos elementos que lista, pero dispuestos en orden inverso. Longitud de lista. Elemento de lista que ocupa la k -sima posicin. Sublista de lista obtenida eliminando los k primeros elementos. Almacena obj como el car de lista y devuelve un valor no especco. Hace que el cdr de lista apunte a obj y devuelve un valor no especco.

Predicados de pertenencia

Teniendo en cuenta que una sublista de una lista se obtiene por aplicaciones sucesivas de cdr.

(memq obj lista )

Primera sublista de lista cuyo primer elemento es igual que obj, comparando con eq?; e.o.c. #f.

CcIa

Manual de referencia de Scheme

7 Primera sublista de lista cuyo primer elemento es igual que obj, comparando con eqv?; e.o.c. #f. Primera sublista de lista cuyo primer elemento es igual que obj comparando con equal?; e.o.c. #f. Primer elemento de lista-par (una lista de pares punteados) cuyo primer elemento es igual que obj, comparando con eq?; e.o.c. #f. Primer elemento de lista-par (una lista de pares punteados) cuyo primer elemento es igual que obj, comparando con eqv?; e.o.c. #f. Primer elemento de lista-par (una lista de pares punteados) cuyo primer elemento es igual que obj, comparando con equal?; e.o.c. #f.

(memv obj lista ) (member obj lista ) (assq obj lista-par )

(assv obj lista-par )

(assoc obj lista-par )

Expresiones condicionales

(if test consecuencia [alternativa ]) (cond (test 1 [expresiones 1 ]) . . . (test k [expresiones k ]) [(else [expresiones k+1 ])])

Si test tiene como valor #f entonces alternativa (si no existe alternativa entonces un valor no especco), e.o.c. consecuencia. Evala test 1 . . . test k sucesivamente hasta encontrar el primer test i que no tenga como valor #f, en cuyo caso evala en orden las expresiones i devolviendo el valor de la ltima (si no existen devuelve el valor de dicho test i ). Si todo test i tiene como valor #f y existe la clusula else, evala en orden expresiones k+1 devolviendo el valor de la ltima; si no existen o no existe clusula else, devuelve un valor no especco. Evala clave y compara el resultado obtenido con cada uno de los datos i , sucesivamente. Si encuentra alguno que es igual (comparando con eqv?) evala en orden expresiones i devolviendo el valor de la ltima. Si el valor de clave es distinto a todos los datos i y existe la clusula else, evala en orden expresiones k+1 devolviendo el valor de la ltima; si no existe clusula else, devuelve un valor no especco.

(case clave ((datos 1 ) expresiones 1 ) . . . ((datos k ) expresiones k ) [(else expresiones k+1 )])

Operadores lgicos

(not obj ) (or [obj1 . . . obj k ])

Si obj tiene como valor #f entonces #t; e.o.c. #f. Evala obj1 . . . obj k sucesivamente hasta el primero que no tenga como valor #f y devuelve su valor, e.o.c. #f; sin argumentos, #f.

CcIa

Manual de referencia de Scheme

(and [obj1 . . . obj k ])

Evala obj1 . . . obj k sucesivamente hasta el primero que tenga como valor #f, e.o.c. el valor de obj k ; sin argumentos, #t.

Iteraciones

(do ((simbolo1 obj 1 [paso 1 ]) . . . (simbolok obj k [paso k ])) (test [ex1 . . . ex r ]) [expresion 1 . . . expresion s ])

Cada simbolo i recibe el valor de obj i . En cada iteracin del bucle se evala test : - si es #f se evalan expresion1 . . . expresion s sucesivamente y se actualizan los valores de cada simbolo i segn paso i (cuando existen). Comienza una nueva iteracin. - si no, se evalan ex1 . . . ex r sucesivamente devolviendo el valor de la ltima. Termina el bucle.

Procedimientos sobre vectores

(make-vector k [obj ])

Construye un vector con k elementos iguales a obj, si no existe obj el contenido del vector es indeterminado. Construye un vector con k elementos, cada uno de los cuales es obj i . Elemento de vector que ocupa la posicin k -sima. Nmero de elementos de vector. Lista con los elementos de vector. Vector con los elementos de lista. Almacena obj en el k -simo elemento de vector, devuelve un valor no especco. Cambia cada elemento de vector por obj. Devuelve un valor no especco.

(vector [obj1 . . . obj k ]) (vector-ref vector k ) (vector-length vector ) (vector->list vector ) (list->vector lista ) (vector-set! vector k obj ) (vector-fill! vector obj )

Procedimientos sobre caracteres

(char->integer caracter ) (integer->char n ) (char<? cter 1 [cter2 . . . cter k ])

Cdigo ASCII de caracter. Carcter con cdigo ASCII n. Comparacin de los valores numricos de cter i con <.

CcIa

Manual de referencia de Scheme

9 Comparacin de los valores numricos de cter i con <=. Comparacin de los valores numricos de cter i con >. Comparacin de los valores numricos de cter i con >=. Comparacin de los valores numricos de cter i con =. Comparacin de los valores numricos de cter i con <, sin distinguir maysculas de minsculas. Comparacin de los valores numricos de cter i con <=, sin distinguir maysculas de minsculas. Comparacin de los valores numricos de cter i con >, sin distinguir maysculas de minsculas. Comparacin de los valores numricos de cter i con >=, sin distinguir maysculas de minsculas. Comparacin de los valores numricos de cter i con =, sin distinguir maysculas de minsculas. Si caracter es minscula devuelve el mismo en mayscula; devuelve caracter e.o.c. Si caracter es mayscula devuelve el mismo en minscula; devuelve caracter e.o.c. Si obj es de tipo carcter mayscula, entonces #t; e.o.c. #f. Si obj es de tipo carcter minscula, entonces #t; e.o.c. #f. Si obj es de tipo carcter alfabtico, entonces #t; e.o.c. #f. Si obj es de tipo carcter numrico, entonces #t; e.o.c. #f. Si obj es de tipo carcter de espacio en blanco (espacio, tabulacin, salto de lnea, retorno de carro), entonces #t; e.o.c. #f.

(char<=? cter1 [cter2 . . . cter k ]) (char>? cter 1 [cter2 . . . cter k ]) (char>=? cter 1 [cter2 . . . cter k ]) (char=? cter 1 [cter2 . . . cter k ]) (char-ci<? cter 1 [cter2 . . . cter k ])

(char-ci<=? cter 1 [cter2 . . . cter k ])

(char-ci>? cter 1 [cter2 . . . cter k ])

(char-ci>=? cter 1 [cter2 . . . cter k ])

(char-ci=? cter 1 [cter2 . . . cter k ]) (char-upcase caracter ) (char-downcase caracter ) (char-upper-case? obj ) (char-lower-case? obj ) (char-alphabetic? obj ) (char-numeric? obj ) (char-whitespace? obj )

Procedimientos sobre cadenas

(string-length cadena )

Nmero de caracteres de cadena.

CcIa

10

Manual de referencia de Scheme

(make-string k [caracter ])

Construye una cadena con k caracteres iguales a caracter, si no existe caracter el contenido de la cadena es indeterminado. Construye una cadena de k caracteres, cada uno de los cuales es cter i . Carcter de cadena que ocupa la posicin k -sima. Almacena cter como elemento k -simo de cadena y devuelve un valor no especco. Trozo de cadena entre las posiciones k 1 y k 2 , la primera incluida. Concatenacin de las cadenas cad i , sin argumentos la cadena vaca. Lista con los caracteres de cadena. Cadena con los caracteres de lista (todos sus elementos han de ser caracteres). Una nueva cadena, copia exacta de cadena. Cambia cada elemento de cadena por el carcter cter. Devuelve un valor no especco. Comparacin de cad i con la extensin lexicogrca de char<. Comparacin de cad i con la extensin lexicogrca de char<=. Comparacin de cad i con la extensin lexicogrca de char>. Comparacin de cad i con la extensin lexicogrca de char>=. Comparacin de cad i con la extensin lexicogrca de char=. Comparacin de cad i con la extensin lexicogrca de char-ci<. Comparacin de cad i con la extensin lexicogrca de char-ci<=. Comparacin de cad i con la extensin lexicogrca de char-ci>. Comparacin de cad i con la extensin lexicogrca de char-ci>=. Comparacin de cad i con la extensin lexicogrca de char-ci=.

(string [cter1 . . . cter k ]) (string-ref cadena k ) (string-set! cadena k cter ) (substring cadena k1 k2 ) (string-append [cad1 . . . cad k ]) (string->list cadena ) (list->string lista ) (string-copy cadena ) (string-fill! cadena cter )

(string<? cad 1 [cad2 . . . cad k ]) (string<=? cad 1 [cad2 . . . cad k ]) (string>? cad 1 [cad2 . . . cad k ]) (string>=? cad 1 [cad2 . . . cad k ]) (string=? cad 1 [cad2 . . . cad k ]) (string-ci<? cad 1 [cad2 . . . cad k ]) (string-ci<=? cad 1 [cad2 . . . cad k ]) (string-ci>? cad 1 [cad2 . . . cad k ]) (string-ci>=? cad 1 [cad2 . . . cad k ]) (string-ci=? cad 1 [cad2 . . . cad k ])

CcIa

Manual de referencia de Scheme


Procedimientos de entrada y salida

11

(input-port? obj ) (output-port? obj ) (current-input-port) (current-output-port) (open-input-file chero ) (open-output-file chero )

Devuelve #t si obj es un puerto de entrada o salida, respectivamente; en caso contrario devuelve #f. Devuelve el puerto de entrada o salida por defecto (inicialmente el teclado y el monitor, respectivamente). Devuelve un puerto capaz de proporcionar caracteres del chero, que debe existir. Devuelve un puerto capaz de escribir caracteres en chero, que es creado al evaluar la expresin y, por tanto, inicialmente no debe existir. Evalan el procedimiento proc con un argumento: el puerto obtenido al abrir chero para entrada o salida, respectivamente. Se crea un puerto de entrada o salida conectado a chero, convirtindose dicho puerto en el puerto por defecto. A continuacin, se evala proc sin argumentos.

(call-with-input-file chero proc ) (call-with-output-file chero proc )

(with-input-from-file chero proc ) (with-output-to-file chero proc )

(eof-object? obj ) (read [puerto ])

Devuelve #t si obj es un dato de tipo nal de chero y #f en caso contrario. Devuelve el siguiente objeto de Scheme que se puede obtener del puerto de entrada dado (o el puerto de entrada por defecto, si se omite). Al llegar al nal del chero conectado a puerto, devuelve un objeto de tipo nal de chero. Devuelve el siguiente carcter que se puede obtener del puerto de entrada dado (o el puerto de entrada por defecto, si se omite). Al llegar al nal del chero conectado a puerto, devuelve un objeto de tipo nal de chero. Devuelve el siguiente objeto de Scheme que se puede obtener del puerto de entrada dado (o el puerto de entrada por defecto, si se omite), sin actualizar dicho puerto para que apunte al siguiente carcter. Si no hay caracteres disponibles, devuelve un objeto de tipo nal de chero. Escribe un objeto de tipo nal de lnea en puerto (o el puerto de entrada por defecto, si ste se omite). Devuelve un valor no especco.

(read-char [puerto ])

(peek-char [puerto ])

(newline [puerto ])

CcIa

12

Manual de referencia de Scheme

(write obj [puerto ])

Escribe una representacin escrita de obj en puerto (o el puerto de entrada por defecto, si ste se omite). Las cadenas se escriben delimitadas por comillas y los caracteres con la notacin #\. Devuelve un valor no especco. Escribe una representacin de obj en puerto (o el puerto de entrada por defecto, si ste se omite). Las cadenas se escriben sin estar delimitadas por comillas y los caracteres sin la notacin #\. Devuelve un valor no especco.

(display obj [puerto ])

Nota: Write se usa para producir salida legible por el ordenador, mientras que display
se usa para producir salida legible por una persona.

(write-char cter [puerto ])

Escribe el carcter cter (sin usar la notacin #\) en puerto (o en el puerto de entrada por defecto, si ste se omite). Devuelve un valor no especco.

Procedimientos de la librera grfica

Para utilizar la librera grca que se describe a continuacin, es necesario cargarla mediante la siguiente orden:

(require-library graphics.ss graphics). (open-graphics)


Inicializa las rutinas de la librera grca. Debe ser utilizada antes que ningn otro procedimiento de la misma. Cierra todas las ventanas. Hasta que no vuelva a utilizarse open-graphics no funcionar ninguna rutina grca Crea una ventana nueva, con nombre cad, de n1 pixels de anchura y n2 pixels de altura. Devuelve un objeto de tipo ventana. Borra la ventana indicada de la pantalla, impidiendo su uso posterior.

(close-graphics)

(open-viewport cad n1 n2 )

(close-viewport ventana )

Un objeto de tipo posicion es la localizacin de un pixel en un objeto de tipo ventana. El pixel situado en la esquina superior izquierda es el de coordenadas (0, 0) y la orientacin del eje de coordenadas viene representada en el siguiente dibujo:
(0,0) X

CcIa

Manual de referencia de Scheme

13 Devuelve el objeto de tipo posicion de coordenadas n1 y n2. Devuelve las coordenadas X e Y, respectivamente, de posicion. Devuelve #t si obj es un objeto de tipo posicion ; en caso contrario devuelve #f.

(make-posn n1 n2 ) (posn-x posicion ) (posn-y posicion ) (posn? obj )

Un color puede representarse de dos formas distintas: como una cadena (con el nombre del mismo, p.e. red) o como un objeto de tipo rgb. Cualquiera de los procedimientos que toma color como argumento acepta cualquiera de las representaciones.

(make-rgb rojo verde azul ) (rgb-red rgb ) (rgb-green rgb ) (rgb-blue rgb ) (rgb? obj )

Dados tres nmeros reales de 0 (oscuro) a 1 (claro) devuelve un objeto de tipo rgb. Devuelve los valores de rojo, verde y azul, respectivamente, de rgb. Devuelve #t si obj es un objeto de tipo rgb ; en caso contrario devuelve #f. Dada una ventana devuelve un procedimiento que colorea (resp. borra) el contenido completo de la misma utilizando color o negro, si se omite ste.

((draw-viewport ventana ) [color ]) ((clear-viewport ventana ))

((draw-pixel ventana ) posicion [color ]) ((clear-pixel ventana ) posicion ) ((draw-line ventana ) posicion1 posicion2 [color ]) ((clear-line ventana ) posicion1 posicion2 )

Dada una ventana devuelve un procedimiento que dibuja (resp. borra) un pixel en la misma, en la posicion especicada utilizando color ; o negro, si se omite ste. Dada una ventana devuelve un procedimiento que dibuja (resp. borra) una lnea en la misma, conectando las posiciones especicadas utilizando color ; o negro, si se omite ste. Dada una ventana devuelve un procedimiento que dibuja (resp. borra) el borde de un rectngulo en la misma, de altura y anchura dadas, siendo el vrtice superior izquierdo el que ocupa la posicion especicada, utilizando color ; o negro, si se omite ste.

((draw-rectangle ventana ) posicion altura anchura [color ]) ((clear-rectangle ventana ) posicion altura anchura )

((draw-solid-rectangle ventana ) Como el anterior, pero colorea toda la posicion altura anchura [color ]) gura utilizando color ; o negro, si se omite ((clear-solid-rectangle ventana ) ste. posicion altura anchura )

CcIa

14

Manual de referencia de Scheme

((draw-ellipse ventana ) posicion altura anchura [color ]) ((clear-ellipse ventana ) posicion altura anchura )

Dada una ventana devuelve un procedimiento que dibuja (resp. borra) el borde de la elipse inscrita en el rectngulo de altura y anchura dadas, siendo el vrtice superior izquierdo el que ocupa la posicion especicada, utilizando color ; o negro, si se omite ste. Como el anterior, pero colorea toda la gura utilizando color ; o negro, si se omite ste. Dada una ventana devuelve un procedimiento que dibuja (resp. borra) el borde de un polgono en la misma, siendo los vrtices los elementos de l-posiciones y considerando posicion como el desplazamiento del mismo. Utilizando color ; o negro, si se omite ste. Como el anterior, pero colorea toda la gura utilizando color ; o negro, si se omite ste.

((draw-solid-ellipse ventana ) posicion altura anchura [color ]) ((clear-solid-ellipse ventana ) posicion altura anchura ) ((draw-polygon ventana ) l-posiciones posicion [color ]) ((clear-polygon ventana ) l-posiciones posicion )

((draw-solid-polygon ventana ) l-posiciones posicion [color ]) ((clear-solid-polygon ventana ) l-posiciones posicion ) ((draw-string ventana ) posicion cadena [color ]) ((clear-string ventana ) posicion cadena ) ((get-string-size ventana ) cadena )

Dada una ventana devuelve un procedimiento que dibuja (resp. borra) una cadena en la misma, siendo el vrtice inferior izquierdo el que ocupa la posicion especicada, utilizando color ; o negro, si se omite ste. Dada una ventana devuelve un procedimiento que devuelve el tamao de cadena como una lista de dos nmeros, la anchura y la altura.

Otras funciones de inters

(load  nombre-chero  ) (trace [proc1 . . . proc k ])

Evala el contenido de nombre-chero. Redene proc1 . . . proc k . Estos nuevos procedimientos escriben los argumentos y salidas de cada llamada a los mismos. Devuelve la lista (proc1 . . . proc k ). Anula la anterior para cada proc i . Devuelve la lista (proc1 . . . proc r). Interrumpe al intrprete y devuelve un mensaje compuesto por cadena y una versin en forma de cadena de obj1 . . . objk . Evala de manera sucesiva ex1 . . . ex k y devuelve el valor de ex k ; sin argumentos devuelve un valor no especco.

(untrace [proc1 . . . proc r ]) (error cadena [obj1 . . . objk ])

(begin [ex1 . . . ex k ])

CcIa

Manual de referencia de Scheme

15 Devuelve un nmero entero aleatorio entre 0 y k 1. Cierra una sesin con el intrprete de Scheme.

(random k ) (exit)

CcIa

También podría gustarte