< prev | next >1302Change to browse by: References & CitationsNASA ADS 1 blog link (what is this?) Bookmark (what is this?) Category theory for scientists (Old version) (Submitted on 27 Feb 2013 (v1), last revised 18 Sep 2013 (this version, v3)) There are many books designed to introduce category theory to either a mathematical audience or a computer science audience. In this book, our audience is the broader scientific community. We attempt to show that category theory can be applied throughout the sciences as a framework for modeling phenomena and communicating results. In order to target the scientific audience, this book is example-based rather than proof-based. monoids are framed in terms of agents acting on objects, sheaves are introduced with primary examples coming from geography, and colored operads are discussed in terms of their ability to model self-similarity. A new version with solutions to exercises will be available through MIT
CT] for this version) From: David Spivak [view email]Wed, 27 Feb 2013 18:24:50 GMT (2092kb,D)Mon, 13 May 2013 21:22:41 GMT (2210kb,D)Wed, 18 Sep 2013 17:38:51 GMT (2214kb,D) Which authors of this paper are endorsers? | Disable MathJax (What is MathJax?)I'm reviewing the books on the MIRI course list. After finishing Cognitive Science I picked up Basic Category Theory for Computer Scientists, by Benjamin C. Pierce. This book is tiny, clocking in at around 80 pages. Don't be fooled, it packs a punch. A word of warning: when the title says "for Computer Scientists", it is not abusing the term. I went in expecting Category Theory for Computer Programmers and a tone like "Welcome, Java Programmer, to the crazy world of math!". What I got was a lean, no-bullshit introduction to category that assumes mathematical competence. "Computer Scientist" and "Programmer" get mixed up in common parlance, so casual programmers are cautioned that this book targets the former group.
Category Theory for Computer Scientists assumes you're familiar with proof-writing, set theory, functional programming, and denotational semantics. In return, Category Theory wastes none of your time. I found this refreshing, but unexpected. I'll give a brief overview of the contents of the book before discussing them. Introduces monomorphisms (f∘g = f∘h → g=h) and epimorphisms (g∘f = h∘f → g=h), then uses these to introduce categorical duals (similar constructs with the direction of the arrows swapped). Introduces isomorphisms and the concept of equality up to isomorphism. Introduces initial and terminal objects (objects with exactly one arrow from/to each object). Introduces binary products and coproducts. Generalizes to arbitrary products. Introduces pullbacks, briefly mentions pushforwards. Generalizes equalizers, products, and pullbacks to terminal cones (which are limits). Mentions Cartesian Closed Categories (categories with products, exponents, and a terminal object).
Introduces Functors (arrows between categories). Introduces F-Algebras (an extreme generalization of algebra). Introduces Natural Transformations (structure-preserving mappings between functors). Introduces Adjoints (functors related in way that generalizes efficiency/optimality). Discusses four applications of category theory: Closed Cartesian Categories are in correspondence with lambda calculi. Category theory can help make implicit conversion & generic operators more consistent in programming languages. Category theory is linked to type theory, domain theory, and algebraic semantics (all useful in programming semantics). Category theory revolutionized how programming languages construct underlying denotations. A list of textbooks, introductory articles, reference books, and research articles that the author recommends for further learning. The first two chapters of this book are the important parts. The third chapter points out ways that category theory has been applied to computer science, which I found interesting but not relevant to my goal (of learning category theory).
The fourth chapter provides a list of resources, which will be handy to have around. A textbook review is somewhat ungrounded if you don't know the reviewer's background: Category Theory was not a complete mystery to me when I picked up this book. I gained some little familiarity with the subject osmotically when learning Type Theory and messing around in Haskell. However, Category Theory always looked like abstract nonsense and I'd never studied it explicitly. Given that background, this book served me very well. Most of my utility was derived from doing the exercises in the book. My goal was to build a mental implementation of category theory, and reading math without doing it works about as well as writing code without running it. The first five exercises alone corrected a handful of misconceptions I had about category theory, and were sufficient to take theorems from "opaque abstract nonsense" to "vaguely intuitive". (In my case, the fact that "the diagram commutes" means "all paths from one vertex to another compose to the same arrow" made a lot of things click.
I expect such clicking points to vary wildly between people, so I won't mention more.) It is likely that any other category theory textbook could have given similar results by providing exercises. The selling point of this book is the narrative: if you don't like narratives, this is the book for you. In fact, this book is sometimes too terse. Take, for example, this suggestion after the introduction of adjoint functors: The reader who has persevered this far is urged to consult a standard textbook for more details on alternative treatments of adjoints. Or this, right when things were getting interesting: A longer discussion of representability is beyond the scope of this introduction, but it is often named as one of the two or three key concepts of category theory. That said, the book is titled Basic Category Theory, so I can't complain. It really depends on your goals. This book does not motivate the math: It assumes you want to know category theory, and teaches you without embellishment.
If you are wondering what this whole category theory thing is and why it matters then you should probably find a friendlier introduction. then you should strongly consider reading the first two chapters of this book (and perhaps chapter 3 section 4). If you're looking for a really deep understanding of category theory, you should probably look elsewhere; this book doesn't step beyond the basics. All that assumes you want to learn category theory, which probably isn't true of the general audience. A more pertinent question is perhaps: It depends on your goals. I think it was worth learning, but I'm the sort of person who delights in clean abstractions. If nothing else, category theory is a lesson in how far abstractions can be pushed. F-Algebras, for instance, are one of the most abstract ideas I've ever encountered. Category-theoretic products (or, more generally, cones) are astonishingly powerful given their generality. I was quite surprised by how far you can strip down exponentiation.