Jul*_*ian 4 haskell function-declaration haskell-prelude
我对该const功能的一个特定示例感到困惑。因此类型声明声明const :: a -> b->a该函数接受两个类型为aand 的参数b并返回一个类型a。例如:
const 5 3 => 5
const 1 2 => 1
Run Code Online (Sandbox Code Playgroud)
根据声明,这是有道理的。但是,我遇到了这个特定的例子:
const (1+) 5 3 => 4
Run Code Online (Sandbox Code Playgroud)
这让我质疑我对函数声明的理解。我知道这个函数只需要两个参数,因为我试过:
const 1 5 3
Run Code Online (Sandbox Code Playgroud)
现在这让我放心,它只需要 2 个参数。那么这是如何工作的呢?是(1+)不是参数?如果不是,那是什么?
const (1+) 5 3 => 4
Run Code Online (Sandbox Code Playgroud)
Wil*_*sem 11
我知道这个函数只需要两个参数(...)
Haskell 中的每个函数都有一个参数。事实上,如果你写:
const 5 1
Run Code Online (Sandbox Code Playgroud)
那么这是缩写:
(const 5) 1
Run Code Online (Sandbox Code Playgroud)
类型签名const :: a -> b -> a是const :: a -> (b -> a).
Soconst 5将创建一个忽略参数(此处1)并返回给定值的函数5。
现在,const (1+) 5 3因此因此意味着我们写道:
((const (1+)) 5) 3
Run Code Online (Sandbox Code Playgroud)
const (1+)因此将构造一个忽略参数的函数,并返回(1+),因此const (1+) 5是(1+)。然后我们计算:
(1+) 3
Run Code Online (Sandbox Code Playgroud)
这是4.
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |