REDUCEplantilla
datos
Devuelve el resultado de aplicar la plantilla para acumular los elementos del argumento datos
, dos a la vez.
El argumento plantilla
debe tener dos ranuras.
Típicamente, plantilla
es el nombre de una operación asociativa, como "ADICION.
Si el argumento datos
contiene un solo elemento (un miembro de una lista o un carácter de una palabra), REDUCE devuelve ese elemento.
Si no, se aplica plantilla
primeramente con ?1
llenado con el segundo a último elemento y ?2
con el último elemento.
Entonces, si hay más elementos, se aplica la plantilla con ?1
llenado con el próximo elemento a la izquierda y ?2
con el resultado de la evaluación previa.
Este proceso continúa hasta que se ha usado todos los elementos en datos
.
El argumento datos
no debe ser vació.
Debe ser una lista o una palabra (no un vector).
Si plantilla
es el nombre de un procedimiento que acepta un número arbitrario de argumentos, es más eficiente de usar APLICA en vez de REDUCE.
REDUCE es bueno para los procedimientos que aceptan exactamente dos argumentos.
PARA MAX :a :b
DEVUELVE SISINO :a > :b [:a] [:b]
FIN
ESCRIBE REDUCE "MAX [2 3 8 7 9 0]
9
Alternativamente, puedes usar REDUCE para escribir MAX como un procedimiento que acepta cualquier número de argumentos, tal como ADICION:
PARA MAX [:argumentos] 2
SI VACIO? :argumentos [(LANZA "error [MAX necesita recibir más cosas])]
DEVUELVE REDUCE [SISINO ?1 > ?2 [?1] [?2]] :argumentos
FIN
ESCRIBE (MAX 2 3 8 7 9 0)
9