PasteRack.org
Paste # 3554
2015-09-19 16:48:08

Fork as a new paste.

Paste viewed 287 times.


Embed:

  1. #lang racket
  2. (require racket/class)
  3.  
  4. (define test-source '(lambda (obj)
  5.                        (display obj)(newline)
  6.                        (display (get-field id obj))))
  7.  
  8. (display test-source)(newline)
  9.  
  10. (define test-compiled
  11.   (let ((ns (make-base-namespace)))
  12.     (parameterize ((current-namespace ns))
  13.       (namespace-require 'racket/class))
  14.     (eval test-source ns)))
  15.  
  16. (display test-compiled)(newline)
  17.  
  18. (define my-class%
  19.   (class object%
  20.     (init-field id)
  21.     (super-new)))
  22.  
  23. (define my-obj (make-object my-class% 1))
  24.  
  25. (test-compiled my-obj)
  26.  

=>

(lambda (obj) (display obj) (newline) (display (get-field id obj)))

#<procedure>

#(struct:object:my-class% ...)

get-field: contract violation

  expected: object?

  given: (object:my-class% ...)