Homework 10 — Programming Language Paradigms

Objectives

Reflect on Haskell’s strengths and weaknesses, and on those of strongly typed, lazy, functional programming in general.

Due Date

Beginning of class session 23.

Tasks

  1. Write a brief (1–2 page, single-spaced, font size ≤ 12 point) essay summarizing your thoughts on the strengths and weaknesses of Haskell and of the strongly typed, functional paradigm in general. Be sure to address the types of projects for which you think Haskell would be good and the types where Haskell might be a poor fit.

    My objective in asking you to do this is to help you learn to think about how to choose between the programming language tools available, rather than just reaching for the same tool you've always used. As someone said, “To the programmer who only knows C++, every problem is a thumb.”

    Submit your essay to me as a pdf file by email before the homework deadline. Only pdf files will be accepted.

  2. 10 POINT BONUS: Due before you leave for break.

    Extend the stateful monadic interpreter from class by adding support for boolean values and expressions. You should add and implement the following terms:

    Variables in your interpreter should be able to store boolean or integer values.

    If you choose to do this bonus problem, begin work by copying the files that we used in class for the stateful monadic interpreter to your HaskellHomework directory. Be sure to add them to SVN.

    I do not expect you to extend EddieParse.hs, though you certainly may. Instead, once you have updated EddieTypes.hs, see me to get an updated version of the EddieParse.hs. I’ll ask you to explain your types to me so I can confirm that you’ve solved that part of the riddle before giving away the answer through the parser code.

Turn-in Instructions

Turn in your essay as a pdf file by email to me. Commit the bonus problem, if you choose to do it, to your individual SVN repository for the course.