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;
    }
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
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