Cyrus Omar designs intelligent user interfaces for modern programming languages.

Education

Carnegie Mellon University
PhD, Computer Science
UIUC
BS, Computer Science
BS, Molecular & Cellular Biology

Advising

PhD Students

Research Staff

Masters and Undergraduates

There are 10+ masters and undergraduate researchers in FP Lab — see the FP Lab webpage!

Former Advisees

FP Lab alum also include 200+ undergraduate and MS students, 15 of whom went on to PhD programs!

Service

2026
PLDI PC · PROPL Chair · VL/HCC PC · HATRA PC · LMPL PC · PLMW @ SPLASH Speaker · SPLASH SRC Judge · CSE Course Review Committee
2024
OOPSLA PC · VL/HCC PC · Onward! PC · LIVE PC · SPLASH-E PC · HATRA Publicity Chair · CSE DEI Committee
2023
PLDI PC · ECOOP PC · VL/HCC PC · MWPLS Co-chair · TyDe SC Chair · ECOOP Area Chair (Brave New Ideas and Pearls) · HATRA PC · IFL PC · SPLASH-E PC · SPLASH SRC · PLMW @ ICFP Panelist · CSE DEI Committee · CSE Hosting Committee

For older service roles, refer to my CV.

Awards and Honors

I lead the Future of Programming Lab (FP Lab), part of the vibrant MPLSE research community.
I am on sabbatical at the University of Cambridge for 2026–27, as a Visiting Fellow in the Energy and Environment Group in the Department of Computer Science and Technology and an Associate Scholar at Pembroke College.

Live Pattern Matching with Typed Holes

Yongwei Yuan, Scott Guest, Eric Griffis, Hannah Potter, David Moon, and Cyrus Omar.

Journal paper in Proceedings of the ACM on Programming Languages (vol 7 issue OOPSLA1).

Distinguished Paper Award

Several modern programming systems, including GHC Haskell, Agda, Idris, and Hazel, support typed holes. Assigning static and, to varying degree, dynamic meaning to programs with holes allows program editors and other tools to offer meaningful feedback and assistance throughout editing, i.e. in a live manner. Prior work, however, has considered only holes appearing in expressions and types. This paper considers, from type theoretic and logical first principles, the problem of typed pattern holes. We confront two main difficulties, (1) statically reasoning about exhaustiveness and irredundancy when patterns are not fully known, and (2) live evaluation of expressions containing both pattern and expression holes. In both cases, this requires reasoning conservatively about all possible hole fillings. We develop a typed lambda calculus, Peanut, where reasoning about exhaustiveness and redundancy is mapped to the problem of deriving first order entailments. We equip Peanut with an operational semantics in the style of Hazelnut Live that allows us to evaluate around holes in both expressions and patterns. We mechanize the metatheory of Peanut in Agda and formalize a procedure capable of deciding the necessary entailments. Finally, we scale up and implement these mechanisms within Hazel, a programming environment for a dialect of Elm that automatically inserts holes during editing to provide static and dynamic feedback to the programmer in a maximally live manner, i.e. for every possible editor state. Hazel is the first maximally live environment for a general-purpose functional language.

# 1st Apr 2023•hazel, journal

Loading recent items...