
The road to hell is paved with good intentions. I sold this to the client as a "simple scripting language" and I have to deliver now, lest I loose my credibility. This were working quite well ... except the program is spending 50% of the time collecting garbage and is shuffling a few Gb of memory while at it. All in the span of, say, 5 minutes. I decided to rewrite the pickling and the way I manage properties. I need dynamic records since I don't want the customer to deal with Haskell constructors, etc. What I want is described quite nicely in the HList library under extensible records. Problem is that I don't have the time to learn the library and convert everything. I think I don't but I'll give it another look. I already reinvented the wheel quite badly with prior pickling. My records are formerly property lists and now maps. This lets me supply default values and let the customer pass in "keyword arguments". On Nov 8, 2005, at 5:56 PM, Udo Stenzel wrote:
This doesn't give you a (PU Props), but a (PU [exists a . a]) or something, which is bogus syntax, since the idea is already nonsensical. You have to dismantle and create 'Prop's if you want to put them into a list, and you forgot a M.fromList somewhere, too.
I did forgot the fromList somewhere but the idea makes a lot of sense to me. I'm storing the pickler when making the attribute. Let me know if I missed something! data Attr a = Attr String (a -> Dynamic, Dynamic -> Maybe a) (PU a) and playersFlop :: Attr Word8 = makeAttr "playersFlop" byte So at the time of unpickling I'm using exactly the pickler that was stored when creating the attribute. Thanks, Joel -- http://wagerlabs.com/