
Am Sonntag, 8. Februar 2009 00:24 schrieb TKM:
Hello,
I've a small question about the function const. I'm a bit of confused about how it binds. Let me take the following expression as example:
const id 1 2
If I execute this expression, I will get as answer 2 with Helium. Now is my question, why doesn't it give me 1 as the answer? Because the type of id would be: a -> a. So first it would execute id 1 in my opinion. That gives us 1. And after executing const 1 2 it should give us 1.
Can somebody explain to me why it does not bind as I expect? (I know I can do: const (id 1) 2 to get what I want)
Thank you for your answers.
Greetz TKM
Function application associates to the left, so f a b c d is the same as (((f a) b) c) d and in your example const id 1 2 === ((const id) 1) 2, so first (const id) is evaluated, that is then applied to 1 and finally the result of const id 1 is applied to 2. Now (const x) === \y -> x, so (const id) 1 is id and id 2 === 2. HTH, Daniel