Relit: Typed Literal Macros for Reason, presented by Cyrus Omar

Relit: Typed Literal Macros for Reason, presented by Cyrus Omar
Chicago Functional Programming

McKinsey & Company

300 E Randolph St
Suite #3100
Chicago, il 60601


Reason ( is an increasingly popular alternative syntax for OCaml designed by engineers at Facebook to make OCaml more notationally comfortable for contemporary programmers. However, Reason, following OCaml, builds in literal notation for only a few common data structures, e.g. list literals like [x, y, z], array literals like [|x, y, z|], and JSX literals, which support an extension of HTML notation. This approach is unsatisfying because there are many other possible data structures for which literal notation might be useful, e.g. for finite maps, regular expressions, SQL queries, syntax tree representations, and chemical structures expressed using SMILES notation, to name just a few possibilities.

In an ICFP 2018 paper (, Cyrus and his co-author Jonathan Aldrich address this problem by introducing typed literal macros (TLMs) into Reason, by way of Relit (GitHub - cyrus-/relit: Hygienic typed literal macros (TLMs) for Reason). TLMs allow the programmer to define new literal notation, of nearly arbitrary design, for expressions and patterns of any type at all.

Cyrus Omar got his PhD in programming languages from Carnegie Mellon University in May 2017. He is now a post-doctoral researcher at The University of Chicago, where he leads the Hazel ( collaboration. In a past life, Cyrus was a computational neurobiologist. That experience motivated him to switch fields and focus on designing a better front-end programming experience for scientists, engineers, artists and other skilled end-users, rooted in the principles in type theory and interaction design.

This meetup will be held jointly with the Chicago ReasonML group (Chicago ReasonML (Chicago, IL) | Meetup).

Thank you to McKinsey, who has generously offered to host this joint meetup. Please note that building security requires full names to provide access to the office floors. If your Meetup profile does not include your full name, please send me a private message or email with your full name and I’ll make sure it’s included on the attendee list.

Hosted by

Andrew Hamilton

@cyrus is a postdoc in our dept.