Order of mastery
- Can use
define
to create a function (recipe p21)
- Can use
check-expect
(second edition, Section 3.5)
- Knows that for every dependency in the problem, solution should have an auxiliary function (pp 21–26)
- Can use
cond
for conditionals (recipe p44)
- Can create and append strings (second edition, Sections 1.2 and 1.3)
- Can use
define-struct
; can create and select from structures (pp 51-79; recipe p71)
- Can write functions that use type predicates and
cond
to consume “mixed data” (recipe p89; read to p96)
- Can write functions that define and consume lists using
empty
, cons
, empty?
, first
, and rest
(p137, p152)
- Can apply the refined design ideas for auxiliary functions (section 12), including creating an auxiliary function when one data definition depends on another (p182)
- Can use trees (p209)
- Can use multiple mutually referential data definitions (p221)
- Can apply iterative refinement (p228)
- Can choose an appropriate case analysis for functions with multiple complex arguments (p258)
- Can define internal functions and variables using
local
(p280)
- Can abstract similar data structures and computations (p298)
- Can use first-class and higher-order functions (p334)
- Can define anonymous functions (p355)
- Can use generative recursion (pp368–406)
- Can use generative recursion to read files
- Has seen graph structures (pp406–416)
- Can reason about costs
- Can use accumulating parameters
- Can program with mutable state