Hello there!
I'm Soham Chowdhury, a functional programmer interested in compilers, programming-language theory, and expressive type systems.
I'm also a student of mathematics interested in algebraic and arithmetic geometry and in number theory; a self-taught guitarist (and nearly omnivorous consumer of music); a fan of a lot of good writing; an occasional speedcuber; and an enthusiast for unexplained analogies in and around mathematics, physics, and computer science.
This is my personal site and blog.
Articles
Projects
sound-and-complete
A near-complete implementation of the Sound and Complete type system from Dunfield and Krishnaswami (2016), which describes a minimal ML-like language with GADTs, existential types, and coverage-checked pattern-matching.
rien
A set of Nix scripts for reproducible, predictable Haskell development environments supporting custom package-sets and native dependencies.
noether
A numeric programming framework for Haskell featuring highly polymorphic algebraic structures and custom deriving strategies to build complex algebraic behaviors from simpler ones.
Notes and short proofs of concept
A stripped-down Todo app using the Reflex FRP library, with lots of comments
Type-safe neural networks in Idris, with compiler-checked linear algebra!
The quest to learn Teichmüller theory in honor of Mirzakhani's memory
Greatest hits from around the web
How I allow multiple monoid, ring, etc. structures in Noether using type families
What are higher-rank polymorphism and bidirectional type inference?
The Langlands program in number theory
Diatonic chord construction 101
The average Haskell user knows much less category theory than you think
Learn extreme pointfree notation, but don't use it
Rewrite rules for high-performance Haskell (with examples from real libraries)
The Servant library, the compiler as a companion, and evaluating your Haskell proficiency
What "prime" means, and Fermat's theorem on sums of two squares
Ideals are better than elements!
No, you're not stupid: math is actually hard
Thunks and laziness in Haskell
Idle thoughts about abstraction in math and pedagogy