[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
[an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]![]() |
![]() |
![]() |
|||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
![]() |
![]() |
![]() |
Michael Rasmussen <sslug@sslug> writes: > On Fri, 14 Oct 2005 17:30:54 +0200, Peter Makholm wrote: > >> >> Det er det i høj grad. Perl6 har et syntaktisk rigtigt objektsystem. > Nu du nævner det. Har du prøvet Perl6? Hvis du har, hvad er så din > umiddelbare holdning? Jeg har ofte haft en 'perl -de42' liggende, primært som advanceret regnemaskine men også til at lave små perlforsøg som var lidt længere end one-liners. Forholdvis for nyligt fik jeg så endelig taget mig sammen til at se på Pugs. Pugs er er eksperimetiel implementation af *sproget* Perl 6 og er altså uafhængig af parrot der er VM'en i Perl 6. Pugs er skrevet i Haskell og har blandt andet et read-eval-print loop, det vil sige en prompt hvor man skriver et udtryk, får det beregnet og får resultatet skrevet ud. Det er det sidste der gjorde det til en interessant erstatning for 'perl -de42' I går aftes fik jeg så lyst til at lave en rot13-funktion. I Perl5 ville jeg have skrevet: sub rot13 { my $a = shift; $a =~ tr/a-z/n-za-m/; return $a } I Perl6 burde det blive til sub rot13 ($string) { return $string.trans( "a-z" => "n-za-m" ) } men det virkede ikke. Det viste sig at pugs ikke lige kunne klare at der var mere end en bindestreg i en af strengene til trans-metoden. Ind i #perl6 og brokke sig, og pludselig havde jeg fået commit-bit og om jeg ikke lige kunne rette det og skrive nogle test-cases. 5 timer efter havde jeg en rot13 der virkede og trans-metoden på strenge virker bedre. Siden har jeg så brugt noget tid på at rette flere fejl og diskuterer hvordan funktionen overhovede bør virke. For ikke at gøre en lang historie endnu længer, sproget Perl6 er ikke helt stabilt i sin defintion og implementationen er heller ikke. > Kan det betale sig at sætte sig ind i alt det nye, eller kan man > lige så godt fortsætte med Perl5. Til produktion er Perl6 endnu uegnet. Det er ikke bare for ungt og uprøvet, det er uegnet. Hvis man ikke er interesseret i at deltage i udviklingen er det nok stadigvæk for tidligt. > Sagt på en anden måde: Kan jeg lave noget bedre i Perl6 end i Perl5? Jeg har allerede fundet ting som er pænere i Perl 6 end i Perl 5. Noget helt simpelt er muligheden for funktioner med navngivne argumenter, man kan også angive at et argument skal bruges på en måde der svare til pass-by-reference eller om man har brug for en kopi man må ændre. En anden ting er multi methods. Da jeg så det beskrevet for meget lang tid siden kunen jeg ikke se fordelen, men basalt set er det en mulighed for at overloade funktioner. I Perl 5 skulle man selv teste en masse på @_, i Perl 6 kan man gøre noget ala: multi sub pseudo(Str $string) { return $string.chars } multi sub pseudo(@array) { return @array.elems } multi sub pseudo(Int $i) { return floor(log($i)/log(10)) } pseudo("foobar"); # => 6 pseudo('a' .. 'z'); # => 26 pseudo(1024); # => 3 (man burde nok lægge en til???) > Er det ekstra Perl6 kan, noget man har behov for i hverdagen, eller > er det bare bloat? Er der nogen ting, jeg kan lave i Perl6, som det > ikke er muligt at lave i Perl5? Det kan godt være at der er ting man kunne drømme sødt om i hverdagen, men det er ikke produktionmodent. Og da både Perl5 og Perl6 er Turring-komplette og ikke stærkere er der heller ikke noget der ikke er muligt at lave i Perl5 -- det skulle da lige være dovne lister. Larry svare på mit første indlæg på perl.perl6.language: http://www.nntp.perl.org/group/perl.perl6.language/23525 -- Peter Makholm | Ladies and gentlemen, take my advice, pull down your sslug@sslug | pants and slide on the ice http://hacking.dk | -- Sidney Freedman
![]() |
![]() |
![]() |
||||||||||||
|
||||||||||||||
![]() | ||||||||||||||
|
||||||||||||||
![]() |
![]() |
![]() |