I am confused about one particular example of the const function. So the type declaration const :: a -> b->a states that the function accepts two parameters of type a and b and returns a type a. For example:
const 5 3 => 5
const 1 2 => 1
This makes sense based on the declaration. However, I ran into this specific example:
const (1+) 5 3 => 4
This makes me question my understanding of the function declaration. I know this function only takes two parameters because I tried:
const 1 5 3
Now this reassures to me that it only takes 2 parameters. So how does this work? Is the (1+) not a parameter? If not, what is it?
const (1+) 5 3 => 4
Every function in Haskell takes one parameter. Indeed, if you write:
then this is short for:
The type signature
const :: a -> b -> ais a more compact form ofconst :: a -> (b -> a).So
const 5will create a function that ignores the parameter (here1) and returns the value that it was given5.Now for
const (1+) 5 3thus thus means that we wrote:const (1+)will thus construct a function that ignores the parameter, and returns(1+), henceconst (1+) 5is(1+). We thus then calculate:which is
4.