(mapcar (lambda (entry) (+ entry 2)) x)
(mapcar (apply-partially #'+ 2) x)
And if you need to update x, then setq it to the result of one of the above forms, e.g.:
(setq x (mapcar (apply-partially #'+ 2) x))
You are trying to use the values returned by functions outer-paren and sp-forward-sexp, instead of the positions they move to.
The error message tells you that narrow-to-region expects buffer positions - numbers or markers. So clearly your values of start and end aren't such. They aren't numbers or markers because functions outer-paren and sp-forward-sexp ...
I think you need to access the property values that narrow to region needs.
(defun outer-paren ()
"Move point to the outermost parenthesis."
(defun func ()
(let ((start (outer-paren))