preface
Links
day 0
Intro to Scalaz
What is polymorphism?
Parametric polymorphism
Subtype polymorphism
Ad-hoc polymorphism
sum function
Monoid
FoldLeft
Typeclasses in Scalaz
Method injection (enrich my library)
Standard type syntax
day 1
typeclasses 101
sbt
Equal
Order
Show
Read
Enum
Bounded
Num
typeclasses 102
A traffic light data type
a Yes-No typeclass
day 2
Functor
Function as Functors
Applicative
Apply
Option as Apply
Applicative Style
Lists as Apply
Zip Lists
Useful functions for Applicatives
day 3
Kinds and some type-foo
Tagged type
About those Monoids
Monoid
Semigroup
Back to Monoid
Tags.Multiplication
Tags.Disjunction and Tags.Conjunction
Ordering as Monoid
day 4
Functor Laws
Breaking the law
Applicative Laws
Semigroup Laws
Monoid Laws
Option as Monoid
Foldable
day 5
A fist full of Monads
Bind
Monad
Walk the line
Banana on wire
for syntax
Pierre returns
Pattern matching and failure
List Monad
MonadPlus and the guard function
Plus, PlusEmpty, and ApplicativePlus
MonadPlus again
A knight's quest
Monad laws
day 6
for syntax again
Writer? I hardly knew her!
Writer
WriterT
Using for syntax with Writer
Adding logging to program
Inefficient List construction
Comparing performance
Reader
day 7
Applicative Builder
Tasteful stateful computations
State and StateT
Getting and setting state
/
Validation
NonEmptyList
day 8
Some useful monadic functions
Making a safe RPN calculator
Composing monadic functions
Kleisli
Reader again
Making monads
day 9
Tree
TreeLoc
Zipper
Id
Lawless typeclasses
Length
Index
Each
Foldable or rolling your own?
Pointed and Copointed
Tweets to the editor
day 10
Monad transformers
Reader, yet again
ReaderT
Stacking multiple monad transformers
day 11
Lens
LensT
Store
Using Lens
Lens as a State monad
Lens laws
Links
day 12
Origami programming
DList
Folds for Streams
The Essence of the Iterator Pattern
Monoidal applicatives
Combining applicative functors
Idiomatic traversal
Shape and contents
Sequence
Collection and dispersal
Links
day 13 (import guide)
implicits review
import scalaz._
import Scalaz._
a la carte style
day 14
mailing list
git clone
sbt
including Vector
snapshot
operator
applicative functions
day 15
Arrow
Category and Compose
Arrow, again
Unapply
parallel composition
day 16
Memo
functional programming
Effect system
ST
STRef
Interruption
Back to the usual programming
day 17
IO Monad
Enumeration-Based I/O with Iteratees
Composing Iteratees
File Input With Iteratees
Links
day 18
Func
Free Monad
CharToy
Fix
FixE
Free monads part 1
Free monads part 2
Free monads part 3
Stackless Scala with Free Monads
Free monads
Trampoline
List using Free
day 19
Category theory
Sets, arrows, composition
Point
Equality of arrows of sets
Isomorphisms
Determination and choice
Retractions and sections
Surjective
Injective and monomorphism
Epimorphism
Idempotent
Automorphism
day 20
Awodey's `Category Theory'
Examples of categories
Sets
Setsfin
Pos
Cat
Monoid
Mon
Groups
Initial and terminal objects
Uniquely determined up to isomorphism
Examples
Products
Uniqueness of products
Examples
Duality
Opposite category
The duality principle
day 21
Coproducts
Unboxed union types
/
Coproduct and Inject
Hom-sets
Large, small, and locally small
Hom-sets
Thinking in Hom-set
Natural Transformation
Thanks for reading
Scalaz cheatsheet
Equal[A]
Order[A]
Show[A]
Enum[A] extends Order[A]
Semigroup[A]
Monoid[A] extends Semigroup[A]
Functor[F[_]]
Apply[F[_]] extends Functor[F]
Applicative[F[_]] extends Apply[F]
Product/Composition
Bind[F[_]] extends Apply[F]
Monad[F[_]] extends Applicative[F] with Bind[F]
Plus[F[_]]
PlusEmpty[F[_]] extends Plus[F]
ApplicativePlus[F[_]] extends Applicative[F] with PlusEmpty[F]
MonadPlus[F[_]] extends Monad[F] with ApplicativePlus[F]
Foldable[F[_]]
Traverse[F[_]] extends Functor[F] with Foldable[F]
Length[F[_]]
Index[F[_]]
ArrId[=>:[, ]]
Compose[=>:[, ]]
Category[=>:[, ]] extends ArrId[=>:] with Compose[=>:]
Arrow[=>:[, ]] extends Category[=>:]
Unapply[TC[_[_]], MA]
Boolean
Option
Id[+A] = A
Tagged[A]
Tree[A]/TreeLoc[A]
Stream[A]/Zipper[A]
DList[A]
Lens[A, B] = LensT[Id, A, B]
Validation[+E, +A]
Writer[+W, +A] = WriterT[Id, W, A]
/[+A, +B]
Kleisli[M[+_], -A, +B]
Reader[E, A] = Kleisli[Id, E, A]
trait Memo[K, V]
State[S, +A] = StateT[Id, S, A]
ST[S, A]/STRef[S, A]/STArray[S, A]
IO[+A]
IterateeT[E, F[_], A]/EnumeratorT[O, I, F[_]]
Free[S[+_], +A]
Trampoline[+A] = Free[Function0, A]
Imports
Note
更多信息……