src/PlasmaConduit/option/None.php
public function orElse($alternative) {
        if (!is_callable($alternative) && !($alternative instanceof Option)) {
            throw new Exception(
                "Can't call Some#orElse() with non option or callable"
            );
        }

        if ($alternative instanceof Option) {
            return $alternative;
        } else {
            $evaluated = $alternative();
            if (!($evaluated instanceof Option)) {
                throw new Exception(
                    "Result of alternative must return an `Option` type"
                );
            }
            return $evaluated;
        }
    }
public function orElse($alternative) {
        if (!is_callable($alternative) && !($alternative instanceof Option)) {
            throw new Exception(
                "Can't call Some#orElse() with non option or callable"
            );
        }

        if ($alternative instanceof Option) {
            return $alternative;
        } else {
            $evaluated = $alternative();
            if (!($evaluated instanceof Option)) {
                throw new Exception(
                    "Result of alternative must return an `Option` type"
                );
            }
            return $evaluated;
        }
    }
This function takes an alternative `Option` type or a callable and if
this `Option` type is `None` it returns the evaluated alternative type.
However, this is the `None` class so it will always return
the evaluated `$alternative`.

@param Callable|Option $alternative - The alternative Option
@return Option                      - Always returns `$alternative`
@throws Exception