Pātuhitia tēnei: Structure and interpretation of computer programs.