advance :: Storable a => PtrIO (Ptr a)
advance = S adv where
    adv k addr = case castPtr addr of
                  addrCast -> k addrCast
                                (addr `plusPtr`
                                  sizeOfPointee addrCast)
advance :: Storable a => PtrIO (Ptr a)
advance = S adv where
    adv k addr = case castPtr addr of
                  addrCast -> k addrCast
                                (addr `plusPtr`
                                  sizeOfPointee addrCast)
advance = S adv where
    adv k addr = case castPtr addr of
                  addrCast -> k addrCast
                                (addr `plusPtr`
                                  sizeOfPointee addrCast)