Most Lisp dialects don't have any sort of destructuring for abstract data types, but I question whether destructuring is really all that useful anyway. If you have a type with 20 or 30 components -- which is not all that unusual, in my experience -- it's much easier to grab the ones you want by name than by trying to remember the positions of all n components. Why doesn't Haskell allow you to name components? I know that you don't *need* to name them, but, like Sandra, I have also seen data structures with almost two dozen fields. Pattern matching is nice, but it seems like changing the representation of something could potentially require a lot of code changes. dave g.