El lenguaje Clean utiliza tipos únicos para manejar E / S en un entorno puramente funcional. ¿Por qué el comité de Haskell fue con mónadas ? ¿Hubo otras propuestas para manejar el estado que el comité investigó pero en contra?
Nota : No estoy buscando una guerra santa entre mónadas y otras formas de computación. Mantengamos el tema solo para las elecciones del comité con respecto a E / S.
functional-programming
history
haskell
chrisaycock
fuente
fuente
Respuestas:
De acuerdo con A History of Haskell: Being Lazy With Class (ver sección 7) inicialmente se consideraron tres modelos diferentes: transmisiones , continuaciones y "pasaje del mundo" (no sé mucho sobre Clean, pero parece que esta es la manera Clean) ?)
El último párrafo de la sección 7.2 indica que el concepto de tipo de unicidad no se desarrolló en este momento:
El concepto de mónadas parece haberse introducido (reutilizado de otro trabajo) en revisiones posteriores de Haskell, ya que resultó en un código más limpio (en comparación con las continuaciones / secuencias):
fuente
La mejor explicación que he visto es " Tackling the Awkward Squad " de Simon Peyton-Jones .
Por lo que recuerdo del artículo, los problemas relacionados con la pereza jugaron un papel importante en la decisión. (No estoy seguro si Clean es perezoso por defecto de la misma manera que lo es Haskell).
fuente