Estou tentando lidar com certos tipos de erros no Racket digitado. O código a seguir funciona conforme esperado no Racket digitado e não digitado
(with-handlers
([exn:fail:contract:divide-by-zero?
(lambda (e)
(raise e))])
(let ([x 0]
[y 1])
(display (/ y x))))
resultando na mensagem de erro
/: division by zero
Uma ligeira elaboração funciona em Racket não digitado:
(with-handlers
([exn:fail:contract:divide-by-zero?
(lambda (e)
(displayln "oops!")
(raise e))])
(let ([x 0]
[y 1])
(display (/ y x))))
oops!
/: division by zero
Porém dá a seguinte mensagem de erro no Racket digitado:
Type Checker: No function domains matched in function application:
Domains: (U (Rec flat (U (Immutable-HashTable flat flat) (Immutable-Vectorof flat) (Pairof flat flat) Boolean Bytes Char Complex Keyword Null String Symbol)) exn) Any
(U (Rec flat (U (Immutable-HashTable flat flat) (Immutable-Vectorof flat) (Pairof flat flat) Boolean Bytes Char Complex Keyword Null String Symbol)) exn)
Arguments: Any
in: (raise e)
Alguém pode explicar o que está acontecendo aqui ou sugerir uma solução alternativa?