[00:01] alright thanks for the help folks, off to get some dinner [00:07] *** yqt left [00:08] if you want a trail just do like i mentioned [00:08] panda look module::name [00:08] then you can modify the code or whatever before you do panda install . [00:37] *** prime joined [00:37] *** prime left [00:37] *** prime joined [00:46] *** tinyblak joined [00:51] *** tinyblak_ joined [00:55] *** tinyblak left [00:56] *** laouji joined [01:05] *** prime left [01:09] *** prime joined [01:09] *** prime left [01:09] *** prime joined [01:15] there's a pull request for giving template-mojo a "provides" section now [01:15] tadzik: ^ [01:16] oh [01:16] zoffx already made a pull request way before i did [01:16] tadzik: ^ [01:18] masak: Adventure::Engine still says "Actual illucidating example coming soon. Watch this spot." :) [01:18] I only added provides though; not all the other stuff you added [01:19] right, but i don't know if the other stuff is even necessary [01:19] *** aborazmeh joined [01:19] *** aborazmeh left [01:19] *** aborazmeh joined [01:19] masak: and if you're looking at that, might as well add a "provides" section like panda gen-meta suggests :) [01:20] rakudo-star-daily: 7f490c6 | coke++ | log/ (2 files): [01:20] rakudo-star-daily: today (automated commit) [01:20] rakudo-star-daily: review: https://github.com/coke/rakudo-star-daily/commit/7f490c614b [01:21] Ah OK. so it's the missing 'provides' that was causing those errors, SomeStrangeTest [01:21] simple \o/ [01:23] *** genio left [01:28] yeah, we just merged the change that makes the provides section necessary a few days ago [01:35] 128 modules on http://modules.perl6.org/ that don't got that... [01:35] well, he did mention specifically the 'provides' error :P [01:35] http://grog-blog.com/wp-content/uploads/2014/02/barney-stinson-challenge-accepted.jpeg [01:36] although maybe it should be more explicit about it not working [01:36] It's actually just a warning and it says "Successfully installed" but ... nothing's installed [01:36] *** aborazmeh left [01:38] successfully installed <- would be something to change in panda [01:39] Just bail out after issuing warning maybe? [01:40] nah, cause you still want to install other modules you explicity told it to install [01:40] panda Fail::Module Success::Module <- i would expect it to install Success::Module even though Fail::Module fails [01:42] panda just needs to throw an exception in that circumstance and it would get handled properly [01:44] *** adu joined [01:46] *** dj_goku joined [02:02] *** uvb joined [02:04] *** aborazmeh joined [02:04] *** aborazmeh left [02:04] *** aborazmeh joined [02:11] *** gfldex left [02:15] so that last error I had looks like a exception thrown by rakudo c code [02:15] : MVM_exception_throw_adhoc(tc, "No STable at index %d", idx); [02:16] this is in sc.c, which I gather is serialization context [02:16] *** jack_rabbit joined [02:16] but grabbing Bailador from git and copying the libs in results in a working Bailador so I'm not sure what Panda is doing differently [02:18] anyway, it's not a problem for me, but thought I'd mention it in case somebody wants to track down the bug [02:18] *** noganex joined [02:21] *** noganex_ left [02:26] *** kaare_ joined [02:28] nine_: you around? [02:30] *** raiph joined [02:39] *** aborazmeh left [02:42] *** raiph left [02:52] *** vendethiel- joined [02:54] *** vendethiel left [03:02] Looks like I finally made an almost-fully-automated script to create PRs to add "provides" to META for the ~120 dists that are missing it. Gonna submit them all tomorrow, after work. [03:02] https://xkcd.com/1319/ [03:09] *** raiph joined [03:16] *** aborazmeh joined [03:16] *** aborazmeh left [03:16] *** aborazmeh joined [03:21] *** tinyblak joined [03:24] *** tinyblak_ left [03:38] *** sirdancealot left [03:40] *** raiph left [03:42] *** BenGoldberg left [03:45] *** laouji left [04:01] *** adu left [04:17] *** adu joined [04:17] *** adu left [04:20] *** Vlavv_ left [04:27] *** adu joined [04:29] *** aborazmeh left [04:37] *** laouji joined [04:51] *** fhelmberger joined [04:55] *** fhelmberger left [04:57] *** tinyblak_ joined [04:59] *** adu left [04:59] *** tinyblak left [05:05] *** kurahaupo left [05:08] *** skids left [05:17] *** spider-mario left [05:27] *** Woodi left [05:27] *** uvb left [05:28] *** Woodi joined [05:29] *** adu joined [05:45] *** telex left [05:46] *** telex joined [05:50] *** kurahaupo joined [05:52] *** yeahnoob joined [05:53] *** danaj joined [06:03] TimToady: I noted your recent commit for the R meta-op, so that the generated op has the opposite associativity of the original operator. That seems sensible, but keeping the same precedence seems a bit crazy. Would anything break if the precedence of generated operators differed minimally from the original operator? My gut feeling is longer-name and/or more letters implies lower precedence, but there could be good arguments either way. [06:05] why make the user remember more rules? [06:06] there are meta-operators where the valence of the arguments changes from item to list, and there it makes sense to change the precedence, but the shape of the arguments stays the same for R [06:07] so it seems to fit more with the meta-ops that are transparent to precedence [06:09] TimToady: okay, but then how does one parse ( $x - $y R- $z ) ? I would have thought it saner to entirely forbid equal precedence with differing associativity [06:10] well, there's probably an argument to be made for pickiness there; we do, after all, complain on mixed list infixes [06:11] otoh, R is a lot rarer than X or Y or ..., so it seemed more like a DIHWIDT to me [06:15] *** chenryn joined [06:15] I should look at EXPR and see how costly such a check would be on very normal operators like +/- [06:21] *** adu left [06:28] there would be some cost to it; currently it uses the associativity of the new incoming operator rather than the old one on the operator stack; looking up the latter would involve saying something like ~@opstack[+@opstack-1] // 'left', whereas the existing approach merely has to look up nqp::atkey(%inO, 'assoc') [06:31] so currently the opp will assume that $x - $y R- $z is right associative based on the righthand R- operator, which is handier to look up than the - on the left [06:33] *** rindolf joined [06:33] <[Tux]> .msg FROGGS would you be so kind to have another look at excluding reserved words like if/for/while/.. in Slang::Tuxic? [06:33] [Tux]: Sorry, this command is admin-only. [06:34] <[Tux]> .tell FROGGS would you be so kind to have another look at excluding reserved words like if/for/while/.. in Slang::Tuxic? [06:34] [Tux]: I'll pass your message to FROGGS. [06:49] <[Tux]> m: my$x=\"1,2\n3,4\n";$x.gist.say [06:49] rakudo-moar f65ba9: OUTPUT«\(1,2␤3,4␤)␤» [06:49] <[Tux]> m: my$x=\"1,2\n3,4\n";$x.perl.say [06:49] rakudo-moar f65ba9: OUTPUT«Capture.new(list => ("1,2\n3,4\n",))␤» [06:49] *** kurahaupo left [06:50] <[Tux]> is there a method in between, that returns "1,2\n3,4\n" [06:51] *** fhelmberger joined [06:54] *** brrt joined [06:54] I'm not aware of any [06:55] <[Tux]> my $s-in = $in.gist; $s-in ~~ s:g{\n} = "\\n"; [06:55] <[Tux]> that works for me for now [06:55] <[Tux]> used in generating test messages [06:56] *** fhelmberger left [06:56] *** fhelmberger joined [06:57] why do you deal with captures in the first place? [06:57] <[Tux]> because I can? :) [06:58] <[Tux]> I am trying to find out WHAT I should deal with and HOW [06:58] <[Tux]> like testing with Supply's is really hard [07:00] <[Tux]> I first want to experiment with the complete scala of possibilities and *then* decide what is sane to support (if at all) [07:00] *** Ven joined [07:00] <[Tux]> so many people, so many users, so many points of view [07:01] understood [07:01] *** Vlavv_ joined [07:02] <[Tux]> currently I am thinking that an Array of strings is *way* more logical than a single capture (string reference), as it does not conflict with whatever is already investigated [07:03] *** kurahaupo joined [07:04] *** brrt left [07:05] *** prime left [07:05] *** tinyblak joined [07:05] *** prime joined [07:05] *** prime left [07:05] *** prime joined [07:06] *** phdphil left [07:07] <[Tux]> ok, Array of strings done. that was easy :) [07:09] *** tinyblak_ left [07:14] *** eli-se joined [07:14] *** eli-se left [07:14] *** mr-foobar left [07:16] *** tinyblak left [07:16] *** tinyblak_ joined [07:17] *** mr-foobar joined [07:22] *** jack_rabbit left [07:23] *** brrt joined [07:25] <[Tux]> I really would like to see IO from Str (not needing a tem file) [07:26] <[Tux]> makes testing so much easier [07:26] then write a module that does it [07:26] shouldn't be all that hard [07:27] * [Tux] opens a drawer to look for more free time … [07:27] I mean, the typical IO API just consists of get, lines, print, say, close [07:28] <[Tux]> you are right, but I knoiw that will be a Yak-shaving experience [07:33] *** espadrine joined [07:35] *** [particle] joined [07:36] um, surely, strictly IO from Buf? [07:37] *** [particle]1 left [07:37] actually, you can do IO from either. If the IO system is smart enough to know when it's dealing in octets, and when in characters [07:45] *** risou is now known as risou_awy [07:46] *** risou_awy is now known as risou [07:47] *** RabidGravy joined [07:54] *** eli-se joined [07:55] *** eli-se left [07:58] *** kjs_ joined [08:01] *** Rounin joined [08:02] *** rurban_ joined [08:03] *** zakharyas joined [08:11] *** darutoko joined [08:14] *** pdcawley joined [08:23] *** gfldex joined [08:27] *** espadrine left [08:27] *** kjs_ left [08:30] *** abraxxa joined [08:35] *** dakkar joined [08:36] *** yqt joined [08:55] *** FROGGS joined [08:59] *** espadrine joined [09:01] *** kurahaupo left [09:03] *** FROGGS left [09:05] *** kjs_ joined [09:08] *** rurban_ left [09:11] *** eli-se joined [09:11] good evening [09:12] \o eli-se [09:15] I want to write a videogame in Perl. [09:16] eli-se: text-based or with graphics? [09:16] text-based, of course [09:16] I'm not a masochist. [09:17] we have both :) [09:17] eli-se: timotimo++ made https://github.com/timo/gtk_cairo_shooter [09:17] Unicode art. [09:17] and for text based, we had some module, but no unicode art, only "exploratory" text-based games [09:18] eli-se: https://github.com/masak/Adventure-Engine/ [09:18] eli-se: and as unicode art, https://github.com/masak/druid/ [09:23] *** brrt left [09:23] Ven: yesterday i found out that gtk_cairo_shooter segfaults with my latest changes to cairo (turning it into a module Cairo; and tweaking gtk_cairo_shooter to use the new imports) and i didn't have time yet to debug it [09:23] timotimo: well, I never managed to get it to run anyhow.. :) [09:24] (not sure how turning it into a module can make it segfault, tho) [09:28] *** slavik joined [09:29] *** pecastro joined [09:30] *** brrt joined [09:35] *** yeahnoob left [09:35] I want lenses in Perl 6. [09:35] they should make game development more pleasant [09:36] i don't really know what those "lenses" you speak of are :( [09:36] *** Ven left [09:36] they're a way to manipulate nested data structures [09:37] basically [09:37] oh [09:37] isn't that what this one person talked about during one of the recent conferences [09:37] oh, those were "zippers" [09:37] here's a lens type: https://gist.github.com/rightfold/1798a0994bc2d663a1a6 [09:38] they can be composed to form paths into nested data structures [09:39] I've done soemthing very similar in perl5 when I was playing with destructuring. [09:39] *** aborazmeh joined [09:39] *** aborazmeh left [09:39] *** aborazmeh joined [09:41] *** Ven joined [09:45] *** sno is now known as [Sno] [09:47] *** Ven left [09:47] *** eli-se left [09:49] *** Ven joined [09:54] *** yqt left [09:56] *** Tux__ is now known as |Tux| [10:03] *** cschwenz joined [10:03] *** coffee` joined [10:08] *** RabidGravy left [10:09] *** eli-se joined [10:10] Why are lols special? [10:11] eli-se: "special"? [10:11] yes [10:11] there's all sorts of documents on them [10:12] and there's a lol method [10:12] so they must be special in some way [10:12] I fail to see, however, how a list of lists would be any different from a list of integers. [10:13] and a LoL class [10:14] *** pdcawley left [10:15] *** SomeStrangeTest left [10:15] I can see why in Perl 5 arrays of arrays deserve special mention, since arrays can store only scalars. [10:23] *** pdcawley joined [10:26] *** chenryn left [10:29] eli-se: iirc they offer both a flat and a nested view [10:30] *** pecastro left [10:38] *** brrt left [10:38] *** eli-se left [10:41] *** rurban_ joined [10:42] They aren't really arrays of arrays, but arrays of *arrayrefs* [10:43] my @a = ( 'foo', 'bar', [ 'meow', 'mer', [ 'zer', 'ber' ] ] ); [10:43] *** Ven left [10:46] *** rurban_ left [10:49] *** FROGGS joined [10:51] *** xfix joined [10:51] *** xfix left [10:52] *** Rounin left [10:57] *** eli-se joined [10:57] *** eli-se left [10:58] *** pecastro joined [11:04] *** eli-se joined [11:09] *** eli-se left [11:09] *** chenryn joined [11:11] *** azawawi joined [11:11] hi [11:11] 31 Mar 2015 22:49Z azawawi: for some reason i had this change locally: $file-name .= subst('~', %*ENV); → $file-name ~~ s/'~'/{%*ENV}/; inside method open-file in Editor.pm6 [11:13] quick question, are we moving into removing the actual panda installed modules files and using an MANIFEST to extract their names? [11:13] so now instead of directly reading the file, i need to query a service to the file that belongs to my module... [11:13] any reason behind this big change [11:13] ? [11:14] umm what? I dont understand the question [11:14] 06:34Z <[Tux]> FROGGS: would you be so kind to have another look at excluding reserved words like if/for/while/.. in Slang::Tuxic? [11:14] [Tux]: I can do that but I cannot promise it will happen today or tomorrow :S [11:14] FROGGS: C:\rakudo\share\perl6\site\0..n files now instead of actual module name installed files [11:14] <|Tux|> sure [11:15] FROGGS: C:\rakudo\share\perl6\site\MANIFEST now contains a json file to the actual file numbers [11:15] *** eli-se joined [11:15] <|Tux|> but now code like «my @in = gather while ($in.list) -> $x { take $x }» looks really awkward and horrific [11:15] azawawi: correct, because storing Foo::Bar as lib/Foo/Bar.pm makes it impossible to install several same named versions of a module [11:16] azawawi: so to allow the installation of Foo::Bar v1 and Foo::Bar v1.2 and Foo::Bar made by someone else we need a more database thing to install to, instead of just putting everything under lib/Foo/Bar.pm [11:16] FROGGS: so we're moving to a database-like structure for installed module names to be filesystem agonistic? [11:16] azawawi: aye [11:17] FROGGS: cool [11:17] azawawi: this also allows us to uninstall modules more easily, or recompile modules that depend on something you just changed etc [11:17] * azawawi cools down a bit [11:18] FROGGS: and later move to be database-based (aka SQLite) if needed (e.g. for fast module queries)? [11:19] azawawi: this explains why/how we do that: https://perl6advent.wordpress.com/2013/12/11/day-11-installing-modules/ [11:19] might be outdated here or there, since it is from 2013 [11:19] azawawi: that's up to the 'module installation backend' (aka CompUnitRepo::*) you are using [11:20] so basically multiple module versions living in the same perl6 module ecosystem database? [11:20] currently we have a CompUnitRepo::Local::Installation, but one can easily plug in a CompUnitRepo::Local::SQLite [11:20] and i can depend on a specific version for my module [11:20] exactly [11:20] cool [11:21] * azawawi drooling... :) [11:21] or you say "I trust jnthn, but I dont care about the version", then you'd do: use Foo:auth [11:21] *** Ven joined [11:21] module time/space? :) [11:23] * azawawi remembers NTFS Longhorn project... http://en.wikipedia.org/wiki/WinFS [11:23] *** rindolf left [11:23] *** brrt joined [11:24] *** KCL joined [11:24] *** eli-se left [11:24] so basically with this i can make module database and make a dump of it to be shared by the team... cool :) [11:25] revolutionary thinking [11:26] *** rurban_ joined [11:26] as long as precompilation is not involved you can share such a thing, yes, I think so [11:26] m: role S[::T]{...}; role S[Int]{ constant mzero = 0; }; role M[::T] { constant mzero = S[T].mzero; }; say M[Int].mzero; [11:26] rakudo-moar f65ba9: OUTPUT«===SORRY!===␤No appropriate parametric role variant available for 'S'␤» [11:27] m: role S[::T]{...}; role S[Int]{ constant mzero = 0; }; role M[::T, _S = S[T]] { constant mzero = _S.mzero; }; say M[Int].mzero; [11:27] rakudo-moar f65ba9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/uEZEvWpykc␤Invalid typename '_S' in parameter declaration.␤at /tmp/uEZEvWpykc:1␤------> 3]{ constant mzero = 0; }; role M[::T, _S7⏏5 = S[T]] { constant mzero = _S.mzero; };␤» [11:28] *** KCL_ left [11:29] m: role S[::T]{...}; role S[Int]{ constant mzero = 0; }; role M[::T, $S2 = S[T].mzero] { constant mzero = $S2; }; say M[Int].mzero; [11:29] rakudo-moar f65ba9: OUTPUT«Could not instantiate role 'M':␤No appropriate parametric role variant available for 'S'␤ in any specialize at src/gen/m-Metamodel.nqp:2244␤ in any specialize at src/gen/m-Metamodel.nqp:2441␤ in any specialize at src/gen/m-Metamodel.nqp:2022␤ …» [11:29] *** eli-se joined [11:30] *** chenryn_ joined [11:30] *** chenryn left [11:31] *** eli-se left [11:41] FROGGS: i see. Thanks for explaining it [11:43] *** araujo joined [11:43] *** araujo left [11:43] *** araujo joined [11:46] *** araujo left [11:46] *** eli-se joined [11:46] *** araujo joined [11:47] s/feather will/feather has/ [11:47] what was feather? [11:48] * DrForr wonders about ( $a, $b ) <==> ( $.name, $.name ) for lens-ish syntax. [11:49] *** araujo left [11:50] *** araujo joined [11:51] Mm, obviously I've misrememebered. [11:54] *** brrt left [11:55] *** araujo left [11:58] With Visual Perl 6 for Applications we can take over the world. [11:59] *** raiph joined [11:59] m-star: say 1 ?? Str.new :value("foo") !! "omg" [12:00] I just helped a coworker with a php webshop rouding problem. If Perl 6 gets a webshop it will take over the world for the next few years [12:01] star-m: say 1 ?? Str.new :value("foo") !! "omg" [12:01] star-m 2015.02: OUTPUT«foo␤» [12:01] m: say 1 ?? Str.new :value("foo") !! "omg" [12:01] rakudo-moar f65ba9: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Uc8QdH4Sjp␤Please use !! rather than :␤at /tmp/Uc8QdH4Sjp:1␤------> 3say 1 ?? Str.new :value("foo"7⏏5) !! "omg"␤ expecting any of:␤ statement end␤ statement modifier␤ …» [12:02] is that supposed to work? it does not with commit 225a7e3 [12:03] eli-se: +1 for a VP6 [12:03] *** eli-se left [12:05] *** eli-se joined [12:05] it works with but not with in Grammar.nqp https://github.com/rakudo/rakudo/blob/nom/src/Perl6/Grammar.nqp#L4239 [12:06] timotimo++ found that yesterday: http://irclog.perlgeek.de/perl6/2015-03-31#i_10372090 [12:07] *** eli-se left [12:08] *** [particle] left [12:08] *** eli-se joined [12:10] *** sirdancealot joined [12:13] *** eli-se left [12:15] rakudo/nom: bc7e480 | peschwa++ | t/02-rakudo/repl.t: [12:15] rakudo/nom: Add a few moreinput related tests. [12:15] rakudo/nom: review: https://github.com/rakudo/rakudo/commit/bc7e480774 [12:19] *** konsolebox joined [12:25] *** laouji left [12:27] m: lines; say lines [12:27] rakudo-moar f65ba9: OUTPUT«Failed to seek in filehandle: 9␤ in method eof at src/gen/m-CORE.setting:17691␤ in method get at src/gen/m-CORE.setting:17695␤ in method get at src/gen/m-CORE.setting:18969␤ in code at src/gen/m-CORE.setting:18983␤ in block at src/gen/m-CO…» [12:28] *** st_iron joined [12:29] oh meh [12:29] hey [12:29] i fudged those tests wrong i think [12:29] hi st_iron [12:29] rakudo/nom: cbbeff8 | peschwa++ | t/02-rakudo/repl.t: [12:29] rakudo/nom: Correct fudging. [12:29] rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cbbeff8d90 [12:33] rakudo/nom: 6caf1d4 | peschwa++ | t/02-rakudo/repl.t: [12:33] rakudo/nom: Actually correctly correct fudging. [12:33] rakudo/nom: review: https://github.com/rakudo/rakudo/commit/6caf1d4e4e [12:36] is lue++'s p6mode the one mod to use for emacs? [12:38] * Ven found what he was looking for on perl6.org/whatever [12:38] actually, that one's from 2010. probably should be removed from perl6.org [12:39] Ah, no,it's just an incorrect branch. uh-oh [12:39] *** rmgk_ joined [12:39] *** rmgk left [12:39] *** rmgk_ is now known as rmgk [12:40] perl6.org: 981b7e0 | ven++ | source/whatever/index.html: [12:40] perl6.org: Link to the master branch of cperl-mode [12:40] perl6.org: [12:40] perl6.org: I don't see any reason to link to the 2010 branch [12:40] perl6.org: review: https://github.com/perl6/perl6.org/commit/981b7e0fec [12:40] Ohhh.. That was supposed to be a PR again... [12:47] * Ven switches back to vim [12:49] *** eli-se joined [12:50] *** eli-se left [12:51] *** st_iron left [12:51] *** [particle] joined [12:53] FROGGS: ping [12:53] *** sirdancealot left [13:02] azawawi: pong [13:02] `use ADT "data Tree";` is "still" not possible, right? just checking [13:03] (as in, custom EXPORT arguments) [13:04] it is, afaict [13:08] *** raiph left [13:08] oooh [13:08] yes, yes, that's what jnthn++ demonstrated in his presentation, even! [13:09] * Ven clones timotimo++'s ADT.p6 [13:10] FROGGS: so how do i quickly find an asset inside lib/Foo/Bar/assets/ using the new CompUnitRepo::Local::Installation? [13:10] *** chenryn_ left [13:11] *** Rounin joined [13:11] FROGGS: best i could find is @binaries[0].keys.grep({ $_.IO.basename eq 'farabi.js' }); [13:12] *** lucasb joined [13:13] m: class A{method !x is export{}; }; [13:13] rakudo-moar 6caf1d: OUTPUT«===SORRY!===␤Cannot find method 'has_compile_time_value'␤» [13:13] m: class A{method !x is export {}; }; [13:13] rakudo-moar 6caf1d: ( no output ) [13:13] should that error out? :P [13:15] m: module F {}; need F; [13:15] rakudo-moar 6caf1d: OUTPUT«===SORRY!===␤Could not find F in any of: /home/camelia/.perl6/2015.03-136-g6caf1d4/lib, /home/camelia/.perl6/2015.03-136-g6caf1d4, /home/camelia/rakudo-inst-1/share/perl6/lib, /home/camelia/rakudo-inst-1/share/perl6/vendor/lib, /home/camelia/rakudo-inst-…» [13:19] azawawi: @*INC.files('bin/farabi.js') (in case it is in bin/ in the dist) [13:19] * Ven still doesn't get how the module system really works. what imports names, what doesn't, when to put `use` inside of declarations, when to put them outside, how to import unqualified class names... [13:19] *** yqt joined [13:22] Hello. The Any class has some deprecated methods in the middle of the code. Would you mind if I move all of them to the very end of the class or do you prefer them to keep sitting next to their relative current methods? I wanted to do this just as a file editing exercise to get acquainted with the process. :) [13:22] m: 'a' ~~ /a/; say $/?.made; [13:22] rakudo-moar 6caf1d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/BGTNTbeDAy␤Two terms in a row␤at /tmp/BGTNTbeDAy:1␤------> 3'a' ~~ /a/; say $/7⏏5?.made;␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement en…» [13:22] lucasb: don't do editing for the sake of editing [13:23] m: my $a = 'heyy'; $a?.made; [13:23] rakudo-moar 6caf1d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/yEwFs10EQl␤Two terms in a row␤at /tmp/yEwFs10EQl:1␤------> 3my $a = 'heyy'; $a7⏏5?.made;␤ expecting any of:␤ infix␤ infix stopper␤ statement end␤ statement m…» [13:23] lucasb: it makes it harder to track methods in the git history [13:23] ehh [13:24] Ven: $var.?made [13:24] moritz: it used to be the other way around, tho ._. [13:25] Ven: I won't believe that unless you have some kind of proof for that [13:25] my module worked with the other version [13:25] Ven: the ? or + or * are quantifies, just like in regexes [13:25] that's... a very vague statement [13:25] *** konsolebox left [13:25] maybe it used that one slang? [13:26] definitely didn't :) [13:27] wh.... what the heck happened. Why isn't this file in git!? [13:27] moritz: They are just deprecated methods anyway, but ok, understood. thanks. [13:28] *** aborazmeh left [13:29] why doesn't "use A::B::C;" allow me to use "C" unqualified?.. [13:31] hmm? [13:31] there's no C in that use line [13:31] there's just A::B::C [13:31] just like the words rumble and crumble are unrelated, so is A::B::C and C [13:31] yes. and I expect to be able to use "C" to talk about "A::B::C" from this declaration on [13:31] you can if A exports B and B exports C [13:32] oh shit this is the other channel. fuck me. [13:32] psch: heh? [13:32] Ven: you can do a use C:name or so [13:32] Ven: not? maybe my understanding is also flawed :) [13:33] psch: not, I definitely don't understand [13:33] but I find perl6's module system very difficult to understand and not particularly practical [13:33] sorry for misinformation then [13:35] I mean -- I'm the one at loss here [13:42] *** Perl6_newbee joined [13:43] Ven: there's no automatic aliasing. When you use A::B::C, then you can use the symbol A::B::C [13:43] it's actually quite simple :-) [13:43] how do I get automatic aliasing? [13:44] you don't [13:44] well, maybe with macros, some day [13:48] I'm definitely used to "prior art"... But it seems really, really annoying in the long run to me [13:50] *** yqt left [13:53] it's OK [13:53] same as p5 [13:53] that and having to -I lib/ or "use lib 'lib/'"; all over the place, under some rules I don't understand [13:53] * Ven doesn't know p5 [13:53] if you want, there's always explicit aliasing [13:54] Ven: that's not hard either; if your modules aren't in the search path, you must extend the search path [13:54] Ven: and -Ilib and 'use lib "lib"' are two options to do taht [13:54] moritz: I'd definitely expect "something else"... I mean, from "src/Foo/Bar.pm", to be able to `use Foo::Baz;` and have the module found without having to "use lib..". [13:54] or even being able to relative-require [13:55] actually, neither of those options works for perl5 [13:55] Ven: you don't have to put a "use lib ..." into a module [13:55] use lib 'lib/'; will be cwd-relative which is pointless [13:55] Ven: because the script or module that loaded your module in the first place must have set up the search path already [13:56] otherwise it couldn't have been "use"d [13:56] use File::Basename qw/dirname/; use lib dirname(__FILE__).'/lib'; # or something [13:56] moritz: well, from a MAIN sub, I still need to add a relative-use-lib-thing [13:57] Ven: yes, but not from modules [13:57] Ven: and you only have to do that for development [13:57] Ven: for production, you simply install the modules [13:58] Ven: so it might more sense to leave it out of the script, and set PERL6LIB env for developing, or using -Ilib [13:58] moritz: how do I install a module with a MAIN? [13:58] Ven: same as any other module, really [13:58] (also, please don't mention me on every single line, it beeps loudly :P) [13:59] stop the beeping, then :-). That's how IRC works. [13:59] I want the beeping, the one time I get mentioned first -- for the 3 following lines, sent 10 seconds later, chances are I havn't read / am still reading :P [14:00] is this like: Hey Schwern! honk, honk, honk, honk, honk, honk, honk, honk, [14:00] honk, honk, honk, honk, honk, honk, honk, honk, honk, honk, honk, [14:00] honk, honk, honk, honk, honk, honk, honk, honk, honk, honk! [14:00] (but on one line) [14:00] *** skids joined [14:00] That was because Schwern had a text-to-speech translator :) [14:01] * [Coke] glares at irc blearily over morning coffee. [14:01] text-to-speech is quite a hilarity with twitch livestreamers [14:02] tadzik: &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& [14:03] doubleu doubleu doubleu doubleu [14:06] *** rindolf joined [14:06] *** pecastro left [14:07] *** pecastro joined [14:10] m: module M{}; module M::X {}; module M::X::Y { constant A = 1; }; constant Y = M::X::Y; say Y::A; [14:10] rakudo-moar 6caf1d: OUTPUT«1␤» [14:10] I guess... I guess I'll use that for now.. [14:11] *** tinyblak_ left [14:11] can I export another module "as myself"? [14:12] I can I should just override EXPORT as well [14:13] *** eli-se joined [14:13] I guess*, erm. [14:14] Don't guess [14:14] Know [14:17] *** eli-se left [14:19] *** telex left [14:20] *** telex joined [14:27] *** risou is now known as risou_awy [14:27] *** risou_awy is now known as risou [14:32] *** araujo joined [14:33] At the beginning of S02, in the section Lexical Conventions/Bracketing Characters, some unicode codepoints are mentioned. Do you think it would be nicer to read if the literal character was added after the number? Like this for example: U+301D ("), U+301E (#), U+301F (#) [14:34] *** xfix joined [14:34] Well, the characters didn't show correctly here, sorry. :) [14:37] hmmm, if we dont run intro trouble when adding these characters then I'd say +1 [14:40] FROGGS: Well, the files are in utf-8, so I would edit it correctly, hopefully. Thanks! [14:42] +1 from me too [14:42] *** xfix left [14:43] *** Ven left [14:43] (I never remember what those code points are and have to look them up each I time) [14:43] *** cschwenz left [14:43] s:2nd/I// [14:44] lucasb: maybe include their long name as well? [14:44] .u U+301E [14:44] U+301E DOUBLE PRIME QUOTATION MARK [Pe] (〞) [14:45] PerlJam: I guess the long name would be too long for the text, don't they? [14:45] that woule be a bit too much [14:45] would* [14:49] *** tinyblak joined [14:53] *** Ven joined [14:53] does Panda titlecase its module names? FooO::Bar; won't work (symbol not found) [14:54] you mean there's a FooO::Bar in the ecosystem, and you can't install it? [14:54] "its" module names? [14:55] I think panda has a "did you mean some other module with a different casing" thing though, doesn't it? [14:55] say I have a `lib/FooO/Bar.pm`, I can't `use FooO::Bar;`, it just won't work. If I change both "FooO" to "Fooo", it works. [14:55] resolve stage failed for Term::AnsiColor: Project Term::AnsiColor not found in the ecosystem. Maybe you meant Term::ANSIColor? [14:55] contributors++ [14:55] sorry, that wasn't clear, that's totally not related to panda. ugh [14:56] Ven: if that is indeed the case, it's a bug in rakudo [14:56] your issue is pretty weird though :o [14:56] considering that all-caps names like SVG work, that's pretty surprising [14:56] moritz: a friend of mine wanted to try perl6 and hit it, I reproduced it locally as well. he's on windows, I'm on osx with a <1week-old rakudo [14:56] Ven: probably a FS casing issue. [14:56] Ven: that veeeeery unlikely [14:57] PerlJam: yeah, that's what I thought of first as well [14:57] Ven: what s the error message ooc? [14:57] Ven: got a transcript of what you did and what happened? [14:57] I'm running a case-insensitive os x, apparently :) [14:57] I just tried it locally and had no difficulty [14:57] (I'm on ubuntu though) [14:58] * Ven thought os x had a case-sensitive FS .... [14:58] Ven: a case-insensitive would make module lookup more lax, not strict/weird [14:58] Ven: it's case-preserving by default, just like Windows [14:58] FROGGS: Could not find symbol '&Frontend' [14:58] Ven: that is something else [14:58] moritz: oh, can you configure windows not to be? Or did I interpret your comment wrongly [14:58] Ven: you did [14:58] so it found and loaded lib/FooO/Bar.pm [14:59] alright [14:59] Ven: the OS X default is just like windows works [14:59] windows has special directory names that are equivalent, i recently discovered [14:59] creating a directory "Program Files" on C:\ wants to merge it into "Programme" [14:59] which made me feel a bit uneasy [15:00] Ven: can you gist the module? [15:00] FROGGS: wait, apparently it freezes on some cases on windows. ugh [15:00] I'll ask for a gist [15:01] I think that I shall call my module Aux.pm, and see what hilarity follows... [15:01] or Con [15:01] nwc10: you have the con [15:01] :) [15:01] Nil [15:02] I shall store all my PRN in it [15:02] specs: c34d281 | (Lucas Buchala)++ | S02-bits.pod: [15:02] specs: Add literal unicode chars in S02/Bracketing Characters [15:02] specs: review: https://github.com/perl6/specs/commit/c34d2814ff [15:02] specs: 008870f | (Zoffix Znet)++ | S02-bits.pod: [15:02] specs: Merge pull request #91 from lucasbuchala/unicode1 [15:02] specs: [15:02] specs: Add literal unicode chars in S02/Bracketing Characters [15:02] specs: review: https://github.com/perl6/specs/commit/008870f240 [15:11] *** coffee` left [15:12] *** raiph joined [15:12] FROGGS: https://gist.github.com/wryk/e04068009417edc798b5 [15:14] FROGGS: (updated with the command) [15:15] *** fhelmberger left [15:15] *** fhelmberger joined [15:16] Ven: does Client.pm really only contain that text? [15:16] *** coffee` joined [15:16] PerlJam: yes [15:17] *** wryk joined [15:18] m: say LoL [15:18] rakudo-moar 6caf1d: OUTPUT«(LoL)␤» [15:18] >.< [15:18] FROGGS++ [15:18] Ven: that's your issue [15:19] FROGGS: ? [15:19] btw, I get: [15:19] perl6 --ll-exception -Ilib t/00-basic.t [15:19] This representation (Null) does not support associative access [15:19] at src/Perl6/World.nqp:523 (/home/froggs/dev/nqp/install/share/nqp/lib/Perl6/World.moarvm:install_package:172) [15:19] m: class LoL::Meh [15:19] rakudo-moar 6caf1d: OUTPUT«===SORRY!===␤This representation (Null) does not support associative access␤» [15:19] m: class Int::Meh [15:19] rakudo-moar 6caf1d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Begq7NWGKV␤Unable to parse class definition␤at /tmp/Begq7NWGKV:1␤------> 3class Int::Meh7⏏5␤ expecting any of:␤ generic role␤» [15:19] m: class Parcel::Meh [15:19] rakudo-moar 6caf1d: OUTPUT«===SORRY!===␤This representation (Null) does not support associative access␤» [15:19] wtf. [15:19] oh [15:19] FROGGS: he gets that as well, I think [15:20] *** fhelmberger left [15:20] FROGGS: and without the "API" layer, he told me it freezes... [15:20] Ven: LoL already is something, so for the moment avoid that namespace :o) [15:20] Ahhh [15:20] (and rakudobug it) [15:20] indeeeeed. [15:21] *** sirdancealot joined [15:22] .tell lizmat We need to talk about CUR::Installation and the way that non-existent dirs trigger that CURs do not appear in @*INC... (I "fixed" it in a rather scary way and want to fix it properly) [15:22] FROGGS: I'll pass your message to lizmat. [15:22] *** azawawi left [15:29] dj_goku: not at 4 in the morning, but I do backlog [15:29] .oO( I only sleep when my perl6 is recompiling ) [15:29] .oO( I used to sleep nicely, but this last year has been horrible ) [15:29] :o) [15:29] haha [15:30] I wonder how all this CompUnitRepo stuff fits together with distribution package managers [15:30] nine_: very nicely hopefully [15:31] at least, we always had packagers in mind when designing it [15:31] FROGGS: but it sounds like simply copying files will no longer be enough to install [15:31] nine_: correct, they need an install hook in some way [15:32] nine_: and this is a feature! :) [15:32] and I hope that installing a file is an API method in Perl 6 then [15:32] nine_: ahh btw, they dont have to do that... they can install copy files around and provide either a CompUnitRepo::Local::Files or a CompUnitRepo::Vendor::Debian or so [15:33] moritz: it already is [15:33] (for CUR::Installation) [15:33] <[Coke]> Anyone here going to yapc::na in Utah? [15:33] me isnt [15:33] hmm [15:33] I still have my visa valid [15:34] the cost is pretty insane though [15:35] otoh it's probably similar to what it always is in NA [15:35] *** pecastro left [15:36] *** pecastro joined [15:36] ah, I'd be on the other side of the globe then [15:47] *** Ven left [15:49] *** pecastro left [15:51] *** raiph left [15:53] *** rmgk is now known as Guest58708 [15:53] *** rmgk_ joined [15:53] *** Guest58708 left [15:53] *** rmgk_ is now known as rmgk [15:54] *** geever joined [15:55] *** coffee` left [15:56] *** coffee` joined [15:56] *** tinyblak left [15:56] *** eli-se joined [15:56] *** tinyblak joined [15:58] hi there!!!! [15:58] eli-se: greetings! :) [16:00] *** rindolf left [16:01] *** zakharyas left [16:09] some nice p6 talks at NLPW [16:09] m: module A::B {}; say A.HOW.WHAT # A gets autovivified into a package, right? [16:09] http://isocpp.org/blog/2015/04/the-c-languages-merge [16:09] rakudo-moar 6caf1d: OUTPUT«(Perl6::Metamodel::PackageHOW)␤» [16:09] nice [16:10] m: module A::B {}; constant A = 42 # Ok, A already existed [16:10] rakudo-moar 6caf1d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/PlrZX66lq3␤Redeclaration of symbol A␤at /tmp/PlrZX66lq3:1␤------> 3constant A = 42 # Ok, A already existed7⏏5␤» [16:10] maybe we should merge with Python? [16:10] m: constant A = 42; module A::B {}; say A # Does B gets inserted into A (an Int) somehow? [16:10] rakudo-moar 6caf1d: OUTPUT«42␤» [16:10] ^^^ Does it make any sense what I wrote? [16:13] m: constant A = 42; class A::B {}; say A::B [16:13] rakudo-moar 6caf1d: OUTPUT«(A::B)␤» [16:13] m: constant A = 42; class A::B {}; say A [16:13] rakudo-moar 6caf1d: OUTPUT«42␤» [16:13] lucasb: you must distinguish A from A:: (its symbol table) [16:13] since the A namespace in A::B is just a stub it just happens to work here [16:14] m: constant A = 42; say A::.^name [16:14] rakudo-moar 6caf1d: OUTPUT«Stash␤» [16:14] m: module A { module B { } }; constant A = 42; say A::B # this breaks [16:14] rakudo-moar 6caf1d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/9of3H8RsQg␤Redeclaration of symbol A␤at /tmp/9of3H8RsQg:1␤------> 3dule A { module B { } }; constant A = 427⏏5; say A::B # this breaks␤» [16:14] so stubbing of packages doesn't set something it should? [16:14] So, constants and packages/modules live in separate namespaces, right? [16:15] *** brrt joined [16:17] *** spider-mario joined [16:20] *** albert_ joined [16:22] no [16:22] psch: I don't see the stubbing [16:23] I'm sorry; correct: constants and packages/modules *share* the same namespace [16:23] m: constant A = 42; my \B = 42; say A::.WHAT, B::.WHAT [16:23] rakudo-moar 6caf1d: OUTPUT«(Stash)(Stash)␤» [16:23] *** wryk left [16:24] But why does simple scalar values have a stash? [16:24] "have a stash"? [16:24] moritz: http://design.perl6.org/S10.html#Package_nesting speaks of "empty packages". i'm not sure that's the same as stubbing here [16:24] ah [16:25] but constants are package-like objects [16:25] which is allowed, according to a bit later in that link [16:25] so it works as designed, if i don't misunderstand something [16:28] *** albert_ left [16:33] By "have a stash" I mean new names be appended (with ::) to the original name. Even if the original value was not a package-like/package-variant like S10/"Package nesting" says. For example, the Int values above declared as constant and sigilless. [16:34] but constants are package-like objects [16:34] m: my Int $a = 42; say $a:: [16:34] rakudo-moar 6caf1d: OUTPUT«42␤» [16:34] m: my Int $a = 42; say $a::.WHAT [16:34] rakudo-moar 6caf1d: OUTPUT«(Int)␤» [16:36] Anyways, I'm just not thinking clearly, so sorry for any confusion. Thanks for the help everybody. [16:36] m: my Int \a = 42; say a::.WHAT [16:36] rakudo-moar 6caf1d: OUTPUT«(Stash)␤» [16:36] m: say 4::.WHAT [16:36] rakudo-moar 6caf1d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/n6off3KmSR␤Confused␤at /tmp/n6off3KmSR:1␤------> 3say 4:7⏏5:.WHAT␤ expecting any of:␤ colon pair␤» [16:36] m: say 4.WHO.^name [16:36] rakudo-moar 6caf1d: OUTPUT«Stash␤» [16:38] *** FROGGS left [16:38] *** espadrine left [16:46] *** spider-mario left [16:46] evening, #perl6 [16:46] #perl6, masak [16:47] *** spider-mario joined [16:47] did you see my highlights for some of your modules not having "provides" sections in their META.info? [16:48] no, haven't gotten that far. [16:48] will have a look soonish. [16:48] that's nice :) [16:48] although someone said they'll have a fully automated script that'll build pull requests for all ~120 modules lacking that section [16:48] so maybe wait for that first :) [16:52] Version 0.5 of $work webapp done \o/ [16:52] Time to go get dinner! [16:53] Time to cook some lunch! [16:59] *** dakkar left [16:59] *** Psyche^ joined [17:00] *** zakharyas joined [17:04] *** Patterner left [17:05] *** FROGGS joined [17:09] *** ZoffixWork joined [17:09] "although someone said they'll have a fully automated script that'll build pull requests for all ~120 modules lacking that section" [17:09] Yeah, I'll do it in about 7 hours, when I get home :) it's not 100% automated script, but it does most of the work, so I should be done pretty quick :) [17:10] *** eli-se left [17:11] BTW, I spotted a few docs that say "provides" section is optional. Should those be updated to say it's mandatory? [17:12] yeah [17:12] \o/ [17:12] feel free to share links to the sources that say that [17:14] I'm not sure why the module installer can't just infer sane defaults for missing metadata, like ufo used to do for you... [17:14] that's what "panda gen-meta" does [17:16] that's my point: if it can figure it out on its own, why the need to update everything in the ecosystem? [17:29] *** noganex left [17:33] *** kjs_ left [17:34] *** ZoffixWork left [17:37] *** raiph joined [17:37] *** Patterner joined [17:40] *** Psyche^ left [17:40] *** brrt left [17:40] flussence: because gen-meta is not always right... [17:41] also because it looks for appearing symbols when modules get loaded instead of just turning filenames into namespaces [17:42] ah, fine then. [17:43] *** muraiki joined [17:44] *** lucasb left [17:44] *** Perl6_newbee left [17:49] and the reason for that was to decouple symbols and filenames/paths [17:53] *** RabidGravy joined [17:56] *** Sqirrel joined [18:05] perl6-roast-data: 68f44a4 | coke++ | / (9 files): [18:05] perl6-roast-data: today (automated commit) [18:05] perl6-roast-data: review: https://github.com/coke/perl6-roast-data/commit/68f44a49eb [18:08] *** zakharyas left [18:12] *** Sqirrel left [18:14] *** grondilu joined [18:18] *** firefish5000 joined [18:21] *** eli-se joined [18:22] *** pecastro joined [18:35] *** Sqirrel joined [18:39] *** raiph left [18:40] *** Sqirrel left [19:02] *** raiph joined [19:08] *** yqt joined [19:12] *** brrt joined [19:20] *** beastd joined [19:21] *** noganex joined [19:25] <[Tux]> https://gist.github.com/Tux/8ebe8af1949c2aced18b <= is this overly optimistic as implementation (before I test and fuck up) [19:25] *** spebern joined [19:28] *** eli-se left [19:29] *** ShimmerFairy left [19:31] <[Tux]> apart from the typo, that just fricking works :) [19:31] *** brrt left [19:33] *** dsm left [19:33] *** firefish5000 left [19:34] *** telex left [19:35] *** dsm joined [19:35] looks good. [19:36] my only stylistic comment is that I wouldn't re-use the same variable $fh for a different file handle on line 9. [19:36] but that's just my SSA acting up, I'm sure. [19:36] *** telex joined [19:37] <[Tux]> return open $filename, :r, chomp => False; [19:38] * [Tux] changes [19:38] <[Tux]> FWIW, I want that in core in memory :) [19:42] *** ShimmerFairy joined [19:44] *** _edwin joined [19:45] m: my \FH = 41; my \FH = 42; [19:45] rakudo-moar 6caf1d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/xpdYk1dCch␤Redeclaration of symbol FH␤at /tmp/xpdYk1dCch:1␤------> 3my \FH = 41; my \FH = 427⏏5;␤» [19:45] <[Tux]> m: (my $a, my $b) = (1,2);$a.say [19:45] rakudo-moar 6caf1d: OUTPUT«1␤» [19:45] <[Tux]> m: class C { has Int $!x; method foo { ($!x, my $b) = (1,2);}};C.foo [19:45] rakudo-moar 6caf1d: OUTPUT«Cannot look up attributes in a type object␤ in method foo at /tmp/ClfFVoH4FZ:1␤ in block at /tmp/ClfFVoH4FZ:1␤␤» [19:45] <[Tux]> is that explainable? [19:47] you're calling C.foo, the .foo method on the type object C [19:47] the type object doesn't really properly have an $!x [19:47] m: class C { has Int $!x; method foo { ($!x, my $b) = (1,2);}}; C.new.foo [19:47] rakudo-moar 6caf1d: ( no output ) [19:47] that works. [19:47] |Tux|: my Int $x, use a regular variable... [19:47] Juerd: depends what scoping he wants, surely. [19:48] Juerd: 'my' scopes it to the whole class. 'has' scopes it per instance. [19:48] Does nextsame create a new callframe? [19:48] <[Tux]> Juerd, I was working back from a line where I wanted ($!attr, my $xxx) = function (params) [19:48] masak: Per instance clearly can't work with C.foo :) [19:48] nine_: surely it creates a new one, question is more whether it ousts the old one ;) [19:49] Juerd: well, we're each fixing one of the two things that don't work together in his code. [19:49] "Cannot look up attributes in a type object" is an implementor-centric error message, not a user-centric one [19:49] <[Tux]> and I want an auto-correct on IO::Hanlde to IO::Handle [19:49] TimToady: actually, that error message could fail statically in this case. [19:49] TimToady: "Instance attribute used in non-instance method call"? :) [19:49] since C is already resolved at compile time. [19:50] no need to make it survive until runtime and then fail. [19:50] Juerd: that would be an improvement [19:51] masak: when it creates a new callframe, this callframe gets its own $*DISPATCHER lexical. So a nextsame in the new callframe has a different dispatcher that does not share state with the other one and thus comes to the same conclusion on hitting another nextsame. Leading to RT #123989 [19:51] Link: https://rt.perl.org/rt3//Public/Bug/Display.html?id=123989 [19:54] *** rurban_ left [19:54] Juerd: who's at fault? The caller or the callee? Your message implies the latter while it's entirely possible that the caller mistakenly called an object method as a class method. [19:55] *** eli-se joined [19:56] nine_: Hard to tell. It's the callers fault that the method is used on the type object OR it's the callee's fault that it tries to use an instance thingy, but I think the compiler can't know the difference. [19:57] Juerd: so the error message should imply neither or both. [19:57] It could mention both options. [19:57] I'm not convinced that all possible explanations need to be listed. [19:57] and name the attribute in question [19:58] Juerd: if it's just two, listing them only helps the programmer figure out what happened and how to fix it. [19:58] "Instance variable $!x used in a method called on a non-instance" [19:59] I supposed the type object could be named as well [19:59] "Instance variable $!x used in method foo called on non-instance (type object) C" [19:59] But... if you take that approach, which line number should be reported? :P [19:59] both! ;) [20:00] "Instance variable $!x used in method foo in foo.pl line 123 called on non-instance (type object) C in foo.pl line 456" [20:00] Whoa. [20:00] Good luck, implementors :) [20:01] no-one else liked the idea of statically erroring out with "call will never work" for the C.foo case where C is already statically resolved? [20:01] Of course, this calls for two separate stack traces, both equal except that one is 1 call shorter [20:02] masak: I do [20:02] masak: Could work, but can't methods be marked as instance-only? [20:02] *** kaare_ left [20:02] masak: the earlier errors are reported the better [20:02] masak: How does the compiler decide that it will never work? and when? [20:02] Because then, any use of $!foo could simply mark the method as instance-only [20:03] And the error message could be simpler. [20:03] rakudo-star-daily: 2f6d5ed | coke++ | log/ (2 files): [20:03] rakudo-star-daily: today (automated commit) [20:03] rakudo-star-daily: review: https://github.com/coke/rakudo-star-daily/commit/2f6d5edc34 [20:03] "Method foo can only be called on an instance of C, not on C itself." [20:03] (compiler hints)++ if we can reasonably have them. [20:04] I guess, if you declare the sig right, all the info is easy to get at. But without that, it seems like a bit of guessing for the compiler to do it. [20:06] PerlJam: compiler sees the call C.foo, and has already set a flag that the foo method in class C accesses an attribute. boom. [20:06] *** FROGGS left [20:06] * masak rabmits sukudobug [20:07] "Method foo can only be called on an instance of C, not on C itself, because C.foo accesses instance attribute $!x." [20:07] neat. +1 [20:08] masak: flagging methods like that seems like quite a bit of bookkeeping for marginal benefit. [20:08] really? seems worth it to me... [20:08] it's a small hash somewhere in the compiler. [20:08] %accattr = True; [20:08] <[Tux]> IO::String cause 50 more tests to pass [20:09] * [Tux] is quite happy with that [20:09] [Tux]: \o/ [20:09] It could be a boolean flag (instance-only) and an array of further explanations [20:09] PerlJam: it would have prevented panda from being broken by rakudo (fixed with rakudo commit 011c3ec704f1b6014eb704071ce5f92cb4ef7fe6) [20:09] nine_: are you sure? the call needs to be *statically* detectable. [20:10] I've always found it a bit weird that Perl's object methods are class methods AND instance methods at the same time. Lots of Perl 5 modules break in interesting ways if you don't use them right. [20:10] <[Coke]> I find myself missing the java declaration of "this method is static (defaulting to instance if you don't say anything)" [20:10] I'm not saying it's not a good idea. I'm just saying that the bang/buck ratio seems off to me. (I could be entirely wrong though :) [20:10] [Coke]: "static" is such a weird and overused word... [20:11] *** _edwin left [20:11] How many meanings does it have, even in programming alone? [20:11] [Coke]: method foo(:D: ...) # that's "static" :) [20:11] masak: ok, I retract. It may have prevented [20:11] <[Tux]> https://gist.github.com/Tux/02832c29dc18b3c6a5e0 [20:11] (assuming that we allow to elide the invocant's name) [20:12] to be clear, a static check would catch `C.foo` but not `$obj.foo` where $obj happens to contain a type object. [20:12] <[Coke]> I'm not saying I miss the particular word, just the ability to declare what's what. [20:13] [Coke]: I get that. Just saying it, hoping that if something like that is added, it won't be "static" :) [20:14] <[Coke]> Juerd++ [20:14] *** _edwin joined [20:15] <[Coke]> masak: I think you mean a compile-time static check, not a static static check. ;) [20:16] A check [20:16] *** darutoko left [20:16] s/.*// [20:17] *** mohij joined [20:17] *** ShimmerFairy left [20:18] [Coke]: yes. thank you. I meant... that, what you said. [20:22] *** spebern left [20:31] *** ShimmerFairy joined [20:32] *** firefish5000 joined [20:41] *** raiph left [20:45] *** brrt joined [20:46] *** kjs_ joined [20:51] *** kjs_ left [20:53] *** kjs_ joined [20:57] doc: a1aeb93 | (Steve Mynott)++ | lib/ (6 files): [20:57] doc: typos [20:57] doc: review: https://github.com/perl6/doc/commit/a1aeb936e2 [21:04] *** skids left [21:12] *** lucasb joined [21:17] Can you update a single line of comment in rakudo? This one: [21:17] https://github.com/rakudo/rakudo/blob/nom/src/core/HashIter.pm#L5 [21:17] IIUC, it should be "pair = 0, kv = 1, k = 2, v = 3, anti = 4, invert = 5" [21:22] lucasb: you could submit a PR for that change :) [21:22] *** lichtkind joined [21:23] PerlJam: It's just a single tiny line :D [21:25] *** _edwin left [21:25] *** coffee` left [21:28] seems right to me ... [21:28] rakudo/nom: b247cab | PerlJam++ | src/core/ (2 files): [21:28] rakudo/nom: update comment on HashIter mode [21:28] rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b247cabfc7 [21:30] *** spider-mario left [21:30] PerlJam++, thanks [21:31] rakudo/nom: e88467b | PerlJam++ | src/core/HashIter.pm: [21:31] rakudo/nom: update comment on HashIter mode [21:31] rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e88467bc72 [21:31] src/core/core [21:31] *** kjs_ left [21:31] Apparently I accidentally committed an extra file, so I'm asking for that forgiveness we're always talking about [21:32] :) [21:32] PerlJam: :) [21:33] *** firefish5000 left [21:33] what's a little file between friends? :-) [21:33] *** travis-ci joined [21:33] Rakudo build errored. Jonathan Scott Duff 'update comment on HashIter mode' [21:33] http://travis-ci.org/rakudo/rakudo/builds/56792856 https://github.com/rakudo/rakudo/compare/6caf1d4e4e29...b247cabfc7e7 [21:33] *** travis-ci left [21:34] *** espadrine joined [21:40] *** khisanth_ joined [21:43] *** Khisanth left [21:45] *** eli-se left [21:49] *** muraiki left [21:55] *** kjs_ joined [22:03] *** hugme left [22:04] *** Juerd left [22:04] *** synopsebot left [22:12] *** brrt left [22:14] *** RabidGravy left [22:21] *** mohij left [22:21] *** grondilu left [22:22] *** beastd left [22:23] *** pdcawley left [22:26] *** kjs_ left [22:29] .ask nine_ I seem to recall someone (you, I think?) mentioning that there was something unsafe about running multiple Python interpreters in a single process as a way of working around the unsafe/poorly scaling threading. Can you give specifics? [22:29] japhb: I'll pass your message to nine_. [22:30] *** qntm_ joined [22:32] * japhb is wondering if he can stop shelling out to multiple Python programs for some complex client code and just run a pile of Python interpreters with Inline::Python instead. [22:33] ... thus allowing a pile of per-query startup costs to be amortized over many queries. [22:35] *** yqt left [22:35] *** yqt joined [22:39] *** geever left [22:52] Is camelia running the latest and greatest Perl 6 interpreter because I think I found a bug [22:53] it's usually within an hour of real time [22:54] right then here goes [22:54] rakudo: my @arr = (1, 2); say @arr.length; [22:54] rakudo-moar e88467: OUTPUT«No such method 'length' for invocant of type 'Array'␤Did you mean 'elems', 'chars', 'graphs' or 'codes'?␤ in block at /tmp/tmpfile:1␤␤» [22:54] rakudo: my @arr = (1, 2); say @arr.graphs; [22:54] rakudo-moar e88467: OUTPUT«No such method 'graphs' for invocant of type 'Array'␤ in block at /tmp/tmpfile:1␤␤» [22:54] in the first error message Perl 6 suggests a method which doesn't exist [22:55] *** BenGoldberg joined [22:55] .graphs and .codes are not yet implemented, but they will be, so we'll probably leave the message for now [22:56] Hmm, .codes did work for me [22:56] m: my @arr = (1, 2); say @arr.codes [22:56] rakudo-moar e88467: OUTPUT«3␤» [22:56] By the way I imagine people have had this discussion a bunch of times before but you can add me to the pile of people who think the method for getting an array's length should be .length [22:56] hmm, one could argue it should be 2 instead, but it's counting the psace [22:56] *space [22:57] yeah "3" is quite a surprising result there [22:59] it's all very well if you come from a language where only lists are measured in "length", but for people coming from languages where "length" is about strings instead, the lack of proper units is very confusing in the age of unicode, so we banned that term [22:59] not everyone has the same background as you [23:00] do perl 6 strings inherit from arrays? [23:00] besides, .elems is shorter :) [23:00] no [23:00] .len is shorter still, if you really care about that [23:00] and a BASIC programmer would certainly expect that to be a string length :) [23:00] so they only have .graphs, .codes and .chars? [23:00] .elems is quite unambiguous [23:01] well, I disagree on that as well actually [23:01] to me .elems sounds like it might create a shallow copy of the array, or return a generator for its elements, or something [23:02] like maybe arr.elems[0] is how you access the first element [23:02] but anyway if strings only have .graphs, .codes and .chars then they don't have a simple "length" method so you're fine [23:05] nevertheless, specifying units is better than a nebulous concept, long term, and people will get used to it, so we're just not gonna use length; you can alias it if you really like [23:06] I think people are going to get tripped up by this [23:06] no doubt, but all language design is tradeoffs [23:06] everybody's going to get used to it very quickly, but that doesn't change the fact that every single new Perl 6 programmer is going to trip over it [23:07] hence, the message, flawed though it may be :) [23:07] why not just return the array length [23:07] because they might not be thinking of $random-variable as an array [23:08] well if it's a string then the error message would make more sense [23:08] clarity must take a back seat to custom here [23:08] "length is not well-defined for strings, try .chars, .codes or .graphs" [23:09] m: say 42.elems [23:09] rakudo-moar e88467: OUTPUT«1␤» [23:09] say "abcdef".elems [23:09] rakudo: say "abcdef".elems [23:09] rakudo-moar e88467: OUTPUT«1␤» [23:09] haha what [23:10] m: say "abcdef"[0] [23:10] rakudo-moar e88467: OUTPUT«abcdef␤» [23:10] so string doesn't inherit from array but it implements elems [23:10] not really [23:11] but anything that is not a list can be considered a list of 1 element [23:11] The elems method you get on a Str is probably from Any [23:12] why [23:12] because this is Perl [23:12] which is all about tagmemics [23:12] why is a string considered to be a single-element array [23:12] why can you use a noun as a verb? [23:12] does "tagmemics" stand for something [23:13] are nouns and verbs Perl 6 language concepts? [23:13] certainly, though we use noun markers so you can tell 'em apart [23:13] Perl is all about automatic conversion where it is obvious what is meant [23:13] m: say "3" + "3" [23:13] rakudo-moar e88467: OUTPUT«6␤» [23:14] so if I call .elems on a string it is obvious that what I mean is to get the number of elements in the string [23:14] which is obviously 1 [23:14] regardless of string content [23:14] m: my $verb = &max; say $verb(5,4,3) [23:14] rakudo-moar e88467: OUTPUT«5␤» [23:14] It can be considered a single element list [23:15] .oO( &nouning a $verb ) [23:15] why is a string considered to be a single-element array? [23:15] qntm_: Not just a string. Any scalar thing [23:16] that strikes me as very surprising behaviour [23:16] because that's what most people want most of the time [23:16] if i want to stuff an "undef" in an array slot its Mu now? [23:16] jdv79: you probably want Any [23:16] if I wanted a single-element array can't I do ("string") instead of "string" [23:16] jdv79: We have typed undef now, so Mu is saying "absolutely any type" as well as undefined [23:16] ... but what TimToady said as well [23:16] again, I think that's going to trip lots and lots of people up [23:17] qntm_: I'm not gonna recapitulate the whole design for you [23:17] What should "provides" in META.info be for files in bin/ ? [23:17] The only other thing it could do is be an error [23:17] I think the decision to conflate strings with single-element arrays is going to confuse a lot of people [23:18] sorry, conflate scalars [23:18] It doesn't conflate strings an arrays, at least not like C does [23:19] If it didn't you would probably always end up calling `$var.list.[0]` just to prevent it from failing [23:19] which is far worse [23:20] bin: "Any file inside this directory, will be installed as a callable shell application.".... I guess it shan't be in "provides" at all, since we can't do multiple versions of the same name. [23:23] I would be totally okay with completely separating strings and arrays as concepts [23:24] *** espadrine left [23:25] *** KCL_ joined [23:27] *** qntm_ left [23:27] *** KCL left [23:31] *** lichtkind left [23:47] \o/ sent pulls to all the modules that weren't S11-compliant :) [23:47] Except a couple that didn't have META.info (marked as [old]) and v5, which I've no idea what it's supposed to have for "provides" :) [23:50] Or I should have... but somehow I'm showing just 38 PRs, yet 118 non-S11 dists :S [23:57] Oh, my scriptastic automation program failed me and skipped a ton of modules when I tried to restart it mid-point... Oh well, MOAR PRs \o/