haskell 中的 const 函数声明
const function declaration in haskell
我对 const
函数的一个特定示例感到困惑。所以类型声明 const :: a -> b->a
说明函数接受两个类型 a
和 b
的参数,并且 returns 一个类型 a
。例如:
const 5 3 => 5
const 1 2 => 1
根据声明,这是有道理的。但是,我 运行 进入这个具体的例子:
const (1+) 5 3 => 4
这让我质疑我对函数声明的理解。我知道这个函数只需要两个参数,因为我试过:
const 1 5 3
现在这让我放心,它只需要 2 个参数。那么这是如何工作的呢? (1+)
不是参数吗?如果不是,那是什么?
const (1+) 5 3 => 4
I know this function only takes two parameters (…)
Haskell 中的每个函数都有 一个 参数。事实上,如果你写:
const 5 1
那么这是以下的简称:
(const 5) 1
类型签名 const :: a -> b -> a
是 const :: a -> (b -> a)
的更紧凑形式。
因此 const 5
将创建一个忽略参数(这里 1
)和 returns 给它的值 5
.
的函数
现在 const (1+) 5 3
因此意味着我们写了:
((const (1+)) 5) 3
const (1+)
将因此构造一个忽略参数的函数,而returns(1+)
,因此const (1+) 5
是(1+)
。于是我们计算:
(1+) 3
即4
.
我对 const
函数的一个特定示例感到困惑。所以类型声明 const :: a -> b->a
说明函数接受两个类型 a
和 b
的参数,并且 returns 一个类型 a
。例如:
const 5 3 => 5
const 1 2 => 1
根据声明,这是有道理的。但是,我 运行 进入这个具体的例子:
const (1+) 5 3 => 4
这让我质疑我对函数声明的理解。我知道这个函数只需要两个参数,因为我试过:
const 1 5 3
现在这让我放心,它只需要 2 个参数。那么这是如何工作的呢? (1+)
不是参数吗?如果不是,那是什么?
const (1+) 5 3 => 4
I know this function only takes two parameters (…)
Haskell 中的每个函数都有 一个 参数。事实上,如果你写:
const 5 1
那么这是以下的简称:
(const 5) 1
类型签名 const :: a -> b -> a
是 const :: a -> (b -> a)
的更紧凑形式。
因此 const 5
将创建一个忽略参数(这里 1
)和 returns 给它的值 5
.
现在 const (1+) 5 3
因此意味着我们写了:
((const (1+)) 5) 3
const (1+)
将因此构造一个忽略参数的函数,而returns(1+)
,因此const (1+) 5
是(1+)
。于是我们计算:
(1+) 3
即4
.