EECS 662

Programming Languages


EECS 662 Blog

Project 2 posted

Project 2 is available for you to look at and start on. No due date yet. I don’t expect you to work over fall break and will set the due date appropriately. However, feel free to start working if you wish.

No Class September 21

I am cancelling class on September 21 due to required personal travel. I’m not sure how we’ll make up the time, but I will let you know later in the semester. Consider this a Fall Mini-Break.

Project 1 Posted

Project 1 is now available in the Mini-Projects section of the class website. I have not assigned a due date yet as we need to talk a bit more about type checking. However, you should be able to complete the first exercise after Thursday’s lecture.


Welcome to the website for EECS 662 - Programming Languages at the University of Kansas. Contents of this blog are available via an Atom feed that can be viewed using any RSS reader. Use this url. Please check here frequently for breaking news and information about projects and exams.

This site is hosted on GitHub and constructed using GitHub Pages, Jekyll and Liquid Tags.

Language Extension

The language extension to use GADTs in the most recent versions of GHC is:


Include this pragma at the top of your source files and the GADT notation I use in class will be available.

GADT Notation

In my notes and in class I have been using the GADT notation when defining data types. I do this because it closely resembles other languages that I use and we will most likely use GADTs later in the semester.

If you prefer the traditional notation that you learned in 368, you are more than welcome to us it. For early projects, there is no read advantage to using the GADT notation.

Project 0

Project 0 is now available if you want to get started. I provided a template file that sets GHC options, defines the AE data type, and defines signatures for each function required for the project. Hopefully this will help you get started. Due date is currently September 7, but that may change as I see how class progresses.

Please note that a parser from concrete syntax to abstract syntax is required only for Exercise 4 and I provided the parser in the template file for you. Also note that numbers in this parser are naturals and should never be negative. This means you will need to do some kind of error checking to catch problems.

We’ll talk about testing later, but if you are brave there is a QuickCheck implementation for part of this language in the examples associated with the text. I do not expect you to use QuickCheck, but I will use it for grading.