Personal tools

Talk:What a Monad is not

From HaskellWiki

(Difference between revisions)
Jump to: navigation, search
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
  +
==Nicolas Pouillard Comments==
  +
 
I disagree with:
 
I disagree with:
 
"So ordering is not in any way essential to what a monad is."
 
"So ordering is not in any way essential to what a monad is."
Line 9: Line 11:
   
 
Although I agree that the common issue is too mix monad and impurity, and the impurity question is only releated to IO.
 
Although I agree that the common issue is too mix monad and impurity, and the impurity question is only releated to IO.
  +
  +
== "Monads are not values" ==
  +
  +
Yes they are! But they are not of the type of their arguments. For instance "return 3" is a value that has (or can have) type "IO Int". But it is not a value of type Int. —[[User:Ashley Y|Ashley Y]] 23:44, 23 November 2009 (UTC)
  +
  +
[Nicolas Pouillard]: The point was that the IO monad is not a value, of course there is values of type "IO Int". However the record/dictionary is a value and one could say that it is the monad.

Revision as of 15:07, 26 November 2009

1 Nicolas Pouillard Comments

I disagree with: "So ordering is not in any way essential to what a monad is."

There is commutative monads, great! Other than that the order is important. Moreover there is nothing wrong to see >>= as a sequencing operator.

I also disagree the "IO is impure" paragraph: Indeed only IO will trigger visible side effects, but this is only due to the common evaluation of IO primitives. Moreover I would say that only the runtime system is impure because it does reduce 'main :: IO ()', other than that we are just building a computation plan in a pure way.

Although I agree that the common issue is too mix monad and impurity, and the impurity question is only releated to IO.

2 "Monads are not values"

Yes they are! But they are not of the type of their arguments. For instance "return 3" is a value that has (or can have) type "IO Int". But it is not a value of type Int. —Ashley Y 23:44, 23 November 2009 (UTC)

[Nicolas Pouillard]: The point was that the IO monad is not a value, of course there is values of type "IO Int". However the record/dictionary is a value and one could say that it is the monad.