(bitpacket TypeA (type 8) (check (= type 1) ("somedata" bitstring)) (bitpacket TypeB (type 8) (check (= type 2) ("anotherdata" bitstring)) (define make-type (type) (bitconstruct ((TypeA)) ((TypeB)) (else (error "invalid type"))) (define packetA (make-type 1)) ; result "\x01somedata" (define packetB (make-type 2)) ; result "\x02anotherdata"