Lazy evaluation - Haskell vs. Python Haskell newOr a b = if a then a else b example may causing infinite loop: newOr True (length [1..] > 0) Python def new_or(a, b): return a if a else b example may causing infinite loop: new_or(True, len([i for i in xrange(sys.maxint)]) > 0)