Classical vs Quantum Computation (Week 4)
Posted by John Baez
Here are the notes for the latest installment of my course on Classical versus Quantum Computation:
- Week 4 (Oct. 26) - Currying and uncurrying, evaluation and coevaluation. Basic aspects of the "quantum lambda calculus": so far, the fragment of the lambda calculus that works in any monoidal closed category. The "name" of a morphism. Compact categories.
Last week’s notes are here; next week’s notes are here.
This week we used lambda-terms and also string diagrams to describe “currying” and “uncurrying”. Currying, named after Haskell Curry, is the process of turning a morphism
into a morphism
where is an object in our category called the “internal hom”. Currying is usually done in a cartesian closed category - but to spice things up a bit, we did our currying in a monoidal closed category. We used currying to construct morphisms called evaluation and coevaluation, and something called the “name” of morphism.
We illustrated these concepts with two main examples. The first is : the category of sets, which is cartesian: the tensor product is just the cartesian product, defined by a universal property. The second is Vect, the category of finite-dimensional vector spaces with its usual tensor product. This is compact, meaning that
for an object called the “dual” of .
We saw that string diagrams work a bit better in the compact case than the cartesian case. This is probably why Feynman diagrams were only invented after quantum mechanics, though similar diagrams are also applicable to the category of sets.
Re: Classical vs Quantum Computation (Week 4)
Obvious comment: shouldn’t currying and uncurrying only be inverses up to some sort of natural isomorphism? Or are we already abstract enough for the moment?