Abilities in function types

The general form for a function type in Unison isI ->{A} O,whereIis the input type of the function,Ois the output type, andAis the set ofability requirementsof the function. More generally, this can be any comma-separated list of types, likeI ->{A1,A2,A3} O.

A function type in Unison likeA -> Bis really syntactic sugar for a typeA ->{e} Bwhereeis some set of abilities, possibly empty. A function that definitely requires no abilities has a type likeA ->{} B(it has an empty set of abilities).