Some type constructors are tensor products

Introduction I want to return to something I've mentioned a couple of times in the past - the fact that applying certain type constructors performs a tensor product. First some admin stuff: > {-# LANGUAGE DeriveFunctor #-} > {-# LANGUAGE FlexibleInstances #-} > {-# LANGUAGE MultiParamTypeClasses #-} > {-# LANGUAGE UndecidableInstances #-} > {-# LANGUAGE TypeApplications #-} > {-# LANGUAGE…