Lecture 18 Summary, CSE 341 Spring 2004 Modularity in Scheme and MzScheme * In pure Scheme, you cannot abstract the representation of data * But in MzScheme, define-struct makes a fresh type; hiding associated functions achieves abstraction * MzScheme makes this more convenient with a module system Strong vs. Weak typing Static checking (e.g., type checking) * what is checked? * is it sound? * is it complete Static vs. Dynamic typing * convenience? * preventing useful programs? * better for code evolution? * type extensibility? * better for code reuse? * efficiency?