25.10.2015 Views

Write You a Haskell Stephen Diehl

1kEcQTb

1kEcQTb

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

• Higher order functions<br />

• Parametric polymorphism<br />

• Function definition by pattern matching<br />

• Pattern matching desugaring<br />

• Guards to distinguish sub-cases<br />

• Type signature must subsume inferred type<br />

• List syntactic sugar ( value/pattern syntax )<br />

Clearly we’re going to need a much more sophisticated design, and we’ll likely be doing quite a bit more<br />

bookkeeping about our program during compilation.<br />

Scope<br />

Considering our project is intended to be a simple toy language, we are not going to implement all<br />

of <strong>Haskell</strong> 2010. Doing so in its entirety would actually be a fairly involved effort. However we will<br />

implement a sizable chunk of the functionality, certainly enough to write non-trivial programs and<br />

implement most of the standard Prelude.<br />

ings we will implement:<br />

• Indentation sensitive grammar<br />

• Pattern matching<br />

• Algebraic datatypes<br />

• Where statements<br />

• Recursive functions/datatypes<br />

• Operator sections<br />

• Implicit let-rec<br />

• List and tuple sugar<br />

• Records<br />

• Custom operators<br />

• Do-notation<br />

• Type annotations<br />

• Monadic IO<br />

• Typeclasses<br />

• Arithmetic primops<br />

• Type synonyms<br />

• List comprehensions<br />

ings we will not implement are:<br />

• Overloaded literals<br />

• GADTs<br />

• Polymorphic recursion<br />

105

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!