Skip to content

Instantly share code, notes, and snippets.

@bitemyapp
bitemyapp / gist:e03b415925b8d5e61bf5
Created June 2, 2014 05:19
Edward's Category Theory recommendations

There is no "one size fits all" answer to this question.

It strongly depends on the context of the reader.

That said, I can offer several suggestions for different demographics.

If you are starting from zero and have little background with mathematics as a whole then Conceptual Mathematics: A First Introduction to Categories by Lawvere and Schanuel is probably the best starting point. It doesn't go deep or far, but it does supply you with a lot of drill for the material it does cover, which is quite rare for a category theory textbook!

If you have a lot of "mathematical maturity" probably the most dense book on the topic is Categories for the Working Mathematician by Saunders Mac Lane. I personally bounced off this book a half-dozen times trying to work through it, but in the end was able to make it through. The journey is tough, but the reward at the end is worth it. It is a very comprehensive summary of 1-category theory, and nicely ties up the core ideas at that level. The last chapter is enough of an

#I @"g:\prg\Fleece\Fleece\bin\Release\"
#r @"FsControl.Core.dll"
#r @"FSharpPlus.dll"
#r @"System.Json.dll"
#r @"ReadOnlyCollectionsInterfaces.dll"
#r @"ReadOnlyCollectionsExtensions.dll"
#r @"Fleece.dll"
open System
open System.Collections.Generic
--
-- Copyright © 2013-2014 Anchor Systems, Pty Ltd and Others
--
-- The code in this file, and the program it is a part of, is
-- made available to you by its authors as open source software:
-- you can redistribute it and/or modify it under the terms of
-- the 3-clause BSD licence.
--
module Main where
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
-- ghci -package lens -package tagged LeftLike.hs
import Control.Lens
import Data.Maybe
public class DiagnosticsSubstitutionContext : ISubstitutionContext
{
[ThreadStatic]
private static IList<IArgumentSpecification> LastDequeuedList;
private static ConcurrentDictionary<IArgumentSpecification, ArgumentInfo> ArgumentInfos { get; } = new ConcurrentDictionary<IArgumentSpecification, ArgumentInfo>();
private class ArgumentInfo
{
public string CreationStack { get; }
public int DequeueCounter { get; set; }