+(define-compilation multiple-value-call (func-form &rest forms)
+ (let ((func (ls-compile func-form)))
+ (js!selfcall
+ "var args = [values];" *newline*
+ "function values(){" *newline*
+ (indent "var result = [];" *newline*
+ "for (var i=0; i<arguments.length; i++)" *newline*
+ (indent "result.push(arguments[i]);"))
+ "}" *newline*
+ (mapconcat (lambda (form)
+ (ls-compile form))
+ forms)
+ "return (" func ").apply(window, [args]);")))
+
+