UNSTABLE VERSION (switching machines); trying out better notation for explicit currying
improving notation for explicit currying; fixing correspondence between annotated type and definition