A linguagem Clean usa tipos de exclusividade para manipular E / S em uma configuração puramente funcional. Por que o comitê Haskell optou por mônadas ? Houve outras propostas de tratamento que o comitê investigou, mas decidiu contra?
Nota : Não estou procurando uma guerra santa entre mônadas e outras formas de computação. Vamos manter o tópico apenas nas opções do comitê em relação à E / S.
functional-programming
history
haskell
chrisaycock
fonte
fonte
Respostas:
De acordo com A History of Haskell: Being Lazy With Class (consulte a seção 7), três modelos diferentes foram considerados inicialmente: fluxos , continuações e "passagem pelo mundo" (não sei muito sobre o Clean, mas parece que esse é o caminho do Clean) ?).
O último parágrafo da seção 7.2 indica que o conceito de tipo de exclusividade não foi desenvolvido no momento:
O conceito de mônadas parece ter sido introduzido (reutilizado em outros trabalhos) em revisões posteriores de Haskell, uma vez que resultou em código mais limpo (comparado a continuações / fluxos):
fonte
A melhor explicação que eu vi é " Tackling the Awkward Squad ", de Simon Peyton-Jones .
Pelo que me lembro do artigo, questões relacionadas à preguiça tiveram um papel importante na decisão. (Não tenho certeza se o Clean é preguiçoso por padrão, da mesma forma que Haskell.)
fonte