+(defun multiple-value-funcall->list (function &rest args)
+ (multiple-value-call #'list (apply function args)))
+
+(defmacro multiple-value-bindf (vars form &body body)
+ `(destructuring-bind ,vars
+ (multiple-value-funcall->list #',(car form) ,@(cdr form))
+ ,@body))