(defun call-wisp-k (k-id &rest values)
;; probably want to trap form errors here.
(destructuring-bind (k type package . data) (get-wisp-k k-id)
(let ((*package* package)
(*k-id* k-id))
(unless k (error 'wisp-invalid-continuation-id))
(case type
(:form
(let ((mvlist (multiple-value-list (funcall (car data)))))
(if (cdr mvlist)
(apply #'kall k mvlist)
(funcall #'kall k (car mvlist)))))
(t (apply #'kall (cons k values)))))))Source Context