MIT: Independent Activities Period: IAP

IAP 2016



Ur/Web: Types for the Tubes

Ziv Scully

Enrollment: Unlimited: No advance sign-up
Attendance: Participants must attend all sessions
Prereq: Some functional programming knowledge (Javascript counts)

Ur/Web is a functional programming language for web applications that runs both server-side and client-side. It follows the style of ML and Haskell but features an extra fancy type system, which it uses to statically verify immunity to code injection attacks, valid HTML and SQL generation, fields matching between forms and form handlers, type-safe metaprogramming, and more. The sever-side code generated by Ur/Web is very efficient, competitive with lower-level languages like C and Java (see https://www.techempower.com/benchmarks/#section=data-r11).

In the first session, we'll introduce Ur/Web and walk through some demos. We'll quickly review some basic functional programming, introduce Ur/Web's client-side and server-side features, and see everything in action by walking through a blog application.

In the second session, we'll talk about Ur/Web's metaprogramming capabilities. We'll begin with a tutorial on Ur/Web's type system and its main unorthodox feature, row polymorphism. We'll then use what we learned to walk through building a generic SQL table viewer and (if there's time) editor.

Sponsor(s): Student Information Processing Board
Contact: Ziv Scully, sipb-iap16-urweb@mit.edu


Session 1

Jan/25 Mon 07:00PM-08:30PM 4-231

Session 2

Jan/27 Wed 07:00PM-08:30PM 4-231