sapplication

sapplication:=
macros | macro ctor NAME scoercion
expressions | scoercion
expressions | sapplication scoercionapply
expressions | caseno scoercion

The system automatically handles application of values of function type. However the user can provide overloaded applicators for a value of type d to a value of type c by defining a function named apply of type d -> c.

In addition, a constructor for a named type t can be defined by a function with the name _ctor_t. This function will be invisible if the type already has a constructor defined by the system, for example a struct. In fact there is no requirement that the function return the specified type: this feature is purely syntactic sugar which is use when a function is expected and a named type is found. Algebraic types can be used via a typedef name.