Hope (lenguaje de programación) - Hope (programming language)

Hope es un pequeño lenguaje de programación funcional desarrollado en la década de 1970 en la Universidad de Edimburgo . Es anterior a Miranda y Haskell y es contemporáneo del ML , también desarrollado en la Universidad. La esperanza se derivó de NPL , un lenguaje funcional simple desarrollado por Rod Burstall y John Darlington en su trabajo sobre la transformación de programas. NPL y Hope se destacan por ser los primeros lenguajes con evaluación de llamada por patrón y tipos de datos algebraicos .

Hope recibió su nombre de Sir Thomas Hope (c. 1681-1771), un reformador agrícola escocés, por quien también se nombró Hope Park Square en Edimburgo, la ubicación del Departamento de Inteligencia Artificial en el momento del desarrollo de Hope.

Detalles del idioma

Un programa factorial en Hope es:

dec fact : num -> num;
--- fact 0 <= 1;
--- fact n <= n*fact(n-1);

Cambiar el orden de las cláusulas no cambia el significado del programa, porque la coincidencia de patrones de Hope siempre favorece patrones más específicos sobre los menos específicos. Se requieren declaraciones de tipo explícitas en Hope; no hay opción para usar un algoritmo de inferencia de tipo en Hope.

Hope proporciona dos estructuras de datos integradas: tuplas y listas.

Implementaciones

La primera implementación de Hope fue estricta , pero desde esa ha habido versiones perezosas y versiones estrictas con constructores perezosos. British Telecom se embarcó en un proyecto con Imperial College para implementar una versión estricta. El primer lanzamiento fue codificado por Thanos Vassilakis en 1986. Los siguientes lanzamientos fueron codificados por Mark Tasng de British Telecom. Un lenguaje sucesor, Hope + (desarrollado conjuntamente entre Imperial College e International Computers Limited (ICL), agregó anotaciones para dictar una evaluación estricta o perezosa.

El tutorial Hope de Roger Bailey en la edición de agosto de 1985 de BYTE hace referencia a un intérprete para IBM PC DOS 2.0.

Referencias

enlaces externos