The*_*kle 4 haskell types map apply
如果类型($)
是(a -> b) -> a -> b
,那么为什么你可以把它作为咖喱($2)
?2不是类型(a -> b)
.见下面的例子.
map ($2)[(+1),(+2)]
Run Code Online (Sandbox Code Playgroud)
这是合法的,令人敬畏的,直觉上有意义.请告诉我它是如何与类型系统规则一致的?
干杯
Tho*_*son 11
您观察到的行为是由于部分应用程序对中缀运算符的作用.这通常被称为"部分应用程序",您正在申请2
作为第二个参数的"正确部分".所以你有了:
($) :: (a -> b) -> a -> b
^
|
This is the type variable for the argument '2'
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式确认:
ghci
> :t ($2)
($2) :: Num a => (a -> b) -> b
Run Code Online (Sandbox Code Playgroud)
您可以在大多数相当完整的教程中找到隐藏此信息的内容,或者您可以在部分中看到Haskell报告部分.
归档时间: |
|
查看次数: |
189 次 |
最近记录: |