Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Accompanying code for "Types and Programming Languages", ported to F#
F# FORTRAN
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
.nuget
arith
bot
equirec
fomega
fomsub
fullequirec
fullerror
fullfomsub
fullfomsubref
fullisorec
fullomega
fullpoly
fullrecon
fullref
fullsimple
fullsub
fulluntyped
fullupdate
joinexercise
letexercise
packages
purefsub
rcdsubbot
recon
reconbase
simplebool
support
tyarith
untyped
.gitignore
LICENSE.txt
README.rst
expected-output.rst
fsharp-tapl.sln

README.rst

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.

Something went wrong with that request. Please try again.