D and Raku

RaycatWhoDat rmperry09 at gmail.com
Fri Jul 10 16:44:58 UTC 2020


Hello!

I was on my way to post an new topic when I did a search and 
found this one.

https://forum.dlang.org/post/ozubrkqquguyplwonjgp@forum.dlang.org
On Thursday, 22 November 2018 at 09:03:19 UTC, Gary Willoughby 
wrote:
> On Monday, 19 November 2018 at 06:46:55 UTC, dangbinghoo wrote:
>> So, can you experts give a more comprehensive compare with 
>> perl6 and D?
>
> Sure!
>
> 1). You can actually read and understand D code.

I disagree with this dismissive line of reasoning. I've noticed 
some interesting parallels between D and Raku (formerly Perl 6), 
specifically regarding the modeling power of the two. For 
example, here is a script to create a `|`-delimited CSV to import 
into Google Sheets.

This is my D implementation:

void main() {
   import std.stdio, std.range, std.algorithm;

   auto numbers = "formatted_numbers.txt".File.byLine;
   auto texts = "formatted_text.txt".File.byLine;
   auto types = "formatted_types.txt".File.byLine;

   auto output = File("final_conversion.csv", "a");
   scope(exit) output.close;

   zip(numbers, texts, types)
       .each!(line => output.writefln("%s|%s|%s", line.expand));
}


This is my Raku implementation:

use v6;

sub MAIN() {
     my @numbers = "formatted_numbers.txt".IO.lines;
     my @text = "formatted_text.txt".IO.lines;
     my @types = "formatted_types.txt".IO.lines;

     my $fileHandle = open "final_conversion.csv", :a;

     for @numbers Z @text Z @types -> [$number, $text, $type] {
         $fileHandle.sprintf("%s|%s|%s", $number, $text, $type);
     }

     $fileHandle.close;
}

Both approaches are quite similar with the main difference of the 
Raku version being `Z` as the zip operator and the destructuring 
assignment instead of `Tuple.expand`. Unfortunately, this example 
is a bit too small to really see all of the parallels.

To the people who have used both for less-contrived applications, 
what is your experience with the two? What features have you 
liked from both?


More information about the Digitalmars-d-learn mailing list