Skip to content

Latest commit

 

History

History
57 lines (36 loc) · 3.12 KB

README.rst

File metadata and controls

57 lines (36 loc) · 3.12 KB

Types and Programming Languages in F#

Code and Examples from Benjamin Pierce's "Types and Programming Languages".

Overview

"Types and Programming Languages" provides a comprehensive introduction to type systems and programming language theory. The code which accompanies the book is written in OCaml; this repository contains an F# port of that code.

NOTE: The ported F# code is not a fresh implementation -- it is the original OCaml code with some trivial modifications which allow it to compile with F#. The output of each of the F# projects has been verified to match the output of the original OCaml programs.

Prerequisites

  • F# compiler

    • Windows
      • Visual Studio 2010 or 2012
    • Mac OS X / FreeBSD / Linux
  • NuGet is used to manage external packages. The easiest way to install NuGet is by downloading it (for free) from the Visual Studio Extension Gallery. If you do not have NuGet, or are running a version prior to 2.5, you must install it (or upgrade) before you will be able to build the projects.

    The solution uses the Package Restore feature of NuGet to automatically download any missing packages when the project is built. This requires that you have the Allow NuGet to download missing packages during build setting enabled; in Visual Studio, you can find the setting under Options -> Package Manager -> General.

    Once NuGet is installed and configured, you should be able to build the solution.

  • F# PowerPack 2.0 (GitHub)

    The F# PowerPack 2.0 is required (for now) because the projects use fslex and fsyacc. If you're running Windows, you should install the PowerPack from the installer on CodePlex (link above); otherwise, build and install the sources from the GitHub repository.

    On a related note, I'm working on replacements for fslex and fsyacc (see my fsharp-tools repository); they're not quite ready to use yet, but once they are I'll modify the TAPL projects to use my replacements (fsharplex and fsharpyacc) instead.