简体   繁体   中英

const function declaration in haskell

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

I know this function only takes two parameters (…)

Every function in Haskell takes one parameter. Indeed, if you write:

 const 5  1

then this is short for:

(const 5) 1

The type signature const :: a -> b -> a is a more compact form of const :: a -> (b -> a) .

So const 5 will create a function that ignores the parameter (here 1 ) and returns the value that it was given 5 .

Now for const (1+) 5 3 thus thus means that we wrote:

((const (1+)) 5) 3

const (1+) will thus construct a function that ignores the parameter, and returns (1+) , hence const (1+) 5 is (1+) . We thus then calculate:

(1+) 3

which is 4 .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM