From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Multiple dispatch in Julia
Date: Sun, 15 Nov 2020 14:37:13 +0100 [thread overview]
Message-ID: <rorau7$1qcr$1@gioia.aioe.org> (raw)
In-Reply-To: ror7pf$jjj$1@z-news.wcss.wroc.pl
On 15/11/2020 13:43, antispam@math.uni.wroc.pl wrote:
> Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
>> On 13/11/2020 13:55, antispam@math.uni.wroc.pl wrote:
>>> Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
>>>> On 12/11/2020 22:22, antispam@math.uni.wroc.pl wrote:
>>>>> Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
>>>>>> On 12/11/2020 18:56, antispam@math.uni.wroc.pl wrote:
>>>>>>> Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
>>>>
>>>> Either you have static typing or not. But there is no disagreement. You
>>>> said you do not know how to implement multiple dispatch (while keeping
>>>> the language statically typed), I said same thing.
>>>
>>> I do not see why failure (error) during dispatch would
>>> conflict with static typing.
>>
>> Because it violates typing. A multiple dispatch method is declared as
>> acting on the whole Cartesian product of classes of arguments and/or the
>> result. Violating that is type error. In Ada you cannot declare such
>> methods ARM 3.9.2 (12).
>
> OK, Ada defines it own terminology, conflicting with terminology
> used outside Ada. Since this discussion clearly goes beyond
> Ada features my assumption was that general terminology applies.
No, it is not a terminology issue. When an operation is declared it is
on all possible values of the arguments, unless explicitly stated otherwise.
So if you declare Print acting on the closure of the class rooted in the
type Device and the closure of the class rooted in the type Shape, it
*must* work on all instances from there.
If you wanted to limit the set of instances, you must have declared that
in some form upfront. That is an elementary language design principle,
what you see is what you get. The reader must understand the meaning of
a declaration.
The problem is that this is not possible to do. There is no contract of
a multiply-dispatching operation in languages like Julia. Which is why
it is a type error or an undefined behavior.
>> If you can
>> detect that the result is incorrect would such detection magically make
>> it right?
>
> Standard Ada detects overflow instead of returning result.
> Is Ada wrong?
The result is returned. Here the result is propagation of Constraint_Error.
If you contracted the multiple-dispatch operation Print to propagate
exception on *certain* combinations of arguments that would not be a
fault either. The problem is with [un]certainty.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2020-11-15 13:37 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-12 7:12 Multiple dispatch in Julia Jerry
2020-11-12 7:48 ` Dmitry A. Kazakov
2020-11-12 8:55 ` Jerry
2020-11-12 10:27 ` Dmitry A. Kazakov
2020-11-12 17:56 ` antispam
2020-11-12 18:28 ` Dmitry A. Kazakov
2020-11-12 21:22 ` antispam
2020-11-13 7:49 ` Dmitry A. Kazakov
2020-11-13 12:55 ` antispam
2020-11-13 14:59 ` Dmitry A. Kazakov
2020-11-15 12:43 ` antispam
2020-11-15 13:37 ` Dmitry A. Kazakov [this message]
2020-11-15 14:32 ` antispam
2020-11-15 16:28 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox