[Perl6 Discussie] Niets is meer heilig!

Pagina: 1
Acties:

  • Juup
  • Registratie: Februari 2000
  • Niet online
Heeft iemand iets gelezen over de in ontwikkeling zijnde Perl 6? (bv de apocalypses van Larry Wall (DE man) op http://dev.perl.org/perl6/apocalypse/ )

NIETS IS MEER HEILIG! Alles wordt anders. Een complete rewrite.
$_[0] wordt @_[0]
m/[a-z]/ wordt m/<[a-z]>/

Nieuw switch/case ding:
given EXPR
{
when EXPR { ... }
when EXPR { ... }
...
}

Een error CATCH mechanisme (like Java)

And the list goes on and on...
Perl5 -> Perl6: Complete rewrite, niet proberen te converteren. Zijn we hier blij mee?

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Verwijderd

Was Perl ooit heilig dan ? >:)

/me Heeft Perl al lang opgegeven voor Ruby

Verwijderd

Het is opzich geen verkeerde zaak als een taal zich blijft vernieuwen. Een complete re-write kan wel effies heavy overkomen. Ik begrijp dat je geschrokkken bent maar eerst maar even afwachten hoe het zich uiteindelijk ontwikkeld.

(8>

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
De 'given' statement die je laat zien vind ik buitengewoon fraai. Er is duidelijk over nagedacht, zonder de opties te beperken door wat 'gebruikelijk' is.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Juup
  • Registratie: Februari 2000
  • Niet online
Ja Larry vond dat switch / case niet echt begrijpelijk engels was. Vandaar zijn keuze.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Jaaap: Ja Larry vond dat switch / case niet echt begrijpelijk engels was. Vandaar zijn keuze.
Given-when klinkt inderdaad wel lekker, maar dat zijn eigenlijk niet de meest fundamentele aanpassingen aan de switch-statement zoals we die kennen uit Java,C++, C# en dergelijke.

Allereerst zijn is de code die uitgevoerd wordt achter een geval een echt block en heeft dus ook een echte scope.

Verder is de switch een expressie, waar andere talen een voorbeeld aan kunnen nemen:
code:
1
2
3
4
5
$result = given $digit {
   when "T" { 10 }
   when "E" { 11 }
   default  { $digit }
  }

:9~ .

Het belangrijkste vind ik echter dat er geen fall-through is: als een optie is uitgevoerd, wordt er naar het einde van de switch gesprongen en hoef je dus niet te breaken. Dit is veel logischer, zeker als je het vergelijkt met de if-then-else constructie (waar de Perl 6 switch grote overeenkomsten mee vertoond). Als je wel een fall-through wilt, kan je dat zelf aangeven met 'skip'.

Het leuke van de when is ook dat je hem eigenlijk in veel meer situaties kunt gebruiken, zoals bijvoorbeeld de CATCH, maar nog leuker: de for. De loop variabele is hier dan de 'given' waarde.

Verder kan je uiteraard op veel meer manieren gevallen onderscheiden met veel geavanceerdere mogelijkheden, maar dat volgt eigenlijk nogal logisch uit de aard van Perl...

Ik ben vast een hele hoop vergeten, want ik ben helemaal geen Perl kenner, maar dit schets wel een beetje de scope en samenhang van deze ideeen :) .

Voor die mensen die meer willen lezen:

Apocalypse 4, Statements and Declarations en RFC 022: Control flow: Builtin switch statement.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

ze gaan ook in de regexpjes klooie :(
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
   Perl 5                  Perl 6
   -------------------------------- ----------------------------------
   if ( /\w+/ ) { }          if ( match ) { }
   die "Bad!" if ( $_ !~ /\w+/ );   die "Bad!" if ( ! match ); 
   ($res) = m#^(.*)$#g;      ($res) = match #^(.*)$#g;


   # These are longer, but you can still use the backwards
   # compatible syntax where it makes sense, like here


   next if /\s+/ || /\w+/;      next if match /\s+/ or match /\w+/;
   next if ($str =~ /\s+/) ||    next if match /\s+/, $str or 
         ($str =~ /\w+/)            match /\w+/, $str;
   next unless $str =~ /^N/;      next unless match /^N/, $str;
   
   $str =~ s/\w+/$bob/gi;        $str = subst /\w+/$bob/gi, $str;
   s/\w+/this/;            subst /\w+/this/;         


   tr/a-z/Z-A/;            trade /a-z/Z-A/;
   $new =~ tr/a/b/;          $new = trade /a/b/, $new;


   # Some become easier and more consistent...


   ($str = $_) =~ s/\d+/&func/ge;   $str = subst /\d+/&func/ge;
   ($new = $old) =~ tr/a/z/;      $new = trade /a/z/, $old;

Verwijderd

Mja, je doet hier alsof de complete taal omgegooid wordt, terwijl dat echt niet zo is. Een frisse start zo af en toe is best een goed plan. Alle rotzooi er uit en dit keer goed. Zouden ze in andere talen *ughe* PHP *ughe* ook moeten doen :) Natuurlijk, scripts zijn niet meer compatible, maar is dat nou een reden om altijd maar aan te blijven modderen?

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

ik snap niet wtf die nieuwe regexpes, hoe dat nu werkt enzo, het is nogal onlogisch geworden vindik... wat is in vredes naam het doel?

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Je kan niet zomaar een rijtje regexen neerkwakken en zeggen dat het zo waardeloos is dat ze aangepast zijn...

De visie achter de aanpassingen is goed en om die visie te begrijpen moet je Apocalypse 5 bestuderen, waarin pattern matching uitgebreid aan de orde komt.

http://www.perl.com/lpt/a/2002/06/04/apo5.html

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op vrijdag 07 juni 2002 17:54 schreef mbravenboer het volgende:

[..]

Verder is de switch een expressie, waar andere talen een voorbeeld aan kunnen nemen:
code:
1
2
3
4
5
$result = given $digit {
   when "T" { 10 }
   when "E" { 11 }
   default  { $digit }
  }

:9~ .
Ik ben het met je eens hoor, maar ik was verrast toen ik zag jij het zei. Waarom vond je het ranzig toen ik voorstelde om de C if-statement ook als expressie te kunnen gebruiken? Je zegt zelf al dat ze vrij veel op elkaar lijken.

Overigens denk ik wel dat jij het aan jezelf verplicht bent om Perl tenminste op een paar punten af te zeiken, want het is en blijft natuurlijk een ranzig taaltje ;)

He who knows only his own side of the case knows little of that.


  • Juup
  • Registratie: Februari 2000
  • Niet online
Ik vind het netto erg goed dat ze in Perl6 alles wat fout is veranderen. Ik wou alleen de topic wat provocerend brengen.

Wat pas echt erg is in Perl5 is OO (Object Oriented stuff). Met het pijltje -> ipv een punt zoals in java: $reference->subroutine. Als je een beetje java kan dan is de perl OO erg wazig. bless dit, our dat. Ik heb nog niet gelezen of/hoe ze dit in Perl6 gaan aanpakken.

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
RickN: Waarom vond je het ranzig toen ik voorstelde om de C if-statement ook als expressie te kunnen gebruiken? Je zegt zelf al dat ze vrij veel op elkaar lijken.
Ho, ik heb niets over if-statement als expressie gezegd.... Dat weet ik zeker, want ik was het volledig met je eens :+ . Ik had toen alleen geen zin om daar ook nog op in te gaan, dus is viel je niet bij ;) . Ik vind net als jij dat er geen aparte syntax zou moeten zijn voor een conditionele expressie.

MSalters (als ik het goed heb) had wel bezwaren omdat in C een expressie nooit een nieuwe scope introduceert. Dat bezwaar kan ik me voorstellen, maar dat maakt voor het ontwerp van een nieuwe taal natuurlijk niet zo heel erg veel uit.

Ik zou graag alles als expressie willen zien (if, switch/given, try-catch) en dat heel generiek gerealiseerd door de introductie van expressie-blocken waarin de laatste expressie de waarde van het expressie-block is, maar daar dus wel statements voor kunnen staan.

Overigens ben ik dus wel tegen een assignment als een expressie, omdat dat dat juist onduidelijkheid oplevert. In mijn voorstel van een expressie-block zou je eerst een assignment kunnen doen en daarna de variable opleveren als resultaat.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
RickN: Overigens denk ik wel dat jij het aan jezelf verplicht bent om Perl tenminste op een paar punten af te zeiken, want het is en blijft natuurlijk een ranzig taaltje ;)
Ik ken Perl verder eigenlijk niet bepaald :o . Ik volg de Apocalypsen sinds tomato en Arien me erop wezen en omdat er wel leuke ideeen in naar voren komen (zoals de given/when ideeen), maar verder ken ik geen Perl ;) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • RickN
  • Registratie: December 2001
  • Laatst online: 14-06-2025
Op vrijdag 07 juni 2002 19:37 schreef mbravenboer het volgende:

[..]

Ho, ik heb niets over if-statement als expressie gezegd.... Dat weet ik zeker, want ik was het volledig met je eens :+ . Ik had toen alleen geen zin om daar ook nog op in te gaan, dus is viel je niet bij ;) . Ik vind net als jij dat er geen aparte syntax zou moeten zijn voor een conditionele expressie.

MSalters (als ik het goed heb) had wel bezwaren omdat in C een expressie nooit een nieuwe scope introduceert. Dat bezwaar kan ik me voorstellen, maar dat maakt voor het ontwerp van een nieuwe taal natuurlijk niet zo heel erg veel uit.

Ik zou graag alles als expressie willen zien (if, switch/given, try-catch) en dat heel generiek gerealiseerd door de introductie van expressie-blocken waarin de laatste expressie de waarde van het expressie-block is, maar daar dus wel statements voor kunnen staan.

Overigens ben ik dus wel tegen een assignment als een expressie, omdat dat dat juist onduidelijkheid oplevert. In mijn voorstel van een expressie-block zou je eerst een assignment kunnen doen en daarna de variable opleveren als resultaat.
Nou, geweldig dan. :P Ik ben het hier ook helemaal mee eens. Ik denk dat ik je in die vorige thread dan verkeerd heb begrepen. Ik heb net weer even naar die thread gekeken en het lijkt er een beetje op dat je mijn voorstel over die if statement ranzig noemt. Maar whatever, we zijn het nu met elkaar eens.

He who knows only his own side of the case knows little of that.


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
RickN: het lijkt er een beetje op dat je mijn voorstel over die if statement ranzig noemt.
Ah, nu je 'ranzig' zegt begrijp ik waar je op doelt :) . Ik was tegen het 'opleveren' van een variabele in een soort 'omgekeerde' assignment:
code:
1
if( ..) then {a} else {b} = 5

De if-syntax ipv .. ? .. : .. vind ik prima :) .
Maar whatever, we zijn het nu met elkaar eens.
Juist :) .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment

Pagina: 1