类型签名$如下:
($) :: (a -> b) -> a -> b
Run Code Online (Sandbox Code Playgroud)
因此,如果plus1 n = n + 1,那么我们就有了
> ($) plus1 1
2
Run Code Online (Sandbox Code Playgroud)
但那为什么呢
> ($ 1) plus1
2
Run Code Online (Sandbox Code Playgroud)
还有?表单($ 1) plus1似乎违反了类型签名$.
chi*_*chi 15
如果你试试
(($) 1) plus1
Run Code Online (Sandbox Code Playgroud)
你会得到你期望的类型错误.
特殊语法($ 1)称为section,代表\x -> x $ 1,它与普通应用程序不同($) 1.此语法可以与所有中缀运算符(*)一起使用,例如(+ 1)或(* 4).
(*)除了-,因为(- 10)是负常数-10.