From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: "functional" programming in Ada
Date: Wed, 7 Mar 2018 09:41:18 +0100
Date: 2018-03-07T09:41:18+01:00 [thread overview]
Message-ID: <p7o8jd$1q60$1@gioia.aioe.org> (raw)
In-Reply-To: p7n3v7$803$1@gioia.aioe.org
On 06/03/2018 23:16, Manuel Collado wrote:
> El 06/03/2018 a las 17:37, Dmitry A. Kazakov escribió:
>> On 06/03/2018 17:00, Manuel Collado wrote:
>>>
>>> Well, it may sound a bit heterodox, but IMHO functional programming is
>>> just a subset of imperative (= procedural) programming.
>>>
>>> - Functional programming = expressions
>>> - Imperative programming = expressions + variables + procedural actions
>>
>> Imperative is in opposition to declarative. Another axis is stateless
>> vs. stateful. Procedural is usually attributed to the method of
>> decomposition: procedural vs. object vs. functional vs. data/event
>> driven etc.
>>
>> Ada used to strictly separate imperative from declarative and took care
>> about the states, especially about the correspondence between the
>> program state and problem domain. Then Ada supported both procedural and
>> object decomposition, even Ada 83 with its abstract data types.
>
> Did I mentioned the word "declarative"?
>
> Functional and declarative are different axis. Fans of functional
> programming claim it is declarative "per se". Not me.
>
> Expressions without side-effects are functional, and not necessarily
> declarative.
Absence of side-effects does not make it functional:
procedure Swap (X, Y : in out Integer);
is imperative and has no side-effects.
Stateless constructs, if that fiction exists, are functional and
necessarily declarative.
But I would attribute "functional" rather to the decomposition method.
Other attributes are more of less consequences of choice. Standing on
your head, changes the gait... (:-))
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2018-03-07 8:41 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-06 11:34 "functional" programming in Ada Alejandro R. Mosteo
2018-03-06 13:09 ` Dmitry A. Kazakov
2018-03-06 14:35 ` Alejandro R. Mosteo
2018-03-06 15:08 ` Dmitry A. Kazakov
2018-03-06 16:00 ` Manuel Collado
2018-03-06 16:37 ` Dmitry A. Kazakov
2018-03-06 22:16 ` Manuel Collado
2018-03-07 8:41 ` Dmitry A. Kazakov [this message]
2018-03-07 4:46 ` Paul Rubin
2018-03-06 13:29 ` Mehdi Saada
2018-03-06 14:34 ` Alejandro R. Mosteo
2018-03-06 14:36 ` Mehdi Saada
2018-03-06 15:27 ` Alejandro R. Mosteo
2018-03-06 16:26 ` Jeffrey R. Carter
2018-03-06 20:17 ` Randy Brukardt
2018-03-07 14:30 ` Alejandro R. Mosteo
2018-03-06 15:01 ` Dan'l Miller
2018-03-06 15:25 ` Alejandro R. Mosteo
2018-03-07 10:07 ` Maciej Sobczak
2018-03-07 10:52 ` Mehdi Saada
2018-03-07 13:11 ` Pascal Obry
2018-03-07 13:53 ` Dmitry A. Kazakov
2018-03-07 16:13 ` Dan'l Miller
2018-03-12 0:13 ` Robert I. Eachus
2018-03-08 3:34 ` Randy Brukardt
2018-03-08 8:23 ` Dmitry A. Kazakov
2018-03-08 22:49 ` G. B.
2018-03-09 8:38 ` Dmitry A. Kazakov
2018-03-09 8:40 ` Simon Wright
2018-03-09 13:39 ` Dmitry A. Kazakov
2018-03-07 15:03 ` Alejandro R. Mosteo
2018-03-07 15:16 ` Alejandro R. Mosteo
2018-03-07 20:34 ` Robert A Duff
2018-03-07 22:47 ` Jeffrey R. Carter
2018-03-08 0:26 ` Shark8
2018-03-08 0:45 ` Paul Rubin
2018-03-08 11:07 ` Alejandro R. Mosteo
2018-03-08 18:24 ` G. B.
2018-03-09 14:41 ` Alejandro R. Mosteo
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox