I'm seeing an "invalid memory reference.  Some debugging context lost"
error when using a parameter that has a guard function AND the guard
function is user-defined AND the guard function has a contract on it.  What
is the right place to file this aside from the list?

Demonstration:

#lang racket/base

(require racket/contract)

(define p1 (make-parameter ""))
(displayln "before set p1")
(p1 "ok")
(displayln "before read p1")
(p1)

(define/contract p2 (parameter/c string?) (make-parameter ""))
(displayln "before set p2")
(p2 "ok")
(displayln "before read p2")
(p2)


(define/contract p3 (parameter/c string? integer?) (make-parameter "7"
string->number ))
(displayln "before set p3")
(p3 "8")
(displayln "before read p3")
(p3)

(define (uncontracted-string->number v)
  (string->number v))

(define/contract (contracted-string->number v)
  (-> string? number?)
  (string->number v))

(define/contract p4  (parameter/c string? integer?)  (make-parameter "7"
uncontracted-string->number))
(displayln "before set p4")
(p4 "8")
(displayln "before read p4")
(p4)

(define/contract p5  (parameter/c string? integer?)  (make-parameter "7"
contracted-string->number))
(displayln "before set p5")
(p5 "8")
(displayln "before read p5")
(p5) ; invalid memory reference.  Some debugging context lost

-- 
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].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAE8gKoegLAOk9mHjKRNAJniki_6DHXJeOKcjPFa75vPkJqemjw%40mail.gmail.com.

Reply via email to