As LAMBDA is a pending matter for me , I dig on the code and come with this other way to state it
(defun vp-coor ()
(setq screen-size (getvar "screensize"));_ Stores current viewport size in pixels (X and Y).
(setq screen-ratio ( / (car screen-size) (cadr screen-size)))
(setq view-size (getvar "viewsize"));_ Stores the height of the view in the current viewport. Expressed in drawing units.
(setq half-view-size ( * 0.5 view-size))
(setq view-ctr (getvar "viewctr"));_Stores the center of view in the current viewport. Expressed as a UCS coordinate.
(setq off-set (list ( * half-view-size screen-ratio) half-view-size))
(setq vp-cords ( list ( mapcar '- view-ctr off-set) ( mapcar '+ view-ctr off-set)))
)
Of course it maybe take a lot of recurses , but it can be a way to understand the LAMBDA function , also the variables shall be set to LOCAL .