Lecture overview -- Keyboard shortcut: 'u'  Previous page: Practical implications -- Keyboard shortcut: 'p'  Next page: Lazy evaluation -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Lecture 4 - Page 18 : 27
Programming Paradigms
Evaluation Order and Infinite Lists
Conditionals and sequential boolean operators

There are functional language constructs - special forms - for which applicative order reduction would not make sense

  • (if b x y)

    • Depending on the value of b, either x or y are evaluated

    • It would often be harmful to evaluate both x and y before the selection

      • (define (fak n) (if (= n 0) 1 (* n (fak (- n 1)))))

  • (and x y)

    • and evaluates its parameters from left to right

    • In case x is false, there is no need to evaluate y

    • Often, it would be harmful to evaluate y

      • (and (not (= y 0)) (even? (quotient x y)))