Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!sharkey!mcf!mibte!gamma!thumper!clayton From: clayton@thumper.bellcore.com (R. Clayton) Newsgroups: comp.lang.icon Subject: Another testimonial Message-ID: <1693@thumper.bellcore.com> Date: 25 Aug 89 22:30:17 GMT Organization: Bellcore, Morristown, N.J. Lines: 31 My icon programs often are written as a series of filters on a objects in a stream. The filters do one object look-ahead on the stream with a read/pushback sequence, with read implemented something like this: global push_back_o procedure next_o() local o if \push_back_o then { o := push_back_o push_back_o := &null return o } else return read_o() end # next_o It eventually occurred to me that I could use the local variable's &null initialization to rewrite the then part of the if statement as return o :=: push_back_o which lets the procedure body collapse to return ((\push_back_o & (o :=: push_back_o)) | read_o()) and again to return (o :=: \push_back_o) | read_o()