- Series: Foundations of Computing
- Paperback: 114 pages
- Publisher: The MIT Press; 1 edition (August 7, 1991)
- Language: English
- ISBN-10: 0262660717
- ISBN-13: 978-0262660716
- Product Dimensions: 7 x 0.4 x 9 inches
- Shipping Weight: 8.8 ounces (View shipping rates and policies)
- Average Customer Review: 16 customer reviews
- Amazon Best Sellers Rank: #416,489 in Books (See Top 100 in Books)
Enter your mobile number or email address below and we'll send you a link to download the free Kindle App. Then you can start reading Kindle books on your smartphone, tablet, or computer - no Kindle device required.
To get the free app, enter your mobile phone number.
Other Sellers on Amazon
+ $3.99 shipping
+ Free Shipping
+ $3.99 shipping
Basic Category Theory for Computer Scientists (Foundations of Computing) Paperback – August 7, 1991
All Books, All the Time
Read author interviews, book reviews, editors picks, and more at the Amazon Book Review. Read it now
Frequently bought together
Customers who bought this item also bought
About the Author
Benjamin C. Pierce is Professor of Computer and Information Science at the University of Pennsylvania.
If you’re the author, publisher, or rights holder of this book, let ACX help you produce the audiobook.Learn more.
Top customer reviews
There was a problem filtering reviews right now. Please try again later.
The biggest obstacle for learning category theory is the fact that category theory generalizes a lot of areas of pure mathematics like topology, abstract algebra, and geometry. It's hard to generalize before you have examples to generalize, but the examples being generalized in category theory are mostly from higher level mathematics found in senior level undergraduate and graduate level courses. Pierce ameliorates this problem by introducing some of the most basic categories first: sets, ordered sets, partially ordered sets, groups, monoids, vector spaces, measure spaces, topological spaces, proofs, and a simple functional computer language. He takes the time to explicitly define most of these ideas, so, in theory, you could read this book without a background in theoretical mathematics, but it would be hard.
After defining categories and introducing the most basic categories, Pierce describes and defines the most basic ideas in category theory: subcategories, commutative diagrams, monomorphisms, epimorphisms, isomorphisms, initial/terminal objects, products, coproducts, universal constructions, equalizers, pullbacks, pushouts, limits, cones, colimits, cocones, exponentiation, and closed Cartesian categories. These ideas are spelled out over the thirty pages of chapter one including illuminating homework exercises. The homework exercises varied significantly in difficulty. Many of the exercises were trivial and there are two or three that I am still working on despite investing several hours of thought. Generally, I found the exercises to be a bit harder than those in Mac Lane's book, but Pierce's book required less of a background in mathematics. A couple of the exercises were incorrectly stated or impossible.
Chapter two introduced functors, natural transformations, adjoints, and F-algebras. After reading this chapter, I was finally able to understand the definition of monads which are an important part of the computer language Haskell! Pierce provides many examples of each of these ideas and enjoyable homework exercises to increase understanding. Pierce's definition of adjoints is much easier to understand than the standard definitions using counit adjunction or Hom Sets.
The last major chapter concerns applications of category theory to computer science-specifically lambda-calculus and programming language design.
The first two chapters of the book give a reasonable, condensed introduction to category theory for students that have taken a course in abstract algebra. A course in topology or linear algebra would be another useful prerequisite. I carried around the light 100 page book for a few months so that I could learn something whenever I had some extra time. I had hoped that when I had proven that several functors where monads, I would then really understand monads, but a full understanding still eludes me. Similarly, I had proven that several functor pairs are adjoint, but even after I finished the book, I did not feel as though I understand adjoint functors. I had to read a few other sources and the Wikipedia before I felt comfortable with adjoints.
In summary, it's a nice, concise introduction to category theory that almost does not require a graduate level understanding of mathematics.
A slightly different version of this review appeared in my blog at artent.net.
Most everything I've seen on category theory is a confusing mixture of different notations with seemingly identical meanings (but in fact the meanings are totally different). This book is no exception. Often, I have resorted to IRC to sort things out when some notation is simply impenetrable to me. My mathematical training stopped at complex calculus, so this may not apply to you if you've had abstract algebra or something a little more 'meta'.
There seems to be one typographical error, but I am not sure. In the example on the adjunction between products and exponentiation, the right adjoint is listed as "(_)^A x A" but in the diagrams it ends up as "(_)^A". This may be a sensible ellision, but it is not explained anywhere in the text and of it's not easy to find these things on the internet.
A later section explains CCCs (Cartesian closed categories) and its isomorphism to typed lambda calculus. I don't fully grasp the details but this is a very important result in higher-order logic, particularly because the substitution mechanism of lambda calculus can be modeled by category theory.
Read this book before you tackle Mac Lane.
For more applications to functional programming, try Lambert Meertens, Richard Bird, Oege de Moor, Marten Fokkinga, Jaap Van Oosten, and Roland Backhouse.
For a more mathematical approach, try Eugenia Cheng's excellent videos on YouTube. Or just read MacLane...