comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Latest suggestion for 202x
Date: Sat, 22 Jun 2019 20:37:29 +0200
Date: 2019-06-22T20:37:29+02:00	[thread overview]
Message-ID: <qelsh7$pej$1@gioia.aioe.org> (raw)
In-Reply-To: lnr27likgv.fsf@kst-u.example.com

On 2019-06-22 19:44, Keith Thompson wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
>> On 2019-06-21 22:24, Keith Thompson wrote:
>>> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
>>>> On 2019-06-21 20:12, Keith Thompson wrote:
>>>>> I *can't* replace A by a function without modifying the code that uses
>>>>> it.
>>>>
>>>> In short if I can't do something then I don't need it, sour grapes...
>>>>
>>>>> I suppose containers weaken that argument
>>>>
>>>> No, it is no argument regardless.
>>>>
>>>> If Ada has problems with array abstraction, and it has, that is
>>>> irrelevant to the point that this is the *same* abstraction.
>>>>
>>>> A language that syntactically distinguish array calls and function calls
>>>> breaks the abstraction or lacks it completely.
>>>
>>> Is breaking that abstraction such a bad thing?
>>
>> Yes, because abstraction is useful. Arrays have no "physical"
>> meaning. It is always an artifact of software design, some
>> implementation detail, not to expose.
>>
>>> Why *should* array
>>> indexing and function calls be treated as the same thing?
>>
>> Because they model the same thing, a mapping, when arrays come in
>> consideration.
> 
> I disagree.  Array indexing operations refer to elements of an array
> object.  Function calls yield a value, and can have side effects.

So can array indexing, when you get a copy of an array element, its 
construction may do whatever you wanted, e.g. spawn format c: /q.

Anyway side effects, when relevant, break abstraction and thus cannot 
count for that reason.

>>> What about
>>> record component selection?
>>
>> Same. It is not mapping of ordered 1st class object to 1st class
>> object in this case, but surely the syntax sugar of record member
>> selection must be same for records and functions. And it is, since Ada
>> 2005 started to support dotted notation:
>>
>>     R.X  -- Record member *or* call to primitive X of R or ...
> 
> So would you prefer "R.X" to be written as "R(X)" (or perhaps "X(R)")?

No, because X is not a 1st class object. The point is that in both cases 
the syntax is same. Same syntax for same intention. In the case of 
mappings the preferable syntax is A(I), regardless the implementation. 
In the case of hierarchical naming the preferable syntax is R.X.

The syntax should help understanding the programmer's intent, rather 
than reflect irrelevant details like if A is an array or R is a record.

>>> What operations *aren't* function calls?
>>
>> Ideally there should be none. All built-in syntax forms must be
>> available for user-defined operations. Ada suffers greatly when it
>> violates this design principle, e.g. consider "and then", "range",
>> "in", "'Image" etc.
> 
> If you want Lisp, you know where to find it.

Except that Lisp has no syntax but balanced brackets. Another 
degenerative language of that sort is Forth. The problem is that the 
syntax is so dire that it cannot assist program understanding.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


  parent reply	other threads:[~2019-06-22 18:37 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-15 23:59 Latest suggestion for 202x Micah Waddoups
2019-06-16  5:14 ` Jerry
2019-06-16  7:17 ` Dmitry A. Kazakov
2019-06-16 10:22 ` Egil H H
2019-06-16 16:54   ` Maciej Sobczak
2019-06-16 20:09     ` Dmitry A. Kazakov
2019-06-17  6:54     ` Egil H H
2019-06-17  7:42       ` J-P. Rosen
2019-06-17 12:01     ` Mart van de Wege
2019-06-17 13:35       ` Maciej Sobczak
2019-06-17 15:20         ` Dmitry A. Kazakov
2019-06-17 15:32           ` Paul Rubin
2019-06-17 16:43             ` Dmitry A. Kazakov
2019-06-17 21:38           ` Keith Thompson
2019-06-18 15:48             ` Jeffrey R. Carter
2019-06-20 22:21             ` Randy Brukardt
2019-06-21  9:42               ` Dmitry A. Kazakov
2019-06-21 18:12                 ` Keith Thompson
2019-06-21 18:43                   ` Dmitry A. Kazakov
2019-06-21 20:24                     ` Keith Thompson
2019-06-22  6:54                       ` Dmitry A. Kazakov
2019-06-22  8:43                         ` Randy Brukardt
2019-06-22  9:00                           ` Dmitry A. Kazakov
2019-06-22 17:44                         ` Keith Thompson
2019-06-22 18:34                           ` Bill Findlay
2019-06-22 18:37                           ` Dmitry A. Kazakov [this message]
2019-06-23  7:38                             ` G.B.
2019-06-23  8:29                               ` Dmitry A. Kazakov
2019-06-23 18:34                               ` Optikos
2019-06-23 19:20                                 ` Dennis Lee Bieber
2019-06-22 20:48                           ` Optikos
2019-06-22 20:53                             ` Optikos
2019-06-23 17:42                             ` Dennis Lee Bieber
2019-06-24  5:07                               ` J-P. Rosen
2019-06-24  5:40                                 ` Paul Rubin
2019-06-24  7:16                                   ` Niklas Holsti
2019-06-26 18:00                                     ` Stephen Leake
2019-06-24 13:07                                   ` J-P. Rosen
2019-06-24 11:12                                 ` Stefan.Lucks
2019-06-24 12:06                                   ` Niklas Holsti
2019-06-24 20:22                                     ` Randy Brukardt
2019-06-24 20:32                                       ` Keith Thompson
2019-06-24 20:47                                       ` Jeffrey R. Carter
2019-06-24 13:10                                   ` J-P. Rosen
2019-06-22  8:36                   ` Randy Brukardt
2019-06-22 17:39                     ` Keith Thompson
2019-06-16 19:34 ` Optikos
2019-06-16 20:10   ` John Perry
2019-06-16 20:57     ` Optikos
2019-06-16 21:36       ` Dmitry A. Kazakov
2019-06-17 16:48     ` G. B.
2019-06-17 17:12     ` Paul Rubin
2019-06-16 21:41 ` Lucretia
2019-06-19  2:36 ` Micah Waddoups
2019-06-19 11:14   ` Lucretia
2019-06-19 11:45     ` briot.emmanuel
2019-06-19 14:34       ` Optikos
2019-06-19 19:29         ` Lucretia
2019-06-19 16:12   ` G. B.
2019-06-23 20:17 ` Per Sandberg
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox