# Assignment 6

## Problem

This week’s homework is to extend a simple language and evaluator we saw in class. The starter code can be found here.

The first extension requires adding a two constructors to the `Expr`

GADT, with corresponding extensions to the `eval`

function. An `O`

constructor should construct an expression out of a value of type `Ordering`

(this is the type with three values `LT`

, `EQ`

, and `GT`

), and a `Comp`

constructor shuld take two expressions containing values in the `Ord`

typeclass and return an ordering expression.

The second extension requires adding a single `If`

constructor, that takes a boolean expression and two other expressions. The eval function should evaluate the boolean expression and return the value of one of the other two expressions depending on the result.

Finally, extend the Expr type and eval function to include one or more additional expressions of your choice. For example, you might try to

add strings and a

`Print`

expressionadd complex numbers and extend arithmatic to work on them

embed functions in the language with function and function application expressions

## Submission instructions

Send an email to cs43-win1819-staff@lists.stanford.edu with either:

(Preferred) A link to a Gitlab / Github repository with your code.

A .zip file with your code.