»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by diakopter on 14 April 2013.
00:07 awwaiid left 00:13 PacoAir left
labster Well, I'm finally back, after an expedition that, among other things, included buying a new keyboard. 00:16
As a consequence of the class scoping thing above, that means that if someone writes "use File::Spec; my class File is Str { };", that it nukes the import of File::Spec for that scope. 00:22
00:23 census joined 00:35 census left 00:36 awwaiid joined 00:37 japhb_ left 00:40 kbenson left 00:52 cognominal left
dalek osystem: f1de06f | colomon++ | META.list:
Change URI to use my fork
00:55
01:00 berekuk left 01:03 sftp joined 01:04 berekuk joined, zacts left
[Coke] r: my $array_ref1 = ("foo", "bar", "baz"); say $array_ref1.WHAT 01:05
camelia rakudo de2080: OUTPUT«(Parcel)␤»
[Coke] rpn: my $array_ref1 = ("foo", "bar", "baz"); say $array_ref1.WHAT
camelia rakudo de2080, niecza v24-37-gf9c8fc2: OUTPUT«(Parcel)␤»
..pugs: OUTPUT«Array()␤»
01:05 zacts joined
[Coke] r: use Test; ok Array ~~ List, 'Array is a kind of List'; 01:08
camelia rakudo de2080: OUTPUT«ok 1 - Array is a kind of List␤»
[Coke] ... that description is backwards, yes?
colomon .... no? 01:09
r: say Rat ~~ Real
camelia rakudo de2080: OUTPUT«True␤»
01:10 zacts left, zacts joined 01:19 tgt left 01:22 drbean left 01:23 Psyche^ joined 01:24 drbean joined 01:27 Patterner left, Psyche^ is now known as Patterner 01:39 LylePerl left
colomon r: my $a = 3/5; say $a.clone 01:43
camelia rakudo de2080: OUTPUT«0.6␤»
adu omg, I'm never using parentheses again 01:45
01:47 woosley joined 01:48 awwaiid left
colomon r: class A ( has $.a; }; my $foo = A.new(a => 1); say $a.clone.perl 01:51
camelia rakudo de2080: OUTPUT«===SORRY!===␤Unable to parse class definition␤at /tmp/isJ5CeHeMR:1␤------> class A ⏏( has $.a; }; my $foo = A.new(a => 1); s␤ expecting any of:␤ statement list␤ prefix or term␤ prefix or meta-prefix␤ …
colomon r: class A { has $.a; }; my $foo = A.new(a => 1); say $a.clone.perl
camelia rakudo de2080: OUTPUT«===SORRY!===␤Variable '$a' is not declared␤at /tmp/sn3mFZPhtg:1␤------> $foo = A.new(a => 1); say $a.clone.perl⏏<EOL>␤ expecting any of:␤ method arguments␤»
colomon r: class A { has $.a; }; my $foo = A.new(a => 1); say $foo.clone.perl
camelia rakudo de2080: OUTPUT«A.new(a => 1)␤»
01:54 FROGGS_ joined 01:58 FROGGS left 02:00 awwaiid joined 02:05 takadonet22 joined 02:07 takadonet22 left 02:25 obra joined 02:54 preflex_ joined, preflex left 02:55 preflex_ is now known as preflex 03:03 zacts left
adu I think I'm falling in love with Perl6 03:04
03:05 zacts joined
colomon it's easy to love 03:05
03:05 zacts left, zacts joined 03:15 fgomez left, kshannon left 03:17 grondilu joined 03:20 fgomez joined, kshannon joined, lue joined, colomon joined, Vlavv` joined, Timbus joined, BinGOs joined, ruoso joined 03:21 robinsmidsrod joined 03:26 zacts left 03:31 jaldhar joined 03:34 ravenclaw joined
ravenclaw In rakudo, can someone explain to me or tell me where I can go to find out why one must use the IO method on file names to determine if they exist? It seems to make no sense to me if you can determine if the file is read only without using IO. 03:36
03:43 gdey left 03:45 jaldhar left
ravenclaw std: say 'hello' 03:47
camelia std 86b102f: OUTPUT«ok 00:00 41m␤»
03:49 jaldhar joined
japhb ravenclaw, because while file paths have a stringification, they are not actually arbitrary strings -- depending on OS and filesystem, they have more structure than that. Also, on a more pragmatic scale, we don't want to pollute the Str method space with lots of methods that really only apply to filesystem paths -- or URIs, for that matter. 03:50
(I should say, paths have both more structure *and* more limits to them than arbitrary strings do.) 03:51
ravenclaw japhb, why doesn't $var ~~ :e trigger auto IO typecasting then? It would seem that a typecasting paramater wouldn't pollute the Str method space, but just add a certain contextual mapping to the smart match operator 03:52
Nom- Because humans need to read code sometimes? 03:53
On face value, I have no clue what the heck that would mean 03:54
ravenclaw as of now, :e is not mapped to anything for Str, so if Str ~~ :e, it would, I would imagine, be intended to be IO ~~ :e. 03:55
japhb Well, and then there's the question of whether the thing on the left is a string or a hash of some sort.
ravenclaw, how do you map Str.x to Str.IO.x for any single-letter x without polluting Strs method space? 03:58
*Str's
ravenclaw I would think that it should map Str.x to Str.x.IO, if you'd want Str.IO.x, that would be something that should be explicitly stated 04:00
it just seems that more often than not, $var ~~ :e is determining if a filename stored in $var exists 04:01
actually, it seems that 100% of the time
lue Str.x.IO would convert the result of Str.x to an IO object, if that makes sense. Str.IO.x converts Str to an IO object and then calls the IO object's .x method 04:03
japhb ravenclaw, yes -- if the thing in var is a path or string representing a path. But not all objects are paths. ;-)
What lue said as well.
IO has the .x methods. So if you want to have them appear in Str, you have to convert via IO -- so Str.IO.x
japhb does not see the hardship in '$var.IO.e' instead of '$var ~~ :e' 04:05
Nom- I do believe I might be out of my depth when I find it easier to write an NQP lexer, parser & compiler from scratch than to decipher the existing code :( 04:06
04:07 swarley| joined
ravenclaw japhb $var.IO.e seems good syntactically to me because you are explicitly calling a method of the IO class, but when smartmatching agains :e and a string, I think it should convert the result of the left hand side into an IO object and then smartmatch because there is no :e for Str. 04:09
lue I'm not sure how that would work without making that a special case of the ~~ operator (which I would guess is frowned upon). 04:14
ravenclaw I think it would be frowned upon as well, but at the very least, to me, it doesn't make sense...and perl6 makes a lot of sense to me :O) 04:15
it just seems redundant to me and I'm not sure that not wanting to clutter up the method space would be a good reason to exclude this case 04:19
lue Initially "FOO" ~~ :e doesn't look too bad to me either, but then I look at it as a theoretical perl6 implementer and go "Ack! I'm going to have to specially recognize the file test methods on the RHS and then in that case convert the LHS to IO if it's a Str and then compare" 04:20
Also, the specific reason why cluttering the method space is a bad idea is because strings containing valid file paths is only a subset of all possible strings, and a Str method that only applies to *some* possible Strs but not *all* possible Strs doesn't make sense. 04:25
(In general, a method applying to its class only when the class holds certain correct values would IMO indicate the need for a subclass) 04:27
04:28 Chillance left
ravenclaw lue I see the problem...smartmatch just calls a method (RHS) on the LHS. Maybe designing the smartmatch operator to run a method when provided :RHS was not a smart way to match. It might be better to have a typecasting loop for smartmatch that will, if method does not exist for a string, try IO. 04:28
just an example, of course 04:29
I would have thought that the smartmatch operator would auto-typecast depending on the RHS. 04:30
lue The problem there is generalizing that behavior in a way that doesn't freeze program execution with a near-infinite loop, esp. if the unsuspecting user was perhaps hoping 42 ~~ :slurp to return a Failure object or similar (in the roast repository, perhaps). 04:31
thus why I can only see Str ~~ :IOmethod being a special case in infix:<~~>'s code, the kind of special case I expect those closer to language design to frown upon.
(for the record, if you _really_ need to be able to do Str.e and friends, you could always right a module that augments the Str class with the appropriate methods) 04:33
r: use MONKEY_TYPING; augment class Str { method e() { self.IO.e } }; say "test".e; # for example 04:34
japhb ravenclaw, smart match is really just syntactic sugar that eventually boils down to RHS.ACCEPTS(LHS) and gets dispatched that way.
camelia rakudo de2080: OUTPUT«False␤»
lue s/right/write/ # sigh
japhb ravenclaw, see the Smart matching section of the specs, starting at S03:3556, for an explanation of that sugar. 04:36
(And see the IRC logs for that reference turned into a link.)
ravenclaw Thanks lue and japhb for explaining that. I figured out how that smart matching RHS.ACCEPTS(LHS) works conceptually from the error messages. It was the .IO typecasting that made me confused on why there couldn't be a shorter way. I'm still not in love with the fact that I have to manually typecast (mainly because I'm extremely lazy), but it makes sense. 04:43
lue ravenclaw: it could be worse. IO could be name InputOutput :) 04:45
[Coke] everything's an object, but not necessary of the type you need.
ravenclaw Then it would be perl6, the fully verbose java-like edition, or "perl6, the verbose java-like edition" for short
I keep forgetting that, Coke but it's vital to remember 04:46
lee_ sub prefix:<-e>(Str $s) { $s.IO.e } # it works! 04:47
04:48 MrMeek joined, kaare_ joined
[Coke] r: sub prefix:<-e>(Str $s) { $s.IO.e }; say -e"/tmp" 04:49
camelia rakudo de2080: OUTPUT«True␤»
[Coke] wonders if the SXX:YYYY highlighting is smart enough to treat those line numbers based on the time the log was captured. 04:50
04:58 BenGoldberg left 05:18 Maddingu1 joined, preflex left 05:19 LV joined
sorear don't think so 05:19
labster r: use MONKEY_TYPING; augment class Str { method IO handles <e d w t r x> { IO.new(:path(self.Str)) }; }; say "rakudo".e 05:20
camelia rakudo de2080: OUTPUT«IO is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting:2␤ in method new at src/RESTRICTED.setting:17␤ in method IO at /tmp/_MJbk2M2GO:1␤ in method e at src/gen/CORE.setting:341␤ in block at /tmp/_MJbk2M2GO:1␤␤»
05:20 BooK joined, rom1504_ joined, mangala_ joined, preflex joined, patspam_ joined
labster that totally works locally, though, ravenclaw. 05:20
05:20 Hor|zon_ joined 05:21 mls_ joined, ingyfoo joined, ironcame1 joined, jaldhar left, jaldhar joined 05:25 woosley left, rom1504 left, Hor|zon left, patspam left, Maddingue left, ingy left 05:27 ravenclaw left 05:34 woosley joined 05:41 groky joined 05:43 SamuraiJack joined 05:45 kaare_ left 05:46 kurahaupo joined
moritz labster: the evalbot disables most IO stuff 05:55
labster: including IO::Path
06:05 MrMeek-afk joined 06:06 MrMeek left 06:10 dwoldrich joined 06:15 fgomez left 06:19 woosley left 06:20 rhinux_ joined 06:24 DreamingInCode left 06:28 rindolf joined 06:34 dwoldrich left
labster moritz: except that the evalbot doesn't really get rid of them entirely 06:35
r: r: use MONKEY_TYPING; augment class Str { method IO handles <e d w t r x> { self.path }; }; say "rakudo".e
camelia rakudo de2080: OUTPUT«===SORRY!===␤Two terms in a row␤at /tmp/hQ2pfEJL8c:1␤------> r⏏: use MONKEY_TYPING; augment class Str {␤ expecting any of:␤ argument list␤ postfix␤ infix stopper␤ infix or meta-infix␤ statem…
labster r: use MONKEY_TYPING; augment class Str { method IO handles <e d w t r x> { self.path }; }; say "rakudo".e
camelia rakudo de2080: OUTPUT«True␤»
labster there, I knew I could make it work.
huh, maybe I should make this a module, for people who are too lazy to write .IO.$filetest. 06:42
06:49 crab2313 joined 06:50 FROGGS_ is now known as FROGGS
FROGGS morning 06:50
labster good morning 06:51
FROGGS moritz: would you agree that p5's require is more like p6's eval? (p5's eval is like perl6's try)
hi labster
labster reads perlfunc, sees: eval "require $class"; 06:55
FROGGS ohh, I mean p5's `require PATH`is like p6's `eval slurp PATH` 06:56
p5's `require ModuleName`is still like p6's one 06:57
06:57 kurahaupo left
labster that sounds right. 06:57
FROGGS sometimes you just must sleep a night to solve a problem :o) 06:58
perl 6 is really cleanup up... it is some kind of weird what quirks I see now in perl 5 06:59
labster "The file is included via the do-FILE mechanism, which is essentially just a variety of "eval" with the caveat that lexical variables in the invoking script will be invisible to the included code."
do-FILE? the rabbit hole goes deep. 07:00
07:00 rindolf left
geekosaur yeh, the evolution was do -> require -> use 07:01
07:01 rindolf joined 07:08 census joined 07:16 kurahaupo joined
FROGGS hmmm, do FILE doesn't seem to work :/ 07:17
looks like a noop
(there is just a print-statement in the included file)
07:21 SamuraiJack left 07:22 rindolf left, rindolf joined
sorear do-FILE does not exist in perl 6 07:30
the do EXPR syntax has been coopted as a version of the Haskell ($) operator 07:31
it's a precedece-modifying noop
r: say 10 * do 1 + 2 + 3 + 4 + 5
camelia rakudo de2080: OUTPUT«150␤»
07:33 mattp__ left
labster .oO ( current rakudo version is from .de 67 years in the future ) 07:34
07:42 araujo joined, araujo left, araujo joined
FROGGS hmmm 07:44
labster: where do you get that sentence from? 07:45
perl5doc?
labster man perlfunc
FROGGS k, thanks
07:46 arlinius joined 07:48 rindolf left 07:49 rindolf joined
moritz FROGGS: no, Perl 6's require and p5's require are pretty close, except that in Perl 6 symbol storage and exportation is done through lexpads, which are immutable at run time 07:56
08:06 cognominal joined 08:07 rindolf left, rindolf joined
FROGGS hmmm, at least p5's require ModuleName is more like p6's need 08:09
hmm, well, no 08:12
compile time <> runtime
w/e
08:16 kurahaupo left
masak morning, #perl6 08:16
08:17 rindolf left
sorear morning, #masak. 08:20
08:26 rindolf joined 08:33 drbean left 08:34 drbean joined 08:36 jaldhar left
moritz mrnng, msk 08:36
masak has a good feeling about today 08:38
moritz too 08:39
$wife is home for the weekend, before she's off to rehab
masak moritz: my warmest regards to all of you. just... thinking about you and wishing you well. 08:42
I'm considering merging the new rt.perl.org/rt3/Ticket/Display.html?id=117677 into the old rt.perl.org/rt3/Ticket/Display.html?id=113904 . any objections?
moritz masak: thanks. We appreciate it
masak: no objections 08:43
masak likely rt.perl.org/rt3/Ticket/Display.html?id=115294 is involved too, but it feels different enough.
masak merges the first two
moritz r: (-> $a { say ::MY.keys }).()
camelia rakudo de2080: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤ in block at /tmp/pYMmKrvuqe:1␤␤»
moritz r: (-> $a { say ::MY.keys }).(1)
camelia rakudo de2080: OUTPUT«0␤»
moritz r: (-> $a { say MY::.keys }).(1)
camelia rakudo de2080: OUTPUT«$a $_ call_sig $*DISPATCHER␤»
moritz so it gets a $_ even though it shouldn't 08:44
masak r: say MY::.keys
camelia rakudo de2080: OUTPUT«GLOBALish EXPORT $?PACKAGE ::?PACKAGE $_ $/ $! $=pod !UNIT_MARKER␤»
masak don't... don't all blocks get a $_? 08:45
moritz if all blocks get a $_, then the example from the RT will never work as intended 08:47
and you don't have lexical scoping anymore 08:48
masak yeah, guess you're right. :) 08:51
sorear masak, moritz: what's up? 08:53
masak looks up
moritz the bug count is up
masak looks to me like a mixture of atoms, vacuum, and the occasional lepton. 08:54
pretty standard stuff. 08:55
sorear the comments at :38/39 make me think I've missed something exciting :D
moritz don't forget the photons. People always forget those photons.
masak hey, I said leptons.
moritz photons aren't leptons. 08:56
masak sorear: no, nothing in particular triggered :38.
moritz: dang :/
masak .oO( but they're so light! )
moritz just bosons
sorear are there more neutrinos or photons in the sky?
masak photons are... gauge bosons? 08:57
moritz yes!
sorear i want to there are three times as many neutrinos because there are three generations and equipartition theorem
*say there
masak sorear: also, neutrinos get in everywhere. like sand at the beach.
jnthn Hm. The way Rakudo tries to cheat on $_ a little to avoid some allocations is decidedly on the chopping block. 08:58
masak you wash all your clothes, and the neutrinos *still* keep trickling out, weeks later.
jnthn It causes bugs but it's also gonna be a pain to port.
moritz sorear: I don't think the equipartition theorem applies there
sorear: also it says that the energy is distrubted equally among the degrees of freedoms. But to correlated that to a count of particles, you'd have to take the energy distribution into account 08:59
masak so, let me see if I get this straight. en.wikipedia.org/wiki/File:Standar...ticles.svg -- there's quarks, leptons, and bosons.
quarks are essentially the dreams that stuff is made of.
the things that... matter.
moritz :-) 09:00
aye
masak of the leptons, I only tend to use electrons. the rest look kind of like fancy electrons, and I've never had any use of all the neutrinos.
moritz they are like boilerplate 09:01
masak among the bosons, I can see the use of the photon and gluon. (the gluon has gotta be like the duct tape of the universe, no?)
moritz you need them to satisfy conservation laws
sorear masak: "Who ordered that?!" - I.I.Rabi on the muon
moritz well, all the four gauge bosons are duct tape
masak I know that Z and W have something to do with radioactivity, which is occasionally useful for things like powering the Sun. so they can stay too, I guess.
sorear: :P
the Higgs boson, I don't like that. feels kinda unnecessary to me. and definitely too hard to find. 09:02
and researchers looking for it seem to like Comic Sans. need I say more?
moritz masak: no, Z and W are related to weak and strong interactions
masak moritz: oh! interactions!
moritz that's the stuff that holds the atoms together
masak moritz: so, what's an interaction? I thought that was the weak and strong force, and that those were involved in radioactive decay.
moritz force = interaction 09:03
masak maybe I got the cart before the horse here somehow.
sorear strong force holds atoms together
moritz yes, they are involved in radioactive decay. but they are even more invovled in having atoms *not* decay
sorear if you "zoom out" you can simplify some things
at the cost of others
masak then I think I get it. you *release* the energy that ususally goes into holding those atoms together. and the holding-together may be mediated by W and Z, but the releasing may not be. 09:04
sorear: dude, you just abstracted the concept of "abstraction". :P
sorear you can take QED, and add a bunch of heavy antielectrons with +1 to +92 charge, and then talk about matter without invoking any force besides EM
The way I think of it is kind of like the hydrophobic interaction. There's an energy cost to the gluon screening layer around a proton, and when you have a bunch of them together they share a screening layer and save energy 09:05
masak yeah, sounds like biochemistry, then. 09:06
masak .oO( this conversation is great. I told you I had a good feeling about today! ) :P
sorear also you can get rid of the Higgs boson if you go back to the Fermi theory 09:07
masak oh, beta decay. 09:08
sorear which also eliminates W and Z - you have a single Feynman vertex where a neutron goes in, and an electron, proton, and antineutrino come out
I think there are renormalizability/gauge invariance/unitarity problems with that
(all problems with QFTs are one of those three)
masak heh. 09:10
en.wikipedia.org/wiki/Fermi_theory gives a nice overview.
sorear interesting 09:11
especially because 100 GeV shows up there
the electroweak scale, the mass range of the Higgs, W, and Z... 09:12
masak yeah.
sorear of course you get funny behavior with an electroweak theory around the Z mass... in particular s-channel resonances... but it's cute that the Fermi theory itself predicts exactly where the new physics shows up 09:13
masak that happens in domain modeling, too, in my experience. 09:15
some things work well, others... feel like design smells, or feel "not quite right". 09:16
and suddenly, in a flash of insight, they rearrange and refactor into something with higher phenotyic fitness.
models are awesome. 09:17
sorear i am perpetually amused by the cosmological parameter "effective number of neutrino species" 09:18
masak why? :) 09:19
sorear because it's a real number with an error bar 09:21
but the true value is forced to be an integer in the most naive models 09:22
masak aha. :) 09:23
sorear (there are corrections in the more complex models that allow non-integer values *waves hands*; its actual cosmological interpretation has more to do with the pressure/temperature curve of the vacuum)
09:26 spider-mario joined
masak I have no idea how the vacuum could have a pressure or temperature, but the phrase sounds cool. :) 09:30
sorear masak: imagine a box filled with blackbody radiation, which presses on all sides 09:33
I use the term 'vacuum' somewhat loosely here to describe the state where there is no net matter
although at above 12 GK or so the blackbody radiation will include electrons and positrons as well as photons... 09:34
which is actually rather problematic because energy equipartition between neutrinos and photons is frozen out below a few TK 09:37
a few hundred TK 09:38
unrelatedly, i ran into the rishon model on thursday. it's pretty cute
09:39 rindolf left 09:40 rindolf joined
DrEeevil mmh, an unexpected physics tutorial 09:46
masak "a possible deep connection between intelligence and entropy maximization" -- www.alexwg.org/publications/PhysRev...168702.pdf -- interesting.
(connected to this article: www.insidescience.org/content/physi...igence/987 ) 09:47
09:49 crab2313 left, domidumont joined
cognominal that sounds like "scientific creationism". :) 09:50
masak HN has this to say: "Welcome to modern physics, where physicists do unfalsifiable and imprecise things based on bad philosophy."
so, yeah. sounds like that. cognominal++
09:53 rindolf left
sorear it'll be fun to see what happens in the next couple decades 09:54
09:54 rindolf joined
sorear I'm hoping for something which reduces the number of free variables in the SM... 09:54
masak though this looks less BS-y: scalablegamedesign.cs.colorado.edu/..._Diffusion 09:55
sorear: I find physics inherently interesting. especially when it leads to innovations in our everyday lives. 09:56
sorear: physics increases the manipulexity and whipuptitude of reality :)
cognominal Everything, including Perl, ends up being a neguentropic demiurgic game even if superficially everything looks like bad PHP. 09:57
nwc10 Is that something like www.youtube.com/watch?v=S6P-2GY-SgA ? 09:58
cognominal beware, programmers, the neguentropic police is watching you.
nwc10 (not yet checked tht that isn't some cruel rickroll)
masak nwc10: :) I love parodies. I don't even know the original reference here, and it's still funny. :) 10:03
cognominal ask.slashdot.org/story/13/04/20/005...e-for-kids Always the same stupid meme, visual programming. thinking that semantic comes without syntax and thinking that a visual lisp is the future. 10:04
masak cognominal: yeah. I've started to notice that, too.
cognominal Well, sugar-coated lisp, but you can come with only so many forms and colours.
masak cognominal: I thought about it the other day. text is much better suited for expressing one of the core ideas of programming: variable/parameter use. 10:05
cognominal text is the serialisation of some DAG. the perl syntax design game is finding the nicest serialisation convention. 10:07
And slangs are allowing everyone dedicated enough to do the same 10:08
10:12 Bzek joined
masak yes, if Perl's hidden slogan is "everyone can solve anything, because everything's a textual problem", then Perl 6's hidden slogan is "everyone can solve anything (to the second degree), because everything's a compiler". 10:12
cognominal masak: this akin to educational methods who says that verb are red and so on except that every method comes with its own synestetic convention. We have invented words like 'verb' for a reason and it took often centuries for each word to be common knowledge. 10:13
mask, I like that slogan 10:14
* synesthetic 10:16
10:18 woosley joined
masak cognominal: "verbs are red" should of course be a consistency helper/donkey's bridge at best. not the core thing. 10:20
cognominal about "variable/parameters use" : languages are creating bindings, that is edges in some semantic DAG
* language-based productions 10:21
masak I'm not sure what it is you're modeling as a DAG here. 10:22
cognominal some world representation
masak in my world, the program surface structure is either a tree (in a sufficiently synchronous program) or an all-out graph (in a sufficiently asynchronous program). a DAG is somewhat in-between.
cognominal yes 10:23
masak guess I'm just not sure where the "acyclic" part comes in, or if it's significant. 10:25
cognominal in an AST, the same variable appears in many places so what appears as a tree is indeed a directed graph. 10:26
masak depends how you model variable use in the tree.
chances are you don't actually *link down* to the same variable use several times, which would indeed create a DAG structure. 10:27
cognominal But somehow there are distinguished nodes that were leaves in the AST.
masak you're probably more interesting in *linking up* to where the variable is declared. usually that's meta-information, though, not part of the actual tree strucure.
cognominal yes 10:28
masak interested*
PAST and QAST have taught me a simple rule for what information to actually expose in the tree structure itself:
the things that you want to traverse over in the most common case.
10:37 Bzek left 10:43 kurahaupo joined 10:55 wtw joined 10:58 FROGGS left 11:01 Bzek joined 11:05 berekuk left 11:07 berekuk joined 11:09 grondilu left, grondilu joined 11:10 pupoque joined 11:12 FROGGS joined 11:15 swarley- joined 11:19 swarley| left 11:22 swarley- left 11:25 Bzek left
cognominal masak: the very last sentence of this article promise fun. "Qui sait si le documentaire qu'il vient d'achever, tout en images animées, sur la théorie du langage de Noam Chomsky ne sera pas, de tous, le plus bouleversant." 11:25
www.lemonde.fr/culture/article/2013..._3246.html 11:26
11:29 dmol joined 11:36 PacoAir joined 11:39 fgomez joined 11:47 cognominal left 11:48 kurahaupo left, cognominal joined
masak cognominal: hm. I get the gist of the sentence, but not all of it, I think. "Anyone who knows the [level of] documentation he will achieve, in animated images only, by the theory of language of Noam Chomsky will not be, is all the more upsetting." 11:53
that's my best-effort translation ;)
cognominal good, except he is finishing a documentary, not a documentation 11:55
google translation is not perfect either : "tout en images animées" gives "while moving images". 11:58
11:58 grondilu left, grondilu joined
masak oh, it was "documentary". I wasn't sure. 12:29
12:54 woosley left 12:59 Vlavv_ joined, Vlavv` left 13:02 MrMeek-afk left, tgt joined, MrMeek joined, tgt left, tgt joined 13:03 crab2313 joined 13:07 MrMeek-afk joined 13:08 crab2313 left 13:09 MrMeek left 13:11 jaldhar joined
masak wow, a really nice illustrated monad tutorial: adit.io/posts/2013-04-17-functors,_...tures.html 13:18
cognominal with an Idi Amin Dada monad? 13:24
masak I didn't understand that particular image. 13:29
13:31 tgt left, arlinius left
cognominal That's to illustrate the AHAHAHAHAH 13:32
masak yeah.
perhaps just to convey a sense of "this is pretty crazy stuff"? 13:33
cognominal indeed
diakopter oh; I thought it was something racist 13:36
masak I'd be surprised if it were.
diakopter (kidding..) 13:38
masak eh. 13:39
diakopter sorry, misguided self-deprecating humor... 13:41
13:43 wtw left
timotimo r: 0.9.ceil.say 13:45
camelia rakudo de2080: OUTPUT«No such method 'ceil' for invocant of type 'Rat'␤ in block at /tmp/2mPVmvoEO5:1␤␤»
timotimo where do i get a ceil? i implemented round($_ + 0.5) for now
spider-mario r: 0.9.ceiling.say 13:46
camelia rakudo de2080: OUTPUT«1␤»
spider-mario timotimo : ↑
timotimo oh, ceiling 13:47
masak yeah, because what the heck is a 'ceil' :P 13:48
masak .oO( "Mechanic said I had blown a ceil. I said keep my private life out of it." ) 13:49
timotimo :)
13:50 jeje joined
masak jeje: greetings. 13:52
jeje greetings
masak ...earthling.
jeje just demonstrating my wife the power of IRC :)
masak IRC is very powerful indeed. 13:53
timotimo niecza has no threading for perl6, right?
masak timotimo: I think it does, a little.
timotimo (because ... how?)
jeje I though perl6 was the appropriate channel for that :)
masak oh, very much appropriate.
rn: say "Perl 6 says hi, too! :)"
camelia rakudo de2080, niecza v24-37-gf9c8fc2: OUTPUT«Perl 6 says hi, too! :)␤»
jeje she already have a smile on her face 13:54
thanks guys!
masak bows
nice to demo IRC to you, jeje's wife!
timotimo the true power, i find, is how easy it is to come up with an irc bot. there's hardly any extra work you have to do 13:55
jeje don't demo kikking me out
masak don't give us ideas. :P
13:55 mattp_ joined
jeje I'll have her program some IRC bot a bit later I think 13:56
cheers, have a good one all
13:57 jeje left 14:00 arlinius joined 14:14 tgt joined, tgt left 14:23 tgt joined 14:27 c1sung left, c1sung joined 14:30 arlinius left, pupoque left 14:31 jaldhar left
timotimo i'm looking for a prettier way to write this: @remainder[$def-type] = 0 if @remainder[$def-type] < 0; 14:36
ideas?
colomon max= 0
?
14:36 tgt_ joined
masak yeah. 14:37
14:37 tgt_ left
timotimo really! 14:37
14:37 tgt left
timotimo my god how i love this language 14:37
it even makes sense
masak :)
14:37 pupoque joined
masak infix:<min> and infix:<max> are a bit funny, though, because they only feel like they make sense when used with metaoperators. in their original form, they look rather odd. 14:38
timotimo true
14:39 chinaXing joined
masak chinaXing: 你好! 14:41
14:43 chinaXing left
timotimo it's weird how $foo max= 0 reads a bit like "$foo maxes out at 0", but in fact it means "$foo can now be 0 at minimum" 14:44
masak I read it as "max $foo to 0", which makes a bit more sense. 14:45
timotimo that also sounds the wrong way around to me
masak hm, yes. 14:47
14:48 tgt joined 14:49 SamuraiJack joined
pmichaud "$foo is at least zero" 14:50
timotimo but that has no "max" in it, so it's not a reading of the actual text ;)
masak right. "at least" sounds more like "min". 14:51
pmichaud "$foo greater than or equal to zero" ? 14:52
don't quite like the "greater than" phrase, though, because that's > 14:53
"$foo increases to zero"
("increase" sounds more like "max")
timotimo i like the "increases" reading
pmichaud and then $foo min= 0 would be "$foo decreases to zero"
or "$foo lowers to zero" 14:54
timotimo yeah, that sounds good
pmichaud btw, good morning, #perl6
timotimo this should be written down somewhere
jnthn morning, pmichaud o/
pmichaud timotimo: maybe in perl6doc, with the description of max/min
timotimo where would i put source so that it shows up there? 14:55
moritz all the contents of all the files in lib/*.pod show up there 14:56
timotimo thanks 14:57
moritz maybe in lib/operators.pm or so 15:00
timotimo will edit 15:01
i'd just put that as a bit of code with a comment below the text, does that sound good? 15:03
moritz aye 15:06
15:08 arlinius joined
dalek c: b8c5ac4 | timo++ | lib/operators.pod:
mention intuitive readings of max= and min=

  pmichaud++ came up with those.
15:09
timotimo doc.perl6.org gets updated with a cronjob?
it's pretty unfortunate that the bottom of the wiki pages on perlfoundation.org shows the date and exact time of last update, but neglects to mention the *year* 15:15
15:16 sciurius joined 15:21 pupoque left 15:22 pupoque joined 15:24 tgt left 15:27 frdmn left 15:34 SamuraiJack_ joined, SamuraiJack left 15:50 kaare_ joined 15:56 kaare_ left 15:57 tgt joined
dalek ast: f7e0e93 | coke++ | S02-magicals/dollar-underscore.t:
This corresponds to an open ticket
16:00
ast: 03595c1 | coke++ | S (9 files):
Remove references to Seq fossil from roast
jnthn [Coke]++ 16:01
16:01 kaare_ joined
[Coke] jnthn: one more "regression" down. ;) 16:01
masak [Coke]++
16:01 spider-mario left
jnthn is trying to hunt what exactly about the jvm-support branch busts some Rakudo spectests 16:01
[Coke] r: my Array of Int @a; say @a.WHAT; 16:02
camelia rakudo de2080: OUTPUT«(Array+{TypedArray})␤»
[Coke] b: my Array of Int @a; say @a.WHAT;
camelia b 922500: OUTPUT«Method '!select' not found for invocant of class ''␤ in main program body at line 22:/tmp/w0ad0QxdN0␤»
[Coke] r: role Cup[::contents] {} ; class EggNog {}; my Cup of EggNog $r; say $r.what 16:03
camelia rakudo de2080: OUTPUT«No such method 'what' for invocant of type 'Cup'␤ in block at /tmp/Y_XgTW6vF2:1␤␤»
[Coke] r: role Cup[::contents] {} ; class EggNog {}; my Cup of EggNog $r; say $r.WHAT
camelia rakudo de2080: OUTPUT«(Cup)␤»
[Coke] b: role Cup[::contents] {} ; class EggNog {}; my Cup of EggNog $r; say $r.WHAT
camelia b 922500: OUTPUT«Cup()␤» 16:04
[Coke] b: role Cup[::contents] {} ; class EggNog {}; my Cup of EggNog $r; say $r.WHAT.perl
camelia b 922500: OUTPUT«Cup[EggNog]␤»
[Coke] r: role Cup[::contents] {} ; class EggNog {}; my Cup of EggNog $r; say $r.WHAT.perl
camelia rakudo de2080: OUTPUT«Cup␤»
[Coke] There's a regression.
Is it valid to care?
moritz I think so, yes 16:05
jnthn Yeah, that should be fixed IMO
Hmm 16:06
r: role Cup[::contents] {} ; class EggNog {}; my Cup of EggNog $r; say $r.HOW.WHAT
camelia rakudo de2080: OUTPUT«(Perl6::Metamodel::CurriedRoleHOW)␤»
dalek p/jvm-support: 891075b | coke++ | VERSION:
bump VERSION to 2013.04
16:08
p/jvm-support: cb70dae | jnthn++ | / (3 files):
Fix regression introduced while adding JVM backend
p/jvm-support: e93a51d | jnthn++ | VERSION:
Merge branch 'master' into jvm-support
16:08 kaare__ joined
colomon \o/ 16:08
16:09 tgt left 16:10 kaare_ left 16:12 kaare_ joined, tgt joined 16:13 grondilu left 16:14 grondilu joined, kaare__ left 16:15 wtw joined
FROGGS * jnthn is trying to hunt what exactly about the jvm-support branch busts some Rakudo spectests 16:17
some??
so, rakudo is already running?
jnthn It was a sillly thing
FROGGS: No
FROGGS ahh, k
jnthn FROGGS: The various re-orgs of stuff I did of the repo managed to break something.
Just waiting on a clean spectset run then I'll merge. 16:18
FROGGS ahh, so something broke for rakudo@parrot?
jnthn Right.
[Coke] aye.
FROGGS kk
jnthn++ # anyway
jnthn yeah, this looks better 16:19
dalek Heuristic branch merge: pushed 52 commits to nqp by jnthn
kudo/nom: 6297810 | jnthn++ | / (2 files):
Bump NQP_REVISION to latest; chase rename.
16:20
16:22 lizmat joined 16:25 tgt left
dalek ast: 7928071 | coke++ | integration/advent2009-day18.t:
mark regression with an RT
16:34
16:36 woolfy joined 16:39 kaare_ left 16:42 dmol left 16:45 tgt joined 16:46 frdmn joined 16:48 dmol joined, kaare_ joined
dalek kudo/nom: 998cc87 | jnthn++ | / (2 files):
Toss redundant directory/.gitignore entry.
16:57
kudo/nom: ed3a33a | jnthn++ | / (105 files):
Give all NQP files the .nqp extension.
kudo/nom: 5e7a2bb | jnthn++ | / (34 files):
Move ops/PMCs/C code under src/vm/parrot/.

Matches the same kind of structure the NQP repository now has.
jnthn walk, dinner & 17:13
masak [Coke]: hm, "curried rule"? 17:14
r: role Cup[::Contents] {}; class Eggnog {}; my Cup[Eggnog] $mug; say $mug.WHAT.perl 17:15
camelia rakudo de2080: OUTPUT«Cup␤»
masak seems to be wrong for both 'Cup[Eggnog]' and 'Cup of Eggnog'.
and I wouldn't describe it as "curried". it's just a parameterized role. 17:16
jnthn The issue is in CurriedRoleHOW; it doesn't factor the args into the name.
masak oh! ok.
jnthn There's an intermediate level between the parametric role group and picking the actual role. 17:17
really walk :) & 17:18
17:21 Bzek joined 17:26 berekuk left 17:27 lizmat left 17:29 berekuk joined 17:35 lizmat joined 17:37 lizmat left, lizmat joined 17:38 lizmat left, lizmat joined 17:39 kivutar joined 17:40 spider-mario joined 17:47 jaldhar joined
[Coke] masak: (curried) was in one of the error messages, is all. feel free to change the title. 17:50
... and I'm caught up. nevermind. ;) 17:51
18:00 berekuk left 18:02 berekuk joined 18:05 hlin_ left 18:07 MrMeek joined, berekuk left 18:08 adu left, MrMeek-afk left
masak [Coke]: oh, that explains it. 18:11
18:17 kivutar left 18:23 dukeleto joined 18:26 berekuk joined 18:34 berekuk left 18:44 berekuk joined
cognominal I made a mistake, I committed on the wrong branch and pushed on github. I know how to delete the commit locally but not on github. 18:47
masak cognominal: 'git push --force'
cognominal: but know that downstream, if they pulled already, will suffer.
18:47 berekuk left
cognominal I know but the mistake is minutes old :) 18:48
18:49 census left
cognominal masak: will soon be in an appropriate branch github.com/cognominal/nqp/blob/mas...s/bast.pod github.com/cognominal/nqp/blob/mas...T/Bast.nqp :) 18:50
I would appreciate feedback when it is in a branch. Does not yet work . got Error while compiling block : Error while compiling op bind (source text: ":="): First child of a 'bind' op must be a QAST::Var
18:51 sizz joined, domidumont left
moritz %h('') := # looks dubious to me 18:51
%h() is a call
did you mean %h{ '' } := ? 18:52
cognominal oops, that's the one
silly me
18:53 berekuk joined 18:54 census joined 18:55 kivutar joined
FROGGS \o/ time for $hacking \o/ 19:02
masak \o/
jnthn Sejm here \o/ 19:05
FROGGS :o)
19:05 berekuk left
census what about hacking? :) 19:08
FROGGS++
FROGGS need to get `require PATH` done for v5 19:09
19:09 rindolf left
cognominal .?hacking: :with<fun> # for those who support that method 19:10
masak census: it's le time for it!
colomon time for $work here, alas. :( 19:11
\
19:17 tgt left, kurahaupo joined, tgt joined 19:20 frdmn left, frdmn joined
dalek p: dcf2e2f | jnthn++ | src/vm/parrot/QAST/Operations.nqp:
Add an nqp::getenvhash op.
19:21
p: bfb3669 | jnthn++ | src/vm/parrot/QAST/Operations.nqp:
Add nqp:: op for stable_set_type_check_mode.
FROGGS ohh, getenvhash, nice 19:22
19:23 FROGGS_ joined 19:24 mberends joined 19:25 FROGGS left 19:26 berekuk joined 19:33 jaldhar left 19:37 jaldhar joined
dalek kudo/nom: e9e1b5d | jnthn++ | / (5 files):
Bump NQP_REVISION; use new nqp:: ops.
19:38
19:40 xen joined 19:41 xen left, projektica joined, rindolf joined
nwc10 jnthn: worked on my machine (nom at origin/master) without that last commit 19:43
jnthn nwc10: OK. Also note that nqp-jvm-prep is as of today only of historical interest, and work from here on NQP JVM is done in the nqp repo itself. 19:44
colomon \o/
jnthn nwc10: perl ConfigureJVM.pl && make test
nwc10: Some mess still for me to clear up there, but overall it works. 19:45
19:48 rindolf left, projektica left
nwc10 OK. I'd guessed that nqp-jvm-prep was probably "history" 19:49
japhb jnthn, does this also mean you've merged nqp/jvm-support back to nqp/master? 19:56
jnthn japhb: Yes
japhb \o/ 19:57
YES!
nwc10 jnthn: 5 tests fail here: pasta.test-smoke.org/488
japhb is most happy indeed
jnthn nwc10: Yes, those are ones we never attempted in nqp-jvm-prep and are in the nqp repo
nwc10: I'll get to them.
nwc10 OK. Glad to know that they are nothing serious 19:58
so, yay
time for beer?
jnthn ;)
jnthn has a whisky barrel aged porter to enjoy this evening :) 19:59
census jnthn++
nwc10 jnthn: I infer that nqp.sh is generated 20:01
it should probably be this: 20:02
#!/bin/sh
exec java -cp .:nqp-runtime.jar:3rdparty/asm/asm-4.1.jar nqp "$@"
japhb cognominal, nice DSL. So you pushed down the waterbed in one place ... where does it spring back up?
nwc10 the "exec" is micro-optimisation :-)
jnthn nwc10: The .sh file is a wild untested guess on my part 'cus I'm mostly a Windows guy ;)
nwc10 I think that it should be "$@", but maybe it's "$*" 20:03
this is the sort of think^H^Hg that timtoady knows :-)
OK, I tested it :-)
jnthn nwc10: I mean "pass all the args along that we got to this other process"
nwc10 and "$@" works with arguments with spaces and "
jnthn Would quoting not risk passing them as one arg, or does it not work like that? :)
nwc10 yes, you need the "" quoting else whitespace within an argument on the way in gets split 20:04
japhb jnthn, "$@" is a special bash token.
It is mnemonic, not literal.
And ... yet another reason I hate bash quoting rules. 20:05
nwc10 IIRC it's a special /bin/sh token. But the key part is that it's special
dalek p: 05fb4ec | jnthn++ | src/vm/jvm/runtime/org/perl6/nqp/ (65 files):
Whitespace consistency.
p: 9ab4d07 | jnthn++ | src/vm/jvm/nqp.sh:
Improve nqp.sh; nwc10++.
cognominal japhb: github.com/cognominal/nqp/tree/bast but it just compiles so it probably need a lot of work. I need to hook it up to nqp but adding to the EXPR rule does not seem easy. 20:10
...working on a test file 20:11
20:11 Bzek left
cognominal And to be complete, I need to add dump-bast methods to QAST::Nodes 20:11
20:12 kaare_ left 20:13 frdmn left
nwc10 $ ./nqp.sh -e 'nqp::say("works on my machine")'works on my machine 20:14
bah. naughty termianl
jnthn wonders if we should just call it "nqp" rather than "nqp.sh" for consistency with how you typically run it today...
nwc10 possibly. ./nqp was my first assumption for what I should type 20:17
20:17 berekuk left
jnthn OK, will do it 20:18
I'm sure if it breaks some terrible cultural norm somebody will tell me ;) 20:19
Oh, I missed that you suggested /bin/sh instead of /bin/bash
mst I dislike having .sh on the name
this is not windows and you are exposing your implementation pointlessly
jnthn OK, it will be gone shortly ;) 20:20
20:21 frdmn joined
lue hello world o/ 20:22
FROGGS_ hi lue
masak lue! \o/
20:24 kivutar left
nwc10 make for JVM slightly faster (wallclock) than make for parrot 20:30
tests run in 1/3rd of the wallclock time with parrot
seems that the JVM build is often using two processes, as the user CPU is almost double the wallclock time
timinngs suggest that parrot uses only one core 20:31
FROGGS_ huh
will build it too now..
jnthn nwc10: I doubt it's the build.
nwc10 I assumed that it wasn't the build either 20:32
spider-mario using a parallel make for nqp broke the build for me
cognominal Has someone compiled jvm nqp on lion?
spider-mario (on parrot)
jnthn nwc10: I suspect it's that the JVM uses a concurrent GC
nwc10 JVM multithreads by default? eg one for GC, and one for actual work :-)
snamp
jnthn I don't think JVM will ever win on startup time, that I think we can trim some off the current one. 20:33
nwc10 please drink beer *first*, before doing that :-) 20:34
20:34 berekuk joined 20:36 berekuk left
dalek p: 26720e8 | jnthn++ | / (7 files):
Simple make install; nqp.sh => nqp.
21:00
21:00 SamuraiJack_ left 21:11 kivutar joined
lue jnthn: I'm assuming rakudo can't yet use the shiny new JVM NQP, right? 21:12
FROGGS_ not yet, no 21:13
japhb Getting close to ready to start that, I bet.
masak lue: see jnthn's latest blog post.
lue ooh, didn't know there was a post 21:14
lue reads
21:19 Chillance joined 21:25 grondilu left 21:32 bruges_ joined
dalek p: bd194cf | jnthn++ | src/vm/jvm/ (2 files):
Implement nqp::getenvhash for JVM.
21:33
p: 14468f9 | jnthn++ | src/vm/jvm/ (2 files):
Implement nqp::[get|bind]hllsym for JVM.
21:48 woolfy left
masak 'night, #perl6 21:51
FROGGS_ night masak
japhb o/
dalek p: fc7cb78 | jnthn++ | tools/build/install-jvm-runner.pl:
Add missing chmod.
21:58
21:58 adu joined
dalek kudo/jvm-support: 51908e9 | jnthn++ | / (4 files):
Rename Makefile.in -> Makefile-Parrot.in.
22:08
kudo/jvm-support: 4e422e9 | jnthn++ | tools/build/ (2 files):
Give gen-cat.pl filtering ability, like NQP one.

Includes updates to Parrot Makefile to use this updated version.
kudo/jvm-support: 7e1fcba | jnthn++ | / (4 files):
Add bare-bones ConfigureJVM.pl and JVM makefile.

At the moment, make just compiles the constant folder, since it has no dependencies and already compiles with NQP JVM.
22:13 spider-mario left
cognominal 'night, * 22:34
census night 22:35
22:43 kurahaupo left
jnthn 'night, #perl6 22:49
adu gnight jnthn
22:54 kivutar left 23:01 berekuk joined
[Coke] nwc10: nqp's parrot build doesn't use make -j by default. 23:10
dalek rl6-roast-data: 7fa5a51 | coke++ | / (4 files):
today (automated commit)
23:11
[Coke] ooh, exciting jnthn++ commit. 23:17
23:24 fgomez left 23:28 berekuk left 23:35 PacoAir left 23:42 pupoque left 23:43 mberends left 23:46 tgt left