Giter Club home page Giter Club logo

type-system-workshop's Introduction

type-system-workshop

Set up

  1. Install deno

  2. If you are using VS Code, add this extension. If you use some other editor, there are more instructions here about setting up your environment.

  3. Clone this repo

git clone https://github.com/kevinwilde/type-system-workshop.git

Commands

Run tests:

deno test test/tests.ts

Run a source file:

deno run  --allow-read index.ts <path/to/file>

Workshop format

  • ~25 mins: overview of the programming language we are building
  • ~25 mins: implementing a typechecker that relies on type annotations
  • ~20 mins: discussing type inference and how the algorithm will work
  • ~50 mins: implementing the typechecker with inference

Checkpoints

Everything we're going to be implementing is already available in different branches on this repo. This is here in case you need it or miss something at any point, but don't look now since these are the "answer key."

[Spoilers]

References

The syntax of our language is mostly based on racket.

The implementation of the type checker is heavily aided by Types and Programming Languages by Benjamin C. Pierce.

The implementations of the parser and interpreter include ideas from Northwestern's Programming Languages course by Robby Findler and University of Washington's Programming Languages course by Dan Grossman available on Coursera.

type-system-workshop's People

Contributors

kevinwilde avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

kangli-bionic

type-system-workshop's Issues

Recording of Workshop

First of all, amazing workshop! I really enjoyed it. I finally understand the idea behind type inference.
But I was wondering if there is a recording of the workshop available?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.