REDUCE

Sinopsis
REDUCE plantilla datos
Descripción

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.

Ejemplo
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

SourceForge.net Logo