我有以下代码:
foldr const 0 ([1] ++ undefined)
Run Code Online (Sandbox Code Playgroud)
我得到了结果1.
我知道,这foldr是正确的关联.写出上面的例子:
const 1 (const undefined 0)
Run Code Online (Sandbox Code Playgroud)
为什么括号中的表达式不会被评估为第一个?
因为函数应用程序的优先级高于括号?
为什么括号中的表达式不会被评估为第一个?
Haskell使用惰性评估.这意味着如果函数使用它,则计算参数.这与急切评估的不同之处在于,在调用函数之前执行函数的所有参数.
因为函数应用程序的优先级高于括号?
优先权与它无关.优先刚刚确定哪些是一个操作数是什么(即是"X ??? !!!ŸZ"运营商的应用程序???的操作数x和y !!! z或操作者!!!来x ??? y和z).它不会影响评估顺序.