April 29, 2021

On Thursday, 29 April 2021 at 17:04:20 UTC, Dennis wrote:

>

When I first landed on the homepage, I saw the "Sort lines" example which scared me off. It looked totally unfamiliar, I thought D was more akin to Scala/Haskell than the Java/C-like languages I was most familiar with. Only later did I figure out

Haha, yes, maybe it would be better to just showcase a slightly longer, but well written code example that looks familiar. Terseness does not make for good programming practice or understanding.

The examples showcase code I never want to see... ( ;_; )

Like:

 "Starting program".writeln;

Or this innocent looking code, by good fortune whoami isn't malicious:

auto result = ["whoami"].execute;
April 29, 2021

On Thursday, 29 April 2021 at 17:04:20 UTC, Dennis wrote:

>

On Thursday, 29 April 2021 at 15:53:43 UTC, Berni44 wrote:

>

I fear that new users might already be swamped with functional style and won't understand what's going on here. (But nice anyway.)

I think the range-based functional style of D is overrepresented.

When I first landed on the homepage, I saw the "Sort lines" example which scared me off. It looked totally unfamiliar, I thought D was more akin to Scala/Haskell than the Java/C-like languages I was most familiar with. Only later did I figure out that D really is a newer C/C++ like the name implies, and the range programming is just Phobos acting on top of it.

In all the examples, there is not a single if/do/while/for statement, not a single class or interface declaration, and only 1 struct declaration. I think it wouldn't hurt to have examples showing boring/traditional code in D syntax in addition to the fancy, 'code-golfy' programs.

I personally think it can be used very well with foreach:

// Estimate π using random integers
void main()
{
    import std.stdio, std.range, std.random, std.math, std.conv, std.numeric;
    Mt19937_64 randomGen; randomGen.seed(unpredictableSeed!ulong);
    int pairCount = 1_000_000;
    int coprimeCount = 0;
    foreach (randomPair; randomGen.chunks(2).take(pairCount)) {
        if (gcd(randomPair.front, randomPair.dropOne.front) == 1)
            coprimeCount++;
    }
    double prob = coprimeCount.to!double / pairCount.to!double;
    writefln("π ≈ %.15f", sqrt(6.0 / prob));
}

Though I would have liked more if the take amount could be a template parameter instead so it could be tuples where I can directly take [0] and [1]

1 2
Next ›   Last »