
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.) One words that seem to come up in Haskell are "algorithm" and "procedure." 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"? thanks, Mike

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

Andrew Wagner wrote:
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.
Yes, I meant to write they *don't* come up in Haskell. Regarding how words "sound", that's a good thing to talk about, in my opinion. It's related to the philosophy of epistemology. Words have connotations. They are used in certain contexts, with certain implications. Thanks, Mike

2009/05/19 Michael P Mossey
For example, a monad is sometimes called a "computation" or an "effect", but I've not seen it called an "algorithm."
There is a difference between a monad and monadic value -- just as there is a difference between "List" as a structure and a particular list as an instantiation of that structure.
Can someone elaborate on these terms and why they are used? What is the difference between a computation and an algorithm?
This is a little like saying, what is the difference between an algorithm and a program? The term "algorithm" denotes not only a sequence of instructions to perform but also a solution (in a well-defined sense) to a particular problem. A computation is probably anything whatever that warms the computer.
The word "effect" has a fairly obvious meaning (like an IO side-effect) but I suspect there's more to it.
I believe the usual aphorism is "Monads sequence effects.". -- Jason Dusek
participants (4)
-
Andrew Wagner
-
Jason Dusek
-
Michael Mossey
-
Michael P Mossey