Mensaje de orden superior


Un mensaje de orden superior ( HOM ) en un lenguaje de programación de computadoras es una forma de programación de orden superior que permite mensajes que tienen otros mensajes como argumentos. El concepto fue presentado en MacHack 2003 [1] [2] por Marcel Weiher y presentado en una forma más completa en 2005 por Marcel Weiher y Stéphane Ducasse . [3] Los bucles se pueden escribir sin nombrar las colecciones en bucle, los mensajes de orden superior se pueden ver como una forma de programación tácita o sin puntos .

En código ordinario de Smalltalk , sin usar HOM, obtener un cobro de los empleados que tienen un salario de 1000 se lograría con el siguiente código:

Aquí, selecthay un mensaje de orden superior, y hasSalary:se entiende que se llama en el mensaje seleccionado en sí, en lugar de en su resultado. El lenguaje Smalltalk no se modificó para implementar esta función. En su lugar, selectdevuelve un mensaje que reifica el selectenvío, que luego interpreta el hasSalary:mensaje.

En este ejemplo, el future:mensaje hace que el addRotationARoundY:mensaje se envíe al objeto cubo después de 1 segundo.

La implementación de referencia en Objective-C aprovecha el rasgo de que en Objective-C, los objetos que no entienden un mensaje que se les envía, aún lo reciben en un método de enlace especial, llamado forward:. La mensajería de orden superior se implementó en varios idiomas que comparten esta característica, incluidos Ruby y Smalltalk. [5]

La documentación de Proxies de ECMAScript Harmony menciona específicamente los mensajes de orden superior como una aplicación para sus Proxies Catchall. [6]