|
|
|
|
|
by gizmo686
4606 days ago
|
|
I don't think a lazy language can necessarily make that decision. Consider the simple implementation of ||: ||(f,g){
if (eval(f)) then return true
if (eval(g)) then return true
return false
}
A lazy language will not evaluate a function until it knows it needs it. In this implementation, there is no way of knowing that g will be needed until after computing f, so f will be computed first. Having said that, it is possible for an optimizing compiler to realize that the order doesn't matter and make a decision on which one to check first, however that is an optimization that the compiler would need to prove does not change the results.This seems like a good example of why purity seems to be really beneficial to lazy evaluation. |
|