The Result type is an alternative way of chaining together functions in a
functional programming style while hiding away error handling structures such
as try-catch-blocks and conditionals.
Instead of adding a throws declaration to a function, the return type of the
function is instead set to Result where V is the original return type,
i.e.