[ << Tutorial de Scheme ] | [Top][Contents][Index] | [ Interfaces para programadores >> ] |
[ < Cálculos en Scheme ] | [ Up : Introducción a Scheme ] | [ Definir procedimientos > ] |
A.1.6 Procedimientos de Scheme
Los procedimientos de Scheme son expresiones de Scheme ejecutables que devuelven un valor resultante de su ejecución. También pueden manipular variables definidas fuera del procedimiento.
Definir procedimientos | ||
Predicados | ||
Valores de retorno |
[ << Tutorial de Scheme ] | [Top][Contents][Index] | [ Interfaces para programadores >> ] |
[ < Procedimientos de Scheme ] | [ Up : Procedimientos de Scheme ] | [ Predicados > ] |
Definir procedimientos
Los procedimientos se definen en Scheme con define
:
(define (nombre-de-la-función arg1 arg2 ... argn) expresión-de-scheme-que-devuelve-un-valor)
Por ejemplo, podemos definir un procedimiento para calcular la media:
guile> (define (media x y) (/ (+ x y) 2)) guile> media #<procedure media (x y)>
Una vez se ha definido un procedimiento, se llama poniendo el nombre del procedimiento dentro de una lista. Por ejemplo, podemos calcular la media de 3 y 12:
guile> (media 3 12) 15/2
[ << Tutorial de Scheme ] | [Top][Contents][Index] | [ Interfaces para programadores >> ] |
[ < Definir procedimientos ] | [ Up : Procedimientos de Scheme ] | [ Valores de retorno > ] |
Predicados
Los procedimientos de Scheme que devuelven valores booleanos se suelen llamar predicados. Por convenio (pero no por necesidad), los nombres de predicados acaban en un signo de interrogación:
guile> (define (menor-que-diez? x) (< x 10)) guile> (menor-que-diez? 9) #t guile> (menor-que-diez? 15) #f
[ << Tutorial de Scheme ] | [Top][Contents][Index] | [ Interfaces para programadores >> ] |
[ < Predicados ] | [ Up : Procedimientos de Scheme ] | [ Condicionales de Scheme > ] |
Valores de retorno
Los procedimientos de Scheme siempre devuelven un valor de retorno, que es el valor de la última expresión ejecutada en el procedimiento. El valor de retorno puede ser cualquier valor de Scheme válido, incluso una estructura de datos compleja o un procedimiento.
A veces, el usuario quiere tener varias expresiones de Scheme
dentro de un procedimiento. Existen dos formas en que se pueden
combinar distintas expresiones. La primera es el procedimiento
begin
, que permite evaluar varias expresiones, y devuelve
el valor de la última expresión.
guile> (begin (+ 1 2) (- 5 8) (* 2 2)) 4
La segunda forma de combinar varias expresiones es dentro de un
bloque let
. Dentro de un bloque let, se crean una serie de
ligaduras o asignaciones, y después se evalúa una secuencia de
expresiones que pueden incluir esas ligaduras o asignaciones. El
valor de retorno del bloque let es el valor de retorno de la
última sentencia del bloque let:
guile> (let ((x 2) (y 3) (z 4)) (display (+ x y)) (display (- z 4)) … (+ (* x y) (/ z x))) 508
[ << Tutorial de Scheme ] | [Top][Contents][Index] | [ Interfaces para programadores >> ] |
[ < Predicados ] | [ Up : Procedimientos de Scheme ] | [ Condicionales de Scheme > ] |