# Hello there!

I'm Soham Chowdhury, a student of mathematics learning to coherently speak algebraic number theory and (eventually) arithmetic geometry.

I'm also a functional programmer interested in programming-language theory and expressive type systems; a self-taught guitarist and musician interested in counterpoint and fugal writing; a fan of a lot of music and writing; and an enthusiast for unexplained analogies in and around mathematics.

I'm interested in and like discussing a variety of things, including literature, music (theory), physics, philosophy, and cognitive science.

This is my personal site and blog, named after the Béla Bartók work.

## Projects

### preposterous

A work-in-progress implementation of the OutsideIn(X) type inference engine of Vytinotis, Peyton Jones, Schrijvers, Sulzmann (2010), used in the Glasgow Haskell Compiler.

### 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.

## Drafts

## 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