diff --git a/journal/tapl_progress.typ b/journal/tapl_progress.typ index 93af925..4e0aa70 100644 --- a/journal/tapl_progress.typ +++ b/journal/tapl_progress.typ @@ -233,4 +233,67 @@ diagram, caption: [TAPL chapters graph and reading status] ) -) \ No newline at end of file +) + +#pagebreak() + += Topics + +#let topics = ( + [Introduction], + [Mathematical Preliminaries], + [Untyped Arithmetic Expressions], + [An ML Implementation of Arithmetic Expressions], + [The Untyped Lambda-Calculus], + [Nameless Representation of Terms], + [An ML Implementation of the Lambda-Calculus], + [Typed Arithmetic Expressions], + [Simply Typed Lambda-Calculus], + [An ML Implementation of Simple Types], + [Simple Extensions], + [Normalization], + [References], + [Exceptions], + [Subtyping], + [Metatheory of Subtyping], + [An ML Implementation of Subtyping], + [Case Study: Imperative Objects], + [Case Study: Featherweight Java], + [Recursive Types], + [Metatheory of Recursive Types], + [Type Reconstruction], + [Universal Types], + [Existential Types], + [An ML Implementation of System F], + [Bounded Quantification], + [Case Study: Imperative Objects, Redux], + [Metatheory of Bounded Quantification], + [Type Operators and Kinding], + [Higher-Order Polymorphism], + [Higher-Order Subtyping], + [Case Study: Purely Functional Objects], +) + +#{ + show text: strong + show: align.with(center) + grid( + columns: 3, + align: (center, right, left).map(a => a + horizon), + column-gutter: 1em, + row-gutter: .6em, + ..for (i, topic) in topics.enumerate(start: 1) { + let indicator = box( + width: 1.8em, + height: 1.2em, + radius: .2em, + fill: state-fills.at( + chapters.at(str(i)) + .at("state", default: "unread") + ), + stroke: black + ) + (indicator, str(i), topic) + }.flatten() + ) +} \ No newline at end of file