Sta*_*lav 2 lambda haskell function notation
我有一个Haskell功能,我不明白但想要.
i :: Int
i = ((\g x -> g x + g x) (\y -> y)) 3
Run Code Online (Sandbox Code Playgroud)
我知道lambda函数是什么:无名函数.例如,(\x -> x) 3取3并返回它,(\x y -> x+y) 3 4取3,4,并返回7.但在这种特殊情况下,我无法解释它.我希望你能帮助我.顺便说一句.这个功能的解决方案是6.
现在你的(\y -> y)功能相当于id.让我们用它重写你的函数:
i = ((\g x -> g x + g x) id) 3
Run Code Online (Sandbox Code Playgroud)
现在应用该id功能(\g x -> g x + g x).这将减少到:
i = (\x -> id x + id x) 3
Run Code Online (Sandbox Code Playgroud)
现在很简单:
i = id 3 + id 3
i = 6
Run Code Online (Sandbox Code Playgroud)