racket/collects/file/convertible.rkt
2010-11-26 10:53:45 -07:00

14 lines
423 B
Racket

#lang racket/base
(provide prop:convertible convertible? convert)
(define-values (prop:convertible convertible? convertible-ref)
(make-struct-type-property 'convertible))
(define (convert v target [default #f])
(unless (convertible? v)
(raise-type-error 'convert "convertible" 0 v target))
(unless (symbol? target)
(raise-type-error 'convert "symbol" 1 v target))
((convertible-ref v) v target default))