»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by masak on 12 May 2015. |
|||
00:00
salva joined
00:02
psch joined,
llfourn joined
|
|||
psch | m: my $rx = / foobar /; say "foobar".match($rx) | 00:03 | |
camelia | rakudo-moar 46874f: OUTPUT«「foobar」» | ||
psch | m: Str.^can('submatch').perl.say | ||
camelia | rakudo-moar 46874f: OUTPUT«()» | ||
psch | timotimo: the Str is what allows the matching to happen (which is another notch on my "something is the wrong way around with '$str ~~ $rx' log), and i don't know if a Str wants to support a submatch | 00:04 | |
it doesn't seem particularly valuable, from a "what do we use these constructs for" point of view | 00:05 | ||
there's probably more than one angle to argue from here. something like "Grammars should have an ACCEPTS" on one hand, "it should be $rx ~~ $str" on the other hand | 00:06 | ||
m: say "foo" ~~ /foo/ | |||
camelia | rakudo-moar 46874f: OUTPUT«「foo」» | ||
psch | m: my $rx = /foo/; say $rx.ACCEPTS("foo") | ||
camelia | rakudo-moar 46874f: OUTPUT«「foo」» | ||
00:07
Ben_Goldberg left
|
|||
psch | m: say /foo/.match("foo") | 00:07 | |
camelia | rakudo-moar 46874f: OUTPUT«Method 'match' not found for invocant of class 'Regex' in block <unit> at /tmp/x1rhiS9nfZ:1» | ||
psch | it's just odd | ||
00:07
Ben_Goldberg joined,
llfourn left
|
|||
psch | i mean, from a "what can objects do" perspective it seems fitting enough - a string can match against a regex or not | 00:07 | |
but a regex ACCEPTS a string feels kind of off there | |||
00:08
Ben_Goldberg left
|
|||
psch probably starts sounding a bit ranty there... | 00:08 | ||
00:08
Ben_Goldberg joined
00:10
regreg joined
|
|||
ShimmerFairy | The problem with the idea of Regex.match is that there's already a Str.match, and I don't think it's a good idea to mix meanings like that. If anything, it should be called Regex.parse (and thus also Regex.subparse) | 00:10 | |
00:14
mantovani left
00:18
tokuhiro_ joined
00:21
Hor|zon joined
00:23
tokuhiro_ left
00:25
[Coke] joined
00:26
Hor|zon left
00:27
rurban1 left
00:28
Akagi201 joined
00:29
tokuhirom_ joined
00:33
Akagi201 left
00:34
tokuhirom_ left
00:40
leont left,
raiph left
00:42
sufrostico left,
uberbaud joined
00:44
Akagi201 joined
00:47
uberbaud left,
uberbaud joined
00:48
uberbaud left
00:49
uberbaud joined
01:06
retupmoca left
01:21
uberbaud left
01:22
uberbaud joined,
Hor|zon joined
01:26
Hor|zon left
01:30
kalkin-_ joined
01:32
yeahnoob joined
01:34
kalkin- left
01:35
danstone1 is now known as danstoner
01:44
kid51 left
01:48
uberbaud_ joined
01:49
uberbaud left
01:51
uberbaud_ left
01:53
cognominal joined
01:55
kaare_ joined
01:59
hoelzro left
02:00
n_i_c_k_ left
02:03
uberbaud joined
02:05
llfourn joined,
aborazmeh joined,
aborazmeh left,
aborazmeh joined
02:11
llfourn left
02:12
noganex_ joined
02:15
noganex left
02:17
zakharyas left
02:20
adu joined,
tokuhiro_ joined
02:23
Hor|zon joined
02:24
tokuhiro_ left
02:28
Hor|zon left
02:30
tokuhirom_ joined
02:33
uberbaud left
02:34
Akagi201_ joined,
tokuhirom_ left
02:37
adu left
02:38
Akagi201 left,
uberbaud joined
02:43
SqrtNegInf left
02:52
adu joined
02:53
softmoth joined
03:01
zostay left
03:02
mantovani joined
03:08
adu left
03:18
adu joined
03:24
Hor|zon joined
03:29
llfourn joined,
Hor|zon left
03:30
tokuhiro_ joined
03:41
hoelzro joined
|
|||
softmoth | I'm not finding the right way to try using a module, and recover if it doesn't exist | 03:45 | |
like try { use Foo; CATCH { default { say "no Foo?" } } } | 03:46 | ||
03:47
Ben_Goldberg left,
Ben_Goldberg joined
03:48
Ben_Goldberg left,
Ben_Goldberg joined
|
|||
llfourn | m: BEGIN { require Foo; CATCH { default { say 'no Foo' } } } | 04:01 | |
camelia | rakudo-moar 46874f: OUTPUT«no Foo» | ||
llfourn | softmoth: that works I'm not sure how well it will import from Foo if it exists | ||
softmoth | ok. I found some possible workaround at github.com/supernovus/flower/blob/...ES.pm6#L36 | 04:06 | |
04:07
|Tux| left
|
|||
softmoth | I hope it is is something that is on the Rakudo roadmap for the near future | 04:07 | |
llfourn | softmoth: that comment is old. it does work now | 04:08 | |
you have to do require ::($plugname) | |||
04:09
|Tux| joined
|
|||
softmoth | OK. It doesn't do imports right though, I guess. I'm trying to make crustup (from p6-Crust) work with more Handler types, and not have to add 'use HTTP::Server::Tiny' at the top. If I take out 'use HTTP::Server::Tiny;' from the top of crustup, the require of the handler works, but code that it needs doesn't get loaded. It works if I replace 'use HTTP::Server::Tiny;' with 'use IO::Blob;', so that's the bit that | 04:13 | |
isn't loaded. | |||
04:13
lizmat_ joined
|
|||
softmoth | But when I try to use a different Handler, then some other dependency isn't loaded right | 04:13 | |
04:14
et09 left
|
|||
softmoth | I thought maybe if I could do a conditional 'use' at the top of crustup, I could get things to work with a wider range of installed (or not) handler modules. | 04:14 | |
llfourn | softmoth: I could probably help you easier if you put it into a gist | ||
softmoth: are you trying to load + import or just load dynamically? | 04:15 | ||
softmoth: I'm not really familiar with those modules unfortunetly :/ | |||
04:16
lizmat left
|
|||
softmoth | I'm not sure what I'm trying to do, either, really :-/ | 04:16 | |
llfourn | hehe I know that feels | ||
softmoth | I'll try to get something simplified to ask a proper question. | ||
llfourn | sure there is some docs here if that helps: docs.perl6.org/language/modules#Loa..._Importing | 04:17 | |
softmoth | Although, it appears that the Crust devs have changed the code I was hacking on, now that I look at it. | ||
04:17
nightfrog left
|
|||
softmoth | So I'll look into that; they've made it require ::($_) for @!modules, and maybe have some way of getting the needed modules in there. | 04:18 | |
llfourn | good luck :) | ||
softmoth | thanks! :-) | ||
moznion | Some modules looks like they don't have `updated` column modules.perl6.org/ | 04:22 | |
Is this why? | |||
04:25
Hor|zon joined
04:26
Ben_Goldberg left
04:30
Hor|zon left
|
|||
softmoth | The solution they've used is to be able to pass needed modules (e.g., -MFastCGI::NativeCall -MFastCGI::NativeCall::PSGI in my case) to crustup, and it does require ::($_) on those. | 04:37 | |
It would be nice for 'require ::(Module::That::Uses::FastCGI::NativeCall)' to handle that dependency automatically, but maybe there's something else going on that I'm not aware of | 04:38 | ||
Anyways, the current solution seems to work as long as I know what dependencies need to be added | 04:39 | ||
04:39
llfourn left
|
|||
softmoth | I'm curious if someone who actually knows how this should work would say if it's correct or not. | 04:39 | |
04:44
adu left
05:12
aborazmeh left
05:20
AlexDaniel left
|
|||
ugexe | personally i think that type of stuff should go into some sort of compunitrepo specific to the application. then it can autoload all the modules (middleware) itself | 05:21 | |
05:25
khw left
05:26
Hor|zon joined
|
|||
ugexe | as far as whats going on it sounds like its due to lexical scoping | 05:28 | |
05:31
Hor|zon left
05:56
FROGGS joined
|
|||
softmoth | ugexe: any pointers to code that does this the right way? | 06:06 | |
06:10
apotheon_ joined,
diana_olhovik joined,
domidumont joined
06:12
apotheon left
06:15
domidumont left
|
|||
softmoth | I'm not sure where the compunitrepo would live. Defining it in Crust would be brittle; every time FastCGI::NativeCall (for example) changes what modules it uses, Crust would have to make a change. Defining it in FastCGI::NativeCall doesn't make sense, since its author doesn't know that someone may want to require it at runtime. | 06:15 | |
06:15
domidumont joined,
darutoko joined
06:16
tokuhirom_ joined
|
|||
softmoth | Explicitly specifying modules (what looks like Crust::Runner's current approach) puts the burden on the end user, which is also brittle and tedious, but it works and puts the solution at the same level as the error will show up. | 06:17 | |
06:20
tokuhirom_ left
06:23
hajimushu joined
06:26
hajimushu left
06:27
Hor|zon joined
06:28
llfourn joined
06:32
Hor|zon left
06:36
bjz joined
|
|||
[Tux] | test 50000 38.519 38.405 | 06:42 | |
test-t 50000 39.674 39.560 | |||
06:42
bjz left
06:44
Khisanth left
06:45
Ven joined,
Khisanth joined,
kjs_ joined
06:47
firstdayonthejob joined
06:54
azawawi joined,
kjs_ left
|
|||
azawawi | hi #perl6 | 06:54 | |
07:02
bjz joined
07:04
lea left
07:07
espadrine_ joined
07:11
_28_ria left
07:13
Ven left
07:15
Ven joined
07:18
lea joined
|
|||
DrForr | Morning. or UGT. | 07:20 | |
07:21
rindolf joined
07:24
firstdayonthejob left
|
|||
ugexe | softmoth: the CUR can live anywhere. we have a hacky CUR for $work that autoloads modules this way but its definately a hack due to the lagging CUR situation in general | 07:24 | |
07:25
bjz_ joined,
Ven left
07:26
bjz left,
rurban joined
|
|||
ugexe | the idea appears to be you will define it from the command line like -M, but you'd only have to define a single repo instead of a path/name for each plugin | 07:27 | |
07:28
Hor|zon joined
07:29
ely-se joined
07:31
bjz joined
|
|||
azawawi | is there a Perl 6 syntax to return an Array[SomeObject] or Hash[Something]? | 07:31 | |
lizmat_ | m: say Array[my Int $ = 42] | ||
camelia | rakudo-moar 46874f: OUTPUT«Parameter 't' requires a type object of type Int, but an object instance was passed. Did you forget a 'multi'? in block <unit> at /tmp/0jfDGAwMgT:1» | ||
lizmat_ | azawawi: is that what you want ? | 07:32 | |
m: say Array[(my Int $ = 42).WHAT] | |||
camelia | rakudo-moar 46874f: OUTPUT«(Array[Int])» | ||
07:32
bjz_ left
|
|||
azawawi | i meant like sub foo() returns Array[Int]? | 07:32 | |
07:33
Hor|zon left
07:34
bjz_ joined
|
|||
azawawi | m: sub foo { [1] } returns Array[Int] | 07:35 | |
camelia | rakudo-moar 46874f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/or9bKha4L5Strange text after block (missing semicolon or comma?)at /tmp/or9bKha4L5:1------> 3sub foo { [1] }7⏏5 returns Array[Int] expecting any of: infix infix stopper…» | ||
azawawi | m: sub foo() { [1] } returns Array[Int] | ||
camelia | rakudo-moar 46874f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/SXH_cejOdUStrange text after block (missing semicolon or comma?)at /tmp/SXH_cejOdU:1------> 3sub foo() { [1] }7⏏5 returns Array[Int] expecting any of: infix infix stoppe…» | ||
azawawi | m: sub foo() { [1] } returns Array | ||
camelia | rakudo-moar 46874f: OUTPUT«5===SORRY!5=== Error while compiling /tmp/2kzi3TV2PNStrange text after block (missing semicolon or comma?)at /tmp/2kzi3TV2PN:1------> 3sub foo() { [1] }7⏏5 returns Array expecting any of: infix infix stopper …» | ||
07:36
bjz left
|
|||
azawawi | lizmat_: got it. thanks :) | 07:36 | |
07:37
lizmat_ is now known as lizmat
|
|||
dalek | kudo/curli: 4b1df7b | FROGGS++ | src/Perl6/Grammar.nqp: allow whitestape in ::( "&foo"), RT #126385 |
07:38 | |
rakudo/curli: 42e55ec | lizmat++ | src/Perl6/World.nqp: | |||
rakudo/curli: Make sure use invocant/parameters throw an NYI | |||
07:38
dalek left
|
|||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=126385 | 07:38 | |
lizmat | sorry dalek | ||
07:38
dalek joined,
ChanServ sets mode: +v dalek
07:44
lea left
07:45
rurban1 joined
|
|||
azawawi | lizmat: is there a reason why perl6 process startup is a bit slow. I remember it was faster before. | 07:46 | |
07:47
pmurias joined
|
|||
lizmat | I see it at 110 msecs at the moment, I've seen it below 100 in the past yes | 07:47 | |
07:47
rurban left
|
|||
lizmat | azawawi: are those the numbers you're referring to ? | 07:47 | |
FROGGS | we don't know exactly why it is slower right now, right? | ||
lizmat | or do you see much larger delays ? | ||
FROGGS: my guess would be that we're missing a lot of optimizations post GLR | 07:48 | ||
azawawi | FROGGS: i will benchmark and report back | ||
FROGGS | that's also my guess, but it is hard to guess the things | ||
azawawi | mainly with the Selenium::WebDriver test suite 01-load.t (which does basically a use XYZ;) | 07:49 | |
FROGGS | azawawi: well, keep in mind that also precomp is gone atm | ||
azawawi | FROGGS: aha | 07:50 | |
FROGGS | that probably has the biggest impact there | ||
azawawi | FROGGS: so basically we're faster on the panda module installation but slower on the runtime? | ||
07:51
milton joined
|
|||
FROGGS | yes | 07:51 | |
though it was not about speeding up panda, it was about getting that fragile thing out of panda | 07:52 | ||
azawawi | interesting... time perl6 -MHTTP::UserAgent -e 'say "Hello world"' => real 0m5.916s | ||
tadzik | not that bad :) | ||
FROGGS | heh | ||
azawawi | tadzik: true, 5 seconds times 20 to 30 runs each day is not that bad :) | 07:55 | |
07:55
lea joined
|
|||
nine | tadzik: indeed, not that bad if you're used to loading programs from floppy disk | 07:56 | |
azawawi | nine: the old days :) | 07:57 | |
nine: the floppy loading sound made it bearable though lol | |||
nine | azawawi: yes, you always knew when it was doing sometihng :) | ||
07:57
Ven joined
07:58
softmoth left
|
|||
azawawi | tadzik: what do you think is slowing down HTTP::UserAgent loading? | 07:58 | |
07:59
sergot joined
08:00
virtualsue joined
08:02
tokuhirom_ joined
|
|||
FROGGS | I get there will be SSDs soon with a sound module, so you get more feedback when working... | 08:02 | |
like you've got force feedback in your steering wheel nowadays | |||
tadzik | azawawi: the sheer amount of code that has to be precompiled | ||
FROGGS | (in your car) | ||
tadzik | nine: or if you remember rakudo pre-nom :P | 08:03 | |
08:06
tokuhirom_ left
08:09
Akagi201 joined
08:10
Akagi201_ left,
espadrine_ left
08:12
dakkar joined,
Hor|zon joined
08:13
azawawi left,
rarara_ left,
RabidGravy joined
08:22
leont joined
08:23
g4 joined,
g4 left,
g4 joined
08:25
lea left
08:26
telex left,
Ven left,
Ven joined
08:27
Ven left
08:28
telex joined
08:30
andreoss joined
|
|||
dalek | p: 750f859 | (Pawel Murias)++ | src/vm/js/QAST/Compiler.nqp: [js] Implement nqp::mod_i. |
08:32 | |
p: cdf1f6b | (Pawel Murias)++ | t/nqp/59-nqpop.t: [js] Test nqp::mod_i. |
|||
p: 2dfdbc1 | (Pawel Murias)++ | docs/HACKING-js: [js] update test list path in docs/HACKING-js. |
|||
p: 0b106de | (Pawel Murias)++ | src/vm/js/nqp-runtime/reprs.js: [js] Set native int attributes to zero when constructing a P6opaque object. |
|||
p: f49d614 | (Pawel Murias)++ | src/vm/js/ (2 files): [js] Fix a bug in nqp::bindpos, make it work for negative indexes. |
|||
p: fc21e43 | (Pawel Murias)++ | tools/build/ (2 files): [js] correct the autogenerated message on top of Makefile-JS.in |
|||
p: 5a5939a | (Pawel Murias)++ | src/vm/js/ (2 files): [js] Stub nqp::objprimspec. |
|||
08:34
Ven joined,
lea joined
08:36
andreoss` joined
08:37
andreoss left
|
|||
tokuhiro_ | how do i include pod in synopsis section? | 08:41 | |
Ah, i should use '=begin code'. | 08:42 | ||
ShimmerFairy | tokuhiro_: if you meant a =SYNOPSIS block, it'll have to be =begin SYNOPSIS ... =end SYNOPSIS for multiple paragraph (unlike in POD from Perl 5, Perl 6's Pod doesn't run until a =cut appears) | 08:43 | |
08:44
ely-se left
|
|||
tokuhiro_ | o | 08:44 | |
08:46
leont left
|
|||
dalek | osystem: 1ebb389 | (Tokuhiro Matsuno)++ | META.list: Added Test::Base |
08:51 | |
08:55
rurban1 left
08:58
Akagi201_ joined
08:59
broquaint left
09:00
rurban joined,
lea left
09:01
Akagi201 left
09:04
espadrine_ joined
09:11
Ven left
09:12
Ven joined
09:13
broquaint joined
09:14
ely-se joined
09:15
ugo joined
09:18
lea joined
09:25
kjs_ joined
09:26
yeahnoob left
09:35
softmoth joined
09:36
ely-se left
09:40
softmoth left
09:42
spider-mario joined
09:43
ely-se joined
09:47
milton left
09:59
lea left
10:00
adhoc left,
jercos left
10:06
virtualsue left
10:07
Ven left,
Ven joined,
ely-se left
10:09
Ven left
|
|||
llfourn | m: say Date.new | 10:11 | |
camelia | rakudo-moar 46874f: OUTPUT«2015-12-24» | ||
llfourn | ....wut | ||
moritz | you didn't tell it which day you wanted, so it gave you Christmas | 10:12 | |
gfldex | m: say now; | 10:13 | |
camelia | rakudo-moar 46874f: OUTPUT«Instant:1445336024.609831» | ||
llfourn | moritz: cool so will date give today after the release date? | ||
gfldex | m: say Date.new(now); | ||
camelia | rakudo-moar 46874f: OUTPUT«2015-10-20» | ||
moritz | m: say Date.today | ||
camelia | rakudo-moar 46874f: OUTPUT«2015-10-20» | ||
FROGGS | llfourn: no, it will probably give you the Christmas after that | 10:14 | |
llfourn | FROGGS: ok well I guess at least that will make my christmas involved coding a bit easier | 10:15 | |
FROGGS | :D | ||
10:15
rindolf left
|
|||
llfourn | s/christmas/season's greetings/ | 10:15 | |
10:16
Ven joined
10:17
rurban left
10:18
flaviusb joined
10:19
rurban joined
10:20
ely-se joined
10:26
Ven left
|
|||
dalek | kudo/nom: be14c49 | lizmat++ | src/core/Exception.pm: X::Pragma::CannotNo -> CannotWhat For more general applicability |
10:31 | |
kudo/nom: 56dbb06 | lizmat++ | src/Perl6/World.nqp: Make pragma handling a little more manageable |
|||
10:39
dayangkun joined
|
|||
dalek | ast: f331fd6 | lizmat++ | S (4 files): Fix X::Pragma::CannotNo -> CannotWhat breakage |
10:41 | |
kudo/curli: be14c49 | lizmat++ | src/core/Exception.pm: X::Pragma::CannotNo -> CannotWhat For more general applicability |
10:42 | ||
kudo/curli: 56dbb06 | lizmat++ | src/Perl6/World.nqp: Make pragma handling a little more manageable |
|||
kudo/curli: 546cf76 | lizmat++ | src/ (2 files): Merge branch 'nom' into curli |
|||
10:45
ely-se left
|
|||
mrf | ugexe: Is there any merit to moving the various RFCs for HTTP/MIME/URI ect into a seperate repo (Grammar::RFC::*) and just use them in the Grammar::HTTP. Would be nice to have an Email::Address parse for example without using the HTTP repo....Maybe I am overthinking things. Any thoughts. | 10:47 | |
ugexe: also I have forked you repo and am going to add RFC5234 which replaces 4234 FYI. Will throw back a PR when I am done. | 10:48 | ||
10:48
dayangkun left
10:49
kjs_ left
|
|||
nine | mrf: +1 on splitting independent parts | 10:49 | |
10:49
Zoffix joined
|
|||
ShimmerFairy | mrf: I think it'd be cool to have a dedicated space for various IETF RFCs :) If you wanted to be a bit more specific, then I'd suggest Grammar::IETF::RFC (e.g. Grammar::IETF::RFC::_5234). | 10:51 | |
Or IETF::RFC::Grammar , depending on how you want to organize things :) | |||
(you could also do RFC_5234 instead of RFC::_5234 if you'd prefer, of course) | 10:52 | ||
pmurias | moritz: (Date.new defaulting to christmas)-- | 10:54 | |
mrf | Either is fine. I like the idea of having top level Grammar namespace for things like this and other standardised grammars. (CSS, XML, Email, Date) etc | ||
ShimmerFairy | pmurias: why is it bad? You didn't say what date you wanted? Could be February 32nd for all the info you didn't give :P | ||
s:2nd/\?/./ | 10:55 | ||
mrf | ShimmerFairy: Not sure really how to namespace that much. Several RFCs like 5234 are around how to write RFCs which seems like they should have a separate namespace. but not sure | ||
moritz | pmurias: I know, we're becoming Enterprise and all, no place for fun anymore | ||
ShimmerFairy | mrf: the IETF::RFC::Grammar idea I gave is if your intention was more towards supporting a variety of RFCs in general. As always, TIMTOWTDI :) | 10:57 | |
10:57
kjs_ joined
|
|||
mrf | ShimmerFairy: Are there any RFCs outside of the IETF? | 10:57 | |
ShimmerFairy | mrf: sure, notably the RFC process that started Perl 6 :) | 10:58 | |
nine | moritz: it fun when you do it and the rare times one discovers it, but negative fun for those who are bitten by the surprising behavior... I guess the latter group is larger. | 10:59 | |
mrf | ShimmerFairy: that makes sense. | ||
ShimmerFairy | mrf: even though I suspect most would first think of the IETF when it comes to 'RFC', I personally would clarify that it's about IETF RFCs somewhere, just to minimize any potential confusion :) | ||
nine: what surprising behavior? I don't understand what people expect an unspecified date to turn out as. | |||
nine | ShimmerFairy: it's the worst kind of error. The one that doesn't explode loudly but seems to work at first glance but silently returns wrong results because someone forgot to type the argument. | 11:00 | |
mrf | ShimmerFairy: Yeah. I was initially leaning towards Grammar::IETF::RFC::* then you can have Grammar::IETF::* for the various actual top level uses of the RFCs like HTTP/MIME/Email/Date. Especially if the RFC's are just roles. | ||
which is what ugexe has done at the mo. Just need spliting | 11:01 | ||
hoelzro | o/ #perl6 | ||
ShimmerFairy | mrf: the only thing is, if you plan on doing more than just grammars, you'd probably want the IETF::RFC::Grammar ordering (thus IETF::RFC_1923::Grammar or IETF::RFC::_1923::Grammar) | ||
dalek | kudo/curli: b154c49 | lizmat++ | src/ (2 files): Implement 'no precompilation' |
||
nine | m: my @ymd; say Date.new(|@ymd) | 11:02 | |
camelia | rakudo-moar 56dbb0: OUTPUT«2015-12-24» | ||
nine | ShimmerFairy: ^^^ this kind of surprise | ||
ShimmerFairy | and then you can do things like IETF::RFC_1923::Client, IETF::RFC_1923::Generator, and so on | ||
lizmat | m: say 'Life, the Universe, and Everything'.WHY # another surprise, but less dangerous :-) | 11:03 | |
camelia | rakudo-moar 56dbb0: OUTPUT«42» | ||
ShimmerFairy | nine: I don't think that surprise is more special than any other time you'll try to slip an empty array | ||
lizmat | fwiw, I think a date should at least be given a year | ||
nine | ShimmerFairy: without the little joke it would explode loudly, would therefore be easy to discover and easy to debug. | 11:04 | |
11:04
weihan joined
|
|||
ShimmerFairy | nine: not necessarily. If Date defaulted to something more boring like 'today', would you still argue against it? | 11:04 | |
mrf | ShimmerFairy: hmm. I am not sure what none grammar things would exist in the namespace. | ||
hoelzro | I was looking at S17-procasync/kill.t last night after fixing the bug that prevents Proc::Async.kill from working, and it seems that that test enumerates over all signals defined by the OS and throws each at a separate child process | ||
since not all signals are equal (ex. SIGTERM vs SIGTSTP vs SIGKILL), I am wondering if that's such a good idea | 11:05 | ||
llfourn | m: wait 1 { say "worked" } # how I get this to work | ||
camelia | ( no output ) | ||
11:05
ely-se joined
|
|||
llfourn | or what is the equiv of Mojo::IOLoop->timer( 1 => sub { say "worked" }) in p6 | 11:07 | |
dalek | ast/curli: 1451c65 | lizmat++ | S02-types/WHICH.t: Add test for new X::Pragma::CannotPrecomp class |
||
nine | ShimmerFairy: would it be documented? The christmas joke isn't. In any case I'd still be against it, even if not as strong. But we do have a Date.today method that makes it explicit, so there's no need for Date.new to do the same. So Date.new can be more strict and catch more bugs before they hurt anyone. | ||
llfourn | and how do I make it wait...? | ||
mrf | So you might have a IETF::HTTP module that uses Grammar::IETF::HTTP which does a whole slew of Grammar::IETF::RFC::*. The name space of the Action object seems sane to place separate from the Grammars. Having Grammars separate seems sane in my brain. But I am usually wrong | ||
lizmat | hoelzro: please adapt test as you see fit... it was just a brute force approach to test what *could* work | 11:08 | |
hoelzro | alright, will do! | ||
ShimmerFairy | nine: The only reason I'm a bit against your example is that it feels a bit unlikely. I don't feel like you'd often pass an array that's supposed to contain a year, month, and date, and have it accidentally be empty. | 11:09 | |
lizmat | m: my $i = Supply.interval(1); $i.tap: { .say }; $i.wait # llfourn | 11:10 | |
11:11
rindolf joined
|
|||
camelia | rakudo-moar 56dbb0: OUTPUT«(timeout)0123456789101112131415161718192021» | 11:11 | |
nine | ShimmerFairy: parse some strange date format using a regex, pass the capture groups to Date.new. Something goes wrong and the regex doesn't match -> empty result -> no arguments for Date.new. Something along those lines. | ||
lizmat | hmmm... wonder how long camelia will run this | ||
llfourn | lizmat: thanks! | ||
ShimmerFairy | nine: hm. I'd of course say "check if your match was successful", but that does seem possible. | ||
11:13
Ven joined
|
|||
nine | ShimmerFairy: of course! But people write imperfect code. And error paths are notoriously badly tested. I'd expect a bug like that when I write some one-off tool to get some information for a report out of a log file. And due to the wrongly parsed dates our average reaction time is an ok 3 months while in reality it isn't or something like that. | 11:13 | |
llfourn | lizmat: so there's no once off? | ||
nine | ShimmerFairy: torture the implementors for the sake of the users, not implementors have fun at the expense of the users. | 11:14 | |
lizmat | llfourn: ah, you want to execute it once a second from now? | ||
llfourn | lizmat: yep | ||
lizmat | m: await start { sleep 1; say "hello world" } | ||
camelia | rakudo-moar 56dbb0: OUTPUT«hello world» | ||
ShimmerFairy | nine: I think we can live with Date dying in the same way DateTime does without a year. I just don't like the "I don't like fun" argument, that's not a very good one by itself :) | ||
llfourn | lizmat: interesting... is sleep blocking the thread (or am I not meant to think about that as a p6 programmer)? | 11:15 | |
nine | ShimmerFairy: oh I love fun! Just not when it's gonna hurt users more than it's fun for us. | ||
lizmat | llfourn: sleep is not taking up any CPU or a thread | 11:16 | |
I think it is implemented as a timed cue internally | |||
llfourn | lizmat: so p6 is not necessarily creating a new thread with "start"? | 11:17 | |
lizmat | indeed: it is just scheduling the task to be done | ||
llfourn | lizmat: that's cool! | ||
lizmat | as soon as a thread is available, it will execute it | ||
ShimmerFairy | nine: I still don't think it's that problematic (esp. since it doesn't come up all that often), but like I said I'd be fine if it went otherwise :) | 11:19 | |
11:19
Ven left,
Ven joined
11:20
wtw left
11:21
Ven left,
wtw joined,
ely-se left,
Ven joined
11:23
Ven left,
softmoth joined,
Ven joined,
ely-se joined
11:24
BenGoldberg joined
|
|||
lizmat | hmmm... it looks rather trivial to add :at and/or :in parameters to Promise.start (the underlying logic of start {}) | 11:27 | |
11:27
masak joined
|
|||
masak | evenin', #perl6 | 11:27 | |
lizmat | masak o/ # cn time | ||
sergot | hi masak \o | ||
masak .oO( I cn haz time ) | |||
11:28
softmoth left
|
|||
BenGoldberg | There already exists a method Promise.start | 11:31 | |
err | |||
llfourn | m: Promise.in(2).then: { say "win" } | ||
BenGoldberg | Promise.in | ||
camelia | ( no output ) | ||
llfourn | m: await Promise.in(2).then: { say "win" } | 11:32 | |
camelia | rakudo-moar 56dbb0: OUTPUT«win» | ||
llfourn | lizmat: that what you mean? | ||
11:32
tokuhirom_ joined
|
|||
lizmat | BenGoldberg: Promise.in returns a promise that is kept in X seconds | 11:33 | |
it does not execute any given code | |||
ah, but with the then, you're in.... :-) | |||
yup | |||
llfourn | :D | ||
BenGoldberg | m: Promise.in(1).then: { say "win" }; sleep 2 | 11:34 | |
lizmat | TIMTOWTDI :-) | ||
camelia | rakudo-moar 56dbb0: OUTPUT«win» | ||
lizmat | m: await Promise.in(1).then: { say "win" } | ||
camelia | rakudo-moar 56dbb0: OUTPUT«win» | ||
lizmat | no need for sleep, just await the Promise | ||
pink_mist | lizmat: I think he wanted to see if the promise would have started without needing to await | 11:35 | |
BenGoldberg | Yup :) | ||
lizmat | ah, ok... yes :-) | ||
llfourn | mm yes just shows that sleep is not like perl5 sleep | ||
lizmat | perl 5 sleep doesn't take any CPU either | 11:36 | |
BenGoldberg | As for a :at or .at, most event systems have either absolute clock timing or relative timing, not both. | ||
llfourn | lizmat: but it will block your process | ||
pmurias | moritz: I find the christmas joke about as funny as digging a hole and hoping someone falls in ;) | ||
BenGoldberg | There's a complicated reason why, but I forget what it was ;) | ||
11:37
tokuhirom_ left,
bjz_ left
|
|||
lizmat | BenGoldberg: the :at would just be a front-end fro calculating an :in, really | 11:37 | |
*for | |||
pmurias | moritz: plus there is a 'new Date()' in javascript | 11:38 | |
llfourn | lizmat: if you were to say use Mojo::IOLoop->timer(1, sub { say "hello" } ); sleep 10; you would not see your "hello" until after 10 secs I think. | 11:39 | |
11:39
kid51 joined
|
|||
lizmat | llfourn: well, that's sub-optimal :-) | 11:39 | |
masak | pmurias: re hiding private attributes in Perl 6 -- note that I was arguing for *not* hiding them (from .new/.perl) | 11:40 | |
llfourn | lizmat: yes which is why you would always have to write a lot of messy callback type code to DWIM. but in p6 you can just sleep 10 the main block and still see your "hello" after 2 secs. | 11:41 | |
11:42
kjs_ left
|
|||
llfourn | \o/ | 11:42 | |
lizmat | llfourn: yes, that works in P6 :-) | ||
masak | pmurias: re "destroyed CPAN" -- I think you should consider taking me way less seriously :) | ||
11:42
TEttinger left
|
|||
masak | pmurias: I don't *really* think that there would be any utility in destroying CPAN. I was mostly sick of people who took the stance that promoting Inline::Perl5 too much would hinder Perl 6 development, and I wanted to satirize that. | 11:44 | |
11:44
bjz joined,
BenGoldberg left
|
|||
masak | I've heard next to no reactions on strangelyconsistent.org/blog/macros...ut-on-hold , btw -- except I seem to have gotten szabgab++'s head spinning: "It's unclear to me what a quasi block is, but it seems it can somehow hold its breath" | 11:47 | |
pmurias | masak: re .new setting private attributes wouldn't that break encapsulation? | 11:51 | |
moritz | it would; which is why it doesn't, right now | 11:52 | |
11:52
kid51 left
|
|||
moritz | (it used to) | 11:52 | |
pmurias | masak: for debugging purposes .perl could just have them commented out | ||
ShimmerFairy | masak: despite the fact that you don't take it seriously, I still think it's possible for a too-eager promotion of I::P5 to slow down the development of pure-P6 modules. | 11:53 | |
moritz | ShimmerFairy: my experience is that people port Perl 5 modules to Perl 6 because they want to improve them in the progress | 11:54 | |
masak | ShimmerFairy: I think the opposite would happen. Inline::Perl5 would make Perl 6 more attractive today, which would pull in more people, create more contributors, a bigger gravitational pull around Perl 6, and more reason to build pure Perl 6 modules | 11:55 | |
ShimmerFairy | To be fair, I don't think it would be a very significant slowdown, but I still worry that being too quick to suggest it would temporarily divert the attention of people who're more than happy to write the P6 version :) | 11:56 | |
masak | ShimmerFairy: I dislike almost all kinds of zero-sum either/or arguing around programming languages, and I would much more like to ride nine++'s happy have-cake/eat-cake train. | ||
ShimmerFairy: you're arguing for limiting the options of people so that they are forced to make Perl 6 better. | 11:57 | ||
lizmat | fwiw, I was first apprehensive of a fully functional Inline::Perl5 as well... | ||
11:57
bjz left
|
|||
lizmat | but if we can PR it like any of the other Inline:: modules, like Inline::Python, it only becomes more interesting, I think | 11:58 | |
aka: not the best of Both worlds, but the best of All worlds :-) | |||
(especially with NativeCall now also supporting C++ :-) | |||
ShimmerFairy | masak: thinking about it, I suppose at least part of my concern is just because I::P5 would never be something I'd use, so it's just weird for me to see it recommended so much. | ||
nine | I have sometimes wondered if Inline::Python (the Perl 5 version) may actually harm Perl by making it easier for people to migrate from Perl to Python. I've come to the conclusion, that if people want to migrate to Python, they are no happy and productive members of the community anyway. They have their reasons to go and if I help them, so be it. At the end of the day I'd rather help people than force them. | 11:59 | |
jdv79 | it would be neat if .perl could optionally include privates maybe | ||
ShimmerFairy | On .perl, I | 12:00 | |
jdv79 | otherwise there would have to be some other dumper that poked at hte mop to do it | ||
masak | I'm more concerned with .new than with .perl, to be honest | ||
ShimmerFairy | On .perl, I'll point out that .gist has been conjectured to have various adverbs on it, so adverbs on .perl wouldn't be an issue methinks :) | ||
jdv79 | and not sure keeping dumping in .perl totally or having it split it up... | ||
lizmat | jdv79: simple, write your own .perl in a role, and does that in your class | ||
masak | it feels weird to talk about encapsulation from the creator of the object | ||
lizmat | ? | ||
jdv79 | yes. i know. | ||
lizmat: but sometimes i'm using something else and i want to see it | 12:01 | ||
pmurias | masak: creator of the object - you mean the guy calling .new? | ||
ShimmerFairy | masak: that's what I pointed out last time, construction doesn't feel like it "counts" as normal object usage. | ||
masak | pmurias: right | ||
jdv79 | so, idk, i'm more about whether .perl should be the uber does it all dumper or not | ||
which includes pretty, privates, code, etc... | |||
ShimmerFairy | (after all, you have no real 'self' in .new, at least usually) | ||
12:01
bjz joined
|
|||
masak | ShimmerFairy: arguably when constructing an object, it's still "open" and hence not encapsulated | 12:02 | |
nine | Rather than Perl having a reputation of "the legacy language that's hard to migrate from", I'd like it to be "The language, that never lets you down. Even if you have to move away from it." | ||
masak | I feel we're upholding the privacy barrier during .new/.bless for academic reasons that end up being of no use and just obstacles in practice | ||
nine: never gonna give you up | |||
jdv79 | all the hub bub around I::P5 seems silly and petty esp since its a done deal;) | 12:03 | |
nine | jdv79: oh I'm not done yet! | ||
ShimmerFairy | jdv79: there's a spot in the specs that mentions .gist having things like :oneline and such. Whether those should be there, or the fact that it's still NYI is a sign .gist and .perl shouldn't be "do-everything", who can say? :) | ||
masak | nine: never gonna run around and desert you | ||
pmurias | masak: if we thing about it in terms of protecting the data it's still "open" | ||
12:03
Ven left
12:04
adhoc joined
|
|||
nine | Oh, speaking of it. I have a bootleg video of my YAPC::EU talk! niner.name/talks/YAPC2015-Granada-N...-HD720.m4v | 12:04 | |
pmurias | masak: but if we thing it in terms of having a private/public API, .new is still part of the public API | ||
masak | re .perl -- maybe an `is perlable` on private attributes could work? | ||
nine | For those who missed the early Friday morning slot | ||
masak | pmurias: yeah, but that argument does nothing for me when I feel annoyed that I can't init my private attrs through .new/.bless | 12:05 | |
tadzik | Oh, bootleg:) | ||
masak | I can heartily recommend nine's talk. it was one of the best on the conference. | ||
nine blushes | |||
thank you masak | |||
12:06
andreoss` left
|
|||
llfourn | masak: ....and `is paramable` to allow the private attribute to be set by bless? | 12:06 | |
ShimmerFairy | pmurias: I'm not sure if you saw, but my contention was that all attributes are private really, and has $.foo; just is nice sugar for creating a getter (and maybe setter) method for you. So the restrictions in .bless and so on feel more arbitrary (or, as masak++ put it, academic) than useful. | ||
llfourn | masak: or you think it should be default accessible? | ||
pmurias | ShimmerFairy: you repeated it multiple times and was wrong all of them | ||
12:07
weihan left
12:08
rurban left
|
|||
masak | llfourn: the latter. | 12:08 | |
pmurias | masak: the question is do you want to set private attributes through .new/.bless or do you want public attributes without an accessor? | 12:09 | |
llfourn | masak: but what if you really don't want it to be able to be set? | ||
pmurias | masak: if you can access them using a public method (new) it feels like they are really public attributes | 12:10 | |
nine | Why should a class' method not be able to access the object's properties? | 12:11 | |
pmurias | nine: the user external to the class is accessing them through .new | 12:12 | |
nine: so they are visible to him | |||
ShimmerFairy | pmurias: I don't think .new setting attributes can really be called "access", at least not in the intuitive sense of "access" meaning "get something" | ||
moritz | ShimmerFairy: writing is just a valid an access as reading | 12:13 | |
llfourn | as far as I understand the proposal is to give `bless` special access to privates not `new`..right? | ||
moritz | llfourn: but .new delegates to .bless | ||
llfourn: so the point is moot | |||
12:14
tokuhirom_ joined
|
|||
llfourn | lizmat: | 12:14 | |
moritz: very well :) | |||
12:14
ely-se left
12:17
BenGoldberg joined
12:18
[Sno] left
|
|||
llfourn | Moose let you opt out of having your attribute (private or not) be able to be set by the constructor: metacpan.org/pod/distribution/Moos...s-init_arg | 12:19 | |
init_arg => undef did that... (of course privates were only adhoc with _attr) | 12:20 | ||
it was a useful feature from time to time when you really wanted to have your default value be the starting value for your attribute | |||
12:21
flaviusb left,
lea joined
|
|||
llfourn | and didn't want to person .new -ing it to be able to change that | 12:21 | |
12:21
BenGoldberg left,
kjs_ joined
12:22
lea left
12:23
azawawi joined
|
|||
azawawi | hi | 12:24 | |
for some reason I cant use webchat.freenode.net/ | |||
llfourn tries to go to webchat.freenode.net/ but it doesn't load | 12:25 | ||
moritz | azawawi: for some reason, this isn't even a useful bug report :-) | ||
azawawi | :) | ||
dalek | kudo/curli: 4ac23d1 | lizmat++ | src/core/Compiler.pm: Implement $*PERL.compiler.id |
||
moritz | maybe ask #freenode? | ||
12:25
bjz_ joined
|
|||
azawawi | github.com/azawawi/perl6-selenium-...r/issues/2 # Selenium WebDriver protocol client implemented in Perl 6 :) | 12:26 | |
12:26
bjz left,
Ven joined
12:28
telex left
12:29
telex joined
|
|||
azawawi | now off to writing doc.perl6.org ui tests :) | 12:29 | |
what sort of functionality in our documentation website needs to be tested all the time? | 12:30 | ||
12:31
Hor|zon left,
lea joined
|
|||
moritz | searching for stuff | 12:33 | |
llfourn | azawawi: I guess the search bar is the most dynamic part that would benefit from selenium? | ||
azawawi | maybe also testing sample links for content etc | 12:34 | |
12:35
Jaglor joined
|
|||
azawawi | the thing is that with selenium you could test X browser types against your website | 12:35 | |
phantomjs is the headless one ofcourse | 12:36 | ||
the others will launch a browser process and automate it | |||
dj_goku | azawawi: I saw in p6 weekly about Selenium::Webdriver in P6. thanks! | 12:37 | |
azawawi | dj_goku: thanks. Really? I did not see it :) | 12:40 | |
llfourn realises that nine++'s talk is 2.6gb in size :S | |||
moritz | quite a lot of talking, eh? :-) | 12:41 | |
azawawi | compress it :) | ||
llfourn | moritz: it must be intense high fidelity talking | ||
azawawi | coming to you in 4K and Dolby Surround 7.1 :) | 12:43 | |
nine | Feel free to re-encode the video and maybe upload somewhere else! | 12:44 | |
llfourn | azawawi: it's probably 3D | ||
12:45
Ven left
|
|||
llfourn | nine: ok! | 12:45 | |
azawawi | selenium has a firefox IDE addon to record UI actions/assertion. Now with Parse::Selenese grammar (DONE) we could parse selenese commands and convert them into Perl 6 Selenium::WebDriver tests :) | ||
masak | I guess the argument that can be made for allowing .new/.bless write access to private attrs is this: the object is not formed yet, or is under construction, so normal expectations on invariants and encapsulation are not in force yet. | 12:46 | |
azawawi | so you record them, save them as HTML (via Firefox addon) and then convert and run them via Perl 6. | 12:47 | |
ShimmerFairy | masak: first analogy that pops up in my head is electrical wiring in a house; very much something you need to mess with during construction, but after you're done you do not want to mess with that, least of all by accident :) | ||
pmurias | masak: the counter argument would be that if you create the object with stuff that's not part of the part of the public API the expectations will never be in force | 12:50 | |
moritz | masak: that feels like an excuse. The "can I rename a private attribute without anything breaking?"-test still fails if .new is allowed to write to rpivate attributes | ||
llfourn feels that both behaviours are useful but you need to be able to opt in or out of them | 12:52 | ||
12:53
Ven joined
|
|||
masak | moritz: good point. | 12:54 | |
azawawi | letsencrypt.org/ # cool | ||
masak | moritz: though that could equally well be called the fault of *%_ | 12:55 | |
nine | moritz: why is the .new method seen as something external that has to go through the public API? It is part of the Class, isn't it? | ||
llfourn | moritz: why is it better that new is not allowed and submethod BUILD is allowed? | ||
pmurias | nine: it's not | ||
the .new method is part of the public API | |||
12:55
sufrostico joined
|
|||
ShimmerFairy | fwiw, .bless is part of the public API, but I'm sure just about everyone doesn't see it as such :) | 12:56 | |
ShimmerFairy guesses .bless would be a 'protected' method, if we had that level of access in P6 | |||
pmurias | nine: so if you create an object using Foo.new(private_attr=>234) you are exposed to the fact that private_attr exists | 12:57 | |
moritz | nine: I don't care which API .new uses | ||
nine: I care about whether the default behavior of a public constructor is to allow setting private data | 12:58 | ||
nine: if we end up with something where that isn't the case, I'm fine with custom .new methods being allowed | |||
... to do whatever they please | |||
pmurias | masak: would having a convinient way to just mark some attributes as settable by the constructor solve your problem? | 12:59 | |
moritz | llfourn: .new is inherited from Mu; submethods aren't inherited | ||
llfourn | moritz: ok :) | ||
13:00
krunen joined
|
|||
llfourn will think over that one | 13:00 | ||
moritz | www.reddit.com/r/perl/comments/3ph...nt_to_the/ | 13:01 | |
"Is there / will there be a Perl6 equivalent to the Camel Book?" | |||
nine | moritz: just this morning I tried to turn Instant.from-posix into a constructor that set 2 private attributes. I had to write a very boring private method because the constructor couldn't just initialize them with bless. | 13:02 | |
moritz | nine: I'm fine with .bless initialzing private attributes, as long as the public API doesn't | 13:03 | |
ShimmerFairy | moritz: but .bless is part of the public API | ||
m: class A { has $.b }; say A.bless(:b(42)); | |||
camelia | rakudo-moar 56dbb0: OUTPUT«A.new(b => 42)» | ||
llfourn thinks mortiz means default constructor by public API | |||
nine | moritz: if we make the default .new set private attributes using named arguments, those named arguments are part of the method's API. Not necessarily internals of your class. One can still change the private attribute's names for example while keeping method new's argument names the same. | ||
masak | pmurias: I dunno -- I feel slightly swayed by moritz++' argument right now. | 13:04 | |
moritz | ShimmerFairy: maybe it shouldn't be | ||
azawawi & | |||
13:05
azawawi left
|
|||
moritz | or maybe it should have a switch to initialize private attributes that requires trust (that is, either called from within the same class, or one that's explicitly trusted) | 13:05 | |
ShimmerFairy | moritz: the problem is, if .bless was in fact method !bless , then how could subclasses have a .bless to use? We'd need a 'protected' level of access for that, methinks. | 13:06 | |
moritz | ShimmerFairy: I'm not sure; I'll think a bit about it | ||
13:07
ponzellus joined
|
|||
ShimmerFairy | moritz: I do agree that I shouldn't be able to call .bless on a object, in case that wasn't clear. Just pointing out the surprising fact that you can right now :) | 13:07 | |
masak | in unrelated but happy news, 007 doesn't have a public/private distinction on the object level ;) | ||
ShimmerFairy | nor does NQP :P | 13:08 | |
13:10
blackcat joined,
blackcat is now known as loren
13:11
softmoth joined
|
|||
llfourn | the way things are now make sense to me but: class A { has $!a; submethod BUILD(:$!a) { }; } # is quite ugly for such a simple task | 13:12 | |
ShimmerFairy | llfourn: especially since you'd be required to handle all the public attributes you have too, unless I'm mistaken. | 13:13 | |
llfourn | ShimmerFairy: let's see | 13:14 | |
ShimmerFairy: you're right o.O | |||
m: class A { has $!a; has $.b; submethod BUILD(:$!a,|) { }; }; say A.new(a => 42,b => 42); | 13:15 | ||
camelia | rakudo-moar 56dbb0: OUTPUT«A.new(b => Any)» | ||
13:16
CQ joined,
softmoth left
13:18
rudi_s_ left
13:19
petercommand left
13:20
aborazmeh joined,
aborazmeh left,
aborazmeh joined
13:25
Ven left
|
|||
dalek | kudo/curli: 2daba3e | lizmat++ | src/core/Exception.pm: X::Pragma::CannotPrecomp more generally useful |
13:25 | |
13:27
et09 joined
13:30
bjz_ left
13:32
Ven joined
|
|||
dalek | kudo/curli: b14e925 | lizmat++ | src/Perl6/World.nqp: Disallow precompilation of "use lib" For Perl 6.Christmas, we're going to disallow changing repo's from inside a module. Since we don't have that concept yet, but generally only precomp modules (and no scripts), disallowing precomping is a way to catch this at least at this point in the module development cycle. |
13:32 | |
FROGGS | lizmat: so one is not allowed to precompile something that contains a 'use lib'? | 13:34 | |
lizmat | well, it's more general, really | 13:35 | |
FROGGS | it is how I read it | ||
lizmat | modules may not have a "use lib" in it, at least not for 6.c | ||
and modules get precomped | |||
FROGGS | ohh | 13:36 | |
lizmat | even better would be if "use lib" would blow up when inside a module | ||
at parse time, but I haven't gotten to that yet | |||
13:36
ely-se joined
13:37
bjz joined
13:38
azawawi joined
|
|||
nine | lizmat, FROGGS: what do you think about jnthn++'s gist regarding module installation? Anything we can start to implement? | 13:38 | |
13:38
pierrot_ left,
pierrot joined
|
|||
lizmat | nine: that's what I'm doing :-) | 13:38 | |
FROGGS | ohh, I did not even know there is one! | 13:39 | |
link? | |||
lizmat | FROGGS does not read P6W ? | ||
gist.github.com/jnthn/47a42b2e86e7e552b2e2 | 13:40 | ||
FROGGS | I did... | ||
hh, under blog posts | |||
ahh* | |||
azawawi | github.com/SeleniumHQ/www.selenium...g/pull/48/ # How Perl 6 is initially perceived... | ||
lizmat | :-) | 13:41 | |
13:42
bjz_ joined,
bjz left,
d^_^b joined
|
|||
dalek | ast/kill-t-fixes: fe064dc | hoelzro++ | S17-procasync/kill.t: kill.t: Only test SIGINT SIGINT is available on all of our target operating systems, and it has consistent semantics among them. We shouldn't try every signal available to us, because some of them are unblocked (ex. SIGKILL, SIGSTOP), and others have different semantics than "normal" (ex. SIGTSTP) |
13:45 | |
ast/kill-t-fixes: cc5583c | hoelzro++ | S17-procasync/kill.t: kill.t: Exit after handling signal in child The default behavior after handling a signal is to carry on; we want our child to exit early |
|||
ast/kill-t-fixes: 9a2db9a | hoelzro++ | S17-procasync/kill.t: kill.t: Give the child some time to start up Currently (on MoarVM), calls to kill() are immediate and not enqueued for running after the child has had a chance to start up. So we introduce an artificial delay to make sure the child has had a chance to start |
|||
ast/kill-t-fixes: 051ca2b | hoelzro++ | S17-procasync/kill.t: kill.t: reenable actual sending of signals to child |
|||
13:47
Ven left,
weihan joined
|
|||
azawawi | my $username-element = $driver.find-element-by-id("username") # any ideas how to make it more Perl6ish? | 13:49 | |
dj_goku | azawawi: p6weekly.wordpress.com under Ecosystem Additions | ||
azawawi | dj_goku: thx | ||
[Coke] | azawawi: that line seems fine to me. | 13:50 | |
dalek | kudo/curli: f8e7eb1 | lizmat++ | src/core/Exception.pm: Add X::Package::UseLib exception |
||
kudo/curli: 9986c52 | lizmat++ | src/Perl6/World.nqp: Disallow use lib inside any package declaration |
|||
ast/curli: 05a31b0 | lizmat++ | S02-types/WHICH.t: Add X::Package::UseLib |
|||
PerlJam | azawawi: $driver.find-element("username", :by<id>); # maybe more 6y along a certain dimension | 13:51 | |
azawawi | i was also thinking $driver.element( :id('username') ) # more jQuery-like | ||
PerlJam | aye, that one is nice too | 13:52 | |
azawawi | or .element-by(...) that is | ||
nine | .element-by-id would be my choice, since it not only finds the element, it also returns it. And by-id is a bit of a special case, because there may only be one element with a given id. | 13:53 | |
Other find-* methods have to deal with multiple results. | |||
PerlJam | 1 is just a special case of many :) | 13:54 | |
nine | Good rule of thumb: a method should do one and only one thing | ||
azawawi | nine: also auto-completion friendly | ||
FROGGS | lizmat: you need to change some packages in t/spec/packages... some of them contain a 'use lib' | ||
nine | azawawi: jQuery is the last place where I would look for API design inspiration :) | ||
azawawi | nine: true but it is easy to remember lol | 13:55 | |
lizmat | FROGGS: indeed... but fortunately (?) the use is not inside the package, and the module is not precomped | 13:56 | |
so, atm, they're just considered script with a package in it, right ? | |||
dj_goku | azawawi: is the idea to add tests here: github.com/perl6/doc ? | ||
lizmat | I had some fallout in the spectest related to precomp, but I thought that was related to some other work I'd done earlier | 13:57 | |
based on my CURLI gist | |||
azawawi | nine: github.com/azawawi/perl6-selenium-...r/issues/4 :) | ||
13:58
sufrostico left
|
|||
azawawi | dj_goku: im tracking it here github.com/azawawi/perl6-selenium-...r/issues/1 | 13:58 | |
nine | azawawi: shouldn't it be the other way round? | ||
lizmat | nine FROGGS I intend to work on jnthn's gist in the coming days, see how far I can get before he returns | 13:59 | |
azawawi | nine: fixed :) | ||
13:59
CQ left
|
|||
lizmat | first thing I'm going to focus on is CompUnit::Loader | 13:59 | |
BTW, all work is done in the "curli" branch | 14:00 | ||
PerlJam checks to see if we also have mo and larri branches | 14:01 | ||
lizmat | :-) | 14:02 | |
azawawi home & | |||
14:02
azawawi left
14:03
ely-se left
14:04
aborazmeh left
14:06
tokuhiro_ left
|
|||
nine | lizmat: maybe I can contribute something, too :) | 14:06 | |
lizmat | that would be excellent! | 14:07 | |
do you have questions about jnthn's gist ? | 14:08 | ||
nine | lizmat: none that I remember. I read it at the weekend and I'm gonna read it again this evening | 14:09 | |
lizmat | ok | ||
this evening I'll be at the Niederrhein PM meeting, so probably won't be able to do much | 14:10 | ||
I'll try to be on channel though, to answer any questions | |||
itz_stmuk | is a heisenbug in rakudo likely to be a bug at a lower level like nqp? | 14:11 | |
nine | itz_stmuk: it's at least not unlikely | 14:12 | |
dalek | kudo/curli: 062e778 | lizmat++ | / (4 files): Add stubs for CompUnit::Handle/Loader copy-pasted from jnthn's gist + added to setting creation spec |
14:15 | |
14:17
spider-mario left
14:18
n0tjack joined
14:19
simcop2387 left
14:20
simcop2387 joined,
ely-se joined
14:21
AlexDaniel joined
14:27
perigrin joined,
Ven joined
|
|||
itz_stmuk | didn't [ptc] run coverity? | 14:33 | |
lizmat | commute to NR.pm | ||
14:33
lizmat left
|
|||
FROGGS | lizmat: I'll also read the gist this evening... ohh well :o) | 14:33 | |
itz_stmuk: I think so, yes | 14:34 | ||
14:35
jlb333333 joined
|
|||
jlb333333 | join | 14:35 | |
masak | jlb333333: join in! welcome! :D | 14:36 | |
Ven | oi, oy | 14:39 | |
ugexe | mrf: you can use any of the individual rfcs in grammar::http, you just create your grammar and `does Grammar::HTTP::RFCxxxx` to it | ||
the reason the rfcs aren't individual distros is because 7230-7235 all need each other, and all the other grammars are of trivial length that they aren't worth adding external dependency (4647 is 2 lines for instance) | |||
ely-se | Ven: vei, vey | ||
14:39
ugo left
|
|||
Ven | ely-se: well met | 14:39 | |
14:39
jlb333333_ joined
|
|||
Ven | ely-se: i thought you didn't like perl6, yet you're still around :P | 14:39 | |
.oO( by the power of the nice community, I compel you! ) |
14:40 | ||
14:40
jlb333333 left
|
|||
ugexe | i dont like brushing my teeth but i still do it | 14:40 | |
Ven | ugexe: do you go to #toothbruth on IRC? :P | ||
14:40
softmoth joined
|
|||
ugexe | just #toothbruh | 14:40 | |
ely-se | #toothbrush is my favourite channel | ||
n0tjack | I like #payingtaxes | 14:41 | |
mrf | ugexe: I was thinking more of placing all IETF RFCs into a single repo as they are used in more than HTTP. | ||
|Tux| | www.perlmonks.org/?node_id=1145436 <= whose fault? Can someone else help? | ||
mrf | ugexe: I spent time writing them myself becuase I didn't think of looking in Grammer::HTTP for them. | ||
I would likely have looked in Grammer::RFC or the like | 14:42 | ||
14:42
skids joined
|
|||
n0tjack | |Tux|: I believe that means your panda (and probably Rakudo) are out of date | 14:42 | |
huh, panda doesn't have a --version flag. that's a bit silly. | 14:43 | ||
|Tux| | it is not me: my panda workes like a charm | ||
|Tux| feeds it enough bamboo to keep it satisfied | 14:44 | ||
n0tjack | Well, the guy who has the problem then. | ||
You might ask him to do perl6 --version, and/or panda update | |||
ugexe | mrf: right, believe me i considered it enough that the repo was originall called Perl6-IETC--RFC_Grammar--HTTP | ||
mrf | ugexe: though I accept that this would add additional dependencies that might be undesirable. | ||
ugexe: why the link to HTTP | |||
n0tjack once saw a panda poop on another panda in the san diego zoo. to all appearances, panda #2 was unfazed. | 14:45 | ||
ugexe | well when i search for something to parse http, the first thing i look for isnt some cryptic rfc | ||
mrf | ugexe: I think teh idea I have is more to seperate the Grammars that implement the RFC from the Grammars that use them to implement something specific | ||
ugexe | you can't piece together grammars like that very well yet | 14:46 | |
thats why all the rfcs are roles in grammar::http | |||
mrf | ugexe: indeed. So I would expect a HTTP::Message module that uses a HTTP::Message grammar which does a whole bunch of Grammars. | ||
ugexe | and there is a single centralized grammar that doesnt do anything but `does RFCxxx RFCyyy` | ||
i think a better module search would take `provides` into consideration, so searching for rfc7230 would turn up Grammar::HTTP's lib/Grammar/HTTP/RFC7230.pm6 | 14:47 | ||
dalek | ecs: 93d6e5f | (Nova Patch)++ | S05-regex.pod: tcuc() was removed two years ago reference: d1f9930373d9aa92dd24df24212cb3cbd74f4de6 |
||
14:48
g4 left
|
|||
n0tjack | m: o.WHAT; | 14:49 | |
camelia | rakudo-moar 56dbb0: OUTPUT«5===SORRY!5=== Error while compiling /tmp/VIl41OkcxJUndeclared routine: o used at line 1» | ||
n0tjack | m: sqrt o +; | ||
camelia | rakudo-moar 56dbb0: OUTPUT«5===SORRY!5=== Error while compiling /tmp/44mBXFRF22Prefix + requires an argument, but no valid term foundat /tmp/44mBXFRF22:1------> 3sqrt o +7⏏5; expecting any of: prefix» | ||
mrf | ugexe: so for context I came at this wanting an Email::Address style parser that could validate etc email address. I didn't even think of looking in *HTTP* for the Grammars. | ||
modules like Email::Address and HTTP::Message would likely share a whole bunch of grammars yes? | 14:50 | ||
ugexe: Am I making any sense. Or am I just talking bollocks? | 14:52 | ||
ilmari | m: &sqrt o &infix:<+> | 14:53 | |
camelia | ( no output ) | ||
ilmari | m: say &sqrt o &infix:<+> | ||
camelia | rakudo-moar 56dbb0: OUTPUT«-> |args is raw { #`(Block|51403952) ... }» | ||
14:53
ely-se left
|
|||
ilmari | m: say &infix:<o>.WHAT | 14:54 | |
camelia | rakudo-moar 56dbb0: OUTPUT«(Sub)» | ||
n0tjack | what are the semantics for %hash1 ~~ %hash2 ? Identical keys and match-y values? | ||
ilmari | n0tjack: operators have funny names | ||
n0tjack | ilmari: thanks | ||
I do overlook the use/mention distinction for subs in P6 a lot | |||
that's one place p6 has traded off DWIMminess for consistency | 14:55 | ||
or, rather, workability :) | |||
ilmari | s/subs/operators/ | ||
ugexe | mrf: it makes sense, but pulling it off leads to its own problems. that is how i originally tried to design it but with things like 7230-7235 you would have circular dependencies | ||
n0tjack | well, for subs too | ||
grondilu | m: say { foo => "bar" } ~~ { foo => "bar" } | ||
camelia | rakudo-moar 56dbb0: OUTPUT«False» | ||
n0tjack | yikes | 14:56 | |
me no likey | |||
ilmari | m: say { foo => "bar" }.WHAT | ||
camelia | rakudo-moar 56dbb0: OUTPUT«(Hash)» | ||
14:56
ely-se joined
|
|||
grondilu | looks LTA indeed | 14:56 | |
n0tjack | LTA? | ||
ah | 14:57 | ||
grondilu | "Less Then Awesome". See S99 | ||
*Than | |||
n0tjack | yeah, just did | ||
thanks | |||
mrf | ugexe: could you not split *all* the roles into one repo and leave Grammer::HTTP.pm6 in the current repo (I realise this leaves one tiny repo but it makes semantic sense) | 14:58 | |
14:58
Ven left
|
|||
ugexe | not really, because it makes testing almost impossible | 14:58 | |
n0tjack | m: say 1000.WHAT; say 1e3.WHAT; say (10**3).WHAT; | ||
camelia | rakudo-moar 56dbb0: OUTPUT«(Int)(Num)(Int)» | ||
mrf | ugexe: Why? | ||
grondilu | m: say { foo => "bar" } === { foo => "bar" } | 14:59 | |
camelia | rakudo-moar 56dbb0: OUTPUT«False» | ||
mrf | SUrely just a dummy class that tests a specific grammar. | ||
ugexe | because then you have dependencies, and you will have circular dependencies | ||
ilmari | there is no Map.ACCEPTS(Map $) | ||
docs.perl6.org/routine/ACCEPTS#class_Map | |||
15:00
FROGGS left
|
|||
ilmari | m: say { foo => "bar" } == { foo => "bar" } | 15:00 | |
camelia | rakudo-moar 56dbb0: OUTPUT«True» | ||
n0tjack | m: say { foo => 12, bar = 13 } == {bar => , foo => 12}; | ||
camelia | rakudo-moar 56dbb0: OUTPUT«5===SORRY!5=== Error while compiling /tmp/nE0ceogkVPPreceding context expects a term, but found infix = insteadat /tmp/nE0ceogkVP:1------> 3say { foo => 12, bar =7⏏5 13 } == {bar => , foo => 12};» | 15:01 | |
n0tjack | m: say { foo => 12, bar = 13 } == {bar => 13, foo => 12}; | ||
camelia | rakudo-moar 56dbb0: OUTPUT«5===SORRY!5=== Error while compiling /tmp/oZ3ZxSLNkqPreceding context expects a term, but found infix = insteadat /tmp/oZ3ZxSLNkq:1------> 3say { foo => 12, bar =7⏏5 13 } == {bar => 13, foo => 12};» | ||
n0tjack | m: say { foo => 12, bar => 13 } == {bar => 13, foo => 12}; | ||
camelia | rakudo-moar 56dbb0: OUTPUT«True» | ||
15:01
khw joined
15:02
ely-se left
|
|||
ugexe | mrf: once a grammar can `does OtherGrammar` it might be possible | 15:02 | |
mrf | ugexe: I thought that was possible. That kind of sucks. | 15:03 | |
ShimmerFairy | m: role G { token foo { foo } }; grammar H does G { }; say H.parse("foo", :rule<foo>) # you can certainly compose a Grammar-ish role, however | 15:04 | |
camelia | rakudo-moar 56dbb0: OUTPUT«「foo」» | ||
ugexe | yes, thats how http::grammar is setup | ||
ShimmerFairy | you can also 'is' a grammar, I don't know if that's acceptable in this case though. | 15:05 | |
ugexe | not usually, because rfcs have tokens that will conflict | 15:06 | |
mrf | ugexe: because all rfcs use localised rules? | 15:07 | |
15:07
tokuhiro_ joined
|
|||
ShimmerFairy | any reason role G is Grammar isn't acceptable as a composeable Grammar? Unless I've forgotten something grammars are just classes with a default parent of Grammar instead of the more usual one. | 15:07 | |
ugexe | because the token `time` might mean a different format of timestamp depending on the rfc | ||
15:08
rarara_ joined
|
|||
mrf | ugexe: but shouldn't the tokens be localised to the RFC anyway. | 15:08 | |
ugexe | no, because the rfcs say stuff like `<.FWS>` that other rfcs use | 15:09 | |
15:09
shlomif joined
15:10
rindolf left,
shlomif is now known as rindolf
|
|||
mrf | ugexe: There are only a few special common rules that I have seen. Can you give an example of any outside those declared in RFC4234.5234 | 15:10 | |
ugexe | 5322 has like 30 rules | 15:11 | |
15:11
tokuhiro_ left
|
|||
rarara_ | Hello, with hashes it is possible to do things like %hash<first second>.join(" ") .... is there a similar construct for calsses? something like $class{.first .second}.join(" ") ? | 15:12 | |
ugexe | about half are localized, the others no (because they are used by other rfcs) | ||
15:12
Ven joined
|
|||
n0tjack | rarara_: you could try something like [.first, .second].join(" ") given Foo.new("one", "two"); | 15:13 | |
might have to fiddle the syntax a bit | |||
15:14
telex left,
rindolf left
|
|||
mrf | ugexe: hmm ok. That kinda sucks | 15:15 | |
rarara_ | n0tjack : Thank you | ||
15:15
kst` is now known as kst,
tokuhirom_ left
15:16
virtualsue joined,
telex joined
|
|||
rarara_ | works also with normal parenthesis (vs squared ones) | 15:16 | |
But I don't know which one would be more performant | |||
n0tjack | rarara_: Round parens () make an Array, Square bracket [] make a List | 15:17 | |
15:18
n0tjack_ joined,
n0tjack left
|
|||
rarara_ | n0tjack it is the opposite here | 15:18 | |
n0tjack_ | I'd say at this point in p6's development, learning the language will be a better use of your time than worrying about performance | 15:19 | |
there's a lot of work to do yet in the compiler that will have a bigger impact on performance than stuff you do in your own code | |||
15:19
jlb333333_ left
|
|||
n0tjack_ | rarara_: I might have gotten that mixed up. But one is a list, the other an array. | 15:19 | |
ugexe | i dunno, i can write some pretty bad code | ||
rarara_ | I agree, but I was thinking that list might make more sense since we use the data immediately in join | 15:20 | |
while Array seems to me more suited for storing modifiable things | |||
n0tjack_ | that's the general idea, yes | ||
but it's a small piece of code and I don't imagine the choice will have much impact on the overall application | 15:21 | ||
alright, have to go visit a customer | |||
rarara_ | n0tjack good luck! | ||
15:22
rindolf joined
|
|||
ugexe | mrf: if you find a way to split them apart where they are still testable i would be open to it. its just when i tried this like a year ago i had problems (and maybe they are resolved these days) | 15:22 | |
i have no problem dropping 20-some modules and making dalek earn his bones lol | 15:23 | ||
mrf | ugexe: I will see what I can do. | ||
ugexe: however I suspect that if you couldn't manage it I won't either, but you never know | 15:24 | ||
ugexe | well, i couldnt manage it *6+ months ago*. lots has changed | 15:25 | |
mrf | ugexe: that sounds like something a go developer would say | ||
ugexe | it took me this long to split the grammar out from zef | ||
golang changes have nothing on perl6 changes heh | 15:26 | ||
15:26
raiph joined
15:28
n0tjack_ left
|
|||
ugexe | personally i'd prefer to drop the pointless namespace and just call them `RFCxxx` instead of IETF_Grammar::RFC[\d+ | "::RFC" \d+] | 15:28 | |
that way you can mix in a lot of rfcs without huge swaths of `IETF_Grammar::` | 15:30 | ||
mrf | ugexe: how would you then distinguish between IETF RFCs from not IETF ones. | 15:31 | |
15:31
CIAvash joined
|
|||
PerlJam | mrf: call the non-IETF ones something else :) | 15:32 | |
15:32
diana_olhovik left
|
|||
mrf | PerlJam: true. | 15:33 | |
ugexe | as long as they dont share the same names i dont think it will confuse anyone | ||
PerlJam | What non-IETF RFCs are there in potential module space anyway? | 15:34 | |
mrf | ugexe: so as a (top of the head) example Grammar::Perl6::RFC111 | ||
PerlJam: That was the question I asked and the Perl6 rfcs were the example ShimmerFairy gave | 15:35 | ||
15:35
mullagainn joined
|
|||
PerlJam | ah, those should clearly live in a Perl6 space of some sort. | 15:35 | |
mrf | PerlJam: I suspect that its not a large use case but I like to be specifc. | ||
masak | 'night, #perl6 | 15:36 | |
PerlJam | btw, why do people put "Grammar" somewhere in the namespace of a grammar? | 15:37 | |
masak: good night. sleep well! | |||
I mean, is "Grammar" meant to give a hint as to how the name should be used? | |||
mrf | PerlJam: example? | ||
PerlJam | you just gave one :) Grammar::PErl6::RFC111 | 15:38 | |
Foo::Grammar.parse($string) | |||
mrf | Grammar gives a namespace for modules that are just Grammars. | ||
PerlJam | Why mention that it's a grammar? | ||
mrf: sure, but ... why? | |||
mrf | PerlJam: So I can find them. | 15:39 | |
ugexe | well, grammars will be slower than some string index type stuff | ||
mrf | If I want to find a grammar for parsing XML. I would want to look for something like Grammar::XML or some such | ||
ugexe | it also suggests you can pass in an action | ||
PerlJam | ugexe: could you expand on that please? | 15:40 | |
you mean that other classes may have a .parse() method, but they may not take :action ? But if you know it's a Grammar, you know that .parse will take an :aciton ? | 15:41 | ||
ugexe | well to me something with Grammar:: suggests you are meant to work with the match object or can pass in $actions to the parse call. I would expect something like HTTP::Parser to just give me a perl6 object, not a match from a grammar | ||
PerlJam | er, I guess it's :actions (I always get that mixed up) | 15:42 | |
15:43
spollei joined
15:44
apotheon_ is now known as apotheon
|
|||
ugexe | take for instance this (not in the ecosystem): Perl6-Grammar--XQuery It is useless without any :actions, but it can (used to?) kinda parse it. calling it XQuery would not be correct here | 15:45 | |
15:45
apotheon left,
apotheon joined
|
|||
mrf | PerlJam: A good example for me is the difference between JSON::Tiny and JSON::Tiny::Grammar. As an end user I would not expect to go anywhere near the ::Grammar module and would only use JSON::Tiny as the interface. In fact the ::Grammar module could be then extracted out for others who wanted to implement JSON parsers | 15:47 | |
moritz: as a point is there any worth putting JSON::Tiny::Grammar into the Grammar:: namespace. Assuming its a complete JSON grammar (which it appears to be) other JSON::* implementations could make use of it (With say different action objects) | 15:50 | ||
15:50
domidumont left
|
|||
ugexe | URI bothers me like that. URI.new() doesnt seem like it should be returning a big ol' match object | 15:53 | |
which just led me to this bug | 15:54 | ||
star: use URI; my $x = URI.new("www.google.com"); say $x.WHAT | |||
camelia | star-m 2015.09: OUTPUT«Cannot look up attributes in a type object in method scheme at /home/camelia/star-2015.09/share/perl6/lib/URI.pm:137 in method gist at /home/camelia/star-2015.09/share/perl6/lib/URI.pm:204 in block <unit> at /tmp/Cz8uGTbsuh:1» | ||
jdv79 | yeah, i did a rewrite of URI but never polished and pushed it | ||
it could be a lot better | |||
15:54
kjs_ left
|
|||
moritz | mrf: fwiw I want JSON::Tiny to stay without dependencies | 15:55 | |
mrf: but afaict you can already use the grammar from elsewhere | |||
15:55
loren left
15:56
retupmoca joined
|
|||
mrf | moritz: yeah sure. Just my pigeonholing brain wanting a separation from the Grammars (the definition of something) from the thing that uses that Grammar (the parser) | 15:56 | |
moritz | mrf: but isn't it separated already? | 15:57 | |
mrf | I am aware that I could 'panda JSON::Tiny' and then 'use JSON::Tiny::Grammar' but that just seems weird in my brain. Its not a Grammar for JSON Tiny. Its a JSON Grammar. | ||
I would have liked to install Grammar::JSON (or likewise) without installing JSON::Tiny. | |||
RabidGravy | well it's the JSON grammar that JSON::Tiny uses | ||
other grammars are possible I guess | 15:58 | ||
mrf | true enough. I think I am just being pedantic | 15:59 | |
PerlJam | I wouldn't say "pedantic" | 16:00 | |
I think you're trying to fit your brain to the world and vice versa. | |||
moritz | mrf: you're welcome to write a Grammar::JSON that does a "use JSON::Tiny::Grammar; constant Grammar::JSON = JSON::Tiny::Grammar" :-) | ||
RabidGravy | I could see there being some virtue in there being a standalone JSON grammar, nothing precludes taking the best one around and forking it to a separate distribution | ||
PerlJam | much the same reason I was asking why people put Grammar in the namespace | ||
mrf | See that the URI module has its own Grammar for IETF when it could use Grammar::HTTP to get that | ||
moritz: :D | 16:01 | ||
moritz: I had one problem then I linked one Grammar to another now I have a recursive problem | |||
16:02
FROGGS joined,
yop joined,
yop left
|
|||
RabidGravy | PerlJam, I could see a top-level Grammar:: for pure grammars (with no actions or other code) for people to use for their own purposes, but yup | 16:03 | |
moritz | I think you're idealizing the usefulness of a grammar | ||
mrf | RabidGravy++ # Yes this | ||
moritz | actions are rather tightly coupled to the structure of a grammar | ||
PerlJam | indeed | ||
moritz | so code reuse is far from trivial | ||
RabidGravy | oh for sure | 16:04 | |
PerlJam | even with no actions, if you're going to use the grammar for anything, you need to be highly familiar with the rules used within the grammar and their relationships | 16:05 | |
mrf | PerlJam: true but that can be mitigated by documenting the rules/tokens ect | 16:08 | |
RabidGravy | mrf, I think at least part of the thing here is, if you want things in the ecosystem at this stage in the game, just do it | 16:10 | |
:) | |||
16:11
pmurias left
|
|||
mrf | RabidGravy: true. | 16:14 | |
moritz | mrf: the problem is that changes / bug fixes quickly become backwards incompataible, because the distinction between implementation and API basically doesn't exist | 16:15 | |
16:15
^elyse^ joined,
kmel joined
16:16
tokuhirom_ joined
|
|||
kmel | m: say 'hello' | 16:16 | |
camelia | rakudo-moar 56dbb0: OUTPUT«hello» | ||
mrf | moritz: Because action object methods are tied to rules in the grammar? | 16:20 | |
16:20
tokuhirom_ left
|
|||
RabidGravy | yeah | 16:22 | |
16:22
^elyse^ left
|
|||
RabidGravy | to be honest the only example I have found where the grammar could be used in a different way than the author intended is in Router::Boost where the basic grammar could be alternatively used in a URI template thingy | 16:23 | |
PerlJam | Because grammars need to be designed with sharing in mind for that to happen (usually) | 16:25 | |
16:25
[Sno] joined
|
|||
RabidGravy | yeah, and I think in that case an eventual design would bend it out of shape from the original purpose | 16:26 | |
PerlJam | and then readability/maintainability/understandability probably suffer | 16:27 | |
mrf | I can certainly see pitfalls in sharing of grammars but really want to avoid a situation were every single Email/HTTP/URI module defines the same RFC grammar. Which seems like wasted effort. | ||
RabidGravy | on the other hand, and I am rambling here, there may well be things for which a standalone grammar can answer "is this this a valid $foo" when you don't want to do a full parse | ||
mrf, only if it's your effort or effort that would otherwise be doing something else and I think the reasons people make the modules the latter is unlikely | 16:30 | ||
ugexe | grammar::http can be passed actions that turn the parse into a deep data structure, or handle things like closing a socket when it hits certain parts of a header. with rfc grammars the definitions and shareability are mostly solved | 16:31 | |
16:32
weihan left
16:33
weihan joined
|
|||
mrf | maybe that is where my blind spot is coming from . The kind of things I am focusing on right now have very stong specifications (RFC's) and define syntaxt used by a huge swath of things I use daily which makes their Utility greater. | 16:35 | |
I think in the end I will just need to implement something and see where it breaks. | |||
Thanks people you have all been awesomely helpful | |||
-> Home time | 16:36 | ||
RabidGravy | :) | ||
16:37
mprelude joined,
kjs_ joined,
gonz_ left,
weihan left
16:38
diana_olhovik joined,
grondilu left
16:39
mprelude left,
^elyse^ joined
16:40
grondilu joined,
LosFrijoles joined
16:41
LosFrijoles left
16:42
Juerd left
16:43
spider-mario joined
16:44
gonz_ joined
16:45
dakkar left,
mprelude joined
16:47
Juerd joined
16:51
kjs_ left
16:53
revdiablo left
16:54
zakharyas joined
16:55
lizmat joined
16:57
Ven left
16:58
mprelude left
|
|||
lizmat waves from Cologne | 16:58 | ||
moritz | }o Cologne | 16:59 | |
17:01
sufrostico joined
17:02
firstdayonthejob joined
|
|||
[ptc] | o/ | 17:02 | |
jdv79 | one random thing on the grammar discussion - it might be hard when people are optimizing grammars | 17:03 | |
what i mean is, for instance, shortcutting or not capturing in the name of perf | |||
[ptc]: hey | 17:04 | ||
[ptc] | jdv79: hi! | ||
17:06
xpen joined
17:07
revdiablo joined
17:19
espadrine_ left
17:20
Begi119 joined
17:25
xpen left
|
|||
[Coke] is tied to a work project where "/" is a special character. wtf. | 17:28 | ||
dalek | c: 9320442 | (Nova Patch)++ | doc/Type/Str.pod: remove Str.tcuc which was never implemented in rakudo and was removed from the spec in perl6/spec@d1f9930 |
||
[Coke] | is nova here in channel? | ||
Nova++ | 17:29 | ||
17:35
xfix joined
17:39
Begi119 left,
petercommand joined
17:41
Begi119 joined
17:43
diana_olhovik left
|
|||
FROGGS | lizmat: would be nice to perhaps do TDD now (I'm just reading jnthn++'s gist) | 17:44 | |
lizmat | FROGGS: that's why I also created a curli branch in roast | ||
nine | FROGGS: where would the tests live? | ||
FROGGS | nine: in roast :o) | 17:45 | |
nine | That's mildly helpful ;) | ||
S11-modules? | 17:46 | ||
lizmat | if they are deemed not to be part of the Perl 6 definition, then we can always move them somewhere else | ||
FROGGS | S11-precomp? | ||
17:46
diana_olhovik joined
|
|||
nine | Precomp is only a part. How about S11-compunit? | 17:46 | |
FROGGS | I think there are enough precomp tests to create a new dir for it | 17:47 | |
lizmat | S11-compunit is fine by me | ||
FROGGS | okay | ||
one test would be to ask for precompilation on A.pm, but this will trigger precomp of C.pm and and B.pm | 17:48 | ||
lizmat | indeed... | ||
and the idea is that that would happen transparently | |||
17:48
sufrostico left
|
|||
lizmat | as in: while precompiling A.pm, the "use B" is encountered | 17:49 | |
nine | I'm adding CompUnit::DependencySpecification | ||
FROGGS | another test would be have a lax use statement, do precomp, then add another dist that would have been preferred to a cur, then run the precomped code... | ||
lizmat | at that point, precomp of A should be halted, and B should be precomped first | ||
FROGGS | lizmat: aye | ||
lizmat | then, when B is precomped, precomp of A should continue | ||
FROGGS | same should probably happen if the cache of B is invalidated | 17:50 | |
17:50
kjs_ joined
|
|||
FROGGS | but, that is another test :o) | 17:50 | |
lizmat | nine: CU::DependencySpecification probably also needs an api-matcher :-) | 17:51 | |
rindolf | m: 0b1000 ~& 0b1010 | ||
camelia | rakudo-moar 56dbb0: OUTPUT«WARNINGS:Useless use of "~&" in expression "0b1000 ~& 0b1010" in sink context (line 1)» | ||
rindolf | m: say (0b1000 ~& 0b1010) | ||
camelia | rakudo-moar 56dbb0: OUTPUT«0» | ||
rindolf | This seems wrong. | 17:52 | |
17:52
Peter_R joined
|
|||
rindolf | <rindolf> perlbot: eval: [0b1010 & 0b1000] | 17:53 | |
<perlbot> rindolf: [8] | |||
FROGGS | rindolf: depends how that op is meant to work :o) | ||
17:53
kjs_ left
|
|||
FROGGS | m: say (0b1000 +& 0b1010) | 17:53 | |
camelia | rakudo-moar 56dbb0: OUTPUT«8» | ||
17:53
llfourn left
|
|||
rindolf | FROGGS: isn't it bitwise or? | 17:53 | |
Ah, so it's +& ? | |||
FROGGS | rindolf: I think there is some sort of consensus that ~& should work on blobs only | ||
rindolf | btw, this search returns junk - duckduckgo.com/?q=perl%206%20bitwi...operations | 17:54 | |
FROGGS | rindolf: numeric is +&, stringy is ~& | ||
rindolf | FROGGS: ah. | 17:55 | |
nine | Is the has $version-matcher on purpose or should it be has $.version-matcher? | 17:56 | |
[Coke] | rindolf: try searching on doc.perl6.org ... though you may have no better luck, we actually control that. | 17:58 | |
rindolf | [Coke]: ok. | ||
[Coke]: Google gave me this - doc.perl6.org/language/operators | |||
[Coke] | that works. | 17:59 | |
FROGGS | ahh, I like the linked list design in jnthn's gist | ||
lizmat | nine: not sure | ||
FROGGS | use lib "Foo"; will then build down to: PROCESS::<$REPO> = NewCur.new( "Foo", :next(PROCESS::<$REPO>) ) # more or less | 18:00 | |
nine | FROGGS: yes | 18:01 | |
lizmat | wouldn't that be: my $*REPO = NewCur.new("Foo", :next($*REPO) ) ? | 18:04 | |
nine FROGGS ^^^ | |||
FROGGS | lizmat: that doesnt work | 18:05 | |
nine | There's also $?REPO | ||
FROGGS | if you declare something, you shadow the old value | ||
lizmat | hmmm.... | ||
18:06
Begi119 left,
Begi119 joined
|
|||
dalek | ast/curli: f3eb270 | (Stefan Seifert)++ | S11-compunit/compunit-dependencyspecification.t: Test CompUnit::DependencySpecification |
18:07 | |
kudo/curli: 771c4cf | (Stefan Seifert)++ | / (7 files): Add CompUnit::DependencySpecification |
|||
rindolf | How do I put a reference to a subroutine as a value in a hash? | 18:10 | |
moritz | %h{$key} = &yoursub; | 18:11 | |
gfldex | m: sub f(){ say 'i haz a f' }; my %h; %h = f => &f; %h<f>.(); | ||
lizmat | rindolf: why a reference> | ||
camelia | rakudo-moar 56dbb0: OUTPUT«i haz a f» | ||
lizmat | m: %h<a> = { say "foo" }; %h<a>() # no need to make a sub | 18:12 | |
camelia | rakudo-moar 56dbb0: OUTPUT«5===SORRY!5=== Error while compiling /tmp/Qbi0B_asYbVariable '%h' is not declaredat /tmp/Qbi0B_asYb:1------> 3<BOL>7⏏5%h<a> = { say "foo" }; %h<a>() # no nee» | ||
lizmat | m: my %h; %h<a> = { say "foo" }; %h<a>() # do need to make a hash :-) | ||
camelia | rakudo-moar 56dbb0: OUTPUT«foo» | ||
rindolf | lizmat: well, it's kinda long. | ||
18:14
tokuhirom_ joined
|
|||
kmel | hello everyone | 18:15 | |
nine | hello kmel | 18:16 | |
kmel | if i want to play a bit with Perl 6 oriented towards web development. What options do i have? | 18:17 | |
DrForr | Bailador comes to mind. | 18:18 | |
kmel | i found bailador but thought i'd ask before delving in | ||
18:18
tokuhirom_ left
|
|||
kmel | thanks DrForr | 18:19 | |
nine | I hear good things about Mojomojo | ||
DrForr | I haven't checked into what's in modules.perl6.org lately :/ | ||
nine | no, not Mojomojo....curse you brain | 18:20 | |
I meant Mojolicious | |||
kmel | nine isn't mojolicious Perl 5? | ||
FROGGS | it is | 18:21 | |
it will be usable with Inline::Perl5 of course but its interface won't be Perl 6-ish I fear | |||
kmel | so from a Perl 6 point of view there's only bailador? | 18:23 | |
rindolf | paste.debian.net/317172/ - this code gives me an error - «Missing infix inside []» - how can I fix it and what does it mean? | ||
FROGGS | kmel: you can also search for 'server' here: modules.perl6.org/ | 18:25 | |
moritz | rindolf: I can't parse your code either | ||
((@new_rec[$old_digits_sum + $new_digit] | |||
[($old_mod + $BASE_MOD * $new_digit) % $BASE] | |||
AlexDaniel | I feel like there was an attempt to port Mojolicious | 18:26 | |
github.com/coke/mojo6 | |||
moritz | rindolf: what should the second pair of brackets introduce? | ||
AlexDaniel | this one | ||
moritz | rindolf: is it supposed to be a subscript? | ||
rindolf | moritz: an array dereference. | ||
moritz: yes. | |||
moritz: a subscript. | |||
moritz | rindolf: can't have whitespace between two subscripts | ||
FROGGS | unspace missing? | 18:27 | |
rindolf | Like $x->[6]->[100] in Perl 5 or arr[5][100] in Python. | ||
moritz: ah. | |||
FROGGS | m: my @a; @a[0][0] = 42 | ||
camelia | rakudo-moar 56dbb0: OUTPUT«5===SORRY!5=== Error while compiling /tmp/d7IKaf95TkMissing infix inside []at /tmp/d7IKaf95Tk:2------> 3[7⏏050] = 42 expecting any of: bracketed infix infix infix stopper» | ||
FROGGS | m: my @a; @a[0]\[0] = 42 | ||
camelia | ( no output ) | ||
moritz | rindolf: return (0 .. $DIGITS_SUM).map, { [(0) x $BASE] }; | ||
FROGGS | there you go | ||
moritz | rindolf: that looks like a 5ism | ||
AlexDaniel | .oO( What about using CGI.pm with Inline::Perl5? Ha-ha-ha ) |
||
moritz | rindolf: in Perl 6, xx is the list repetition operator | ||
FROGGS | rindolf: add a backslash before the newline | 18:28 | |
moritz | and that map call is also weird | ||
maybe you want [0 xx $BASE] xx ($DIGITS_SUM + 1) or so? | |||
itz_stmuk | the cool kids don't use CGI.pm anymore :) | 18:29 | |
kmel | AlexDaniel I am trying to go for a pure 6 module | ||
AlexDaniel | kmel: I think that even if you find one, it seems like you will have to become an active contributor to get your stuff going. Which is good, in some sense… | 18:31 | |
18:31
Sqirrel joined
|
|||
AlexDaniel | kmel: However, Bailador seems to be pretty active | 18:31 | |
not sure how usable it is, but try it? | 18:32 | ||
DrForr | There's Perl::ToPerl6 in the Perl5 space that might help :) | ||
18:32
[Sno] left,
[Sno] joined
|
|||
kmel | AlexDaniel I am not looking for something sophisticated, just something i can test the waters with | 18:33 | |
i think i'll try bailador | |||
ugexe | grammar::http can be passed actions that turn the parse into a deep data structure, or handle things like closing a socket when it hits certain parts of a header. with rfc grammars the definitions and shareability are mostly solved | ||
oops | |||
18:36
n0tjack joined
18:37
takadonet left
18:42
kjs_ joined
|
|||
[Coke] | mojo jojo! ... I need to get back to that | 18:44 | |
RabidGravy | ugexe, so good you had to send it twice ;-) | ||
rindolf | «Method 'eval' not found for invocant of class 'Str'» - how do I do string eval in rakudo-moar? | 18:46 | |
18:46
firstdayonthejob left
|
|||
pink_mist | EVAL "string here" | 18:47 | |
18:48
firstdayonthejob joined
|
|||
rindolf | pink_mist: in all caps? | 18:48 | |
pink_mist | as far as I understand it, yes | ||
18:48
CIAvash left
|
|||
rindolf | pink_mist: thanks! | 18:49 | |
pink_mist: what's up, BTW? | |||
lizmat | yes, all caps, because you probably SHOULD NOT DO THAT -) | ||
pink_mist | rindolf: np ... and I'm busy busy busy =) in fact gotta go right now :P | ||
AlexDaniel | lizmat: are you saying that I should not any phasers at all? | 18:50 | |
should not use* | |||
lizmat | AlexDaniel: hehe :-) | ||
rindolf | pink_mist: bye. | ||
lizmat | okokok... | ||
basically, all caps means it draws attention for something special happening | |||
18:50
kmel left
|
|||
AlexDaniel | ok :) | 18:51 | |
rindolf | OK, my Euler program seems much slower in p6 than it is in p5. | ||
18:51
spollei left
|
|||
AlexDaniel | but I always felt that all caps were used just to distinguish it from other stuff | 18:51 | |
18:51
kjs_ left
18:52
zakharyas left
|
|||
lizmat | AlexDaniel: yeah, you're right | 18:52 | |
originally, eval was just eval and not EVAL :-) | |||
n0tjack | back then, it was primeval | 18:54 | |
lizmat | .oO( the best of times ) |
18:55 | |
AlexDaniel votes for universal prefix for potentially unsafe operations – ☠. That is, ☠EVAL, ☠qqx//, etc… | |||
lizmat | use Slang::Unsafe :-) | 18:56 | |
AlexDaniel | well, I doubt anybody will add a dependency just to protect him from himself. | 18:58 | |
lizmat | could be a Company Best Practice :-) | 18:59 | |
[Coke] | rindolf: feel free to post source - we might be able to suggest improvements. | ||
(gist it) | |||
19:02
kjs_ joined
|
|||
rindolf | [Coke]: oh, I see - I used & instead of +& | 19:03 | |
19:05
khw left
19:07
vendethiel joined
19:08
Hor|zon joined
|
|||
dalek | osystem: 9de12e6 | (Shoichi Kaji)++ | META.list: Add Data::Section::Simple to ecosystem See github.com/shoichikaji/Data-Section-Simple |
19:08 | |
osystem: decc31c | (Zoffix Znet)++ | META.list: Merge pull request #82 from shoichikaji/Data-Section-Simple Add Data::Section::Simple to ecosystem: github.com/shoichikaji/Data-Section-Simple |
|||
ast/curli: 4e223c5 | (Stefan Seifert)++ | S11-compunit/compunit-repository.t: First tests for CompUnit::Repository |
19:09 | ||
kudo/curli: 53da925 | (Stefan Seifert)++ | / (4 files): Add CompUnit::Repository role |
|||
vendethiel | amazingly enough, nine++ took a liking to core hacking :P | ||
19:14
tokuhirom_ joined
|
|||
rindolf | [Coke]: here is the source - bitbucket.org/shlomif/project-eule...ew-default | 19:16 | |
19:16
diana_olhovik left
19:19
tokuhirom_ left
19:20
ZoffixW joined
|
|||
n0tjack | I need something to code up in p6 | 19:21 | |
ZoffixW | Hey. Is it valid to have "authors" field in META.info instead of singular "author"? I'm just looking at this: raw.githubusercontent.com/shoichik...META6.json | ||
n0tjack | hmm, maybe project euler | ||
ZoffixW | n0tjack, go nuts: github.com/perl6/perl6-most-wanted...modules.md | ||
:D | |||
n0tjack | .... I'm not sure you want me to write code other ppl are expected to use :) | ||
Ulti | n0tjack: www.reddit.com/r/perl6/comments/3p..._show_off/ | 19:22 | |
ZoffixW | n0tjack, I'd not worry too much about that. Just write good tests and you should be fine :) | 19:23 | |
Ulti | yeah its more motivational if people do use your code... which reminds me I was meant to finish the histogram stuff in Stats | ||
19:24
mspo joined
|
|||
Ulti | maybe if I wait long enough there will be a PR waiting instead.... | 19:24 | |
RabidGravy | n0tjack, plus if people really want it and they want it better they can pitch in and fix it ;-) | ||
flussence | m: my @a; @a[0].[0] = 42; say @a | 19:27 | |
camelia | rakudo-moar 56dbb0: OUTPUT«5===SORRY!5=== Error while compiling /tmp/X51OdAaiwfUnsupported use of . to concatenate strings; in Perl 6 please use ~at /tmp/X51OdAaiwf:2------> 3.[7⏏050] = 42; say @a» | ||
flussence | std: my @a; @a[0].[0] = 42; say @a | ||
camelia | std 28329a7: OUTPUT«5===SORRY!5===Method call found where infix expected (change whitespace?) at /tmp/K8ucLWJlGv line 2:------> 3<BOL>7⏏5.[0] = 42; say @a expecting any of: POST infix or meta-infix infixed function postcircumfix postfix postfi…» | ||
FROGGS | m: my @a; @a[0] . [0] = 42; say @a | 19:32 | |
camelia | rakudo-moar 56dbb0: OUTPUT«5===SORRY!5=== Error while compiling /tmp/lC7p29Bb01Unsupported use of . to concatenate strings; in Perl 6 please use ~at /tmp/lC7p29Bb01:1------> 3my @a; @a[0] . [7⏏050] = 42; say @a» | ||
FROGGS | hmmm, sad | ||
but only a little | |||
19:33
Begi119 left
19:35
diana_olhovik_ joined
|
|||
n0tjack | is roast the general testing framework for p6? | 19:36 | |
as in, how do I write my own tests? | 19:37 | ||
moritz | it's not a framework | ||
nine | n0tjack: use Test; | ||
moritz | it's a test suite | ||
n0tjack: doc.perl6.org/language/testing.html | |||
n0tjack | thanks nine, moritz | ||
19:38
zakharyas joined
|
|||
FROGGS | m: say $*KERNEL ~~ 'linux' | 19:38 | |
camelia | rakudo-moar 56dbb0: OUTPUT«True» | ||
FROGGS | wow, that documentation is very good | 19:39 | |
lizmat | FROGGS: re [] . [] I tried exactly the same thing :-) | 19:41 | |
vendethiel | "is($womble->location" probably should be "." | 19:42 | |
the link at the bottom is down | |||
FROGGS | :o) | ||
dalek | c: 229c4f9 | ven++ | doc/Language/testing.pod: Fix P5ism '->' in language/testing |
19:43 | |
19:43
rindolf left
|
|||
n0tjack | sorry for the silly question, is use some-other-file-in-this-dir.pl6 the way to import a script into a test? | 19:49 | |
19:51
ZoffixW left
|
|||
lizmat | there's also EVALFILE ? | 19:51 | |
19:51
diana_olhovik_ left
|
|||
n0tjack | :4 | 19:53 | |
ugh, too many terminals | |||
dalek | kudo/nom: 5d83db3 | FROGGS++ | src/core/Regex.pm: handle junction on LHS of regex correctly |
19:55 | |
ast: 51d1a48 | FROGGS++ | S03-junctions/misc.t: unfudge/add junction ~~ regex tests |
19:56 | ||
19:56
llfourn joined
19:58
jevin left
20:00
sufrostico joined,
kjs_ left
|
|||
FROGGS | gnight | 20:02 | |
20:02
FROGGS left,
llfourn left
20:07
jevin joined
20:10
darutoko left
|
|||
[Coke] | .ask rindolf - the description says S(1112), but you're looking at 11**12? | 20:12 | |
yoleaux | [Coke]: I'll pass your message to rindolf. | ||
[Coke] | that code looks some gnarly perl4 code. | 20:13 | |
RabidGravy | gnarly dude | 20:20 | |
[Coke] | Does anyone else follow his code? I am having a hard time seeing how it's doing what's asked in the description. | 20:21 | |
20:22
tokuhiro_ joined
|
|||
[Coke] | m: say int.max; | 20:24 | |
camelia | rakudo-moar 5d83db: OUTPUT«-Inf» | ||
20:25
ponzellus left
|
|||
TimToady | m: say int.range | 20:26 | |
camelia | rakudo-moar 5d83db: OUTPUT«Method 'range' not found for invocant of class 'int' in block <unit> at /tmp/briVW7t5yx:1» | ||
TimToady | m: say int.Range | ||
camelia | rakudo-moar 5d83db: OUTPUT«-9223372036854775808..9223372036854775807» | ||
20:27
tokuhiro_ left,
^elyse^ left,
leont joined,
aindilis joined,
zakharyas left
|
|||
[Coke] | m: say [+] 12345.split | 20:28 | |
camelia | rakudo-moar 5d83db: OUTPUT«Cannot call split(Int: ); none of these signatures match: (Cool $: Regex $pat, $limit = { ... };; :$all, *%_) (Cool $: Cool $pat, $limit = { ... };; :$all, *%_) in block <unit> at /tmp/Estzn2AtWw:1» | ||
[Coke] | m: say [+] 12345.split('') | ||
camelia | rakudo-moar 5d83db: OUTPUT«15» | ||
PerlJam | m: say [+] 12345.comb; | 20:29 | |
camelia | rakudo-moar 5d83db: OUTPUT«15» | ||
n0tjack | now do it in base 8 :) | ||
moritz | base 8 is just like base 10, really, if you're missing two fingers | ||
(a Tom Lehrer quote, iirc) | 20:30 | ||
PerlJam | moritz: nah, you just count the spaces between the fingers instead. | ||
n0tjack | all bases are base 10 | ||
that came as a huge relevation to me when i was a kid | |||
m: say ox30071; say :8[3,0,0,7,1]; | 20:31 | ||
camelia | rakudo-moar 5d83db: OUTPUT«5===SORRY!5=== Error while compiling /tmp/lu_QdwQ5jaUndeclared routine: ox30071 used at line 1» | ||
n0tjack | I forget the notation for octal | ||
TimToady | 0o | ||
n0tjack | m: say 0o30071; say :8[3,0,0,7,1]; | 20:32 | |
camelia | rakudo-moar 5d83db: OUTPUT«1234512345» | ||
n0tjack | I wrote an "antibase" function that will take (12345,8) and produce (3,0,0,7,1), but is there a native way in p6? | 20:33 | |
PerlJam is having deja vu right now | |||
gfldex | m: say 12345.base(8) | ||
20:33
zakharyas joined
|
|||
camelia | rakudo-moar 5d83db: OUTPUT«30071» | 20:33 | |
n0tjack | gfldex++ | ||
gfldex | doc.perl6.org/routine/base#role_Real ++ | ||
n0tjack | m: say 12345.base(8).comb; | 20:34 | |
camelia | rakudo-moar 5d83db: OUTPUT«(3 0 0 7 1)» | ||
n0tjack | heh! | ||
[Coke] | .tell rindolf - oh, because your copy of the problem statement is missing formatting. | ||
yoleaux | [Coke]: I'll pass your message to rindolf. | ||
n0tjack | m: say :8[3,0,0,7,1].base(8).comb; | ||
camelia | rakudo-moar 5d83db: OUTPUT«(3 0 0 7 1)» | ||
n0tjack | I'm never 100% sure when I need to parenthesize the LHA to . but it doesn't seem mandatory very often | 20:35 | |
TimToady | well, terms are the only thing tighter than methods and method-like postfixes | 20:36 | |
n0tjack | terms as in pi, i, e, * ? | 20:37 | |
TimToady | or :8[3,0,0,7,1] | ||
20:37
virtualsue left
|
|||
n0tjack | yeah I'm not sure whether :8[3, 0, 0,7, 1] is atomic or composite syntax | 20:37 | |
to me it lookes like a weird Pair followed by an Array | 20:38 | ||
PerlJam | it's covalent | ||
n0tjack | Can you elaborate on that? In J terms, covalent means "can take one argument, or two arguments" | ||
TimToady | even if it were a pair, pair terms include their brackets | ||
I think it was a chemistry joke | |||
n0tjack | ah, got it | 20:39 | |
PerlJam | it was (sorta) | ||
skids | m: say 12345.polymod(8 xx *).reverse | ||
camelia | rakudo-moar 5d83db: OUTPUT«(3 0 0 7 1)» | ||
n0tjack | m: say :8[1;2;3]; # multidim indexing | 20:40 | |
camelia | rakudo-moar 5d83db: OUTPUT«83» | ||
n0tjack | whoa! | ||
someone needs to explain that one to me | |||
TimToady | m: say [1;2;3] | ||
camelia | rakudo-moar 5d83db: OUTPUT«[1 2 3]» | ||
TimToady | it's just taking them as commas there, I suspect | ||
it's not a subscript | |||
n0tjack | m: say :8[1;*;3]; #... | ||
camelia | rakudo-moar 5d83db: OUTPUT«Inf» | ||
TimToady | remember :foo[1,2,3] is really short for foo => [1,2,3] | 20:41 | |
so it's a circumfix in it's parsing | |||
n0tjack | and how does :8 with postcirumfix [1,2,3] produce 83? | ||
TimToady | m: say (*).Num | 20:42 | |
camelia | rakudo-moar 5d83db: OUTPUT«WhateverCode.new» | ||
TimToady | m: say Numeric(*) | ||
camelia | rakudo-moar 5d83db: OUTPUT«Cannot invoke this object in block <unit> at /tmp/rcY42ElJbv:1» | ||
TimToady | m: say Num(*) | ||
camelia | rakudo-moar 5d83db: OUTPUT«Cannot find method 'Num' in block <unit> at /tmp/brpvyH0LHf:1» | ||
TimToady | hmm | 20:43 | |
20:43
araujo_ joined
|
|||
TimToady | some in there * is numifying to Inf | 20:43 | |
*somewhere | |||
haven't decided yet whether I like that... | |||
n0tjack | what is being expressed by :number[some array of ints] ? | ||
as opposed to the normal base syntax | 20:44 | ||
skids | m: say 3 * 1 + 2 * 8 + 1 * 64 | ||
camelia | rakudo-moar 5d83db: OUTPUT«83» | ||
PerlJam | normal? | ||
TimToady | it's just an escape valve for bases larger than 36 | ||
n0tjack | skids: I see, it's the same as the normal syntax | ||
TimToady | m: say :60[24,59,59] | ||
camelia | rakudo-moar 5d83db: OUTPUT«89999» | ||
TimToady | m: say :60[23,59,59] | ||
camelia | rakudo-moar 5d83db: OUTPUT«86399» | ||
n0tjack | TimToady: No, I got that, I was confused by the , means ; thing | ||
uh, ; means , thing | |||
we have a builtin for that kinda calculation too (spelled #. and its inverse #:) | 20:45 | ||
TimToady | we used to turn those into LoLs, but I'm not sure why ; is turning into , these days | ||
n0tjack | S99: LoL | ||
TimToady | we should probably reserve ; in those situations for more monadish notations | 20:46 | |
m: say (1,2;3).perl | |||
camelia | rakudo-moar 5d83db: OUTPUT«((1, 2), 3)» | ||
20:46
araujo left
|
|||
n0tjack | that notation makes sense to me | 20:46 | |
TimToady | m: say [1,2; 3].perl | ||
camelia | rakudo-moar 5d83db: OUTPUT«[(1, 2), 3]» | ||
n0tjack | esp. as it pertains to multidim indexing | 20:47 | |
TimToady | m: say [1;2;3].perl | ||
camelia | rakudo-moar 5d83db: OUTPUT«[1, 2, 3]» | ||
TimToady | it's proably just doing single-arg rule on each dimension there | ||
n0tjack | m: say [(1);(2);(3)].perl; | ||
camelia | rakudo-moar 5d83db: OUTPUT«[1, 2, 3]» | ||
TimToady | m: say [1,;2,;3,].perl | ||
camelia | rakudo-moar 5d83db: OUTPUT«[(1,), (2,), (3,)]» | ||
TimToady | but again, that's an array, not a subscript | ||
skids | m: say :8[1;1,1;1,1,1] | 20:48 | |
camelia | rakudo-moar 5d83db: OUTPUT«83» | ||
n0tjack | yeah but notionally the selection of indices along each dimension is itself an array | ||
so having the notation for LoLs and multidim subscripts be similar is sensible | |||
TimToady | they don't really map 1:1 though since slicing adds a dimension in subscripting | 20:49 | |
n0tjack | [1..2;3..4] can be thought of as a LoL or a 2D array slice | ||
rows 1 and 2, cols 3 and 4 | 20:50 | ||
PerlJam | n0tjack: Do you use J in your day to day life? | ||
n0tjack | yes | ||
every day | |||
20:50
BenGoldberg joined
|
|||
PerlJam | for what exactly? | 20:50 | |
dalek | kudo/curli: f293126 | (Stefan Seifert)++ | src/core/CompUnit (4 files): Add $.repo attribute to CompUnit Start morphing CURLI and CURLF into CompUnit::Repositorys. |
||
n0tjack | everything you use perl for, I imagine | ||
mostly one-off scripts to accomplish a particular task | |||
PerlJam | more math oriented or no? | 20:51 | |
n0tjack | As a concrete example: I'm in sales, and I sell a lot of heavy/complex software to Wall St firms. We often to proofs-of-concept, where the customer sends us some data, adn we get it into the product to show them how they could use it | ||
today, I took a bunch of order and trade files from a customer, parse them, interpolated some series, and converted them into the neccesary format | 20:52 | ||
wow my spelling is horrible | 20:53 | ||
vendethiel | |||
PerlJam | yes, that sounds exactly what i would use Perl for. All your mentions of J though remind me of PDL or R | ||
n0tjack | vendethiel: I am indeed! Though I'm patiently waiting for shaped arrays before I progress with it. | 20:54 | |
vendethiel | that makes sense :-) | ||
n0tjack | PerlJam: It is more R-like. R's syntax is an abomination, but it's much more popular and you can find an off-the-shelf script for anything | 20:55 | |
20:55
spider-mario left
|
|||
vendethiel | n0tjack: isn't J code terser than R code? | 20:55 | |
TimToady | Both of them are pretty terse; I can see where doing some of those things in a language like Perl 6 would make the non-J/R people you show the programs to think they know what's going on a little more than J or R would :) | 20:56 | |
because we've tried very hard to make different things look different | |||
n0tjack | vendethiel: Ɐlang is-terser(J, lang) | 20:57 | |
20:57
Begi119 joined
|
|||
TimToady | yes, J usually wins the Shortest Entry Award on rosettacode :) | 20:57 | |
vendethiel | *g* | ||
the best award of them all ;-) | |||
TimToady | and Perl 6 is often 2nd | ||
n0tjack | TimToady: Yeah, J is pretty impenetrable from an outsider's perspective. Not too dissimilar to regexen. But that doesn't bother me. Chinese looks impenetrable to me too, but over a billion people seem to get some use out of it :) | 20:58 | |
TimToady: Welll... the RC thing is probably my own personal fault :) | |||
20:58
bjz joined,
xfix left
|
|||
vendethiel | n0tjack++ # Rosetta Code Driver Development everywhere | 20:58 | |
n0tjack: were one to pick up J; where would one start? | 20:59 | ||
s:2nd/one/they/ | |||
20:59
bjz_ left
|
|||
n0tjack | vendethiel: our answer to #perl6 is the J Forum mailing lists. | 20:59 | |
vendethiel: if you know C or C-like languages, Henry Rich's J for C Programmers is a great bootstrap | 21:00 | ||
www.jsoftware.com/help/jforc/contents.htm | |||
PerlJam | n0tjack++ | ||
vendethiel | n0tjack: thanks :-). will read that | ||
PerlJam | me too | ||
21:01
confused_as_usal joined
|
|||
PerlJam | n0tjack: you may have just instigated some new J programmers :) | 21:01 | |
21:01
skids left,
^elyse^ joined
|
|||
confused_as_usal | multi method pairs(Set:D:) | 21:01 | |
Could somebody explain what's the colon after Set:D: does | 21:02 | ||
vendethiel | confused_as_usal: defines the invocant (self, or this in other languages) | ||
which means self is a defined Set (as given by Set.new, or set()) | 21:03 | ||
n0tjack | PerlJam: I wonder if that gets me any extra years in Purgatory :) | ||
confused_as_usal | I get the defined part which is Set:D | ||
21:04
Begi119 left
|
|||
confused_as_usal | but why there is another ":" after that tacked on | 21:04 | |
vendethiel | confused_as_usal: because it's not a parameter -- it's a constraint on self | ||
PerlJam | confused_as_usal: to say that the first arg is the invocant | ||
21:04
kaare_ left
|
|||
vendethiel | m: $a.foo(); <- $a is what's before said colon | 21:04 | |
camelia | rakudo-moar 5d83db: OUTPUT«5===SORRY!5=== Error while compiling /tmp/bQyUi47YeUVariable '$a' is not declaredat /tmp/bQyUi47YeU:1------> 3<BOL>7⏏5$a.foo(); <- $a is what's before said co» | ||
confused_as_usal | so, every method must start with this invocant? | 21:07 | |
PerlJam | no | ||
confused_as_usal | if not, would it then become a class method? | 21:08 | |
PerlJam | nope | ||
confused_as_usal | appreciate if you point me to any doc I can read.. thx | 21:09 | |
PerlJam | confused_as_usal: methods /may/ list constraints on the invocant as the first parameter | ||
gfldex | m: class C { method foo($c where $c ~~ C:){ say 'I\'m fooing!' } }; C.new.foo; | ||
camelia | rakudo-moar 5d83db: OUTPUT«I'm fooing!» | ||
confused_as_usal | so, if unconstrained, there is no need to mention it? | ||
PerlJam | confused_as_usal: if you omit the invocant constraint, you still get an invocant, but it's called "self" instead of $whatever-you-define | 21:10 | |
confused_as_usal: usually you list the invocant if you want to rename it or constrain it | |||
s/rename/give it an explicit name/ | |||
21:11
regreg left
|
|||
confused_as_usal | cool, that makes sense now.. thanks | 21:11 | |
PerlJam | confused_as_usal: but you can also end up with some weird stuff like class A { }; class B { method m(A:D $self) { } } | ||
n0tjack | m: #`(this is cool comment syntax I'd never noticed before) | 21:12 | |
camelia | ( no output ) | ||
PerlJam | er, with the other colon after $self | ||
21:15
espadrine_ joined
|
|||
tony-o | grammar tracer borken :-( | 21:21 | |
21:23
Ben_Goldberg joined
21:24
BenGoldberg left
21:30
zakharyas left
|
|||
Ulti | pull-one gen/moar/m-CORE.setting:2926 is mega slow for the following code my @a = (^1000000).map({("hello")}); | 21:31 | |
tony-o | .tell jnthn i've submitted a PR for Grammar::Debugger to fix Grammar::Tracer for most recent rakudo build | ||
yoleaux | tony-o: I'll pass your message to jnthn. | ||
Ulti | takes up 60% of the runtime which on my laptop is 6s | ||
mattoates.co.uk/files/perl6/mapmill...#/routines | 21:32 | ||
21:32
_28_ria joined
|
|||
lizmat | decommute& | 21:34 | |
21:34
lizmat left
21:35
mst left,
mst joined
21:36
integral left
21:38
n0tjack left
21:46
^elyse^ left,
bjz left
21:50
llfourn joined
21:56
llfourn left
22:02
TEttinger joined
22:07
vendethiel left,
confused_as_usal left
22:08
tokuhirom_ joined
22:16
eliasr joined
22:20
Sgeo__ joined
22:22
Sgeo_ left
22:23
tokuhiro_ joined
22:24
telex left
22:26
telex joined
22:28
tokuhiro_ left,
firstdayonthejob left
22:44
[Sno] left
|
|||
flussence | m: my $c = “{say ‘hi’}”; /<$c>/ # arbitrary string execution with no EVAL in sight, something to pay attention to | 22:49 | |
camelia | rakudo-moar 5d83db: OUTPUT«hiMethod 'match' not found for invocant of class 'Any' in block <unit> at /tmp/na66lpgcv7:1» | ||
22:51
Zoffix left
22:53
abaugher joined
|
|||
RabidGravy | m: $_ = 'foo'; my $c = “{say ‘hi’}”; /<$c>/ | 22:54 | |
camelia | rakudo-moar 5d83db: OUTPUT«hi» | ||
flussence | (1 char shorter than .EVAL too!) | 22:56 | |
22:57
raiph left
|
|||
RabidGravy | m: $_ = 'foo'; my $b = “{say ‘hi’}”; my $c = $b; /<$c>/ | 22:58 | |
camelia | rakudo-moar 5d83db: OUTPUT«hi» | ||
RabidGravy | m: $_ = 'foo'; my $b = “{say ‘hi’}”; my $c = $b; | ||
camelia | rakudo-moar 5d83db: OUTPUT«hi» | ||
RabidGravy | m: $_ = 'foo'; my $b = “{say ‘hi’}”; | ||
camelia | rakudo-moar 5d83db: OUTPUT«hi» | ||
flussence | hm, maybe I should've used single outer quotes... | ||
RabidGravy | m: my $b = “{say ‘hi’}”; | 22:59 | |
camelia | rakudo-moar 5d83db: OUTPUT«hi» | ||
flussence | m: my $b = '{say “hi”}'; 'foo' ~~ /<$b>/ | ||
camelia | rakudo-moar 5d83db: OUTPUT«hi» | ||
RabidGravy | ah | ||
23:00
nick25 joined
|
|||
flussence | maybe rx// needs to borrow some of the q:qcv{} modifiers... or... | 23:01 | |
m: my $b = '{say “hi”}'; 'foo' ~~ rx'<$b>' | |||
camelia | rakudo-moar 5d83db: OUTPUT«hi» | ||
flussence | looks like there's no way to do safe-ish interpolation there. | 23:02 | |
23:02
boggard left,
boggard joined
|
|||
nick25 | Hi! Why are parentheses kept mandatory around the signature (parameter list) of functions definitions? Couldn't this requirement be relaxed to be in line with other places of the language where parentheses are optional, e.g. w.r.t. if-statements, "pointy blocks", function calls? At first glance, this looks syntactically plausible to me as well: (*) sub add $x, $y { $x + $y; }. Are there technical/syntactical reasons behind this | 23:03 | |
requirement? | |||
RabidGravy | flussence, I'd go bug on that, I can see why one might want to if I squint at it, but it should require some flag | 23:04 | |
grondilu | what could I put in $bar so that f is called with no argument? f($test ?? $foo !! $bar) | 23:05 | |
RabidGravy | Empty? | ||
Nil? | 23:06 | ||
grondilu | m: sub f($a?) { say $a.perl }; f(Empty) | ||
camelia | rakudo-moar 5d83db: OUTPUT«$()» | ||
RabidGravy | one of those things | ||
grondilu | m: sub f($a?) { say $a.perl }; f(Nil) | ||
camelia | rakudo-moar 5d83db: OUTPUT«Nil» | ||
grondilu | m: class Foo {}; say Foo.new: Empty | ||
camelia | rakudo-moar 5d83db: OUTPUT«Default constructor for 'Foo' only takes named arguments in block <unit> at /tmp/QasFhCv99F:1» | ||
flussence | m: multi sub f() { say False }; multi sub f($a) { say True }; f(Empty); f(Nil); | 23:07 | |
camelia | rakudo-moar 5d83db: OUTPUT«TrueTrue» | ||
flussence | m: multi sub f() { say False }; multi sub f($a) { say True }; my $bar = (); f($bar); | ||
camelia | rakudo-moar 5d83db: OUTPUT«True» | ||
RabidGravy | so nothing | ||
flussence | m: multi sub f() { say False }; multi sub f($a) { say True }; my $bar = slip(); f($bar); | 23:08 | |
camelia | rakudo-moar 5d83db: OUTPUT«True» | ||
23:08
raiph joined
|
|||
flussence | kinda hard... you could check for definedness in the signature instead | 23:08 | |
grondilu | the thing is I wanted to factorize Foo.new in an expression like $some-arg ?? Foo.new($some-arg) !! Foo.new() | 23:09 | |
23:10
espadrine_ left,
khw joined
|
|||
grondilu | and write Foo.new: $some-arg ?? $some-arg !! $something-corresponding-to-no-arg | 23:10 | |
flussence | m: multi sub f() { say False }; multi sub f($a) { say True }; my $bar = Empty; f($_ ?? 'arg' !! |$bar) for True, False; | ||
camelia | rakudo-moar 5d83db: OUTPUT«TrueTrue» | ||
flussence | m: multi sub f() { say False }; multi sub f($a) { say True }; my $bar = Empty; f |($_ ?? 'arg' !! $bar) for True, False; | 23:11 | |
camelia | rakudo-moar 5d83db: OUTPUT«TrueFalse» | ||
23:11
nick25 left
|
|||
flussence | there you go, just cheat a little :) | 23:11 | |
grondilu | m: multi sub f() { say False }; multi sub f($a) { say True }; f |($_ ?? 'arg' !! Empty) for True, False; | 23:12 | |
camelia | rakudo-moar 5d83db: OUTPUT«TrueFalse» | ||
grondilu | flussence++ | ||
m: class A {}; A.new: |Empty | |||
camelia | ( no output ) | ||
grondilu | nice | ||
flussence | «f |($_ with $some-arg)» may work too | 23:13 | |
grondilu | I no nothing about this 'with' keyword. Need to get up-to-date I guess. | 23:14 | |
flussence | s/with/for/ | ||
"with" is like "if" but tests .defined instead of .so | |||
grondilu | ok | ||
flussence | it gets a bit hard to remember all the if/given/for/with details sometimes :) | 23:15 | |
but yeah, I'm pretty sure one of those should work there. | |||
m: say $_ if 5 | |||
camelia | rakudo-moar 5d83db: OUTPUT«(Any)» | ||
flussence | kinda odd that the others topicalize but that one doesn't. | 23:16 | |
grondilu | it's in S04 I suppose? | ||
23:19
raiph left
|
|||
grondilu fount it in S04 indeed | 23:19 | ||
dalek | osystem: 91c6fc1 | (Andy Weidenbaum)++ | META.list: add Digest::xxHash |
23:21 | |
osystem: 9aeae98 | RabidGravy++ | META.list: Merge pull request #83 from atweiden/digest-xxhash add Digest::xxHash |
|||
Ben_Goldberg | m: multi sub f() { say False }; multi sub f($a) { say True }; my $bar = slip(); f(|$bar); | 23:23 | |
camelia | rakudo-moar 5d83db: OUTPUT«False» | ||
RabidGravy | ooh didn't realise it was tomorrow, catch you all later | 23:24 | |
Ben_Goldberg | m: multi sub f() { say False }; multi sub f($a) { say True }; my $bar = slip(); f(|[]); | ||
camelia | rakudo-moar 5d83db: OUTPUT«False» | ||
Ben_Goldberg | m: multi sub f() { say False }; multi sub f($a) { say True }; f(|Slip); | ||
camelia | rakudo-moar 5d83db: OUTPUT«Cannot look up attributes in a type object in block <unit> at /tmp/DM5HBD7QhR:1» | ||
Ben_Goldberg | m: multi sub f() { say False }; multi sub f($a) { say True }; f(|Slip.new); | ||
camelia | rakudo-moar 5d83db: OUTPUT«False» | ||
Ben_Goldberg | m: multi sub f() { say False }; multi sub f($a) { say True }; f(|{}); | ||
camelia | rakudo-moar 5d83db: OUTPUT«False» | ||
23:27
lizmat joined,
[Sno] joined
23:29
RabidGravy left
23:42
Peter_R left
23:47
BenGoldberg joined
23:49
Ben_Goldberg left
23:55
skids joined
|