Setup

brew install racket --cask

Evaluation

Applicative Order Evaluation

Also known as eager evaluation or strict evaluation, function’s arguments are evaluated before the function is applied.

A significant effect of applicative order evaluation is that recursive functions may not terminate if an argument to a function is recursive and must be evaluated before calling the function

Normal Order Evaluation

Also known as lazy evaluation, evaluation of procedure arguments is delayed until the actual argument values are needed

In other words, arguments are passed as-is to the procedure, and the leftmost outermost function application is always evaluated first