packet draft pasted by klgg213498 on Fri Oct 19 15:22:28 2012

(bitpacket PacketA
  ("PACKET_A") (Afield 8))

(bitpacket PacketB
  ("PACKET_B") (Bfield 16))
  
(bitmatch somedata
  ((PacketA) -> Afield)
  ((PacketB) -> Bfield)
  (else -> 'fail))
  
(define (make-PacketA Afield)
 (bitconstruct PacketA Afield))
 

comment1 added by klgg on Sat Oct 20 20:39:57 2012

(bitpacket Packet1 (1) (2))
(bitpacket Packet2 (A) (B))

; this work
(bitmatch `#(1 2 3)
  (((Packet1 packet) (C 8)) (print "C=" C)))

; doesnt work
(bitmatch `#(1 2 3)
  (((Packet1 packet) (C 8)) (print "A=" A)))