Description

In this course we will be discussing the theoretical design and the practical implementation of functional programming languages. These type of languages allow us to study programming language features from a wide range of programming languages in a simplified setting. We will also be learning the functional programming language Haskell.

General Information


Announcements

Homework Rules
2/05/15 11:47 AM

Hi, everyone.

A number of you are not following the rules put forth in the

syllabus regarding homework.

Each solution must be on its on page, and the pages should

be stapled. 

Starting now, all homework not meeting these requirements will not be graded.

See you in class today.

Prof. Eades

Project grades and solution
12/09/14 3:25 PM

Hi, everyone.

I just pushed all of your grade reports for the project up to your repos.

You can take a look at that if you want.

I also pushed the project solution up to the course repo.  In the solution directory

there is also a file called Tests.hs which has a bunch of tests.  They are fun to 

play around with.

Good luck on your finals.

Prof. Eades

Hereditary substitution lecture notes
12/08/14 3:35 PM

Hi, everyone.

I just put up the hereditary substitution lecture notes.  You will find them in the course repo.  The file is called lect-HS.pdf

Good luck on your finals!

Prof. Eades

Testing the type checker and its friends
12/05/14 1:40 PM

Hi, everyone.  A lot of people have been asking how to test the type checker.

I thought I would email everyone with how to do it.

You should be able to take any example we have done in class and translate it into the syntax of the language of the project.

For example,

\x:Nat->Nat.\y:Nat.x y

Can be translated into the following:

fun x : Nat => fun y : Nat => app x to y

Now you can use that to test your program.  To convert the above into a Term use parseTerm which takes a string and constructs Term.

Contexts are simply just lists of pairs of names and types.  So for example,

parseCtx “x : Nat, y : Nat” = [(x,Nat),(y,Nat)]

Using the parsing functions makes everything easier.

Lastly, to test the type checker you have to use runTypeChecker, because the latter generates a global state of fresh variables names.

Now a full example might be:

runTypeChecker (parseCtx “z : Nat”) (parseTerm “fun x : Nat -> Nat => app x to z”)

The other functions can be tested in the same manner.  A lot of them have a corresponding run function.

I hope this helps.

Prof. Eades

Computer Scientists and Mathematicians are in a perpetual state of cluelessness
12/04/14 8:01 AM

Here is a great blog post about how it feels to learn and do mathematics.  It applies

equally well to computer science.

I think you should read it:

http://j2kun.svbtle.com/mathematicians-are-chronically-lost-and-confused

Course Evaluations
11/20/14 9:16 AM

It is course evaluation time.  This semester marks the first time GRU will be using

online evaluations.  

I would like to ask that everyone submit an evaluation.  This not only helps the

department get a sense of the students opinions of the course, but also helps

me in making changes to the course so that future courses are better.

I take these very seriously, and I want to get better!  So I ask that you 

please fill the evaluation out honestly.

 

To access and submit a course evaluation please follow the following link:

 

 https://gru.campuslabs.com/courseeval/ 

 

Thanks,

Prof. Eades

Error fixed in lecture notes
10/26/14 6:45 PM

Hi, everyone.

I hope your weekend is going well.

There was a typo in the lecture notes.  The definition of multiplication and exponentiation were

wrong.  I am not sure if I used the wrong definition in lecture or not, but the correct definitions

are now in the lecture notes. 

Sorry about that.

Prof. Eades

Midterm solution
10/20/14 3:04 PM

Hi, everyone.

Great job on the midterm everyone.  I am very happy with the results.

I just pushed the midterm solutions up to the course repo.

See you all tomorrow in class.

Prof. Eades

Staff Office Hours
NameOffice Hours
Prof. Harley Eades
When?
Where?