src/PlasmaConduit/option/Some.php
public function flatMap($flatMapper) {
        if (!is_callable($flatMapper)) {
            throw new Exception("Can't call Some#flatMap with a non callable.");
        }
        $flatMapped = $flatMapper($this->_value);
        if (!($flatMapped instanceof Option)) {
            throw new Exception(
                "Function passed to Some#flatMap must retrun Option"
            );
        }
        return $flatMapped;
    }
public function flatMap($flatMapper) {
        if (!is_callable($flatMapper)) {
            throw new Exception("Can't call Some#flatMap with a non callable.");
        }
        $flatMapped = $flatMapper($this->_value);
        if (!($flatMapped instanceof Option)) {
            throw new Exception(
                "Function passed to Some#flatMap must retrun Option"
            );
        }
        return $flatMapped;
    }
This method takes a callable type that takes the wrapped value of the
current `Some` as it's arguments and returns an `Option` type. The
`Option` type returned by the passed in callable is returned by this
method

@param Callable $flatMapper - Fuction to call on the wrapped value
@return Option              - The `Option` produced by the flat mapper
@throws Exception