ugrás a tartalomhoz

Perl 6

Bártházi András · 2005. Jún. 15. (Sze), 22.53
Épp pár rutint rakok össze Perl 6 alá, ezt szeretném megosztani a nagyközönséggel:
?none(2..sqrt($value)).is_factor_of($value);
Nos, ez egy működő Perl 6 kód, ehhez egyedül az is_factor_of függvényt kell külön definiálni. Nem tudom látható-e, mennyire gyönyörű. :))

-boogie-
 
1

Mit is csinál ez?

Poetro · 2005. Jún. 16. (Cs), 11.13
És mit is csinál ez pontosan? Mert kicsit homályos számomra... egyébként teccik :)
--------
Poetro
2

Értelmezés

Bártházi András · 2005. Jún. 16. (Cs), 11.42
Igen, ez lemaradt.

Szóval az első kérdőjel semmi mást nem tesz, mint hogy az értéke a kifejezésnek boolean lesz, azaz true vagy false lesz az érték.

Amúgy pedig ki kell olvasni: none of the numbers between 2 and sqrt($value) is the factor of $value. Magyarul 2 és a szám gyökere között egyik szám sem az osztója a számnak. Mégmagyarabbul: a szám prímszám.

-boogie-
3

Érdekességek

Bártházi András · 2005. Jún. 16. (Cs), 11.46
Ezeket tegnap csekkoltuk be: http://svn.openfoundry.org/pugs/examples/vmethods/

Az idézet a math.p6-ból van, de a többi is elég kellemes. :)

-boogie-
4

hmm...

kgyt · 2005. Jún. 16. (Cs), 12.01
Mintha a régi perlt beoltották volna egy kis java és scheme keverékével...
;-)

--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu
7

Szintakszis

Bártházi András · 2005. Jún. 16. (Cs), 13.13
Igen, a Java féle átláthatóságból bejött egy kicsi, pontosabban végre az objektum tulajdonságokat ponttal jelöli, mint az összes többi nyelv. Szerintem olvashatóbb lett a kódja, mint a régi Perl 5-nek. Persze azért továbbra is lehet olvashatatlan kódot írni. ;)

-boogie-
5

Perl

attlad · 2005. Jún. 16. (Cs), 12.25
Ne ezekután már tényleg igaz a Pathologically Eclectic Rubbish Lister rövidítés :-)

Attila
6

Nem is

Bártházi András · 2005. Jún. 16. (Cs), 13.10
Szerintem elég átlátható, hogy mi történik. Gyakorlatilag csak el kell olvasni. Nem?

-boogie-
8

De biztos

attlad · 2005. Jún. 16. (Cs), 14.07
Ha már tudod pontosan, hogy melyik jel, operátor, módosító, stb. mit jelent. Szóval mondjuk első ránézésre igencsak furcsa/szokatlan szintaktika megoldások is vannak benne.

Attila
9

Melyik?

Bártházi András · 2005. Jún. 16. (Cs), 14.20
Konkrétan szerinted melyik megoldás, ami szokatlan?

-boogie-
10

Re: Melyik?

attlad · 2005. Jún. 16. (Cs), 15.32
Pár példa a példafájlokból:

for =$fh->$line is copy{}

while $keyed = =$*IN {}

my $orig      = ~@list;

$drawer[$_] = gen_cashier() for 1..3;

sub callcc (Code &block) { &block(&?CALLER_CONTINUATION) }

say ~##kukac##combo>>.<suit>;

%scores.values >>*= 10;

/$re/ and take { word => $_, score => %scores{ .letters }.sum };

multi sub postfix:<!> ($x) { [*] 1..$x };

(@x z @y).perl.say;

say 1 .?. 5;

my $add = (1`F) + (1`M);

our Ship $pugs .= new(:of<mithril elven-glass>);
De ez is érdekes :-)

eval eval
'"'~('['~^'(')~('`'~|'!')~('['~^'"')~"\\"~'"'~('`'~^'*')~('['~^'.')
~('['~^'(')~('['~^'/')~('{'~^'[')~('`'~|'!')~('`'~|'.')~('`'~|'/')
~('['~^'/')~('`'~|'(')~('`'~|'%')~('['~^')')~('{'~^'[')~('{'~^'+')
~('['~^'.')~('`'~|"'")~('['~^'(')~('{'~^'[')~('`'~|'(')~('`'~|'!')
~('`'~|'#')~('`'~|'+')~('`'~|'%')~('['~^')')~','~"\\"~'"'~'"'
Mondjuk akik a Perl 6 parsert írták azok tudnak valamit.

Amúgy a Perl 6 visszafelé kompatibilis a Perl 5-tel?

Attila
12

OK

Bártházi András · 2005. Jún. 16. (Cs), 21.56
Jó, meggyőztél. De nem ez lesz a jellemző szerintem. Ha valaki beszédes neveket használ, akkor nem hiszem, hogy olyan rosszul olvasható lenne. Az pedig ugye minden nyelvre igaz, hogy a sajátosságait meg kell tanulni. A második kód meg nem más, mint egy "vicc" Perl 6-ban - mert ugye Perl-ben ilyet is lehet. ;)

A Perl 6 nem kompatibilis a Perl 5-tel, teljesen új nyelv (ebből a szempontból). Ami a trükk, hogy a Perl 6 a Parrot nevű virtuális gépen fog futni, s hogy a Perl 5-höz is írnak egy fordítót, mely Parrotra fordít. Egy másik csavar, hogy a Parrot várhatóan közvetlenül fog tudni majd futtatni Perl 5-öt, bele lesz építve a jelenlegi Perl 5 motor. Így vegyesen is futtathatóak lesznek régi és új kódok.

Az egész Parrot pedig arról szól, hogy együtt futtathatsz (egyik meghívja a másik szubrutinjait, stb.) Perl 5, Perl 6, Python, Ruby, Java, stb. kódokat, tetszés szerint, mindegyikből azt használva, ami a legjobb benne. Kiváncsi vagyok, mikor fogja valaki megcsinálni a JavaScript -> Parrot fordítót...

Im not sure if everyone realizes this, but I really believe that Parrot is one of the most(if not *the* most) important open source project going right now. The unification of a virtual machine for all the dynamic languages will be huge in terms of getting larger adoption for open source technologies.
http://use.perl.org/comments.pl?sid=27058

-boogie-
13

parrot

gsuveg · 2005. Jún. 17. (P), 16.49
mire várható a parrot + perl6 megjelenés ?
14

Nincs időpont

Bártházi András · 2005. Jún. 17. (P), 19.14
Perl6-ra valószínűleg nem éri meg majd várni, a Pugs előbb fog tudni megbízhatóan fordítani Parrotra, mint ahogy a valódi, Parrotba épített Perl 6 nyelvi fordító elérhető lesz (a PGE, Parrot Grammar Engine részeként). Ami a Parrotot illeti, a héten Chip Salzenberg, Autrijus Tang, Leo Tötsch - utóbbi otthonában - elég mély tervezést végeznek, szerintem pár hónap múlva már a Parrot is elég jól használható lesz, akár éles célokra is. Mindent összevetve körülbelül év végére tenném az éles környezetben is használható, de még nem 1.0 verzió elérhetőségét.

A szavaimat úgy kell érteni, hogy a Pugsot már ma is kiválóan használhatónak tartom éles környezetben is, egyetlen baja van, hogy lassú. Mivel pár hónap, s Parrotra (is) fog fordítani, ez a gond meg fog szűnni. Ezután ami még hátravan, az az egyes nyelvi elemekre, konstrukciókra történő felkészítés, illetve csiszolás, hogy minél jobban, gyorsabban működjön.

-boogie-
11

...

kgyt · 2005. Jún. 16. (Cs), 15.55
eval eval
'"'~('['~^'(')~('`'~|'!')~('['~^'"')~"\\"~'"'~('`'~^'*')~('['~^'.')
~('['~^'(')~('['~^'/')~('{'~^'[')~('`'~|'!')~('`'~|'.')~('`'~|'/')
~('['~^'/')~('`'~|'(')~('`'~|'%')~('['~^')')~('{'~^'[')~('{'~^'+')
~('['~^'.')~('`'~|"'")~('['~^'(')~('{'~^'[')~('`'~|'(')~('`'~|'!')
~('`'~|'#')~('`'~|'+')~('`'~|'%')~('['~^')')~','~"\\"~'"'~'"'
--
Szeretettel: Károly György Tamás
kgyt&kgyt.hu - http://kgyt.hu