Repository navigation
Add a week 1 chapter on functional programming in Racket, and the ABCD card - #38
Conversation
The syllabus lists an introduction to functional programming in week 1, and the notes use Racket from the predicates chapter on, but no chapter introduced it and the calendar gave it no day. Lab 1 was the only introduction, and students cannot read it until the lab. The new chapter covers Racket expressions in prefix notation and how they are evaluated, defining and applying functions by substitution, if and cond, pure functions and side effects, and higher-order functions with map and filter. It includes the mds definitions of expression, function, argument and value, so relations' @def-function now resolves here instead of on the mds site. Its examples avoid Lab 1's tasks. The calendar and syllabus put it on Wednesday of week 1, with the syllabus and propositional logic, and it joins the navbar and sidebar. The syllabus promised a printable ABCD card but had a TBD for its PDF. images/abcd-card.py draws it (Okabe-Ito colors, large letters, fold lines), and .gitignore lets that one PDF be tracked. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019xfc9qa8iKsjjEyuh6bV3w
Show one step per line in the evaluation examples, as the text claims; say that if, cond, and, or and define are not applications; call define a definition; move the mds definition of function ahead of the definition of expression that links it; split side effect into its own definition; use \abs; change the map and filter example's list so it is not one of Lab 1's expressions; and name the expressions the next_id remark compares. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019xfc9qa8iKsjjEyuh6bV3w
|
Claude finished review — View run No R files touched. I've completed a thorough review covering content correctness, cross-references, build hygiene, bibliography, link validity, and style conventions. Everything checks out clean. Review: PR #38 — Add a week 1 chapter on functional programming in Racket, and the ABCD cardScope. Adds What I verified:
No blocking issues found. This is a clean, well-tested, convention-following PR — content was mathematically verified, the one piece of executable code was run and its reproducibility claim confirmed, and every cross-reference, link, and bibliography entry checks out. VerdictReady for merge Structured Review Data (JSON){
"schema_version": "1.1",
"reviewer": "claude",
"commit_sha": "4380d393a2a81bb99bfac33531e56fefaed54a3d",
"verdict": "CLEAN",
"findings": [],
"detailed_assessment": "Ran images/abcd-card.py and byte-diffed its output against the committed PDF, hand-verified every Racket evaluation example in chapters/_subfiles/functional-programming/, and confirmed check-unresolvable-refs.py reports zero broken crossrefs in chapters/functional-programming.qmd.",
"holistic_assessment": "Navbar, sidebar, calendar, and syllabus integration are consistently ordered, the new references.bib entries and their URLs validate, and no R, workflow, or build-artifact files were touched, so regression risk and scope creep are both minimal."
}Reviewed commit: 4380d39 |
2026-10-29 15:04 UTC |
|
I checked the preview's handout PDF at head
Posted by Claude Code (AI agent) --- not written by a human. Generated by Claude Code |
|
Merged under Ezra's The cross-model review was waived because no reviewer from another model or harness could run from this cloud session. opencode.ai returned 429 for all eight Posted by Claude Code (AI agent) --- not written by a human. Generated by Claude Code |
Requested by Ezra · project thread
Note
This PR is over the 10-file / 300-line size cap, because it adds one whole chapter (one subfile per div), as for the earlier chapter PRs.
Why
The syllabus lists "Introduction to functional programming" in week 1, and one of the course outcomes is about functional style. The notes use Racket from the predicates chapter onward, but no chapter introduced it and the calendar gave it no day. So the only Racket introduction students had was Lab 1, which is private and comes on Thursday or Friday. The syllabus also promised a printable ABCD card, but its PDF link still said TBD.
What
chapters/functional-programming.qmd, with its units inchapters/_subfiles/functional-programming/. It has five sections: expressions and how Racket evaluates them, defining and applying functions by substitution,ifandcond, pure functions and side effects, and higher-order functions withmapandfilter.def-function, so the relations chapter's@def-functionwent to the mds site. It now resolves to this week 1 page.images/abcd-card.pydrawsimages/abcd-card.pdf: a landscape page in four Okabe-Ito colors with large letters and fold lines, so it also works printed in black and white. The output is byte-for-byte reproducible. The syllabus links it, and.gitignorelets this one PDF be tracked.references.bibgets three Wikipedia entries: functional programming, pure function, and higher-order function.Checks
check-rendered-page.pyis clean on all three..github/scripts/check-unresolvable-refs.pyis clean on the chapter._site/images/abcd-card.pdfis copied.ifandcondare not applications, and a forward link from the included mds definition of expression.Worksheet 0 (private, in mcsg) goes with this chapter.
Generated by Claude Code