I've always assumed that new exception structures should try to extend the
exn:fail structure, but every so often, I see error structures that extend
the base 'exn' type.
For example, the error type in the htdp teachpacks
(collects/htdp/error.ss) is defined as:
(define-struct (tp-exn exn) ())
I expected this as:
(define-struct (tp-exn exn:fail) ())
and was a little surprised to see otherwise. Is there a reason for
preferring one vs the other?