Summary: We first talked about the idea behind lisp design, that it was designed so that the programmer could write a language that fit the domain of the problem and then use that language to solve the problem. We also talked about what an eager language is. An eager language evaluates arguments at the time the function call takes place, a lazy langauge evaluates them when they are actually used. We also talked about the purpose of type systems. They’re a fast way of proving certain properties about a program, but are more restrictive than a formal proof (rejects valid programs). We also briefly discussed the purpose of a fender and how they were used and what made them impractical. We then talked about the purpose of blame prediction. We then discussed the contract system and ways that it fails and also how it differs from a type system (it does not check properties on parts of the program that aren’t run). We then discussed the restrictions of the paper. We discussed why we tag macros when we expand them (to stop the same expansion from happening twice). We then discussed the semantics reduction figure. We also stepped through the match and transcribe functions in the paper in order to demonstrate the semantics.
Something I Learned: Iearned the abstract definition of what a type system is. I also learned the real purpose behind the blame prediction paper, something I struggled with the first time I read it.
Lingering Questions: None, for now...