On Thursday, November 1, 2018 at 7:38:29 PM UTC+8, Alexander McLin wrote:
>
> I’m a little confused here, to me it looks like the second contract
> violation is completely different from the first one.
>
My program is only seven lines of code and does not call `build-path`.
Also, if I fix the incorrect call to `foo` and rebuild the executable, the
`build-path` contract violation is no longer reported and the program runs
fine. You might wan to actually build the executable and run it using the
instructions I provided, to understand what I am trying to explain.
#lang racket
(require racket/contract)
(define/contract (foo n)
(-> integer? any/c)
(printf "foo: ~a~%" n))
(module+ main
(foo "hello"))
This is just a small example that illustrates the problem -- I have an
actual application which is built into an executable and, whenever there is
a contract violation error reported, regardless of what the contract
violation is about, always the `build-path` contract violation shows up.
At first, I was puzzled by this, but now, I have learned that when I see a
build path contract error, I try to run the application in un-compiled mode
(is there a better term?) and try to reproduce the issue -- but this is not
always easy with complex applications.
Alex.
> You were expecting `foo` to raise a contract violation but in your
> executable example it appears that contract violation is being raised by
> the `build-path` function not `foo`.
>
> Maybe it’s a entirely different error?
--
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 [email protected].
For more options, visit https://groups.google.com/d/optout.