Hello,
I think you have to remember that is x in
f x = 2 * x + 1
is just a name for the parameter and not the parameter itself.
If you look at
g (_:xs) = xs
(_:xs) is something similar as a name. You might say '(_:xs)' stands for the
parameter (you can't say it is the name of the parameter...). And xs is
just the name of the part of the parameter.
In the case of
g y@(_:xs) = xs
you might probably say y is the parameter of g - but y is just a name for
that parameter.
There is a difference between names, entities and bindings. Can be confusing
if you take a look at this quote:
“The name of the song is called ‘Haddocks’ Eyes’.”
“Oh, that’s the name of the song, is it?” Alice said, trying to feel
interested.
“No, you don’t understand,” the Knight said, looking a little vexed.
“That’s what the name is called.
The name really is ‘The Aged Aged Man’.”
“Then I ought to have said ‘That’s what the song is called’?” Alice
corrected herself.
“No, you oughtn’t: that’s quite another thing! The song is called ‘Ways
and Means’; but that’s only
what it’s called, you know!”
“Well, what is the song, then?” said Alice, who was by this time
completely bewildered.
“I was coming to that,” the Knight said. “The song really is ‘A-sitting
On A Gate’; and the tune’s
my own invention.”
L. Caroll, Through the Looking Glass
2011/10/1 José Romildo Malaquias j.romi...@gmail.com
Hello.
When studing programming languages I have learned that parameter is a
variable (name) that appears in a function definition and denotes the
value to which the function is applied when the function is called.
Argument is the value to which the function is applied.
The parameter allows the manipulation of the argument in the body of the
funtion definition in order to produce the result.
Now I am not sure how to apply these concepts to Haskell, as Haskell
uses pattern matching to deal with argument passing to functions.
For instance, in the definition
f x = 2 * x + 1
x is a parameter, and in the application
f 34
34 is an argument.
But in the definition
g (_:xs) = xs
what is the parameter of the function g? Is it the pattern (_:xs)? If so
then a parameter is not necessarily a variable anymore, and that seems
very strange. And what is xs? Is it a parameter, although it does not
denote the value to which the function is aplied, but just part of it?
I am writing some slides to use in my functional programming classes,
but I am not sure how to deal with these terms.
Any comments?
Romildo
--
DECOM - ICEB - UFOP
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe