Common Lisp has a bunch of that stuff. For example HANDLER-CASE
http://www.lispworks.com/documentation/HyperSpec/Body/m_hand...
A try-catch block?
(handler-case (/ 1 0)
(division-by-zero (condition)
(format nil "We caught ~S." condition))
((or file-error parse-error type-error) (condition)
(format nil "We should never catch ~S" condition))
(:no-error (result)
(declare (ignore result))
"We should never get here."))
That's an example of how it can be done in CL, in Scheme you've got guard. (guard (con
((warning? con)
"We should never get this.")
((assertion-violation? con)
"We should get this."))
(/ 1 0))
No, instead of teaching 2 + 2 = sum (2, 2), i will teach the GOTO statement.