comp.lang.ada
 help / color / mirror / Atom feed
From: "G.B." <bauhaus@notmyhomepage.invalid>
Subject: Re: A function that cannot be called?
Date: Tue, 23 Oct 2018 19:49:22 +0200
Date: 2018-10-23T19:49:22+02:00	[thread overview]
Message-ID: <pqnmv3$f12$1@dont-email.me> (raw)
In-Reply-To: <pqncs9$4g7$1@gioia.aioe.org>

On 23.10.18 16:57, Dmitry A. Kazakov wrote:
> On 2018-10-23 16:35, Jere wrote:
> 
>> The difficulty with compile time comes from your requirements I think.
>> In order for the function to exist, the compiler needs to have it
>> actually be callable.
> 
> In which sense a non-callable function may exist? What exactly is the meaning of "callable"?

The function is supposed to exist just like the empty function
in {} -> {} in mathematics, I think.

"Callable" is probably meaningful in contexts involving types,
such as argument type pattern matching in functionist
languages. Can't say if lazyness is needed in addition.
Maybe "used" is a better word than "called".

functions in Ada that take no argument but that still return
something seem weird in a different way. If one restricts one's
views to the "D -> E" pattern as the only respectalbe way of
describing a function, then what is the proper signature of

   "function of no argument, but returning T" ?

(Which is nice in that it allows naming expressions:

      function Pi return Float is (355.0 / 113.0); )

There might be another good bit in Ada in this regard, namely
pure functions, to be got from a pragma, thus

package Nope is

     pragma Pure (Nope);

     function Source return Integer;

end Nope;

I can't say whether this particular one approximates Haskell's

    absurd :: Void -> a

but providing an Ada body for function Source from the pure
package above and one that is actually impure is a little tricky.


  reply	other threads:[~2018-10-23 17:49 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-18 12:14 A function that cannot be called? G.B.
2018-10-18 15:33 ` Stefan.Lucks
2018-10-18 20:21   ` G.B.
2018-10-18 20:57     ` Niklas Holsti
2018-10-19  7:15     ` Dmitry A. Kazakov
2018-10-19 13:55       ` G.B.
2018-10-19 15:31         ` Dmitry A. Kazakov
2018-10-18 17:03 ` AdaMagica
2018-10-18 19:36   ` G.B.
2018-10-18 21:30     ` Randy Brukardt
2018-10-19 14:00       ` G.B.
2018-10-19 15:39         ` Dmitry A. Kazakov
2018-10-20  1:34         ` Randy Brukardt
2018-10-20  9:14           ` G.B.
2018-10-20 11:13             ` Simon Wright
2018-10-20 14:11               ` Dmitry A. Kazakov
2018-10-21  9:25                 ` G.B.
2018-10-21  9:07               ` G.B.
2018-10-21  9:51                 ` Dmitry A. Kazakov
2018-10-21 10:57                 ` Niklas Holsti
2018-10-21 18:00                 ` Simon Wright
2018-10-19  8:48 ` AdaMagica
2018-10-19 11:15   ` G.B.
2018-10-19 17:06     ` AdaMagica
2018-10-19 19:57       ` G.B.
2018-10-19 22:06         ` Jere
2018-10-21 10:14           ` G.B.
2018-10-21 11:30             ` Egil H H
2018-10-23 11:45               ` G.B.
2018-10-23 14:35                 ` Jere
2018-10-23 14:57                   ` Dmitry A. Kazakov
2018-10-23 17:49                     ` G.B. [this message]
2018-10-23 19:25                       ` Dmitry A. Kazakov
2018-10-24  7:35                         ` G.B.
2018-10-24  8:14                           ` Dmitry A. Kazakov
2018-10-19 18:19 ` marciant
2018-10-19 18:22   ` marciant
2018-10-20  1:36     ` Randy Brukardt
2018-10-20  2:54       ` marciant
2018-10-19 20:25   ` Shark8
2018-10-19 23:28     ` marciant
replies disabled

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