我刚刚开始学习Haskell,并且我被告知Haskell是懒惰的,即它在评估表达式时尽可能少地工作,但我不认为这是真的.
考虑一下:
und :: Bool -> Bool -> Bool
und False y = False
und y False = False
non_term x = non_term (x+1)
Run Code Online (Sandbox Code Playgroud)
und (non_term 1) False从不终止的评价,但很明显,结果如果是假的.
有没有一种方法可以正确实现und(即and德语)(不仅仅是部分如上),以便两者兼顾
und (non_term 1) False
Run Code Online (Sandbox Code Playgroud)
和
und False (non_term 1)
Run Code Online (Sandbox Code Playgroud)
返回False?