Path: csiph.com!news.swapon.de!eternal-september.org!feeder.eternal-september.org!news.iecc.com!.POSTED.news.iecc.com!nerds-end From: Kaz Kylheku <157-073-9834@kylheku.com> Newsgroups: comp.compilers Subject: Re: OOP language design after Algol 60, was Add nested-function support Date: Fri, 13 Apr 2018 03:28:26 +0000 (UTC) Organization: Aioe.org NNTP Server Lines: 36 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <18-04-055@comp.compilers> References: <49854345-f940-e82a-5c35-35078c4189d5@gkc.org.uk> <18-03-103@comp.compilers> <18-03-042@comp.compilers> <18-03-047@comp.compilers> <18-03-075@comp.compilers> <18-03-079@comp.compilers> <18-03-101@comp.compilers> <18-04-002@comp.compilers> <18-04-003@comp.compilers> <18-04-004@comp.compilers> <18-04-035@comp.compilers> <18-04-052@comp.compilers> Injection-Info: gal.iecc.com; posting-host="news.iecc.com:2001:470:1f07:1126:0:676f:7373:6970"; logging-data="98879"; mail-complaints-to="abuse@iecc.com" Keywords: OOP, design Posted-Date: 13 Apr 2018 13:17:34 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: csiph.com comp.compilers:2071 On 2018-04-13, George Neuner wrote: > On Tue, 10 Apr 2018 18:32:23 +0000 (UTC), Kaz Kylheku ><157-073-9834@kylheku.com> wrote: > >>On 2018-04-09, George Neuner wrote: >>> IMO, the evidence that many popular languages are not "powerful" is >>> that they are either exclusively or primarily OO, but they implement >>> only single inheritance objects. >> >>I'm surprised that anyone finds multiple inheritance so singularly >>important. >> >>Single inheritance is really only crippling if two kinds of objects have >>to inherit from a common base in order to be substitutable. > > That's why SI languages implement interfaces - the poor person's MI. Well, SI in *static* languages! SI in *dynamic* languages doesn't need interfaces. I should know; I made one: 1> (defstruct apple nil (:method rot (me) `@me rots`)) # 2> (defstruct orange nil (:method rot (me) `@me rots`)) # 3> (each ((f (list (new apple) (new orange)))) (prinl f.(rot))) "#S(apple) rots" "#S(orange) rots" apple and orange are not related; no "rottable" interface is needed to legitimize the .(rot) call. I mean, phooey; over my dead &body.