COMP3161/9164 Concepts of Programming Languages
Term 3, 2024

Overview

Table of Contents

1. Assignment 1: Hindsight

Assignment 1 is to develop an evaluator for the MinHS language via Hindsight.

The goal is to implement neither strict evaluation order (a.k.a. call by value, as seen in the lecture slide semantics of MinHS) nor lazy evaluation order (a.k.a. call by need, as seen in Haskell). Instead we introduce an inner language, Hindsight, with the more general "call by push value" (CBPV) evaluation order. CBPV can be used to implement various evaluation order semantics.

The spec document describes the assignment goals and gives a formal specification of the dynamic semantics of Hindsight.

1.1. Haskell sources

You can download the supplied materials as a zip file here including syntax definitions and parser for both Hindsight and MinHS, a test runner, and an extensive test set.

The supplied Haskell development can be built via either the Cabal build/package system (`cabal build`) or the Stack build/package system (`stack build`).

Cabal is installed on CSE machines already. However, the full build of the provided sources (and their various dependencies) requires 1 to 2 GB of disk space, which students will typically not have on their shared CSE directories. We recommend students install on their own hardware if possible. Let us know (on the forum or class email account) if getting Cabal or Stack set up proves impossible.

1.2. Questions

Please ask questions about the assignment on the Ed forum, using the Assignments/A1 tag. You can also ask questions about how to use Haskell, including issues with Cabal, Stack and other dependencies, using the Labs/Haskell tag.

1.3. Intro video

An intro video from last year explaining the Hindsight language and general approach to the assignment has been posted to the Echo360 video set for this class. You can find in your Echo360 videos (e.g. by following a link from moodle). Note that this year's spec document is slightly different to the one Johannes is showing; take this video as an introduction rather than as a precise specification.

1.4. Updates

We may find issues in the specification or the supplied materials. If we do, we will post updates here and on the main course website. Check before making your final submission that you have seen any updates.

2024-11-28 Thu 20:06

Announcements RSS