PasteRack.org
Paste # 86496
2017-07-12 09:46:35

Fork as a new paste.

Paste viewed 195 times.


Embed:

immutable?

  1. #lang racket/base
  2. (require rackunit (for-syntax rackunit racket/base))
  3.  
  4. (check-false
  5.  (immutable? (syntax-e #`#,(vector)))
  6.  "(syntax-e (syntax (vector))) made immutable vector")
  7.  
  8. (check-true
  9.  (immutable? (syntax-e #`#,(vector-immutable)))
  10.  "(syntax-e (syntax (vector-immutable))) made mutable vector")
  11.  
  12. (define-syntax (mvec stx)
  13.   (define v (vector))
  14.   (check-false
  15.    (immutable? v)
  16.    "(vector) made immutable vector")
  17.   #`#'#,v)
  18.  
  19. (check-false
  20.  (immutable? (syntax-e (mvec)))
  21.  "(syntax-e (syntax (vector))) made immutable vector")
  22.  
  23. (define-syntax (ivec stx)
  24.   (define v (vector-immutable))
  25.   (check-true
  26.    (immutable? v)
  27.    "(vector-immutable) made mutable vector")
  28.   #`#'#,v)
  29.  
  30. (check-true
  31.  (immutable? (syntax-e (ivec)))
  32.  "(syntax-e (syntax (vector-immutable))) made mutable vector")

=>

--------------------

FAILURE

name:       check-false

location:   eval:2:0

params:     (#t)

expression: (check-false (immutable? (syntax-e (quasisyntax (unsyntax (vector))))))

message:    "(syntax-e (syntax (vector))) made immutable vector"

Check failure

--------------------

--------------------

FAILURE

name:       check-true

location:   eval:5:0

params:     (#f)

expression: (check-true (immutable? (syntax-e (ivec))))

message:    "(syntax-e (syntax (vector-immutable))) made mutable vector"

Check failure

--------------------