Edits after class look like this.
Questions, comments, complaints?
"Stack space" is memory dedicated to managing any outstanding function calls during evaluation.
"Heap space" is memory dedicated to the data created during evaluation.
In general, a recursive function can quickly exhaust the stack space, so a naive implementation of an evaluator/compiler will run out of stack space very quickly. Because of that, Elm (and most other functional languages) implement an optimization for a particular class of functions, called "tail-recursive" functions, which get compiled to loops — no (recursive) function calls, so no additional stack frames. We'll talk about tail recursion in more detail later in the course.
Firebase is an option that may be simple to use. We'll post a tutorial if the electorate so desires (exercise your civic duty on Piazza).
There are many interesting possibilities for visualizing the performance of data structures, using Vega-Lite or Vega or line-charts
to draw charts.
We'll use breakout rooms for ~15 minutes to discuss potential course project ideas.