Hi, changing some typed racket code from using define-struct: to struct:, I have problems getting my test code to run. While still using define-struct:, I had a language specification of #lang typed/racket/no-check, because omitting the "no-check" I was getting the
Type Checker: Error in macro expansion -- untyped variable: run/inner error. Now when using struct: with that language, I get the error: Triple: illegal use of syntax in: (Triple "count" number? 1) So now I have problems when using with and without "no-check"... Would someone perhaps have a suggestion what I might do to get the test code working in one or the other way? Many thanks in advance! Sigrid BTW: Right now for posting, I wanted to put both the definitions and the test code in one file, and having everything in one module it worked fine. But when I have 2 modules like the code I'm appending below, I get the aforementioned error. ************ types.rkt *************************************************************************** #lang typed/racket (provide (all-defined-out)) (define-type Value (U Number String)) (struct: Triple ((name : String) (type : (U (Any -> Boolean : Number) (Any -> Boolean : String))) (value : Value)) #:mutable #:property prop:equal+hash (list (lambda (t1 t2 equal?-recur) ; Attribute names are case insensitive, attribute type names are not; values are treated individually for each variant (and (string=? (string-upcase (Triple-name t1)) (string-upcase (Triple-name t2))) (eq? (Triple-type t1) (Triple-type t2)) (equal? (Triple-value t1) (Triple-value t2)))) (lambda (t hash-recur) (+ (hash-recur (string-upcase (Triple-name t))) (* 3 (hash-recur (Triple-type t))) (* 3 (hash-recur (Triple-value t))))) (lambda (t hash2-recur) (+ (hash2-recur (string-upcase (Triple-name t))) (* 3 (hash2-recur (Triple-type t))) (* 3 (hash2-recur (Triple-value t))))))) ************ types-test.rkt *************************************************************************** #lang typed/racket/no-check (require rackunit) (require rackunit/text-ui) (require "../types.rkt") (define-test-suite equality-functions (test-case "Triple equality" (let: ((t1 : Triple (Triple "count" number? 1)) (t2 : Triple (Triple "count" number? 1)) (t3 : Triple (Triple "count" string? "1")) (t4 : Triple (Triple "Count" number? 1)) (t5 : Triple (Triple "count" number? 2))) (check-equal? t1 t2) (check-equal? t1 t4) (check-not-equal? t1 t5)))) _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users