def if_(test, result, alternative):
    """Like C++ and Java's (test ? result : alternative), except
    both result and alternative are always evaluated. However, if
    either evaluates to a function, it is applied to the empty arg list,
    so you can delay execution by putting it in a lambda.
    Ex: if_(2 + 2 == 4, 'ok', lambda: expensive_computation()) ==> 'ok' """
    if test:
        if callable(result):
            return result()
        return result
    else:
        if callable(alternative):
            return alternative()
        return alternative