tag:blogger.com,1999:blog-8288194986820249216.post4968869429295188243..comments2024-03-22T05:09:17.789-07:00Comments on Abstract Heresies: Answers for FaréJoe Marshallhttp://www.blogger.com/profile/03233353484280456977noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-8288194986820249216.post-56823320767303016732011-01-18T10:53:31.403-08:002011-01-18T10:53:31.403-08:00You won't be convinced until you try a few exa...You won't be convinced until you try a few examples. Case in point: OIDs. OIDs would be persistent slots, but they would have an :initform that allocates and initializes a new persistent OID. (Objects that are placed in persistent slots should themselves be persistent, naturally.)Joe Marshallhttps://www.blogger.com/profile/03233353484280456977noreply@blogger.comtag:blogger.com,1999:blog-8288194986820249216.post-35403000910888970262011-01-18T09:50:07.370-08:002011-01-18T09:50:07.370-08:00I'm not convinced yet. Case in point: OIDs. Tw...I'm not convinced yet. Case in point: OIDs. Two different $1000 gizmo-buying transactions by the same person at the same time should get different ID numbers, so they can be distinguished in further transactions (e.g. return&exchange).<br /><br />Therefore, OIDs must be part of the persisted slots, even though you don't want them to be specified by the user in the API. Standard answer would then be that OIDs should be generated by some wrapper before the make-instance method is called. At which point, make-instance becomes a low-level function that the user must not, ever, directly call, which abstraction the language does not allow to enforce, making it a low-level language.<br /><br />That's more a general condemnation of Lisp than of your approach: it doesn't allow to disallow.Faréhttps://www.blogger.com/profile/14063105144178880818noreply@blogger.com