Realidades Paralelas

Saturday, October 08, 2005

Mônadas são valores

Lendo uma série de artigos sobre mônadas (os de Philip Wadler, especificamente). Atualmente estou no "Imperative Functional Programming" de Peyton-Jones e Wadler. Esse trecho bateu com o que eu já tinha redescoberto recentemente:

Notice the distinction between an action and its performance. Think of an action as a "script", which is performed by executing it. Actions themselves are first-class citizens.


As ações a que ele se refere, obviamente, são valores monádicos.

Outra idéia importante é que mônadas não necessariamente precisam exprimir ação. No geral, são um mecanismo para capturar diferentes estratégias de computação. Por exemplo, listas podem ser encaradas como mônadas que refletem uma estratégia de computação baseada no uso de vários valores por expressão, ao invés de apenas um. Isso também pode ser interpretado como não-determinismo. Aliás, existe um exemplo bem interessante de não-determinismo expresso por mônadas em "Comprehending Monads", de Wadler. Mas tratar uma lista como mônada, sem efeitos colaterais impuros, é bem diferente da mônada IO, que delimita partes do código que são imperativos. E isso se reflete no fato que é possível sair de uma mônada de lista, mas nunca de uma imperativa como IO ou State.

0 Comments:

Post a Comment

<< Home