Experiment: codensity transform
Merge branch 'codensity' into io-streams