
On 25 Jul 2009, at 06:25, Duke Normandin wrote:
Hello....
I'm 2 days into Haskell. NOT new to Perl, PHP, M(umps), TCL, newLISP. I'm using "YAHT.pdf" as an intro to Haskell. Here's a quote:
[quote] ... if you have a value x, you must not think of x as a register, a memory location or anything else of that nature. x is simply a name, just as Hal is my name. You cannot arbitrarily decide to store a different person in my name any more than you can arbitrarily decide to store a different value in x. This means that code that might look like the following C code is invalid (and has no counterpart) in Haskell:
int x = 5; [/quote]
So is fair to say that an expression in Haskell like:
x = 5
is more like a constant in imperative languages - say Perl? E.g.
use constant SECONDS_PER_DAY => 86400;
x is indeed a constant in this case. The = sign in Haskell is used not for "assignment" as in most imperative programming languages, but instead for "binding" as in most mathematics. It says "x is equal to 5", "x always has been equal to 5", "x will always be equal to 5". The reason why these are still called variables is from when they are used as arguments to functions: f y = y + 2 Here, we are "binding" f. f always was, will be and is the function which adds two to its argument, but it's argument varies depending on the call, and thus is a variable. Hope that helps. Bob