Thursday 25 April 2013

Introducing MUPLex

I've been taking one of Dan Grossman's courses on programming languages and it was one of the most illuminating I've ever taken. While teaching, he used a made up programming language called MUPL. This MUPL had higher order functions, pairs, conditionals and the addition operation - this is the bare minimum with which you can teach how to build interpreters but also enough on which you can further build a high level functional language.

MUPLEx is basically an extensions of MUPL. It adds some syntactic sugar as well as new features. Here's a list:

  • Functions with an arbitrary number of arguments
  • Currying by default
  • Mutability - yes, I know mutability is the source of all evil (most of it, at least) but in some cases it makes sense, like having lazy evaluation or memoization
  • Records - to be able to build meaningful data structures
  • More math operations
  • Letrec - the equivalent of forward declaration in C (this way you can have mutually recursive functions, or other useful constructs)
  • Cond - syntactic sugar for nested conditionals
  • Lists - syntactic sugar for nested pairs
  • A way to print out stuff
  • Booleans

It also has some primitive type checking to catch some errors as you type. But, unfortunately, at this stage the errors are not too explicit.

I can't include the interpreter in this post because it's a pretty hefty beast, but I can point you to the github HTML preview thingie or directly to the repository.
*the preview may not work in Chrome/Safary

No comments:

Post a Comment