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 racket-users+unsubscr...@googlegroups.com.
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