If I use raise-argument-error in my functions, like this:

(define (integer->roman n)
  (cond ((not (integer? n))
         (raise-argument-error 'integer->roman "integer?" n))
        ((positive? n)
         (apply string-append (positive-integer->roman n)))
        ((negative? n)
         (apply string-append "NEGATIVVS " (positive-integer->roman (- n))))
        (else
         "NVLLA")))

I get errors like this:

Welcome to DrRacket, version 5.3.2.2--2013-01-26(88404f3/a) [3m].
Language: racket [custom].
> (integer->roman 3.3)
integer->roman: contract violation
  expected: integer?
  given: 3.3
> (integer->roman 3.3)
. . C:\Program
Files\Racket-Full-5.3.2.2\collects\racket\private\more-scheme.rkt:263:2:
integer->roman: contract violation
  expected: integer?
  given: 3.3

That is, from the second time on I get the extraneous prefix.  Is this
expected?

P.
_________________________
  Racket Developers list:
  http://lists.racket-lang.org/dev

Reply via email to