Phil Freeman

Full-stack developer working with functional programming languages, based in Los Angeles, CA. I enjoy applying the techniques of pure functional programming to real-world problems.


PureScript Compiler

I am the original designer of the PureScript programming language and compiler. I implemented many of the compiler features and core libraries, and I continue to work on new features occasionally.

Try PureScript!

This web application allows developers to try the PureScript programming language without installing the compiler. It compiles the user's code on the server, and executes it in an iframe.


Thermite is an experimental library for developing reactive user interfaces with PureScript and React. It focusses on providing a clean, functional API for component composition. You can try it online.


QuickServe is a library for building simple REST services easily with PureScript on Node.


This library is a simple FRP implementation in PureScript which supports dynamic behaviors. You can try it online.


This teaching tool allows developers to step through the evaluation of a MicroKanren program, observing values as unifications happen, for debugging purposes.


PureScript By Example

I wrote this book as an introduction to functional programming for Javascript developers. It covers many core FP concepts, providing real-world examples as motivation, including callback-based programming, canvas graphics and DOM templating.

24 Days of PureScript

I wrote this blog series to highlight some of the activity in the PureScript developer community.

Personal Blog

Articles on Haskell, PureScript, type theory and functional programming can be found at my blog.


Los Angeles Haskell Group

An Overview of the PureScript Type System

PureScript's type system has grown gradually over the past four years, driven by the need for solutions to real-world problems and also experimentation. This talk is an overview of the implementation of some of the type system features which were inspired by Haskell, and also some novel features such as row polymorphism.

Code Mesh 2016

Stack Safety for Free

Recursion can run afoul of stack overflow errors if we are not careful to make our functions tail-recursive. But tail recursion is not enough if we want to use monadic recursion, or abstractions like free monads and free monad transformers. In this talk, I show how we are able to make these techniques safe in PureScript, a strict Haskell-like language that compiles to JavaScript.

Los Angeles Haskell Group

Fun with Profunctors

The Profunctor type class provides an alternative presentation of lenses and prisms. In this talk, I gave an introduction to profunctor optics and examples.

Papers We Love

Principal Type Schemes for Functional Programs

The Damas-Hindley-Milner type system is a classical system for the first-order polymorphic lambda calculus, and the ML family of programming languages. This paper introduces Algorithm W, a simple algorithm for type reconstruction in the DHM type system. I'll walk through the main results of the paper, and compare the DHM type system with other more modern systems.

© Phil Freeman 2017