headshot of me

Micah Cantor

Hi, my name is Micah. I'm a software engineer at Rinse. Previously, I studied computer science and math at Grinnell College. Here you'll find my writing on my interests in functional programming, programming languages, and compilers.

Blog

Programming beyond paradigms

Why the next paradigm in programming is no paradigm at all.

programming-languages

Improving the dead code elimination algorithm in js_of_ocaml

Reducing code size with a new global optimization pass in js_of_ocaml.

ocaml programming-languages

My programming language feature wishlist

All the features I want in a modern general-purpose language.

programming-languages compilers

Synthesizing the boring parts with GHC: a research progress report

A progress report on work on synthesizing Haskell code using the GHC.

haskell programming-languages

Monad confusion and the blurry line between data and computation

On the dual interpretations of data and computation, and a comparison of Clojure macros to Haskell monads.

haskell clojure functional-programming

Compiling a subset of JavaScript to ARM assembly in Haskell

A toy compiler for a subset of JavaScript to ARM assembly, using Haskell.

haskell programming-languages

Why learn Racket? A student's perspective

A few thoughts on why I think you should learn Racket.

racket programming-languages

About that Reader trick

Reader can be used to track local bindings, but tracking all bindings can be more difficult.

haskell programming-languages

The good and the bad of Typed Racket

Some thoughts on Typed Racket, gathered from my experience using it to implement a Lox interpreter.

racket programming-languages

Crafting Interpreters in Typed Racket

Some thoughts on following Bob Nystrom's book Crafting Interpreters in Typed Racket.

racket programming-languages

Solving a few Leetcode questions in Haskell

Exploring some purely functional programming solutions to a few popular Leetcode questions.

haskell leetcode

The strange, sketchy emails a browser extension developer receives

Where does extension malware come from? It might originate from emails like these.

chrome-extensions

Median heaps in Haskell

An implementation and discussion of a median heap data structure in Haskell.

haskell data-structures

Book Review: Racket Programming the Fun Way by James Stelly

A review of the new Racket programming book.

racket

Implementing simple hash tables in Racket

A simple implementation of mutable hash tables to learn how they work behind the scenes.

racket data-structures

Don't go looking for you first open source contribution

The traditional method of approaching one's first open source contribution gamifies the process and leads an unhelpful experience for all involved.

open-source

Parsing propositional logic in 33 lines of Racket

A guide to implementing a simple parser for propositional logic in Racket.

racket logic