Types & data

Uppercase vs lowercase is enforced

Ascent reads your capitalization as meaning. An initial capital always names a type or a constructor — Point, Circle, True, None. An initial lowercase always names a binding — a variable, a parameter, a field. And it’s enforced: a binding may not start with a capital.

Ascent sees Total in a value slot, assumes you’re naming a type or constructor, and gets confused when no { … } follows. Lowercase it and all is well:

(Coming from C or JS? Note True, False, and None are capitalized here, matching Python — they’re ordinary constructors, and constructors are the capitalized things.)