
On Tue, May 19, 2009 at 6:14 PM, Michael P Mossey
I've seen the following language used: - "computations" - "actions" - "effects" - "context" (For example, a functor is a context, and fmap applies a function to an object in that context without changing the context.)
These are all often used to describe expressions of type "m a" for some monad m. Different ones are more or less accurate depending on the particular monad you're talking about, and depending on your personal preferred way of looking at it. The thing with monads is that what they abstract is hard to put succinctly outside of code.
One words that seem to come up in Haskell are "algorithm" and "procedure."
I've not seen these used in Haskell. They sound distinctly imperative to me, for some reason. But, until you define the words connotatively, all I can say is how they sound to me.
For example, a monad is sometimes called a "computation" or an "effect", but I've not seen it called an "algorithm."
Can someone elaborate on these terms and why they are used? What is the difference between a computation and an algorithm? The word "effect" has a fairly obvious meaning (like an IO side-effect) but I suspect there's more to it.
Why is the word "context" important, and when it is more appropriate than "container"?
I would put container in with the list at the beginning: it's another way that can be more or less appropriate for monadic values, depending on the monad and your perspective.
thanks, Mike _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners