2 base return type:
- Result : represents the possibility of failure.
- Option : represents an optional value
The factory methods on result are:
- succeed , and should be read as, succeed with this $value as success.
- fail, and should be read as, fail with this $value as failure.