Tsonnet #38 - Call me maybe, but make it typed, part 4

Tsonnet's function type variants get a record makeover — trading opaque tuples for named fields