Haskell切片和lexing问题

Eva*_*oll 0 haskell

这两个函数如何解析?

>  (** (1/2)) $ 40
6.324555320336759
it :: Double

>  ((**) (1/2)) $ 40
9.094947017729282e-13
it :: Double
Run Code Online (Sandbox Code Playgroud)

luq*_*qui 7

第一个是右侧部分,是以下内容的简写:

(\x -> x ** (1/2)) 40
Run Code Online (Sandbox Code Playgroud)

第二个是使用运算符的函数形式**,基本上将它视为像命名函数pow或类似的东西:

(**) (1/2) 40
Run Code Online (Sandbox Code Playgroud)

等于

(1/2) ** 40
Run Code Online (Sandbox Code Playgroud)

我已经$从代码中省略了s,因为它们是多余的.

(foo bar) $ baz = (foo bar) baz = foo bar baz
Run Code Online (Sandbox Code Playgroud)