On Saturday 20 July 2002 02:24 pm, Andreas Raab wrote:
I haven't been around during the clone (err... message-eating nil) wars but after reading your paper it makes me wonder if anyone actually ever _tried_ to use a message eating nil (and not just reason about it) in Smalltalk.
Yes, there was at least one article that I'd read on the web from a Well Known Name In Smalltalk that discussed this as a good idea. Forget who, though. Perhaps it was Alan Wirfs-Brock? Jan Steinman?
I remember making one and using it for a while several years ago. I don't remember how it turned out, though.
You do have to watch out for "== nil" (and #ifNil: #ifNotNil: etc. that end up doing "== nil"). There's a mixture of
isNil ifTrue: (which would work, as it's a message send) == nil ifTrue: (which wouldn't work) ifNil: (which also wouldn't)
etc. in Squeak.
I know that Kent Beck has mentioned in some of his discussions about the Chrysler accounting system that using custom nil objects (i.e. NilEmployee) was helpful. I believe, though, that these were not message-eaters, but just harmless dummy objects.