
Most of the samples in randomplay.hp look like this: BEGIN_SAMPLE 1.76 (170)Script.Array.CAF 8 (154)Script.CmdType.CAF 64 (165)Script.PickleCmd.CAF 760 (197)Script.PokerClient.CAF 8 (156)Script.Command.CAF 24 (282)Main.CAF 285752 (163)Script.Pickle.CAF 16 (311)/launchScripts#8/laun... 93464 END_SAMPLE 1.76 I'm pickling to/from unboxed arrays of Word8 type MutByteArray = IOUArray Int Word8 type ByteArray = UArray Int Word8 type Index = Int CmdType is (Word8, Word8) that tells me what pickler to use. PickleCmd looks like this: puCommand :: (Word8, Word8) -> PU Command puCommand (116, 2) = sequ tableID endian32 (\a -> sequ password wstring (\b -> sequ localIP wstring (\c -> sequ affiliateID (list endian32 byte) (\d -> lift $ ClConnectGame a b c d )))) puCommand (36, 1) = ... Command has about 250 constructors for the different records that can be send/received. These records can be somewhat nested and have lists of other records inside them. Like SrvServerInfo. Could this be where the polymorphism is coming from, i.e. the "*" are my Commands that are being unpickled? Fields in command all have strictness annotations, btw. Thanks, Joel -- http://wagerlabs.com/