Hope es un pequeño lenguaje de programación funcional desarrollado en la década de 1970 en la Universidad de Edimburgo . [1] [2] Es anterior a Miranda y Haskell y es contemporáneo de ML , también desarrollado en la Universidad. Hope se derivó de NPL , [3] un lenguaje funcional simple desarrollado por Rod Burstall y John Darlington en su trabajo sobre la transformación de programas. [4] NPL y Hope se destacan por ser los primeros lenguajes con evaluación de llamada por patrón y tipos de datos algebraicos . [5]
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 hecho: num -> num;--- hecho 0 <= 1;--- hecho n <= n * hecho (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. [6]
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. [7]
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. [6]
Referencias
- ^ Burstall RM , MacQueen DB, Sannella DT (1980) Esperanza: un lenguaje aplicativo experimental . Registro de la conferencia de la Conferencia LISP de 1980, Universidad de Stanford, págs. 136-143.
- ^ Bailey, Roger (1 de abril de 1990). Programación funcional con esperanza . Serie Ellis Horwood en computadoras y sus aplicaciones. Ellis Horwood Ltd.
- ^ RM Burstall. Consideraciones de diseño para un lenguaje de programación funcional. Documento invitado, Proc. Infotech State of the Art Conf. “La revolución del software”, Copenhague, 45–57 (1977)
- ^ RM Burstall y J. Darlington. Un sistema de transformación para desarrollar programas recursivos. Revista de la Asociación de Maquinaria de Computación, 24 (1): 44–67 (1977)
- ^ Hudak, Paul; Hughes, John; Peyton Jones, Simon; Wadler, Philip (9 de junio de 2007). Una historia de Haskell: ser holgazán con la clase . ACM. págs. 12–1. doi : 10.1145 / 1238844.1238856 . ISBN 9781595937667. S2CID 52847907 .
- ^ a b Bailey, Roger (agosto de 1985). "Un tutorial de esperanza" . BYTE . Vol. 10 no. 8 . Consultado el 1 de abril de 2015 .
- ^ John Kewley y Kevin Glynn. Anotaciones de evaluación para Hope +. En Kei Davis y RJM Hughes, editores, Functional Programming: Proceedings of the 1989 Glasgow Workshop, Workshops in Computing, páginas 329-337, Londres, Reino Unido, 1990. Springer-Verlag.