This module provides the Unit function return type.
Ceylon uses void keywords to mark functions with pure side effects.
Unlike many functional languages, void functions in Ceylon does not
returns Unit. In fact they return Anything (the root supertype
of all Ceylon types).
This allows to use other non-void functions where void functions are expected, and other non-void functions to accept void function as parameter.
This Anything approach is flexible,
but it may not fit in a more disciplined coding style.
For example, if non-void functions are used where void functions are expected,
then we are using side effects with non-void functions.
So the non-void functions do not only return a value specified by its return type,
but also exposing side effects to the outer environment. And Ceylon's type system
does not provide a mechanism to distinguish T function just returning T and
T functions also exposing side effects (a.k.a something like T|SideEffect).
This may cause problems under certain conditions and sometimes we may want a more strict return type for pure side effect functions.
Thus comes this module.
To use this module, simply import Unit and unit in your module,
and replace void with Unit, adding additional return unit; statement
in function body.
Example:
Unit f() {
print("Returns Unit.");
return unit;
}
shared void run() {
f();
}
| Packages | |
| io.github.weakish.unit | This package provides the |