On Tuesday, 2 November 2021 at 23:45:39 UTC, pascal111 wrote:
Next code originally was a classic C code I've written, it's pure vertical thinking, now, I converted it successfully to D code, but I think I made no much changes to make it has more horizontal thinking style that it seems D programmers care in horizontal thinking style. Is there any additions I can make in the code to make it suitable with D style or it's fine?

By "vertical" vs. "horizontal" thinking, do you mean imperative vs. functional style?
https://en.wikipedia.org/wiki/Functional_programming#Imperative_vs._functional_programming

It's supported in many modern programming languages and it's not a unique feature of the D language alone. Your code can be changed to something like this:

    import std.stdio, std.algorithm, std.conv, std.string;

    void main()
    {
      auto numbers = [-3, 14, 47, -49, -30, 15, 4, -82, 99, 26];
      char negativity, even;

write("Would you like in list (n=negatives, p=positives, b=both)? ");
      readf(" %c", &negativity);

      write("Would you like in list (e=evens, o=odds, b=both)? ");
      readf(" %c", &even);

      numbers.filter!(x => !((negativity == 'n' && x > 0) ||
                             (negativity == 'p' && x < 0)))
             .filter!(x => !((even == 'e' && (x % 2)) ||
                             (even == 'o' && !(x % 2))))
             .map!text.join("\n").writeln;
    }

Reply via email to