Path: ...!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Lawrence D'Oliveiro Newsgroups: comp.lang.c Subject: Re: Recursion, Yo Date: Fri, 12 Apr 2024 07:34:57 -0000 (UTC) Organization: A noiseless patient Spider Lines: 27 Message-ID: References: <87edbestmg.fsf@bsb.me.uk> <_zSRN.161297$m4d.144795@fx43.iad> <20240411075825.30@kylheku.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Injection-Date: Fri, 12 Apr 2024 09:34:58 +0200 (CEST) Injection-Info: dont-email.me; posting-host="c105d4bef0a9dfcc8267749d3ff10053"; logging-data="2353757"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX194xo+bzeX9EIsV71mD16MM" User-Agent: Pan/0.155 (Kherson; fc5a80b8) Cancel-Lock: sha1:yqTSpPjVeHYzbfQqOID94oLrzSU= Bytes: 2588 On Fri, 12 Apr 2024 07:32:33 +0200, Janis Papanagnou wrote: > Ideally it would be (without syntactic ballast) just > > res = func; Then there is no way to express a reference to the function itself, as distinct from a call to it. Unless you do what Algol 68 did, and introduce the “deproceduring coercion”, analogous to “dereferencing” which allowed doing away with any explicit “address of x” and “the thingy whose address is in x” constructs. > (Even Algol 68, where I've seen 'void' mentioned for the first time, > does not use 'void' for an empty function argument list definition > or function call.) I just rechecked the Revised Report (always got to do it before opening my mouth), and a “statement” is always “strong void”, which means any value it returns can always be thrown away without having to explicitly say so. But there are other contexts which are not “strong”, where fewer coercions happen automatically. Just did another check, and even in the weakest of syntactic contexts, “soft”, implicit deproceduring is still allowed (but not implicit dereferencing).