Oh right --- instead of making a new exception type, it's possible to
use `require/typed` to give `raise` a different type signature:
```
#lang typed/racket/base
(require/typed racket/base
(raise (All (A) (-> Any A
(with-handlers ((vector? values))
(raise (vector 1 2 3)))
;; '#(1 2 3)
It is a contract that TR uses internally that might be helpful here,
maybe. Or maybe not! :)
Robby
On Sat, Dec 2, 2017 at 3:32 AM, HiPhish wrote:
> What is any-wrap/c? It does not show up in the documentation.
>
> On Friday, December 1, 2017 at 9:17:18 PM UTC+1, Robby
What is any-wrap/c? It does not show up in the documentation.
On Friday, December 1, 2017 at 9:17:18 PM UTC+1, Robby Findler wrote:
>
> Why not use any-wrap/c?
>
--
You received this message because you are subscribed to the Google Groups
"Racket Users" group.
To unsubscribe from this group
Why not use any-wrap/c?
Robby
On Fri, Dec 1, 2017 at 8:39 PM Sam Tobin-Hochstadt
wrote:
> Two notes:
>
> 1. It is unsafe to expose mutable data to untyped code via exceptions
> without wrapping them. If you `(raise f)`, then untyped code could
> catch the exception and
Two notes:
1. It is unsafe to expose mutable data to untyped code via exceptions
without wrapping them. If you `(raise f)`, then untyped code could
catch the exception and call `f`.
2. You should inherit from `exn:fail` -- other `exn` types are for
non-standard exceptions such as `exn:break`.
That name sounds good to me.
--
You received this message because you are subscribed to the Google Groups
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to racket-users+unsubscr...@googlegroups.com.
For more options, visit
Thank you, I have made my own exception type now. Is `exn:fail:rpc`
appropriate or should I use a different name? Using that name looks like
I'm inserting it into Racket's own exception type hierarchy.
On Friday, December 1, 2017 at 8:11:27 PM UTC+1, Ben Greenman wrote:
>
> ...
>
--
You
The error is because type signature of `raise` doesn't allow
"non-flat" values like functions and mutable vectors.
It might not be safe to allow `(raise (vector 1 2 3))` in Typed Racket
... I'm not sure.
For now I think you should make a new exception type. Example:
```
#lang typed/racket/base
Hello Racketeers,
I have been trying to port a module over to Typed Racket, and I have almost
succeeded except for one issue: raising an arbitrary object as an error.
Compare the following code:
;; Works fine
(raise 3)
;; Does not work
(raise (vector 1 2 3))
The error I get is
9 matches
Mail list logo