An Introduction to Algebraic Data Types

Structured, concrete data

In my last post I said that there were three fundamental approaches to representing data: abstract data types, objects, and algebraic data types. I introduced abstract data types and objects (using a strict definition of “object” based on autognosis) and showed the tradeoffs of implementing data structures in these two...

Abstract Data Types and Objects

Two fundamental approaches to data abstraction

There are three main methods of representing data which developers are likely to encounter: abstract data types, algebraic data types, and objects. Abstract data types (frequently abbreviated “ADTs”) are likely familiar to developers with a computer science background, and algebraic data types (unfortunately also abbreviated “ADTs”) are likely familiar to...

My Medium blog

I previously did my blogging on Medium. I plan to convert my old blog posts from JavaScript+Flow to TypeScript, and move them here. In the meantime, though, here are links to most of my older posts: On functors: (prelude to inevitable monad tutorial) A Short Introduction to Functors An Introduction...

The Problem with "Overengineering"

I worry about using terms which have heavily overloaded meanings. In software discourse, “simple” and “complex” may be the most pernicious, and using them without referencing a specific definition is virtually guaranteed to cause misunderstanding and strife. In the same vein, I’ve recently developed an aversion to the term “overengineering”....