1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-08 20:52:28 +02:00

error in terms of case-lambda

* module/ice-9/boot-9.scm (error): Redefine using case-lambda.
This commit is contained in:
Andy Wingo 2010-06-11 11:17:44 +02:00
parent 010b159f56
commit 4eeaf67c8c

View file

@ -845,16 +845,15 @@ If there is no handler at all, Guile prints an error and then exits."
;;; {Error Handling}
;;;
(define (error . args)
(save-stack)
(if (null? args)
(scm-error 'misc-error #f "?" #f #f)
(let loop ((msg "~A")
(rest (cdr args)))
(if (not (null? rest))
(loop (string-append msg " ~S")
(cdr rest))
(scm-error 'misc-error #f msg args #f)))))
(define error
(case-lambda
(()
(save-stack)
(scm-error 'misc-error #f "?" #f #f))
((message . args)
(save-stack)
(let ((msg (string-join (cons "~A" (make-list (length args) "~S")))))
(scm-error 'misc-error #f msg (cons message args) #f)))))
;; bad-throw is the hook that is called upon a throw to a an unhandled
;; key (unless the throw has four arguments, in which case