Re: Article: the feature that makes D my favorite programming language

2020-07-27 Thread Aliak via Digitalmars-d-announce

On Saturday, 25 July 2020 at 16:22:52 UTC, H. S. Teoh wrote:
On Sat, Jul 25, 2020 at 01:28:34PM +, Adam D. Ruppe via 
Digitalmars-d-announce wrote:

On Saturday, 25 July 2020 at 11:12:16 UTC, aberba wrote:
> Oop! Chaining the writeln too could have increased the wow 
> factor. I didn't see that.


oh I hate it when people do that though, it just looks off to 
me at that point.


Me too.  It gives me the same creepie-feelies as when people 
write

writeln(x) as:

writeln = x;

Actually, D's lax syntax surrounding the = operator gives rise 
to the following reverse-UFCS nastiness:


	// Cover your eyes (unless you're reverse-Polish :-P)! and 
don't

// do this at home, it will corrupt your sense of good coding
// style!
import std;
void main() {
writeln = filter!(x => x % 3 == 1)
= map!(x => x*2)
= [ 1, 2, 3, 4, 5, 6 ];
}

// Output: [4, 10]


T


Oh my god ... it’s like haskells $ 樂

Why is this allowed?

I mean, ok, it was probably done to allow property syntax. But 
how did this end up being applied to every function?


Can this be fixed?




Re: Article: the feature that makes D my favorite programming language

2020-07-26 Thread guai via Digitalmars-d-announce

I find something like writable.writeTo(stdout) nicer


Re: Article: the feature that makes D my favorite programming language

2020-07-26 Thread aberba via Digitalmars-d-announce

On Sunday, 26 July 2020 at 01:14:53 UTC, Paul Backus wrote:

On Saturday, 25 July 2020 at 18:24:22 UTC, Jesse Phillips wrote:

On Saturday, 25 July 2020 at 14:47:01 UTC, aberba wrote:

[...]


It bugs me too, though I have done it.

I think the right answer of why it is odd is because writeln 
is void. As soon as it is placed on the end the chain is 
broken and you can't expand on it.


This is no different from any other "sink" that consumes a 
range:


someSource
.map!foo
.filter!bar
.splitter(baz)
.each!quux;

`each` returns void [1], so using it ends the chain. But that's 
not a problem, because the whole *point* of using `each` is to 
consume the range.


[1] Not exactly, but close enough.


I believe one can use tee!(writeln) to avoid consuming the range.


Re: Article: the feature that makes D my favorite programming language

2020-07-25 Thread Paul Backus via Digitalmars-d-announce

On Saturday, 25 July 2020 at 18:24:22 UTC, Jesse Phillips wrote:

On Saturday, 25 July 2020 at 14:47:01 UTC, aberba wrote:

On Saturday, 25 July 2020 at 13:28:34 UTC, Adam D. Ruppe wrote:

On Saturday, 25 July 2020 at 11:12:16 UTC, aberba wrote:
Oop! Chaining the writeln too could have increased the wow 
factor. I didn't see that.


oh I hate it when people do that though, it just looks off to 
me at that point.


Ha ha. If you're writing idiomatic D code, why not not all in 
on it?


It bugs me too, though I have done it.

I think the right answer of why it is odd is because writeln is 
void. As soon as it is placed on the end the chain is broken 
and you can't expand on it.


This is no different from any other "sink" that consumes a range:

someSource
.map!foo
.filter!bar
.splitter(baz)
.each!quux;

`each` returns void [1], so using it ends the chain. But that's 
not a problem, because the whole *point* of using `each` is to 
consume the range.


[1] Not exactly, but close enough.


Re: Article: the feature that makes D my favorite programming language

2020-07-25 Thread Ali Çehreli via Digitalmars-d-announce

On 7/25/20 7:47 AM, aberba wrote:
> On Saturday, 25 July 2020 at 13:28:34 UTC, Adam D. Ruppe wrote:
>> oh I hate it when people do that though, it just looks off to me at
>> that point.
>
> Ha ha. If you're writing idiomatic D code, why not not all in on it?

I agree with Adam and others on this. My reasoning is, writeln's first 
parameter is not special compared to its other parameters. In other 
words, I can't see writeln as a special operation on its first argument. 
Except, when there is just one thing... Meh... I don't like it. :)


Ali



Re: Article: the feature that makes D my favorite programming language

2020-07-25 Thread Jesse Phillips via Digitalmars-d-announce

On Saturday, 25 July 2020 at 14:47:01 UTC, aberba wrote:

On Saturday, 25 July 2020 at 13:28:34 UTC, Adam D. Ruppe wrote:

On Saturday, 25 July 2020 at 11:12:16 UTC, aberba wrote:
Oop! Chaining the writeln too could have increased the wow 
factor. I didn't see that.


oh I hate it when people do that though, it just looks off to 
me at that point.


Ha ha. If you're writing idiomatic D code, why not not all in 
on it?


It bugs me too, though I have done it.

I think the right answer of why it is odd is because writeln is 
void. As soon as it is placed on the end the chain is broken and 
you can't expand on it.


Re: Article: the feature that makes D my favorite programming language

2020-07-25 Thread H. S. Teoh via Digitalmars-d-announce
On Sat, Jul 25, 2020 at 01:28:34PM +, Adam D. Ruppe via 
Digitalmars-d-announce wrote:
> On Saturday, 25 July 2020 at 11:12:16 UTC, aberba wrote:
> > Oop! Chaining the writeln too could have increased the wow factor. I
> > didn't see that.
> 
> oh I hate it when people do that though, it just looks off to me at
> that point.

Me too.  It gives me the same creepie-feelies as when people write
writeln(x) as:

writeln = x;

Actually, D's lax syntax surrounding the = operator gives rise to the
following reverse-UFCS nastiness:

// Cover your eyes (unless you're reverse-Polish :-P)! and don't
// do this at home, it will corrupt your sense of good coding
// style!
import std;
void main() {
writeln = filter!(x => x % 3 == 1)
= map!(x => x*2)
= [ 1, 2, 3, 4, 5, 6 ];
}

// Output: [4, 10]


T

-- 
Winners never quit, quitters never win. But those who never quit AND never win 
are idiots.


Re: Article: the feature that makes D my favorite programming language

2020-07-25 Thread aberba via Digitalmars-d-announce

On Saturday, 25 July 2020 at 13:28:34 UTC, Adam D. Ruppe wrote:

On Saturday, 25 July 2020 at 11:12:16 UTC, aberba wrote:
Oop! Chaining the writeln too could have increased the wow 
factor. I didn't see that.


oh I hate it when people do that though, it just looks off to 
me at that point.


Ha ha. If you're writing idiomatic D code, why not not all in on 
it?


Re: Article: the feature that makes D my favorite programming language

2020-07-25 Thread Adam D. Ruppe via Digitalmars-d-announce

On Saturday, 25 July 2020 at 11:12:16 UTC, aberba wrote:
Oop! Chaining the writeln too could have increased the wow 
factor. I didn't see that.


oh I hate it when people do that though, it just looks off to me 
at that point.


Re: Article: the feature that makes D my favorite programming language

2020-07-25 Thread aberba via Digitalmars-d-announce

On Saturday, 25 July 2020 at 10:22:53 UTC, Andre Pany wrote:

On Friday, 24 July 2020 at 20:34:17 UTC, aberba wrote:
Wrote something on the feature that makes D my favorite 
programming language


https://opensource.com/article/20/7/d-programming


Great article. I assume you didn't chained writeln by purpose, 
same for import std?


```
import std;

int[] evenNumbers(int[] numbers)
{
return numbers.filter!(n => n % 2 == 0).array;
}

void main()
{
[1, 2, 3, 4].evenNumbers.writeln;
}
```

Kind regards
Andre


Oop! Chaining the writeln too could have increased the wow 
factor. I didn't see that.


Re: Article: the feature that makes D my favorite programming language

2020-07-25 Thread Andre Pany via Digitalmars-d-announce

On Friday, 24 July 2020 at 20:34:17 UTC, aberba wrote:
Wrote something on the feature that makes D my favorite 
programming language


https://opensource.com/article/20/7/d-programming


Great article. I assume you didn't chained writeln by purpose, 
same for import std?


```
import std;

int[] evenNumbers(int[] numbers)
{
return numbers.filter!(n => n % 2 == 0).array;
}

void main()
{
[1, 2, 3, 4].evenNumbers.writeln;
}
```

Kind regards
Andre


Re: Article: the feature that makes D my favorite programming language

2020-07-24 Thread aberba via Digitalmars-d-announce
On Friday, 24 July 2020 at 21:18:37 UTC, Steven Schveighoffer 
wrote:

On 7/24/20 4:34 PM, aberba wrote:
Wrote something on the feature that makes D my favorite 
programming language


https://opensource.com/article/20/7/d-programming


Nice!

You could make this more dramatic. I'm sure you just "did it 
automatically", but you used UFCS in your function 
implementation as well!


return numbers.filter!(n => n % 2 == 0).array;

Without UFCS, this really should be written:

array(filter!(n => n % 2 == 0)(numbers));

If you use that in the first boring non-UFCS version, then I 
think the wow factor goes up ;)


Someone said something similar in the comments .



-Steve





Re: Article: the feature that makes D my favorite programming language

2020-07-24 Thread aberba via Digitalmars-d-announce

On Friday, 24 July 2020 at 21:19:28 UTC, H. S. Teoh wrote:
On Fri, Jul 24, 2020 at 08:34:17PM +, aberba via 
Digitalmars-d-announce wrote:
Wrote something on the feature that makes D my favorite 
programming language


https://opensource.com/article/20/7/d-programming


Nitpick: evenNumbers doesn't need to return int[].  In fact, 
dropping the .array makes it even better because it avoids an 
unnecessary allocation when you're not going to store the array 
-- writeln is well able to handle printing arbitrary ranges. 
Let the caller call .array when he wishes the store the array; 
if it's transient, omitting .array saves an allocation.



T


Yeah, you're right.


Re: Article: the feature that makes D my favorite programming language

2020-07-24 Thread Steven Schveighoffer via Digitalmars-d-announce

On 7/24/20 4:34 PM, aberba wrote:
Wrote something on the feature that makes D my favorite programming 
language


https://opensource.com/article/20/7/d-programming


Nice!

You could make this more dramatic. I'm sure you just "did it 
automatically", but you used UFCS in your function implementation as well!


return numbers.filter!(n => n % 2 == 0).array;

Without UFCS, this really should be written:

array(filter!(n => n % 2 == 0)(numbers));

If you use that in the first boring non-UFCS version, then I think the 
wow factor goes up ;)


-Steve


Re: Article: the feature that makes D my favorite programming language

2020-07-24 Thread H. S. Teoh via Digitalmars-d-announce
On Fri, Jul 24, 2020 at 08:34:17PM +, aberba via Digitalmars-d-announce 
wrote:
> Wrote something on the feature that makes D my favorite programming
> language
> 
> https://opensource.com/article/20/7/d-programming

Nitpick: evenNumbers doesn't need to return int[].  In fact, dropping
the .array makes it even better because it avoids an unnecessary
allocation when you're not going to store the array -- writeln is well
able to handle printing arbitrary ranges. Let the caller call .array
when he wishes the store the array; if it's transient, omitting .array
saves an allocation.


T

-- 
Nearly all men can stand adversity, but if you want to test a man's character, 
give him power. -- Abraham Lincoln


Re: Article: the feature that makes D my favorite programming language

2020-07-24 Thread Ernesto Castellotti via Digitalmars-d-announce

On Friday, 24 July 2020 at 20:34:17 UTC, aberba wrote:
Wrote something on the feature that makes D my favorite 
programming language


https://opensource.com/article/20/7/d-programming


An interesting article, excellent job


Article: the feature that makes D my favorite programming language

2020-07-24 Thread aberba via Digitalmars-d-announce
Wrote something on the feature that makes D my favorite 
programming language


https://opensource.com/article/20/7/d-programming