+ 1 Introduction

Category Theory is an abstract branch of mathematics that organizes and bridges many parts of mathematics, science, engineering, philosophy, and linguistics. It is sometimes referred to as "a general mathematical theory of structures and of systems of structures."[1] Computer scientists in particular have been discovering interesting uses for category theory because valuable (i.e. computable) ideas can be derived from pre-existing ones, oftentimes without any work at all. Category theory is relevant for many kinds of programming, from databases, compilers, and distributed computing to simple programs and hobby projects. Categories are not just for monad-loving academics, they have real world uses and are quite amenable to a variety of programming styles.

In this series of articles, we will not cover the entirety of category theory. We think it is beneficial to zero-in on the parts relavent to how Felix exposes category theoretic ideas to the programmer and how it uses such concepts internally. This means short essays on the basics (e.g. objects and morphisms), sums, products, exponentials, arrays, and the concept of extension.