Functional Programming in D
bachmeier
no at spam.net
Thu Oct 10 16:01:17 UTC 2019
On Thursday, 10 October 2019 at 10:08:14 UTC, H. S. Teoh wrote:
> On Thu, Oct 10, 2019 at 09:59:49AM +0100, Russel Winder via
> Digitalmars-d-learn wrote:
>> On Wed, 2019-10-09 at 11:12 -0700, H. S. Teoh via
>> Digitalmars-d-learn wrote: […]
>> > Actually, std.functional is somewhat of a misnomer. It
>> > mostly deals with higher-order functions, i.e., functions
>> > that return functions, currying, that sort of thing. These
>> > are part of functional programming, but there's more to
>> > functional programming than that. I'd say std.range and
>> > std.algorithm are another major part of functional-style
>> > programming support in D, along with the purity system.
>> […]
>>
>> I feel that it is best to leave functional programming to
>> functional programming language, e.g. Haskell, Scheme, etc.
>> rather than try to do functional programming in imperative
>> languages, e.g. Java, C++, Rust, D.
> [...]
>
> Note this is why I wrote "functional-style programming" w.r.t.
> D, rather than "functional programming". Clearly, what D has
> isn't "real" functional programming in the strict sense, but it
> does share similar characteristics when written in that style.
>
>
> T
An even better phrase is simply "good programming practice".
Avoiding global mutable state, writing pure functions, passing
around functions as arguments, and letting the language handle
iteration rather than using for loops and related outdated
constructs is good practice. You might need to make exceptions
for performance reasons, but then you're in the realm of hacks
rather than practices.
More information about the Digitalmars-d-learn
mailing list