Portál AbcLinuxu, 1. května 2025 05:52
+
použijeme jako operátor pro vlastní objekty. To jde v Perlu 6 snadno
multi sub infix:<+> ( graph $a, graph $b ) { $a.gist~ "\n" ~ $b.gist; } say $k5 + $k5;ale na to, když bychom chtěli předefinovat
+
, např. na Int
,
to mě Perl 6 vyhodil chybu s tím, že jsem příliš abiciózní.
Na Rat
to kupodivu prošlo
multi sub infix:<+> ( Rat $a, Rat $b ) { $a * $b } my Rat $a = 1/1; my Rat $b = 2/1; say $a + $b + 5; #7ale není těžké přijít na to, že to není dobrý nápad. Mimochodem původně jsem tam na místo
$a * $b
měl $a + $b + 1
a úspěšně jsem se dostal do nekonečné rekurze. Ten výsledek $a + $b + 5
, který je 7
, může být pro leckoho také překvapivý.
+
se vyjadřuji níže. Děkuji za ocenění. Já jsem zase rád, že někoho moje blogy potěšili.
Co se týká unicode, tak jsem zatím neplánoval udělat o něm díl. Nějak hlouběji jsem do toho zatím nepronikal. Samozřejmě jsem občas na to narazil např. prezentace Normal from grapheme. Za mě je zatím přínos o proti Perlu 5 to, že se vyhnu encode
a decode
. Na to, že bych se na některé věci s unicode (nejen v Perlu) neměl spoléhat, jsem se dozvěděl v diskuzi pod minulým článkem.
Co se týče smyslu Perlu 6, tak bych zkrátka řekl, že tvůrci a komunita (nebo alespoň část) Perlu, měla pocit, že je potřeba nový jazyk. Otázka je co znamená "pomoci dělat věci správně", jestli to znamená umožnit snadno dělat tyto věci, i třeba přesto, že půjdou snadno děla i věci špatně, nebo nějakým způsobem je vynucovat. Pro mě Perl 6 není jeden z mnoha.
tak bych zkrátka řekl, že tvůrci a komunita (nebo alespoň část) Perlu, měla pocit, že je potřeba nový jazyk.Byl to Tim O’Reilly, ktery potreboval dalsi knihy o Perlu (nejlepe novou verzi) a Larry Wall mu to slibil. Jenom se nejak nedohodli, jak dlouho to bude trvat.
X=>
, nebo ?? !!
. Budu rád, když to upřesníte, abych případně mohl reagovat.
⊕
jako binární operaci v různých strukturách a netušil jsem, že si to někdo bude automaticky spojovat s xor. Tak pokud je to matoucí, tak se omlouvám. Kdyby to bylo příliš matoucí tak to můžu v blogu změnit, popř. na to upozornit, ale to já nedokáži posoudit.
Nahradil jsem definici operátoru na celých číslechza
definici operátoru ⊕ na celých číslechtak snad už to bude jasnější.
',-,_
(ne samostatně) a nějaký druh mezer (ne na začátku).
Pro operátory taková omezení neplatí, přesně se mi to nepodařilo najít.
Raději pro představu ukáži pár příkladů co funguje
sub postfix:<γ> ($ ) { say "hi" }; my $απ='aa'; ($απ)γ; 'aa'γ; my \δ = 21; say δ; sub infix:<.⊕.> ( $α, $β ) { $α + $β; }; my $ĥoroj=12; my $ℵ=10; say $ĥoroj.⊕.$ℵ;
my $ℏ = 1.054571800e-34; # Funguje, jak má say $ℏ; my $μ̂ = 'zdar'; # Ostuda – nefunguje. Perl sucks, python rulez. say $μ̂ ;
my $ĉ=2; my &term:<μ̂> = { 'ahoj' }; constant aμ̂ = 'ahoj'; say $ĉ; say μ̂; say aμ̂;
my \μ̂ = 12; say μ̂; my $μ̂ = 13; say $μ̂;PS. čím ten znak píšeš zkoušel jsem compose i tex mod v emacsu a nepodařilo se :). Šipka nad písmenem se dá vypsat taky?
===SORRY!=== Error while compiling test2.pl6 Term definition requires an initializer at test2.pl6:1 ------> my \μ⏏̂ = 12; expecting any of: scoped declaratorAle možná to bude tím, že mám nějakou archaickou versi perlu6 (stabilní debian)
$ perl6 -v This is perl6 version 2014.07 built on parrot 6.6.0 revision 0Přiznám se, že vzhledem k častotě používání nemám žádný effektivní způsob psaní – většinou si to kopíruji myší z nějakého svého seznamu (na nějž jsem to dostal pomocí kcharselect).
perl6 -v This is Rakudo version 2016.03-86-g0e95cde built on MoarVM version 2016.03-84-g4afd7b6 implementing Perl 6.c.to funguje. Ale moc se v Unicode nevyznám, tak ti neřeknu zda to má jít podle té Sinopse.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.