Take Home Points
Some programs cannot be written in a single expression!
Scala provides value declarations as a means to
capture and re-use values in the rest of our code.
Because Doodle is based on immutable data structures,
we can re-use single values multiple times without
worrying about unintended side-effects.
The chessboard example demonstrates this nicely---it
fourByFour value four times and the
twoByTwo value sixteen times,
resulting in a compact memory-efficient representation.
Method declarations do a different job. They allow us to abstract over parameters, creating blocks of code that work with a variety of inputs. Functional programming places emphasis on writing methods that return useful values, effectively turning methods into high-level constructors.
For example, we can view a method like
as a constructor for a chess board.
Even though the method creates many objects internally,
the substitution model allows us to ignore
the implementation details and treat the method as a black box.