»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend! Set by moritz on 22 December 2015. |
|||
00:05
webstrand left
00:06
webstrand_ joined
00:12
huggable joined
00:21
ssotka left
|
|||
stevieb | reading through some perl6 test suite to learn as I write my own, and am wondering if the line in the following link should say "can call public method from outside the class". I just am trying to confirm what I'm trying to grasp. github.com/perl6/roast/blob/master...vate.t#L17 | 00:21 | |
Zoffix | stevieb, the test calls public `public` that in turn calls a private method from within that class, which is what the test tests | 00:23 | |
The call is on line 13 | |||
stevieb | d'oh! a case of not paying enough attention :) | 00:24 | |
so effectively, it's just ensuring that the private method can and is being called, by using a public method. Thanks Zoffix | 00:25 | ||
00:38
AlexDaniel joined
|
|||
tbrowder | 'ello p6 people, just attended, at YAPC::NA::2016, a day full of damian waxing wonderfully on p6 trans paradigm programming, and he got us all excited about p6 and p6 grammars | 00:42 | |
llfourn | tbrowder: can't wait for vid | 00:43 | |
Zoffix | llfourn, won't be. It's a paid course. | ||
llfourn | oh =( | ||
Zoffix | He'll be in Toronto for Jun 27 and 28. Maybe you can attend :) | 00:44 | |
tbrowder | so my question for the experts here is: how can I use p6 grammar to parse a code block and print out a parse tree (a simple example needed)? Damian showed an example of doing such with an example grammar, but how can we do the same thing with a chunk of p6 code? | 00:45 | |
llfourn | I guess no vid there either? | ||
I'm in australia so It's tricky | |||
Zoffix | llfourn, there will be and you can view live through google hangout. | 00:46 | |
llfourn | oh sweet | ||
llfourn marks the calendar | |||
Zoffix | llfourn, this is the first one: www.meetup.com/Toronto-Perl-Mongers...231418224/ | ||
And the other one: www.meetup.com/Toronto-Perl-Mongers...231418278/ | 00:47 | ||
llfourn | Zoffix: cheers! | ||
tbrowder | I think we need to use nqp, but I'm not positive about it | 00:49 | |
llfourn | tbrowder: you can do perl6 --target=parse to "print it out" | ||
but if you want to get the nqp match object for actually using in code there is a way | 00:50 | ||
but it's slightly more involved | |||
tbrowder | that's what I want (read: "need to do for debugging p6 grammar") | 00:51 | |
Zoffix | tbrowder, there's Grammar::Debugger | ||
llfourn | ^^ it's *very* useful | 00:52 | |
Zoffix | tbrowder, | ||
tbrowder, github.com/jnthn/grammar-debugger | |||
tbrowder, inside of it is Grammar::Tracer that's neat | |||
tbrowder | thanks, I'll try that... | ||
llfourn | tbrowder: oh did you mean you need it for debugging *the* Perl 6 grammar or *a* grammar written in Perl 6? | 00:53 | |
00:56
Zero_Dogg left,
Zero_Dogg joined
|
|||
tbrowder | ref: damian: I (and others) asked him about p6 best practices and his basic reply was he hasn't written enough code to determine that yet, but I was interested specifically in how he call a sub in 06 compared to p5 and he now seems to favor the list approach versus parens (opposite to p5 because of the vagaries of p5); specifically he likes the call using | 00:58 | |
the list approach this way for sub foo (which I'm not sure I've seen documented), e.g., "foo: arg1, arg2;" (note the colon introducing the args) | |||
llfourn: *the* Perl 6 grammar | 00:59 | ||
Zoffix | m: sub foo { say $^a, $^b }; foo: 2, 3 | 01:00 | |
camelia | rakudo-moar 1d93ad: OUTPUT«WARNINGS for <tmp>:Useless use of constant integer 2 in sink context (lines 1, 1)Useless use of constant integer 3 in sink context (lines 1, 1)» | ||
stevieb | m: sub foo($x){$x.say}; foo: 1; | ||
camelia | rakudo-moar 1d93ad: OUTPUT«WARNINGS for <tmp>:Useless use of constant integer 1 in sink context (line 1)» | ||
llfourn | it's only for Object.foo: | ||
Zoffix | tbrowder, ? are you sure he wasn't talking about methods and not subs | ||
stevieb | Zoffix: one line above your question | 01:01 | |
tbrowder | hm, method for sure, but I thought subs, too (but I'm not a great listener) | ||
Zoffix | :) | 01:02 | |
stevieb | m: class X{method foo($x){$x.say}}; my $x=X; $x.foo: 1; | ||
camelia | rakudo-moar 1d93ad: OUTPUT«1» | ||
01:03
Zoffix left
|
|||
tbrowder | m: sub foo ($x) { say $x } foo: 1 | 01:05 | |
camelia | rakudo-moar 1d93ad: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Strange text after block (missing semicolon or comma?)at <tmp>:1------> 3sub foo ($x) { say $x }7⏏5 foo: 1 expecting any of: infix infix stopper statement end…» | ||
tbrowder | m: sub foo ($x) { say $x } ;foo: 1 | ||
camelia | rakudo-moar 1d93ad: OUTPUT«WARNINGS for <tmp>:Useless use of constant integer 1 in sink context (line 1)» | ||
tbrowder | m: sub foo ($x) { say $x } ;foo: 1; | ||
camelia | rakudo-moar 1d93ad: OUTPUT«WARNINGS for <tmp>:Useless use of constant integer 1 in sink context (line 1)» | ||
01:06
Zoffix joined
|
|||
stevieb | tbrowder: only works on an object: | 01:06 | |
tbrowder | hm, i guess i was asleep | ||
stevieb | m: class X{method foo($x){$x.say}}; my $x=X; $x.foo: 1; | ||
camelia | rakudo-moar 1d93ad: OUTPUT«1» | ||
Zoffix | m: class X{method foo($x){$x.say}}; my $x=X; foo $x: 1; | 01:07 | |
camelia | rakudo-moar 1d93ad: OUTPUT«1» | ||
Zoffix | Oh! | ||
For the first time, that usage clicked for me. | |||
Doesn't look odd and weird anymore :) | |||
method meth (obj: param) -> meth obj: param | 01:08 | ||
01:08
molaf left
|
|||
stevieb | I see how that works... took me a minute | 01:09 | |
tbrowder | well, in my defense he was mainly using methods heavily, and, as usual, i assumed too much | ||
01:09
Util_ is now known as Util
|
|||
tbrowder | Util was there, and he was much smarter and more alert | 01:10 | |
01:10
webstrand joined
|
|||
llfourn | tbrowder: sorry I can't remember how to get a parse tree from Perl6::Gramamr, though I know it's possible. | 01:10 | |
m: use nqp; my $comp = nqp::getcomp("perl6"); note $comp.compile("say q|hello world|",:target<parse>) # semething lke this but must be missing a step | 01:12 | ||
camelia | rakudo-moar 1d93ad: OUTPUT«===SORRY!===compunitmainline requires an MVMCompUnit» | ||
01:13
webstrand_ left
|
|||
tbrowder | I have a couple more classes with damian and I'll try to be more exacting | 01:14 | |
llfourn | does damian hack much on nqp though? | ||
m: use nqp; my $comp := nqp::getcomp("perl6"); my $p := $comp.eval("say q|hello world|",:target<parse>); note $p.dump # I DID IT! | 01:16 | ||
camelia | rakudo-moar 1d93ad: OUTPUT«- statementlist: say q|hello world| - statement: 1 matches - EXPR: say q|hello world| - longname: say - name: say - identifier: say - args: q|hello world| - arglist: q|hello world| - EX…» | ||
llfourn | tbrowder: ^^ | ||
tbrowder | hm, I just tried with perl6 repl and this worked: | ||
m: sub foo($x){say $x}; foo: 3; | |||
camelia | rakudo-moar 1d93ad: OUTPUT«WARNINGS for <tmp>:Useless use of constant integer 3 in sink context (line 1)» | ||
tbrowder | so what's going on??? | ||
01:17
webstrand left
|
|||
llfourn | doesn't work for me? | 01:17 | |
01:17
webstrand_ joined
|
|||
tbrowder | what rakudo? | 01:17 | |
geekosaur | : is only used with methods, not subs | ||
you have in your example a label "foo:" and a value in sink context (which produces a warning) | |||
llfourn | well camelia is usually the latest? | ||
tbrowder | got to go to bed, but this is interesting; would appreciate a simple example of testing p6 grammar, g'night! | 01:19 | |
llfourn | tbrowder: night | 01:20 | |
01:21
molaf joined
01:28
sherwool left
01:29
FROGGS left
01:41
webstrand joined
01:42
FROGGS joined
01:43
webstrand_ left
01:46
ilbot3 left
01:47
webstrand left,
webstrand_ joined,
ilbot3 joined
01:49
Xliff left,
Xliff joined
01:58
Khisanth left
02:10
webstrand_ left
02:11
Khisanth joined
02:12
webstrand joined
02:14
ssotka joined
02:22
noganex joined
02:25
noganex_ left
02:30
webstrand left
02:33
webstrand joined
02:34
nchambers joined
02:35
AlexDaniel left
02:47
webstrand left
02:48
kid51 left
03:32
skids left
|
|||
Util | geekosaur: ": is only used with methods, not subs" is _almost_ true. | 03:36 | |
geekosaur, tbrowder, llfourn: See "infix:<:>, the invocant marker" at design.perl6.org/S03.html#Comma_ope...precedence | |||
Specifically: "The special form is recognized only after a dotty method call, or after the right parenthesis of a method or function call." | 03:37 | ||
Util returns to slide making (sliding?) | |||
llfourn | o.o | ||
m: my @a; @a.push(): 4,5,6; say @a; | 03:38 | ||
camelia | rakudo-moar 1d93ad: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Confusedat <tmp>:1------> 3my @a; @a.push():7⏏5 4,5,6; say @a; expecting any of: colon pair» | ||
llfourn | m: my @a; push(@a): 4,5,6; say @a; | ||
camelia | rakudo-moar 1d93ad: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Confusedat <tmp>:1------> 3my @a; push(@a):7⏏5 4,5,6; say @a; expecting any of: colon pair» | ||
llfourn | m: my @a; push(@a, 1,2,3): 4,5,6; say @a; | 03:39 | |
camelia | rakudo-moar 1d93ad: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Confusedat <tmp>:1------> 3my @a; push(@a, 1,2,3):7⏏5 4,5,6; say @a; expecting any of: colon pair» | ||
llfourn | seems like that's either NYI or the idea was dropped? | ||
03:41
colomon left,
colomon joined
|
|||
Util | llfourn: Hmmm. Good tests; I think I agree (NYI|dropped). Finding it in the doc is as far as I can take it tonight. | 03:41 | |
03:50
rgrinberg left
03:57
rgrinberg joined
04:05
Cabanossi left
|
|||
Zoffix | Is there a way to use a variable for the base with the :16('Str') notation? | 04:07 | |
m: $_ = '36'; say :"$_"('FIZZ').base: 35 | 04:08 | ||
camelia | rakudo-moar 1d93ad: OUTPUT«5===SORRY!5===Argument to "say" seems to be malformedat <tmp>:1------> 3$_ = '36'; say7⏏5 :"$_"('FIZZ').base: 35Confusedat <tmp>:1------> 3$_ = '36'; say :7⏏5"$_"('FIZZ').base: 35 expecting any of: colon pa…» | ||
04:08
Cabanossi joined
04:11
huggable left
04:12
huggable joined
04:14
a3r0_ is now known as a3r0
04:17
rgrinberg left
|
|||
Zoffix | m: say 32..2 | 04:21 | |
camelia | rakudo-moar 1d93ad: OUTPUT«32..2» | ||
Zoffix | m: say 32…2 | ||
camelia | rakudo-moar 1d93ad: OUTPUT«(32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2)» | ||
Zoffix | <3 Perl 6 | ||
04:25
TEttinger joined
04:32
BenGoldberg left
|
|||
Zoffix | m: 5.base: 1 | 04:41 | |
camelia | rakudo-moar 1d93ad: OUTPUT«base argument to base out of range. Is: 1, should be in 2..36 in block <unit> at <tmp> line 1Actually thrown at: in block <unit> at <tmp> line 1» | ||
Zoffix | Disserpointing! :) | ||
04:44
khw left
|
|||
Zoffix | m: use MONKEY-TYPING; augment class Int { multi method base(1) { '0' x self } }; say 5.base: 1 | 04:45 | |
camelia | rakudo-moar 1d93ad: OUTPUT«00000» | ||
Zoffix | \o/ | ||
m: gist.github.com/zoffixznet/be1ba87...5cacc96bdb | 04:47 | ||
camelia | rakudo-moar 1d93ad: OUTPUT«This representation (Null) does not support elems (for type VMNull) in any at /home/camelia/rakudo-m-inst-1/share/perl6/runtime/CORE.setting.moarvm line 1 in method base at <tmp> line 2 in block at <tmp> line 7 in block at <tmp> line 6…» | 04:48 | |
Zoffix | ¯\_(ツ)_/¯ | ||
m: say "0" x :36("FIZZBUZZ") | 04:52 | ||
camelia | rakudo-moar 1d93ad: OUTPUT«repeat count > 1073741824 arbitrarily unsupported... in block <unit> at <tmp> line 1» | ||
Zoffix | probably 'cause of that | ||
1am :'( gotta wake up at 6:30am. Gonna look at this writing and think self stupid in the morning lol :) | |||
llfourn | what's the idomatic way to check that every element of an array is an Int? | 04:54 | |
m: sub foo(@a where { .all ~~ Int }) { }; foo([1,2,3]) # works | 04:58 | ||
camelia | ( no output ) | ||
llfourn | m: sub foo(@a where *.all ~~ Int) { }; foo([1,2,3]) # doesn't | ||
camelia | rakudo-moar 1d93ad: OUTPUT«Constraint type check failed for parameter '@a' in sub foo at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
Xliff | m: sub foo(@a where * ~~ Int) { }; foo([1,2,3]) | 05:16 | |
camelia | rakudo-moar 1d93ad: OUTPUT«Constraint type check failed for parameter '@a' in sub foo at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
Xliff | ¯\_(ツ)_/¯ | 05:17 | |
05:27
_28_ria joined
05:43
domidumont joined
05:47
lizmat joined
05:48
woolfy joined,
domidumont left
|
|||
Util | llfourn: Someday, it will be `sub foo( Int @a ) {...}` . The failing today is that [1,2,3] is not automatically an Array of Int. | 05:52 | |
m: sub foo(Int @a) { say @a.perl; }; foo([1,2,3]); | 05:53 | ||
camelia | rakudo-moar 1d93ad: OUTPUT«Type check failed in binding @a; expected Positional[Int] but got Array ($[1, 2, 3]) in sub foo at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
Util | m:sub foo(Int @a) { say @a.perl; }; my Array[Int] $z .= new: 1, 2, 3; foo($z); | ||
m: sub foo(Int @a) { say @a.perl; }; my Array[Int] $z .= new: 1, 2, 3; foo($z); | |||
camelia | rakudo-moar 1d93ad: OUTPUT«Array[Int].new(1, 2, 3)» | ||
Util | m: sub foo(Int @a) { say @a.perl; }; my Array[Int] $z .= new: 1, 2, 3.5; foo($z); | ||
camelia | rakudo-moar 1d93ad: OUTPUT«Type check failed in assignment to ; expected Int but got Rat (3.5) in block <unit> at <tmp> line 1» | ||
Util | In the meantime, your .all solution looks good. | ||
llfourn | Util: there has been discussion of making [1,2,3] automatically an array of Int? | ||
06:00
FROGGS left
|
|||
psch | i don't think we can do that | 06:02 | |
types are nominal, after all | |||
llfourn | right. | ||
psch | which i understand as "you have to tell the compiler what type you want here, or it'll be Any" | 06:03 | |
well, in this instance, and practically speaking only | |||
llfourn | m: say [1,2,3] ~~ Array[Int] | 06:04 | |
camelia | rakudo-moar 1d93ad: OUTPUT«False» | ||
llfourn | I feel like there should be a way of easily creating a runtime test against Array[Int] | ||
like shorthand for say [1,2,3] ~~ subset RuntimeArrayIntTest of Array where { .all ~~ Int } | 06:05 | ||
Array[Int].subset #maybe? | 06:06 | ||
06:06
jjido joined
|
|||
psch | but [1,2,3] is no Array[Int]. it's Array[Any] | 06:06 | |
that's kind of the point, really :) | |||
llfourn | yes but I want a quick syntax to create the corresponding runtime check | ||
psch | what's wrong about a sub (or two multis) that returns True or False if that check passes? | 06:07 | |
stuff it into some List::Util module if you need it that often | |||
llfourn | maybe a module is the solution | ||
psch | and like, [1,2,3].all({ $_ ~~ Int }) is shorter and does the same | ||
llfourn | yeah but it is ugly | 06:08 | |
06:08
jjido left
|
|||
psch doesn't think so | 06:08 | ||
llfourn | doing foo( @a where { .all ~~ Int } ); all the time seems wrong | ||
psch | well, alternative you can declare @a as Int @a | 06:09 | |
llfourn | well, usually the problem occurs for me in attributes | ||
psch | and create typed arrays when you need them consistenly | ||
+t | |||
06:09
domidumont joined
|
|||
llfourn | right the problem is for attribtues not subs | 06:09 | |
psch | m: class A { has Int @.a }; A.new(a => @ = Array[Int].new(1,2,3)).perl.say | 06:10 | |
camelia | rakudo-moar 1d93ad: OUTPUT«A.new(a => Array[Int].new(1, 2, 3))» | ||
psch | alternatively put the ~~ Int check into BUILD | ||
llfourn | yeah that's what I want to avoid here :) | ||
psch | what? putting it into BUILD? | 06:11 | |
llfourn | writing runtime type check code | ||
06:11
domidumont left
|
|||
psch | then use types consistenly and force your users to use them as well vOv | 06:11 | |
llfourn | my %h = (:a<1 2 3>); sub (Int :@a) { say @a }.(a => %h<a>) # this roughly approximates the problems I run into | ||
m: my %h = (:a<1 2 3>); sub (Int :@a) { say @a }.(a => %h<a>) # this roughly approximates the problems I run into | |||
camelia | rakudo-moar e3a3d2: OUTPUT«Type check failed in binding @a; expected Positional[Int] but got List ($(IntStr.new(1, "1"),...) in sub at <tmp> line 1 in block <unit> at <tmp> line 1» | ||
06:12
domidumont joined
|
|||
llfourn | I'd rather let my users throw whatever at it and just have runtime checks in some situations. | 06:12 | |
psch | okay, so you want to have runtime checks but don't want to write them yourself..? | ||
llfourn | but I'd like to have a quick way to wip up a runtime check | ||
exactly | |||
psch | i mean, i'm sorry but i really don't see the problem | ||
llfourn | maybe a module is the solution... | 06:13 | |
06:13
jjido joined
|
|||
llfourn | well perl 5 has Type::Tiny | 06:13 | |
psch | i don't see how ~20 chars is not "a quick way to wip (sic) a runtime check" | ||
llfourn | for this purpose | ||
because it's declaritive rather than procedural | |||
psch | i don't think i agree with that | 06:14 | |
llfourn | ok well different preferences then :) | ||
psch | declarative type checks are when you declare (like, in a signature or declarator) the type | ||
checking the content of an under-typed array during e.g. BUILD looks very procedural to me | |||
06:14
Actualeyes left
|
|||
llfourn | yeah so, sub foo(@a where IntArray) { } is nicer than foo(@a where { .all ~~ Int } | 06:15 | |
psch | that i think is preference. they do (depending on IntArray) the same thing | ||
llfourn | that's all I'm saying -- and since it's a common pattern I might write a module to produce corresponding runtime checks for types like Array[Int] | 06:16 | |
psch | in any case, i think, specifically regarding Attributes, a trait might look nice for what you're trying | ||
llfourn | hmm that's an interesting idea.. | 06:17 | |
06:22
firstdayonthejob joined
06:23
domidumont left
06:25
_mg_ joined
|
|||
psch | hm, although moving the trait result to the right spot might be a bit difficult | 06:25 | |
maybe you'd be better of with a different metaclass that gives you that kind of check for all aggregate Attributes | |||
or maybe just a different metaclass for Attributes | 06:26 | ||
llfourn | I think what I really want is parameterized subset. like has Arrayish[Int] $.a; where Arrayish behaves like Array[Int] in Type::Tiny. | 06:27 | |
06:27
ssotka left
06:30
domidumont joined
06:32
mls_ joined
06:33
jjido left
06:36
mls left
06:38
jjido joined
06:41
firstdayonthejob left
06:42
vendethiel- left
06:45
Actualeyes joined
06:52
grondilu joined
|
|||
moritz | Zoffix++ # Rakudo #100 | 07:00 | |
07:02
jjido left
|
|||
masak | good Monday, #perl6 | 07:08 | |
ooh, Zoffix++ # rel | |||
07:12
abraxxa joined
07:13
darutoko joined
|
|||
masak | arnsholt: warm congratulations on the 3-days-old. (4-days-old now, I guess. they grow up so fast!) | 07:15 | |
moritz | ooh, I missed that! arnsholt++ | 07:19 | |
and arnsholt.family++ :-) | |||
07:20
wamba joined
07:21
sno left
07:23
jjido joined
07:27
jjido left
07:30
BenGoldberg joined
07:33
zzzzzzzzz joined
07:44
CQ left
07:51
lizmat left
07:54
lizmat joined
07:55
woolfy left
07:57
woolfy joined,
_28_ria left
|
|||
abraxxa | arnsholt: congratulations as well! | 07:58 | |
08:03
bjz joined
08:04
BenGoldberg left
08:09
cur8or joined
08:11
vytas left,
huggable left
08:12
bjz left,
huggable joined,
dakkar joined
08:13
_28_ria joined
08:14
vytas joined
08:15
brrt joined
08:16
RabidGravy joined
08:25
araujo joined
08:30
jack_rabbit left
08:35
girafe left
08:36
sno joined
08:42
rindolf joined
08:44
bjz joined
08:49
CIAvash joined
08:51
iH2O joined
08:52
iH2O left
08:55
bjz left
08:56
andrewalker joined
08:57
ocbtec joined
08:59
bjz joined,
rkr joined
09:02
donaldh joined
09:04
mls_ is now known as mls
|
|||
arnsholt | Thank you, everyone! =) | 09:06 | |
jnthn | Morning, #perl6 | 09:08 | |
arnsholt: Congrats from me also! :-) | |||
moritz | mornthn | ||
hahainternet | morning all, congratulations arnsholt | 09:09 | |
masak | wow, it took us until 2016 to come up with "mornthn"!? :P | ||
09:09
g4 joined
|
|||
jnthn | Sounds like the kind of sound I make in a morning :P | 09:10 | |
RabidGravy | :) | ||
I'm well into my second coffee and still haven't woken up fully | 09:11 | ||
hahainternet | 1/2 way through my tea :) | ||
09:12
rkr left
|
|||
tadzik | yay, congrats arnsholt! | 09:12 | |
09:13
Zero_Dogg left
09:14
Zero_Dogg joined
09:15
TEttinger left
|
|||
brrt backlogs | 09:17 | ||
congrats arnsholt :-) | 09:18 | ||
arnsholt | masak: jnthn is chief punsmith of #perl6, but I guess he couldn't come up with that particular one himself. So he had to wait for someone else to do it =) | 09:19 | |
masak .oO( eventual pun-ishment ) | 09:20 | ||
09:22
zakharyas joined,
araujo_ joined
09:24
kerframil joined,
kerframil left
09:26
araujo left,
araujo_ left
09:28
rkr joined
09:29
rkr left,
rkr joined
09:36
buharin joined
|
|||
buharin | sup | 09:44 | |
09:45
El_Che joined
|
|||
arnsholt | masak: I tried to make an eventual consistency-based follow-up pun to that, but failed sadly =( | 09:53 | |
09:58
kerframil joined
10:00
zakharyas left
10:03
brrt left
10:05
El_Che left
10:07
El_Che joined
10:23
colomon left,
colomon joined,
jjido joined
10:24
rgrinberg joined
10:25
_mg_ left
10:28
jjido left
10:41
jonadab left
10:46
mr-foobar left
10:49
rkr left
10:50
kid51 joined,
kid51 left,
kid51 joined
10:51
kid51 left,
kid51 joined
10:58
sjoshi joined,
eroux joined
10:59
brrt joined
11:12
Emeric joined
11:14
eugen joined
11:17
xnrand left
11:18
xnrand joined
|
|||
masak | arnsholt: don't worry; you'll succeed... eventually :P | 11:21 | |
11:22
_mg_ joined
11:25
bartolin joined
|
|||
arnsholt | I'll make sure to tell you when I do! | 11:25 | |
masak | push-based ftw | 11:29 | |
11:37
stmuk_ joined
11:39
stmuk left,
rgrinberg left
11:40
xnrand left
11:42
kid51 left,
xnrand joined
11:43
Gothmog_ joined
|
|||
[Coke] | . | 11:53 | |
12:00
brrt left
12:01
sjoshi left
12:10
bjz left
12:11
donaldh left,
huggable left
12:12
huggable joined,
baest_ joined,
bjz joined
12:13
shmibs left,
baest left,
shmibs joined
12:14
yanmc left
12:15
Gruber left,
stmuk_ left,
Grrrr joined,
stmuk_ joined,
llfourn left
12:16
dj_goku left,
llfourn joined,
yanmc joined,
dj_goku joined,
dj_goku left,
dj_goku joined,
mr-foobar joined
12:17
cosarara_ left,
tailgate left
|
|||
dalek | c: b7f2831 | (Tom Browder)++ | doc/Programs/README.md: add info on doc sorting in this directory |
12:17 | |
c: 7e1403a | (Tom Browder)++ | doc/Programs/README.md: Merge pull request #607 from tbrowder/readme-prog-files add info on doc sorting in this directory |
|||
12:18
lizmat left
12:19
lizmat joined
12:20
grondilu left,
gregf_ joined
|
|||
buharin | hey, I am reading last time Perl6 documentation | 12:20 | |
but there are some lacks of information | |||
if I want to fullfill it, I need PR on git? | 12:21 | ||
12:21
cosarara joined
|
|||
lizmat | buharin: yes please | 12:21 | |
12:21
Khisanth left
|
|||
buharin | lizmat: thank you my friend | 12:22 | |
12:22
Woodi left
12:23
grondilu joined
12:24
jferrero joined
|
|||
literal | m: my %a = foo => 5; my %b = bar => 6; say %a »+« %b | 12:24 | |
camelia | rakudo-moar e3a3d2: OUTPUT«Use of uninitialized value of type Any in numeric context in block <unit> at <tmp> line 1Use of uninitialized value of type Any in numeric context in block <unit> at <tmp> line 1{bar => 6, foo => 5}» | ||
literal | those warnings shouldn't happen, right? | 12:25 | |
12:25
kmwallio joined,
cosimo joined
|
|||
gfldex | m: my %a = foo => 5; say (+%a).WHAT | 12:25 | |
camelia | rakudo-moar e3a3d2: OUTPUT«(Int)» | ||
literal | maybe my code example is outdated, I got it from S03 | 12:26 | |
from a section saying that this would give you a union of the keys | |||
12:27
autarch left
12:28
grondilu left,
grondilu joined
12:29
cognominal joined,
autarch joined
12:32
Woodi joined
|
|||
[Coke] | tbrowder: regarding #607 on docs... why *is* it different for this folder? | 12:33 | |
is the goal for them all to be the same at some point? | |||
literal: are you reading S03 via the web or the repo? | 12:34 | ||
12:34
krakan joined
|
|||
[Coke] | (the website has a message at the top) | 12:34 | |
12:43
bhm left,
bhm joined
12:44
lizmat left
12:45
andreoss joined,
mattp_ joined
|
|||
andreoss | is there a variable for a separator character for PATH variable? | 12:46 | |
timotimo | i think there is one | 12:47 | |
literal | [Coke]: yeah, the webpage | 12:48 | |
I did notice the message :) | |||
[Coke] | m: $*DISTRO.path-sep.say | ||
camelia | rakudo-moar e3a3d2: OUTPUT«:» | ||
stevieb | ohhh that's handy! | 12:49 | |
andreoss | [Coke]: thanks, docs are missing this one | ||
masak .oO( ohhh that's ✋y ) | 12:50 | ||
andreoss | is there a function which parses PATH variables? | ||
masak | andreoss: .comb($*DISTRO.path-sep) :) | ||
er, .split, of course | |||
gfldex | m: IO::Spec::Unix.new.dir-sep.say | ||
camelia | rakudo-moar e3a3d2: OUTPUT«/» | ||
gfldex | m: $*SPEC.dir-sep.say | 12:51 | |
camelia | rakudo-moar e3a3d2: OUTPUT«/» | ||
gfldex | there you go | ||
masak | m: IO::Spec::Unix.dir-sep.say | ||
camelia | rakudo-moar e3a3d2: OUTPUT«/» | ||
12:52
sufrostico joined
|
|||
stevieb | m: $*DISTRO.^methods.say | 12:52 | |
camelia | rakudo-moar e3a3d2: OUTPUT«(BUILD cur-sep Str gist release is-win path-sep name auth version signature desc)» | ||
gfldex | there are no spec tests for dir-sep, so consider it an implementation detail | ||
stevieb | a lot of these little tricks are going to significantly lessen the number of lines of code when I port some of my perl5 modules to perl6 :) | 12:54 | |
12:54
eroux left
12:56
donaldh joined
12:58
mspo_ is now known as mspo
12:59
stevieb left
13:01
Sgeo left
13:02
Khisanth joined
13:03
lizmat joined
13:05
Woodi left
13:06
Woodi joined
13:11
abruanese left
13:13
eroux joined,
skids joined
|
|||
dalek | c: 5097c4d | (Zoffix Znet)++ | README.md: Enumerate third party code in LICENSE |
13:16 | |
13:17
buharin left
13:22
Zero_Dogg left
|
|||
dalek | href="https://perl6.org:">perl6.org: 8d84259 | (Zoffix Znet)++ | / (2 files): Add legal |
13:22 | |
13:22
zakharyas joined
13:23
Zero_Dogg joined,
tadzik joined
13:26
brrt joined
13:27
andreoss left,
cpage_ left
|
|||
dalek | href="https://modules.perl6.org:">modules.perl6.org: e02a997 | (Zoffix Znet)++ | README.md: Add legal |
13:30 | |
13:30
iH2O joined
|
|||
dalek | href="https://modules.perl6.org:">modules.perl6.org: fdaa886 | (Zoffix Znet)++ | README.md: Remove duplicate header |
13:35 | |
13:36
abruanese joined
13:38
M-matthew joined,
M-Illandan joined
13:39
zakharyas left
13:44
sufrostico left,
g4 left,
stevieb joined
13:46
andreoss joined
14:00
brrt left
14:01
Sgeo joined
|
|||
stevieb | getting my hands dirty by slowly writing a module and tests. upon running a test, I get ``Package Log::Simple already has a method _0...'' at t/000-load.t line 17. _0 is a valid method, but I don't understand how it already exists. My tests are scoped in subtests, and each subtest creates a new object. It's the second subtest that barfs. I've fiddled around and can't sort out what's happening. Could someone, if they have the time, | 14:03 | |
have a quick peek and point out my err? code flow is ``new().generate-log-methods().add-method()''. Code: github.com/stevieb9/perl6-log-simp...Simple.pm6 Test: github.com/stevieb9/perl6-log-simp...000-load.t | |||
timotimo | you shouldn't add methods in the constructor | 14:04 | |
14:04
khw joined
|
|||
timotimo | they are added to the type, not to the instance | 14:04 | |
so the second time you run new, you'll be re-adding the methods, and correctly get the complaint that the methods are already there | 14:05 | ||
gfldex | unless you test if the method already exists | ||
or you move the adding method stuff into a BEGIN block in the module | 14:06 | ||
timotimo | or if you also create a new class every time | ||
stevieb | so, even though the instantiation happens within their own separate scope, the class itself remembers that the new methods have been added? | 14:07 | |
timotimo | instantiation? | ||
stevieb | sorry, object creation | ||
gfldex | classes are objects, so what object is created? | 14:08 | |
timotimo | yeah, the methods you're adding are landing in the type object, which only one exists of | ||
jnthn | Objects share a class (well, strictly, a meta-object), and adding a method is an operation on the meta-object. | ||
It's nothing to do with scope, really. It's simply that objects don't carry methods, but rather they are of a certain type and that has the methods. | 14:09 | ||
mst | stevieb: adding methods to an object at runtime is rarely a good idea, since you end up adding them to the class | ||
stevieb | oh, ok, now I understand. This is perl5 thinking I believe that's causing me confusion. | ||
mst | in perl5 the usual approach is to rebless yourself into an empty subclass of your 'real' class first | ||
no, this would be completely broken in perl5 too | |||
'adding methods in BUILD' is one of the most common Moo/Moose antipatterns | |||
stevieb | ok, so instead of the XY problem approach, I'll state what I'm trying to achieve and request feedback on that :) I want to be able to accept a list of names at runtime, and then dynamically add those as methods to a specific object only. Can someone let me know how to approach this, or point me to docs that may exist? or is my thnking all wrong here? | 14:13 | |
14:13
tailgate joined
|
|||
stevieb | ...the existing default dynamic methods should be applied at the class level for all objects, but only once (which I will play with BEGIN to try this) | 14:14 | |
gfldex | the docs you are asking for will go here: doc.perl6.org/language/typesystem | ||
(at some point before or after Christmas) | |||
nine | stevieb: that still sounds like a means to achieve a goal rather than the goal itself | 14:15 | |
gfldex | see: design.perl6.org/S12.html#FALLBACK_methods | ||
nine | stevieb: but if you really need that, I'd save those names in an attribute and use FALLBACK | ||
timotimo | actually, i'd go with a very different approach | ||
nine | stevieb: it's like AUTOLOAD in Perl 5 | ||
timotimo | why not have it like "use Log::Simple <foo bar baz error warning>" | ||
stevieb | timotimo: yeah, that's a very sane and easy to implement approach | 14:16 | |
timotimo | yeah, you should try it that way | ||
you'd probably create a class inside EXPORT then, like in my ADT module | 14:17 | ||
stevieb | I will take a read of FALLBACK as well. Learning a little every day, and finding I'm liking perl6 quite a lot | ||
timotimo: I'll take a look at ADT as well | |||
timotimo | the drawback of FALLBACK is you won't see the methods in .^methods before they have been "tried" | ||
whereas with the EXPORT version, you'll be able to properly introspect | 14:18 | ||
stevieb | I like that idea. The way it is now (and how I would have continued trying) states ANON for all the auto-generated methods, so I can't really test to see if they exist with ^methods | 14:19 | |
I appreciate the patence and advice provided here on #perl6 | 14:20 | ||
14:22
cur8or left
|
|||
gfldex | m: class L { method log($l, $s) { say "$l, $s" }; method FALLBACK($name, |c) { my $c = $name; self.^add_method($name, method ($s) { log($c, $s) }); self.^compose(); self."$name"(|c) } }; my $log = L.new; $log.log0("foo"); | 14:23 | |
camelia | rakudo-moar e3a3d2: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5log0' (indicated by ⏏) in method <anon> at <tmp> line 1 in method FALLBACK at <tmp> line 1 in any at gen/moar/m-Metamodel.nqp line 3055 in bl…» | ||
14:24
abruanese left
|
|||
timotimo | i think you have to just return the method in question from FALLBACK and it'll add the method for you automatically | 14:24 | |
has been a while since i last used fallback, though | |||
14:25
_mg_ left,
abruanese joined
14:30
abruanese left
14:33
iH2O left
14:36
atweiden joined,
abruanese joined
|
|||
nine | timotimo: no, that's add_fallback. FALLBACK will just be called and is expected to do whatever the called method would have done. There are examples of usage for both ways in Inline::Perl5 | 14:41 | |
gfldex | m: gist.github.com/gfldex/51bc1f2d2ec...9530acca4d | 14:42 | |
camelia | rakudo-moar e3a3d2: OUTPUT«0: foo1: bar» | ||
gfldex | stevieb: ^^^ | ||
nine | m: class Foo { method FALLBACK($name, *@args, *%args) { say $name, @args, %args; }; }; Foo.new.bar(1, 2, :baz<qux>); | ||
camelia | rakudo-moar e3a3d2: OUTPUT«bar[1 2]{baz => qux}» | ||
gfldex | stevieb: what you actually want are hygenic macros because ^.compose will make the optimizer unhappy | 14:43 | |
nine | gfldex: using add_method will again add the method to the class instead of just the object | ||
gfldex | i believe that is intentional | 14:44 | |
nine | gfldex: to quote stevieb: "and then dynamically add those as methods to a specific object only" irclog.perlgeek.de/perl6/2016-06-20#i_12698309 | ||
gfldex | given the module he linked earlier I am guessing that his initial stated intention is wrongish | 14:45 | |
stevieb | gfldex: thanks for that example! I'll have to read up on docs and digest it all. | 14:46 | |
14:47
cpage_ joined
|
|||
stevieb | The original idea was to have all _N() methods added once, and should be available to all objects created. These are the default log methods. then, if desired, a user can send in labels eg: (debug, info etc), and on the object only, map those labels to their corresponding numbered method. I apologize for being as clear as mud | 14:48 | |
gfldex | stevieb: adding methods at runtime will make it harder for the compiler to help with good error messages/optimisations at compile time | 14:49 | |
nine | gfldex: ok, just go with timotimo++'s "use Log::Simple <foo bar baz error warning>" approach then :) | 14:50 | |
stevieb | gfldex: I'm going to just not do that at all, as I definitely don't know enough yet anyhow. I'm just going to trudge along and get the rest of the module working properly before I start looking at doing more trickery :) | ||
timotimo | the compiler can't know anything about methods at compile time anyway; whether you've added methods to an object at run time or not doesn't make a difference to it unless you're using the object before methods are added and afterwards, maybe | 14:53 | |
gfldex | stevieb: you may find the following helpful gfldex.wordpress.com/2016/01/18/a-...direction/ | ||
stevieb | gfldex: thank you. I was just searching for docs/examples on export, so yes, that's handy | 14:55 | |
timotimo | writing a class { has $.foo } is equivalent to writing ClassHOW.new_type + adding the attribute + composing the class via the MOP | ||
it wouldn't make sense to offer a MOP if it wasn't exactly as powerful as what regular syntax allows you to do | 14:56 | ||
14:58
abruanese left
14:59
jjido joined
15:03
johnjohn101 left
15:04
jjido left,
domidumont left
15:08
abruanese joined
15:14
ssotka joined
15:16
adu joined
|
|||
timotimo | seeing some livetweets from a perl conference where right now damian conway seems to be talking about perl6 | 15:17 | |
lizmat | yes he is :-) | ||
timotimo | one POC in the audience is also pointing out the distinct whiteness of the whole audience and speakers | 15:18 | |
stmuk_ | POC? | ||
timotimo | (but at least someone put LL Cool J on one slide, so that makes 3 POC in total apparently) | ||
person of color | |||
nine | timeless: tell that to the creators of other languages with a MOP like Python ;) | ||
literal | ah, I love when this language allows me to eliminate boilerplate. Nice to be able to do "for @a -> (:$foo, :$bar) { ... }" to reference the keys of a hash in each iteration with minimal typing | 15:21 | |
BrokenRobot | timotimo: last year some sort of JS conf tweeted a photo and it's literally ALL white males :) | ||
timotimo | yeah, it's not uncommon to have white males as the biggest chunk of the audience by far ... :( | 15:22 | |
stmuk_ | I guess YAPC::Asia didn't have that problem | 15:23 | |
timotimo | i don't think i'm in a position to make it better, but i'm pretty sure there's some things i'd do without thinking that turns off people from minorities :\ | 15:24 | |
BrokenRobot | Like "POC"? :) | ||
timotimo | hm? | ||
mst | BrokenRobot: um. PoC is, according to most of the internet at this point, the politically correct term to use, and you can expect to be yelled at if you use anything else | 15:25 | |
BrokenRobot | ¯\_(ツ)_/¯ Just a weird term to use to refer to a human :) OTOH I didn't even know there were races of humans until I was 15 so what do I know | 15:26 | |
nine | mst: sometimes you just cannot win ;) dearblankpleaseblank.com/permalink....wid=216204 | ||
mst | bahahahahaha | 15:27 | |
nine | The whole obsession with skin color is one of the most ridiculous obsessions of the human race (pun very much intended) | 15:29 | |
mst | :D | 15:30 | |
BrokenRobot | :) | ||
timotimo | yeah, but we'll not make it better by saying "oh, we're completely color blind here" or ignoring that these people tend to get a lot of BS | ||
nine | of course not :) | 15:31 | |
andreoss | \part | ||
15:31
andreoss left
|
|||
tony-o | one of my favorite parts of the marine corps: i.imgur.com/GmUKeRh.jpg | 15:32 | |
15:32
profan_ is now known as profan
|
|||
nine | timotimo: btw. considering that 2/3 of humanity are Asian and more than half of humanity is female, speaking of "minorities" may already be part of the problem. | 15:32 | |
tony-o | relevant to skin color ^ | ||
timotimo | the thing about that is that these people don't get viewed by others as part of the global mass of people they would rightfully be a part of | 15:33 | |
BrokenRobot | Well, maybe the person who pointed out the "distinct whiteness" may offer some ideas on what that is so? | ||
timotimo | it's all local | ||
BrokenRobot doesn't even pretend to know the solution to this problem | |||
mspo | what's the gender mix? | ||
BrokenRobot | s/what that/why that/; | ||
tony-o | www.unprecedentedmediocrity.com/rac...ake-notes/ | ||
timotimo | you can ask the POC why there aren't more POC in tech, but if you do that, you can very easily seem like a total arsehole | ||
tony-o | mspo: of the population? | 15:34 | |
stmuk_ | damian is being streamed ...odd I didn't think he liked that | ||
mspo | tony-o: of the conference population | ||
mst | the problem is you need to figure out (1) who might be interested in turning up (2) why the ones who didn't didn't, and if we can do something about that | ||
timotimo | like, even inside an asian country, an asian person can be treated like shit for "being a minority" if they are put into a circle of thirty white doods | ||
mst | and both of those are really tricky | ||
tony-o | timotimo: or even other asians. | 15:35 | |
mspo | timotimo: or the wrong type of asian | ||
timotimo | that too, yes | ||
mst | right, europe mostly specialises in hating each other for being the wrong sort of white people | ||
tony-o | that seems congruent, people will find a way to discriminate, if not by skin color then by something else | ||
timotimo | even if the race/skin tone/language/... are the same, they could still be gay or trans or atheist or of the wrong religion, or wear the wrong kind of clothes | ||
i think i'm going off on a tangent here | |||
15:35
jjido joined
|
|||
tony-o | yes :) | 15:36 | |
mspo | eat the wrong type of bread | ||
(encountered this in real life) | |||
timotimo | what, really? | ||
BrokenRobot | drink the wrong kind of beer.... | ||
mst | use the wrong sort of text editor | ||
BrokenRobot | .. oh wait.. that was in a #perl channel! :P | ||
timotimo | well, yeah, wrong kind of beer that's in cologne and düsseldorf | ||
tony-o | get out mst. | 15:37 | |
:p | |||
timotimo | text editors is pretty funny until you have to explain to an outsider interested in becoming an insider and it's basically another thing they have to learn in order to be accepted | 15:38 | |
hoelzro | I remember telling one of my sisters that programmers have arguments about which language is best - it blew her mind | ||
timotimo | "oh and btw if someone mentions MongoDB, be sure to point at them and laugh, otherwise you're not with the *in* crowd" | ||
tony-o | timotimo: and vim isn't easy to explain anyway | ||
timotimo | vim isn't easy to explain away :) | ||
"nerd culture"/"programmer culture" sometimes feels a bit like the treehouse allegory :| | 15:39 | ||
profan | hoelzro: ahaha, this is one of those things hardest for people outside to understand in my experience | 15:40 | |
15:41
jjido left
|
|||
stmuk_ | is everyone watching damian? | 15:41 | |
timotimo finds it easy to complain, hard to measure what's actually pertinent | |||
can you give a link to the place where damian can be watched? | |||
BrokenRobot is working, so no | |||
mst | trout.me.uk/mongodb.jpg | ||
gfldex | stmuk_: i'm not because i'm missing a link | ||
mspo | www.youtube.com/watch?annotation_i...q2HkAYbG5o | ||
15:42
abruanese left
|
|||
timotimo | that's sawyer, though? | 15:42 | |
oh, no, it is actually damian | |||
stmuk_ | no it's sawyers new look | 15:43 | |
15:43
abruanese joined
|
|||
timotimo | :D | 15:43 | |
i hate that it's only on the left ear :( | |||
hoelzro | profan: I think it sheds some light on just how silly it is =) | 15:44 | |
mspo | timotimo: glad it isn't just me | ||
timotimo | i bet a nice little one-liner for pulseaudio could fix it for me | 15:45 | |
profan | hoelzro: indeed | ||
nine | Oh would someone give TheDamian a real quantum computer already? | 15:49 | |
stmuk_ | a hackentosh one? | 15:51 | |
15:55
donaldh left,
abruanese left
|
|||
dogbert17 | o/ #perl6 | 16:00 | |
BrokenRobot | \o | ||
dogbert17 | Hi Zoffix :) | ||
I have the 'stupid question of the day' | 16:01 | ||
16:01
abruanese joined
|
|||
dogbert17 | my $b = bag <bacon eggs>; my $p = $b.pairs; say $p.WHAT; for $p { .say }; for $p { .say } # why can I consume this twice? | 16:01 | |
m: my $b = bag <bacon eggs>; my $p = $b.pairs; say $p.WHAT; for $p { .say }; for $p { .say } # why can I consume this twice? | |||
camelia | rakudo-moar e3a3d2: OUTPUT«(Seq)(eggs => 1 bacon => 1)(eggs => 1 bacon => 1)» | ||
hoelzro | m: my $b = bag <bacon eggs>; my $p = $b.pairs; say $p.WHAT | ||
camelia | rakudo-moar e3a3d2: OUTPUT«(Seq)» | ||
hoelzro | hmm...good question | 16:02 | |
BrokenRobot | m: my $b = bag <bacon eggs>; my $p = $b.pairs; say $p.WHAT; for |$p { .say }; for |$p { .say } | ||
camelia | rakudo-moar e3a3d2: OUTPUT«(Seq)eggs => 1bacon => 1This Seq has already been iterated, and its values consumed(you might solve this by adding .cache on usages of the Seq, orby assigning the Seq into an array) in block <unit> at <tmp> line 1» | ||
BrokenRobot | bisect: my $b = bag <bacon eggs>; my $p = $b.pairs; say $p.WHAT; for $p { .say }; for $p { .say } | 16:03 | |
bisectable | BrokenRobot: on both starting points the exit code is 0 and the output is identical as well | ||
BrokenRobot | m: my $b = bag <bacon eggs>; my $p = $b.pairs; say $p.WHAT; for $p { .WHAT.say }; for $p { .WHAT.say } | 16:06 | |
camelia | rakudo-moar e3a3d2: OUTPUT«(Seq)(Seq)(Seq)» | ||
nine | Listening to TheDamian's great message, I still can't help but think, despite all it's greatness - and this will ultimately lead to a Perl 7 - Perl 6 still does not exactly do what I mean, it still does what I say. So I guess Perl 7 will have to be built on top of an epic AI core. | ||
BrokenRobot | dogbert17: I'm no expert, but it looks like in this case for just passes a singular seq inside the loop instead of iterating over each pair | 16:07 | |
16:08
lizmat left
|
|||
BrokenRobot | .oO( lizmat sure naps a lot.... lucky ) |
16:08 | |
dogbert17 | BrokenRobot: I agree but shouldn't it iterate of the pairs? | 16:11 | |
hoelzro | hmm...is it that the seq's iterator will iterate until IterationEnd, and then set itself up in a state as if it were iterating from the beginning again, instead of setting itself up to just keep returning IterationEnd? | ||
16:11
huggable left
16:12
huggable joined
|
|||
gfldex | github.com/rakudo/rakudo/blob/nom/...gy.pm#L154 | 16:12 | |
hoelzro | oh, I think I understand | 16:13 | |
m: my $b = bag <bacon eggs>; my $p = $b.pairs; say $p.WHAT; for $p { .say }; for $p { .say } # why can I consume this twice? | |||
camelia | rakudo-moar a22316: OUTPUT«(Seq)(eggs => 1 bacon => 1)(eggs => 1 bacon => 1)» | ||
hoelzro | m: my $b = bag <bacon eggs>; my $p = $b.pairs; say $p.WHAT; for @($p) { .say }; for @($p) { .say } # why can I consume this twice? | ||
camelia | rakudo-moar a22316: OUTPUT«(Seq)eggs => 1bacon => 1eggs => 1bacon => 1» | ||
hoelzro | hmm, maybe not | ||
I figured that it was basically calling $p.say twice, and Seq.gist is impl'd as self.cache.gist | 16:14 | ||
dogbert17 | gfldex: have looked at the code but can't say it has made me wiser :( | ||
hoelzro | m: my $b = bag <bacon eggs>; my $p = $b.pairs; say $p.WHAT; for @($p) { say "$_ {$++}" }; for @($p) { "$_ {$++}" } # why can I consume this twice? | ||
camelia | rakudo-moar a22316: OUTPUT«WARNINGS for <tmp>:Useless use of "$_ {$++}" in expression "$_ {$++}" in sink context (line 1)(Seq)eggs 1 0bacon 1 1» | ||
hoelzro | m: my $b = bag <bacon eggs>; my $p = $b.pairs; say $p.WHAT; for @($p) { say "$_ {$++}" }; for @($p) { say "$_ {$++}" } | 16:15 | |
camelia | rakudo-moar a22316: OUTPUT«(Seq)eggs 1 0bacon 1 1eggs 1 0bacon 1 1» | ||
BrokenRobot | hoelzro: that makes a list | ||
Isn't that a way to make a Seq consumable more than once? | |||
hoelzro | @($p)? right, but that should drain the iterator | ||
16:15
cdg joined
|
|||
hoelzro | if you assign the result of @($p), yes | 16:15 | |
BrokenRobot | Ah | ||
hoelzro | it doesn't cache the results, afaik | ||
16:16
eugen left,
eugen joined
|
|||
hoelzro | Seq is a weak spot for me in Perl 6, thought, so I could be wrong | 16:16 | |
gfldex | the iterator is created of %!elems of the bag | 16:17 | |
that hash is persistent | |||
also there is Set::cache what means that Sets can be consumed but don't have to | 16:19 | ||
dogbert17 | gfldex: does that mean that the contents, if that's the correct wording, decides wheather a Seq is consumed or not? | 16:21 | |
dogbert17 clearly confused | |||
gfldex | the content or you | ||
by calling .cache you can make it's values persistent if you call that method befor iteration | 16:22 | ||
dogbert17 | gfldex: but that is not necessary in this particular case? | ||
could some amendments in doc.perl6.org/type/Seq be in order? | 16:24 | ||
16:24
adu left
|
|||
gfldex | "However, calling .cache on a Seq will return a List that is still lazy, but stores the generated values for later access." | 16:26 | |
m: my @a = lines; @a.WHAT.say; @a.say; | 16:27 | ||
camelia | rakudo-moar a22316: OUTPUT«(Array)[Céad slán ag sléibhte maorga Chontae Dhún na nGall Agus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll; Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luí I mo dhiaidh bhí gleanntáin ghlas…» | ||
dogbert17 | gfldex: I didn't see any call to .cache in Baggy.pm though | 16:28 | |
gfldex | nor do you need that | ||
dogbert17 | obvoisly not :) I need to wrap my brain around this it seems | 16:29 | |
gfldex | if you want to iterate over a listy thing twice you assign it to a @-sigiled container and it will be maintained | ||
dogbert17 | I'm with you so far :) | 16:30 | |
gfldex | m: for lines { .say }; for lines { .say }; | 16:33 | |
camelia | rakudo-moar a22316: OUTPUT«5===SORRY!5===Function 'lines' needs parens to avoid gobbling blockat <tmp>:1------> 3for lines { .say }7⏏5; for lines { .say };Missing block (apparently claimed by 'lines')at <tmp>:1------> 3for lines { .say }7⏏5; for line…» | ||
gfldex | m: for lines() { .say }; for lines() { .say }; | ||
camelia | rakudo-moar a22316: OUTPUT«Céad slán ag sléibhte maorga Chontae Dhún na nGallAgus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll;Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luíI mo dhiaidh bhí gleanntáin ghlas’ G…» | ||
gfldex | old example is old | ||
m: my @a = 1,2,3; my @b = <a b c>; my \c = @a Z=> @b; .say for c; .say for c; | 16:34 | ||
camelia | rakudo-moar a22316: OUTPUT«1 => a2 => b3 => cThis Seq has already been iterated, and its values consumed(you might solve this by adding .cache on usages of the Seq, orby assigning the Seq into an array) in block <unit> at <tmp> line 1» | ||
16:35
cur8or joined
|
|||
dogbert17 | ok, just to add to my stupidity, what does \c do? | 16:37 | |
16:38
AlexDaniel joined
|
|||
BrokenRobot | dogbert17: containerless var | 16:39 | |
well.. not really a "var" more like a constant, since you can't change it | |||
AlexDaniel | er, do we have any docs for that? | ||
BrokenRobot | m: my \Δ = 'meow'; say Δ | ||
camelia | rakudo-moar a22316: OUTPUT«meow» | ||
BrokenRobot | m: my \Δ = 'meow'; Δ = 5 | ||
camelia | rakudo-moar a22316: OUTPUT«Cannot modify an immutable Str in block <unit> at <tmp> line 1» | ||
AlexDaniel | m: my \pi = 3; say pi # ouch | 16:40 | |
camelia | rakudo-moar a22316: OUTPUT«3» | ||
dogbert17 | BrokenRobot: many thanks | ||
gfldex | m: my Int $a; my \b := $a; b = 10; dd $a, b; | ||
camelia | rakudo-moar a22316: OUTPUT«Int $a = 10Int $a = 10» | ||
gfldex | it's very variable | 16:41 | |
m: my Int $a; my \b = $a; b = 10; dd $a, b; | |||
camelia | rakudo-moar a22316: OUTPUT«Int $a = 10Int $a = 10» | ||
gfldex | and an implicit binding | ||
BrokenRobot | neat. gfldex++ | ||
AlexDaniel | cool, what about docs? | ||
ah | 16:42 | ||
here | |||
doc.perl6.org/language/variables#Si..._variables | |||
containerless sigilless variables! | |||
gfldex | also doc.perl6.org/language/containers#Binding | ||
BrokenRobot | That section isn't too descriptive for someone who doesn't know wtf "lexpad" is :/ | 16:43 | |
gfldex | sigilless variables will never introduce a _new_ container | ||
dogbert17 | gfldex: nice, it seems I have some reading to do | ||
BrokenRobot | Ah, OK. There's a sentence at the start of the page "At run time, a variable appears as an entry in a lexical pad, or lexpad for short. This is a per-scope data structure that stores a pointer for each variable." | 16:44 | |
m: my Int $a; my \b = $a; b = 10; dd $a, b; my $z = 42; b = $z; dd $a, $z, b | 16:46 | ||
camelia | rakudo-moar a22316: OUTPUT«Int $a = 10Int $a = 10Int $a = 42Int $z = 42Int $a = 42» | ||
BrokenRobot | trippy | ||
16:47
eroux left
|
|||
BrokenRobot | oh, it just uses the value the second time. Never mind :) | 16:47 | |
gfldex | m: my \b = 42; b = 43; | ||
camelia | rakudo-moar a22316: OUTPUT«Cannot modify an immutable Int in block <unit> at <tmp> line 1» | ||
gfldex | literals don't come with buildin containers. Binding to a literal will not create a container. Literals are constant. | 16:48 | |
therefore calling sigilless variables, sigilless variables is a bit missleading | 16:49 | ||
16:54
abraxxa left
16:57
abruanese left
16:59
dakkar left
|
|||
tbrowder | [Coke]: I made it different because the order seems to be more desirable IMHO, and it can be done by the file name and the correct sort (htmlify.p6 was modded by me to do that for the Programs dir and tab) | 17:01 | |
17:03
eroux joined
|
|||
tony-o | m: my \b = $(42); b = 43; b.say; | 17:04 | |
camelia | rakudo-moar a22316: OUTPUT«Cannot modify an immutable Int in block <unit> at <tmp> line 1» | ||
tony-o | m: my $x = 42; my \b = $x; b = 43; b.say; | ||
camelia | rakudo-moar a22316: OUTPUT«43» | ||
tony-o | m: my \b = (my $x = 42); b = 43; b.say; | 17:05 | |
camelia | rakudo-moar a22316: OUTPUT«43» | ||
17:06
sno left
|
|||
dalek | c: 5ac6d7b | (Zoffix Znet)++ | doc/Programs/01-debugging.pod: Link to repos |
17:06 | |
BrokenRobot | m: my \b = $ = 42; b = 43; b.say; | 17:07 | |
camelia | rakudo-moar a22316: OUTPUT«43» | ||
17:12
kurahaupo joined
17:14
pierrot left
17:16
pierrot joined
17:24
sena_kun joined
17:25
rgrinberg joined
|
|||
sena_kun | m: my Int $num = 3; "abcc" ~~ /"ab" 'c' ** 1..$num/; | 17:28 | |
camelia | rakudo-moar a22316: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Malformed Rangeat <tmp>:1------> 3Int $num = 3; "abcc" ~~ /"ab" 'c' ** 1..7⏏5$num/;» | ||
pmichaud | good afternoon, #perl6 | ||
sena_kun | Documentation is a bit obscure about interpolation of variables into regexes(if it's not another regex). Is it possible at all? | ||
BrokenRobot | m: my Int $num = 3; say "abcc" ~~ /"ab" 'c' ** {1..$num}/; | 17:29 | |
camelia | rakudo-moar a22316: OUTPUT«「abcc」» | ||
sena_kun | BrokenRobot, ouch. Thanks a lot. | ||
BrokenRobot | sena_kun: seems wrong actually | 17:30 | |
17:30
_28_ria left
|
|||
BrokenRobot | m: my Int $num = 3; say "abccccccccccc" ~~ /"ab" 'c' ** {5..$num}/; | 17:30 | |
camelia | rakudo-moar a22316: OUTPUT«Nil» | ||
BrokenRobot | Oh, num is 3 | ||
sena_kun | BrokenRobot, trying it in actual regex now... | ||
BrokenRobot | m: my Int $num = 3000; say "abccccccccccc" ~~ /"ab" 'c' ** {5..$num}/; | 17:31 | |
camelia | rakudo-moar a22316: OUTPUT«「abccccccccccc」» | ||
BrokenRobot | never mind :P | ||
pmichaud | I believe that variables in range quantifiers is NYI in rakudo. | 17:33 | |
dalek | c: ffb9ce7 | (Wenzel P. P. Peppmeyer)++ | doc/ (2 files): update example and error message |
||
jnthn | It...just worked in the example above? :) | ||
pmichaud | oh, I could be wrong about that. :) | ||
m: my $num = 7; say "abcccccccccccccccc" ~~ / "ab" 'c' ** (5..$num)/; | 17:34 | ||
camelia | rakudo-moar a22316: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Quantifier quantifies nothingat <tmp>:1------> 3ay "abcccccccccccccccc" ~~ / "ab" 'c' **7⏏5 (5..$num)/;» | ||
17:34
setty1 joined,
firstdayonthejob joined
|
|||
pmichaud | m: my $num = 7; say "abcccccccccccccccc" ~~ / "ab" 'c' ** {5..$num}/; | 17:34 | |
camelia | rakudo-moar a22316: OUTPUT«「abccccccc」» | ||
pmichaud | okay, it works. | ||
diakopter | istr working on that | 17:35 | |
maybe not though! | |||
17:36
lizmat joined
|
|||
diakopter | er no, I didn't do that particular thing | 17:37 | |
17:39
_28_ria joined,
buharin joined
|
|||
jnthn | I think it was FROGGS++ :) | 17:42 | |
17:43
kid51 joined
17:46
abruanese joined
17:53
spider-mario joined
17:55
cpage_ left
17:59
vendethiel joined,
fhorck joined
18:00
kid511 joined
18:01
kid51 left,
lmmx joined,
domidumont joined
18:06
ocbtec left
18:09
eugen left
18:12
lmmx left,
eugen joined
18:15
sno joined,
ocbtec joined
|
|||
mspo | any more p6 talks streaming today? | 18:18 | |
[Coke] waves at pmichaud | 18:19 | ||
pmichaud waves to [Coke] | |||
there's two more p6 talks today, I think | |||
switching rooms | 18:21 | ||
vendethiel | is it YAPC::NA time? | 18:22 | |
18:22
AlexDaniel left
|
|||
moritz | it is | 18:24 | |
pmichaud | about to start: "Perl 6 and the Zen of Erlang" www.yapcna.org/yn2016/talk/6600 | 18:25 | |
afterwards: "Perl 6 - Why did they do *that*?" www.yapcna.org/yn2016/talk/6645 | |||
18:26
kid511 left,
cpage_ joined
|
|||
pmichaud | I don't know if they're streaming. | 18:26 | |
DrForr_ | Just the keynotes are streaming. | 18:28 | |
18:29
FROGGS joined
|
|||
perigrin | They should be posted quickly, we've been *promised* quickly posted. | 18:32 | |
timotimo | wow, you mean those promises are going to actually be kept? | 18:36 | |
18:37
perlpilo1 is now known as perlpilot_yapc
18:38
perlpilot_yapc is now known as perlpilot_tpc
|
|||
Woodi | thanx YAPC for Damian video! but wondering do I need to pay now ? :) | 18:38 | |
18:45
eroux left
|
|||
BrokenRobot | You could pitch in to TPM for funding his Toronto talks next week (and yes, both will be recorded): www.gofundme.com/damian_conway | 18:46 | |
tony-o | timotimo: what ever happened with the servers that were donated ~2 years ago, are those still running the perl6 docs/sites ? | 18:47 | |
BrokenRobot | One: www.meetup.com/Toronto-Perl-Mongers...231418224/ and the other: www.meetup.com/Toronto-Perl-Mongers...231418278/ | ||
timotimo | tony-o: that's what runs p6c.org | 18:48 | |
18:48
dha joined
|
|||
timotimo | i hadn't realized that's already 2 years old | 18:48 | |
tony-o | it may be less, i have so much old code lying around it's difficult to put a timeline on anything in p6 | 18:51 | |
yanmc | what's preferred in a shebang, perl with `use 6.c' or just perl6? | 18:53 | |
dogbert17 | is gfldex still around? | 18:54 | |
mst | perl6 with 'use 6.c' | ||
tony-o | yanmc: i use 'perl6' | 18:55 | |
18:55
eugen left
|
|||
[Coke] | perl with use 6.c -- won't work. | 18:56 | |
mst | right | ||
perl6 in the shebang, but 'use 6.c' is still a good thing | |||
[Coke] | perl6 -- will eventually have issues when the next spec is released. | ||
mst is correct. | |||
yanmc | got it, thanks guys | ||
dogbert17 | I have tried to write some docs for method pairs in Baggy, is it ok? gist: gist.github.com/dogbert17/efcb4849...942b42fbf3 | 18:59 | |
19:02
Woodi left
19:07
eroux joined
|
|||
moritz | dogbert17: "the weight that element. | 19:08 | |
" | |||
the weight *of* that element | |||
otherwise, good | |||
dogbert17 | moritz: oops, will fix ... | ||
moritz | maybe you want to add an example with a weight != 1 | 19:09 | |
dogbert17 | moritz: will do | ||
moritz | m: say bag(<bacon egg bacon>).pairs.sort | ||
camelia | rakudo-moar 0e10f4: OUTPUT«(bacon => 2 egg => 1)» | ||
dogbert17 | I'll steal it :) | ||
moritz | well, I mostly stole it from you in the first place :-) | 19:10 | |
dogbert17 | :-) | ||
19:11
Emeric1 joined
19:12
Emeric left,
Emeric1 is now known as Emeric,
CIAvash left
|
|||
dalek | c: 74757ad | (Jan-Olof Hendig)++ | doc/Type/Baggy.pod: Added docs for method 'pairs' in Baggy. moritz++ |
19:13 | |
19:13
girafe joined,
sena_kun left
|
|||
dogbert17 method 'pairs' in Baggy sounded better than Baggy.pairs methinks | 19:16 | ||
lizmat | .oO( good thing we don't have a "pants" method ) |
19:17 | |
moritz | I'm sure TimToady will find a good rationale for including one | ||
:-) | |||
[Coke] was happy to hear the liz/wendy shoutout in the keynote *kermit arm flail8 | |||
m: Cat.new:pants | 19:18 | ||
camelia | rakudo-moar 8ad19e: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Undeclared name: Cat used at line 1. Did you mean 'Rat'?» | ||
moritz | m: ::Cat.new:pants | ||
camelia | rakudo-moar 8ad19e: OUTPUT«5===SORRY!5=== Error while compiling <tmp>No such symbol 'Cat'at <tmp>:1------> 3::Cat7⏏5.new:pants» | ||
19:18
darutoko left
|
|||
Xliff | .tell FROGGS I've submitted the PR. Hope to hear from you soon. | 19:19 | |
yoleaux | Xliff: I'll pass your message to FROGGS. | ||
dogbert17 | lizmat: how is YAPC? | 19:20 | |
19:25
addison joined
|
|||
lizmat | dogbert17: it's cool with a lot of Perl 6 :-) | 19:25 | |
19:27
dha left
|
|||
Xliff | Are there going to be slide? | 19:31 | |
Please tell me there will be slides. | |||
For us unlucky people who were unable to attend. | |||
lizmat | I understand there'll be at least videos | ||
Xliff | Ooh! bag =:= histogram? | 19:32 | |
moritz | yes | 19:33 | |
Xliff | [Coke], liz/wendy? | ||
Lisa and Wendy? | |||
lizmat | Liz | ||
no royalty involved | 19:34 | ||
Xliff | kk... not who I am thinking of, then. | ||
lizmat++ | |||
Dude, I still can't believe he's gone. | |||
dogbert17 | lizmat: sounds nice | ||
Prince? | |||
Xliff | dogbert17, Yes. | ||
moritz | Xliff: if you've ever mit lizmat and wendy, you won't forget :-) | ||
*met | |||
Xliff | LOL! | 19:35 | |
moritz, I bet | |||
So...YAPC videos... I will search for them later. | |||
19:38
japhb left
19:40
cdg left,
domidumont left,
raiph joined,
cdg joined
|
|||
raiph | can lizmat or anyone else advise on who to contact re www.reddit.com/r/perl/comments/4oy...am/d4h1f71 ? | 19:45 | |
lizmat | please report on the #yapc channel on irc.perl.org and mention it to e.g. genehack | 19:46 | |
19:46
rindolf left
|
|||
BrokenRobot | raiph: BTW, I saw some commits go into Rakudo, but they were credited to just `raiph` in the release log. If in the future you want to be credited by some other name, please submit a PR adding yourself to github.com/rakudo/rakudo/blob/nom/CREDITS | 19:48 | |
raiph | lizmat: thanks | ||
BrokenRobot: thanks | 19:49 | ||
perlpilot_tpc | BrokenRobot++ (I don't know entirely why, but I find it important that people be credited the way they want to be) | 19:50 | |
19:52
buharin left
|
|||
dogbert17 | moritz: is it ok if I trouble you with one more doc gist? | 19:53 | |
19:58
japhb joined,
jjido joined
|
|||
dalek | c: c6e9981 | (Jan-Olof Hendig)++ | doc/Type/Baggy.pod: Added docs for Baggy.antipairs |
20:04 | |
moritz | dogbert17: sure | 20:05 | |
20:06
cdg left
20:08
pomJ joined,
pomJ left
20:09
kaare_ left
|
|||
dogbert17 | moritz: I jumped the gun and committed just above your reply, sorry :( | 20:10 | |
20:11
Emeric1 joined
|
|||
moritz | dogbert17: I'm fine with that | 20:11 | |
20:11
FROGGS left
|
|||
moritz | dogbert17: you're free to commit without any sort of pre-review :-) | 20:11 | |
perlpilot_tpc | dogbert17: forgiveness >>> permission | ||
20:11
huggable left
20:12
huggable joined,
Emeric left,
Emeric1 is now known as Emeric
|
|||
moritz | m: say bag(<eggs bacon>).antipairs | 20:12 | |
camelia | rakudo-moar 8ad19e: OUTPUT«(1 => bacon 1 => eggs)» | ||
moritz | dogbert17: in that example, the 2 is a bit of a mistery | ||
dogbert17 | moritz: not only that, I seem to have destroyed the page although I don't know how | 20:13 | |
see doc.perl6.org/type/Baggy | 20:14 | ||
how on earth did my commit manage to do that, hmm | 20:15 | ||
yanmc | m: my @t = 1, 3; say $@t | ||
camelia | rakudo-moar 8ad19e: OUTPUT«[1 3]» | ||
yanmc | the double sigil, isn't that how to get the length of a list? | 20:16 | |
moritz | doc.perl6.org/build-log/build-2016-...5+0000.log says | ||
Use of uninitialized value $source-name of type Any in string context | |||
Any of .^name, .perl, .gist, or .say can stringify undefined things, if needed. in sub extract-pod at ./htmlify.p6 line 189 | |||
Baggy does not have an =SUBTITLE | |||
oh, sorry for spamming | |||
yanmc: no, that's perl 5 thinking | |||
perlpilot_tpc | m: my @t = 1, 3; say +@t; | ||
camelia | rakudo-moar 8ad19e: OUTPUT«2» | ||
moritz | yanmc: @t.elems or +@t | ||
yanmc: scalar context doesn't lose information as in p5 | 20:17 | ||
dogbert17 | moritz: strange, I can see it in the document, running htmlify now | 20:19 | |
moritz | dogbert17: agreed, something is triggering a strage corner case in htmlify | ||
yanmc | hmm, thanks, I don't know that much about p5 though | ||
20:19
cdg joined
|
|||
yanmc | so it automatically does the right thing, as in | 20:20 | |
m: my @t = 1, 3; say ([+] @t) / @t | |||
camelia | rakudo-moar 8ad19e: OUTPUT«2» | ||
dogbert17 | moritz: on this page, doc.perl6.org/type.html, role is suddenly written twice | ||
moritz | yanmc: yes, that's numeric context | ||
dogbert17: "huh" | 20:21 | ||
dogbert17 | role, role Baggy Collection of distinct weighted objects | 20:22 | |
moritz | dogbert17: did you happen to check the HTML before that commit? | ||
dogbert17 | moritz: no :( but I should have. oO(the changes looked so innocent) | 20:23 | |
moritz | no, that's fine, something in the tooling is brittle | 20:24 | |
dogbert17 | moritz: I'll try to figure it out | ||
dalek | c: ebb259c | moritz++ | doc/Type/Baggy.pod: Stylistic improvements to Baggy.pod |
||
[Coke] | first step - see if baggy looks ok in the previous version: if so, revert until we sort it out | ||
... unless we're piling more on it. nevermind. I leave to y'all | 20:25 | ||
leave *it | |||
moritz | the role, role thingy kinda makes me think it tries to register role Baggy twice | 20:26 | |
and the second one overrides the first, which leads to the methods all going missing | |||
... or something like that | |||
20:27
cur8or left
|
|||
yanmc | in $t.^name is the carret part of the (method?) name or is it some kind of operator | 20:27 | |
moritz | yanmc: it's part of the method call operator, and here means "call the method on meta object" | 20:28 | |
$t.^name is short for $t.HOW.name($t) | 20:29 | ||
20:29
eroux left
|
|||
dogbert17 | moritz: I ran htmlify on my machine and it worked, the only change I had done was to add some bacon in the example | 20:30 | |
moritz | dogbert17: commit it! | ||
dogbert17 | will do | 20:31 | |
20:31
mohae_ joined
|
|||
moritz | and I should install a newer perl6 on the server that builds the docs | 20:31 | |
20:31
kid51 joined
|
|||
moritz | oh, the methods are back on doc.perl6.org/type/Baggy | 20:32 | |
20:32
TEttinger joined,
cur8or joined
20:33
mohae left,
jjido left
|
|||
moritz | cosmic rays, probably | 20:34 | |
dogbert17 | moritz: strange indeed | ||
I now have a merge commit in my repo, how do I get rid of that | 20:35 | ||
or shoul I leave it ... | 20:36 | ||
s/shoul/should/ | |||
20:37
molaf left
20:38
kid51 left,
jjido joined
20:39
cur8or left
|
|||
dalek | c: 4678149 | (Jan-Olof Hendig)++ | doc/Type/Baggy.pod: Fixed broken code example. moritz++ |
20:39 | |
20:40
cur8or joined
|
|||
dogbert17 | hopefully the methods will stay in place :) | 20:41 | |
20:42
atweiden left
|
|||
dogbert17 | there's something fishy with class Grammar as well | 20:42 | |
class, class Grammar Group of named regexes that form a formal grammar | |||
moritz | something's fishy in the state of 6mark | 20:46 | |
20:49
Raj_ joined
|
|||
masak | question: how do you parse with a grammar, but allow it to match a prefix of the string you pass in? | 20:52 | |
20:53
dwarring joined
|
|||
masak | that is, I'm fine with the implicit ^ anchor it puts in, but I want it to ignore the implicit $ anchor | 20:53 | |
20:53
setty1 left
|
|||
moritz | masak: .subparse? | 20:53 | |
masak | that seems to do it -- thanks, moritz++ | ||
moritz | masak: as shocking as it might seem, we actually have API docs for class Grammar :-) | 20:54 | |
masak | moritz: I'm still getting used to that idea | ||
moritz | (not that I mind such questions) | ||
masak | though truth be told, it was very likely quicker to ask here, thanks to you :P | ||
perlpilot_tpc | moritz: So .... I type "p6doc XXX" what's XXX? ;) | ||
moritz | perlpilot_tpc: you open doc.perl6.org/type/Grammar and the TOC already enlightens you :-) | 20:55 | |
masak .oO( .subtweet ) | 21:02 | ||
21:04
skids left
21:14
dha joined
21:17
jjido left
|
|||
masak | is there a way to ask a failed match how far it managed to match before it started backtracking and failing? | 21:20 | |
dogbert17 | class QuantHash does Associative { } should this be role QuantHash does Associative { } | 21:21 | |
21:24
jjido joined
21:25
atweiden joined
21:26
chris2 joined
|
|||
lizmat | masak: wasn't there something with a local FAILGOAL ? | 21:31 | |
21:32
wamba left
21:33
ShimmerFairy joined
|
|||
masak | lizmat: that does sound familiar | 21:33 | |
pmichaud | sounds like "high water mark" | 21:36 | |
timotimo | ohai pmichaud! | 21:37 | |
pmichaud | timotimo: o/ | ||
timotimo | can we talk about updating wordpress on rakudo.org some time soon-ish? | ||
ShimmerFairy | \o | ||
timotimo | mostly needs someone who can make a full backup before and perhaps a full restore after someone clicks the "install update" button | 21:38 | |
pmichaud | timotimo: moritz++ already asked me about it. I'll take care of it Wednesday or Thursday, when I'm done with my YAPC::NA stuff | ||
timotimo | oh, cool! | ||
thanks :) | |||
heyo ShimmerFairy | |||
i haven't actually looked into supernova since last we talked :< | |||
arnsholt | masak: That definitely sounds like the high water mark. Sadly I never could figure out quite how that works | ||
pmichaud | (I have a variety of things that have to happen for all of the domains on that server, so will also be working on that over the next few weeks.) | ||
Zoffix | pmichaud, https would be cool too :) rt.perl.org/Ticket/Display.html?id=128423 | 21:39 | |
Quick, everyone! Give pmichaud more jobs! :P | |||
ShimmerFairy | timotimo: atm I'm working on a grammar for C++, so I've not thought about it much either :P . (I'm glad it's easy to pull in HLL::Grammar now though.) | ||
pmichaud | Zoffix: yes, I saw that ticket also. Fixing https may be more of a challenge. I've looked into setting up a certificate before and it didn't quite make sense to me. | ||
yanmc | m: $t=1..3; for ^3 Z $t -> $a, $b { say "$a -- $b" } | ||
camelia | rakudo-moar ee663c: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Variable '$t' is not declaredat <tmp>:1------> 3<BOL>7⏏5$t=1..3; for ^3 Z $t -> $a, $b { say "$a» | ||
21:39
Emeric left
|
|||
yanmc | it fails anyway, but I'd expect the same output as | 21:40 | |
Zoffix | pmichaud, oh :( I'd offer to help, but I'm clueless myself. | ||
ShimmerFairy | pmichaud: don't remember what it was called, but there was some kind of effort set up a while back (supported by Mozilla IIRC) to make it easy & free to HTTPS-ify a site. | ||
Zoffix | yanmc, you need 'my' before $t | ||
yanmc | m: my $t=1..3; for $t.kv -> $a, $b { say "$a -- $b" } | ||
21:40
Zero_Dogg left
|
|||
camelia | rakudo-moar ee663c: OUTPUT«0 -- 11 -- 22 -- 3» | 21:40 | |
yanmc | Zoffix: I know, I copy/pasted from the REPL and forgot to add it | ||
21:40
Zero_Dogg joined
|
|||
pmichaud | in a larger sense I have to figure out what to do with that server in general. It's running CentOS 5 which is being end-of-lifed, and IIUC I have to migrate everything to a new server (there's no in-place upgrade option) | 21:40 | |
so I'm re-evaluating the whole service proposition. :) | 21:41 | ||
anyway, it's on my list, and after this week I'll even have tuits | |||
dj_goku | the SSL cert is for host.pmichaud.com and not *.rakudo.org | 21:42 | |
dalek | c: a80a093 | (Jan-Olof Hendig)++ | doc/Type/ (2 files): Iterable and QuantHash are roles |
||
21:42
daxim joined
|
|||
masak | jnthn++'s grammar-tracer++ to the rescue in the end. shoulda used it sooner. | 21:42 | |
also, I ought to write a small script which just clones the grammar-debugger and Terminal-ANSIColor repositories straight into wherever I'm writing code, setting up the paths for me :) | 21:43 | ||
and another script that cleans up afterwards | |||
Zoffix | m: my $t=1..3; for <0 1 2 1 2 3> -> $a, $b { say "$a -- $b" } | 21:44 | |
camelia | rakudo-moar ee663c: OUTPUT«0 -- 12 -- 12 -- 3» | ||
Zoffix | m: my $t=1..3; for |(|^3 Z |$t) -> $a, $b { say "$a -- $b" } | ||
camelia | rakudo-moar ee663c: OUTPUT«Too few positionals passed; expected 2 arguments but got 1 in block <unit> at <tmp> line 1» | ||
Zoffix | Why doesn't the second one work? | ||
m: my $t=1..3; say |(|^3 Z |$t) | |||
camelia | rakudo-moar ee663c: OUTPUT«(0 1 2 1 2 3)» | ||
yanmc | try it with 1..4 | ||
DrForr_ destresses. | |||
ShimmerFairy | masak: if only there was some kind of modular system to do all this for you... :P | 21:45 | |
yanmc | somehow it zips in the wrong direction? hard to explain | ||
Zoffix | yanmc, zips fine to me | ||
masak | m: my $t=1..3; for |(|^3 Z |$t) -> ($a, $b) { say "$a -- $b" } | ||
camelia | rakudo-moar ee663c: OUTPUT«Too many positionals passed; expected 2 arguments but got 6 in sub-signature in block <unit> at <tmp> line 1» | ||
Zoffix | Oh | ||
masak | m: my @t = 1..3; for ^3 Z @t -> ($a, $b) { say "$a -- $b" } | 21:46 | |
camelia | rakudo-moar ee663c: OUTPUT«0 -- 11 -- 22 -- 3» | ||
masak | there ya go | ||
Zoffix | yanmc, good catch | ||
yanmc | masak: ah, took me a while to see the change :) | ||
pmichaud | DrForr: suggestion: for ^@a.elems -> $key { ... } might be more canonically written as for @a.keys -> $key { ... } | ||
Zoffix | masak, but how come the slips didn't work? :) And how come |(|^3 Z |$t) zips the middle two elements backwards? | 21:47 | |
m: my @t = 1..3; my $t = 1..3; say ^3 Z @t; say |(|^3 Z |$t); | |||
camelia | rakudo-moar ee663c: OUTPUT«((0 1) (1 2) (2 3))(0 1 2 1 2 3)» | ||
yanmc | I did pick bad numbers; to not go crazy, don't use the same set of numbers in the two lists ;-) | 21:48 | |
DrForr_ | Thanks. I'll probably use this later on, good to know. | ||
Zoffix | m: my @t = 1..3; my $t = 6..9; say ^3 Z @t; say (|(^3) Z |($t)); | 21:49 | |
camelia | rakudo-moar ee663c: OUTPUT«((0 1) (1 2) (2 3))((0 1 2 6 7 8 9))» | ||
Zoffix | Still messed up | ||
m: my @t = 1..3; my $t = 6..9; say ^3 Z @t; say @^3 Z @$t; | 21:50 | ||
camelia | rakudo-moar ee663c: OUTPUT«((0 1) (1 2) (2 3))((one(Mu.new, 3) 6) (one(Mu.new, Mu.new) 7) (one(Mu.new, Mu.new) 8) (one(Mu.new, Mu.new) 9))» | ||
Zoffix | m: my @t = 1..3; my $t = 6..9; say ^3 Z @t; say @(^3) Z @$t; | ||
camelia | rakudo-moar ee663c: OUTPUT«((0 1) (1 2) (2 3))((0 6) (1 7) (2 8))» | ||
Zoffix | K, I think I get it | ||
m: &infix:<Z>.candidates.say | 21:51 | ||
camelia | rakudo-moar ee663c: OUTPUT«(sub infix:<Z> (+ is raw, :$with!) { #`(Sub|39599664) ... } sub infix:<Z> (+ is raw) { #`(Sub|39599816) ... })» | ||
masak | ShimmerFairy: if I didn't know better, I'd think you were sarcastic or sump'n ;) | ||
Zoffix: I have no idea, I just do it that way with the parens | 21:52 | ||
Zoffix | masak, in the broken version it zips up just the last element of the first list and the first element of the second list. It needs single things on LHS/RHS not lists. | 21:54 | |
masak | if you say so | 21:58 | |
tonight's hard lesson: ordering between rules in a proto rule really matters | 21:59 | ||
22:03
sortiz joined
|
|||
sortiz | \o #perl6 | 22:03 | |
Zoffix | \o | ||
sortiz | Zoffix++ # #100 | 22:04 | |
Zoffix | \o/ | ||
lizmat | socializing& | 22:06 | |
22:06
dha left
22:07
lizmat left
22:12
brabo left
|
|||
Zoffix | m: grammar Foo { token TOP { <digit>+ }; token digit:sym<sign> { <[+-]> }; token digit:<num> { \d } }; say Foo.parse: '+20'; | 22:16 | |
camelia | rakudo-moar ee663c: OUTPUT«Nil» | ||
Zoffix | What is this :sym<> stuff on tokens? What does it do? | ||
22:18
AlexDaniel joined
|
|||
Zoffix | m: grammar Foo { token TOP { <digit>+ }; proto token digit {*}; token digit:sym<sign> { $<sign> = <[+-]> }; token digit:sym<num> { $<num> = \d+ } }; say Foo.parse: '+20'; | 22:21 | |
camelia | rakudo-moar ee663c: OUTPUT«「+20」 digit => 「+」 sign => 「+」 digit => 「20」 num => 「20」» | ||
Zoffix | k | 22:22 | |
22:23
Emeric joined
|
|||
masak | 'night, #perl6 | 22:23 | |
22:24
Emeric left
|
|||
Zoffix | night | 22:24 | |
sortiz | night masak | ||
22:24
skids joined
|
|||
raiph | m: grammar g { rule TOP { alternative1 | alternative2 } }; say g.parse("alternative2") | 22:37 | |
camelia | rakudo-moar ee663c: OUTPUT«「alternative2」» | ||
raiph | m: grammar g { proto rule TOP { * }; rule TOP:sym<this> { alternative1 }; rule TOP:sym<that> { alternative2 } }; say g.parse("alternative2") | ||
camelia | rakudo-moar ee663c: OUTPUT«「alternative2」» | ||
raiph | ^^Zoffix I think these are equivalent | ||
(well, forget the proto'ing of TOP that's irrelevant) | 22:38 | ||
Zoffix | raiph, is there a way to get the name inside of :sym<> tho? | 22:44 | |
22:44
kurahaupo left
|
|||
Zoffix | m: grammar Foo { token TOP { <digit>+ }; proto token digit {*}; token digit:sym<sign> { <[+-]> }; token digit:sym<num> { \d+ } }; say Foo.parse: '+20'; | 22:44 | |
camelia | rakudo-moar ee663c: OUTPUT«「+20」 digit => 「+」 digit => 「20」» | ||
Zoffix | I mean for this ^ to say 'sign' => + / num => 20 | ||
22:45
bbkr joined
22:48
jjido left
|
|||
raiph | Zoffix: I don't understand what you're thinking with that grammar. So lemme try my own way to do what I think you mean to do. | 22:50 | |
Zoffix | m: grammar Foo { token TOP { <digit>+ }; proto token digit {*}; token digit:sym<sign> { $<sign> = <[+-]> }; token digit:sym<num> { $<num> = \d+ } }; say Foo.parse: '+20'; | ||
camelia | rakudo-moar ee663c: OUTPUT«「+20」 digit => 「+」 sign => 「+」 digit => 「20」 num => 「20」» | ||
Zoffix | like this, but without the 'digit' keys :) | ||
raiph | m: grammar Foo { token TOP { <sign> <digits> }; token sign { < + - > }; token digits { \d+ } }; g.parse: '+20' | 22:53 | |
camelia | rakudo-moar ee663c: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Undeclared routine: g used at line 1» | ||
raiph | m: grammar Foo { token TOP { <sign> <digits> }; token sign { < + - > }; token digits { \d+ } }; Foo.parse: '+20' | ||
camelia | ( no output ) | ||
raiph | m: grammar Foo { token TOP { <sign> <digits> }; token sign { < + - > }; token digits { \d+ } }; say Foo.parse: '+20' | ||
camelia | rakudo-moar ee663c: OUTPUT«「+20」 sign => 「+」 digits => 「20」» | ||
22:53
stevieb9 joined
|
|||
Zoffix | Yeah, I know of that way, I was just curious of the :sym<> stuff | 22:53 | |
It's fine, I'll play with it around later and figure it out :) | 22:54 | ||
22:54
spider-mario left
|
|||
raiph | Fair enough :) | 22:54 | |
Zoffix: The `foo:sym<this>` does the alternate matching thing I mentioned plus I think that `<sym>` within the foo rule matches 'this' | 22:56 | ||
Zoffix | Thanks. | ||
22:57
zacts left
|
|||
raiph | m: grammar Foo { token TOP { <.digit>+ }; proto token digit {*}; token digit:sym<sign> { $<sign> = <[+-]> }; token digit:sym<num> { $<num> = \d+ } }; say Foo.parse: '+20'; | 22:59 | |
camelia | rakudo-moar ee663c: OUTPUT«「+20」» | ||
22:59
zacts joined
|
|||
stevieb9 | is "has Bool $!disabled = False;" valid? In one of my test files, after creating a second subtest that creates a second, separate object, I get: "P6opaque: no such attribute '$!disabled' in type Log::Simple when trying to check if it's initialized | 23:00 | |
" and can't figure out for the life of me why. I've tried using a BUILD submethod, but then I get different errors. | |||
Zoffix | stevieb9, yeah, it is | ||
23:00
girafe left
|
|||
Zoffix | m: say class Foo { has Bool $!disabled = False; method dis { $!disabled } }.new.dis | 23:01 | |
camelia | rakudo-moar ee663c: OUTPUT«False» | ||
stevieb9 | m: say class Foo { has Bool $!disabled = False; method dis { defined $!disabled } }.new.dis | ||
camelia | rakudo-moar ee663c: OUTPUT«True» | ||
stevieb9 | hmmm | ||
23:03
cognominal left
|
|||
sortiz | m: False.defined.say; # False and True are indeed defined | 23:04 | |
camelia | rakudo-moar ee663c: OUTPUT«True» | ||
timotimo | when you build your own BUILD, default values won't work any more ... or something like that? | ||
stevieb9 | it barfs always in the second subtest, as I create a new object. One object per subtest. If I move the subtests around, it always fails at the second object creation, so it doesn't appear to be test related | 23:05 | |
Zoffix | stevieb9, why not show the full code? | ||
23:06
Zoffix left
|
|||
stevieb9 | test: github.com/stevieb9/perl6-log-simp...-methods.t | 23:06 | |
code: github.com/stevieb9/perl6-log-simp...Simple.pm6 | 23:07 | ||
23:08
jjido joined
|
|||
stevieb9 | I think I lied. It looks like it always dies in the test that call the "_N" methods, which in turn calls log() (the dies-ok() tests) | 23:10 | |
ShimmerFairy | there isn't a lot of documentation on how HLL::Grammar's operator precedence parser works, is there? (Trying to figure out what specific keys do is tough.) | ||
23:13
jjido left
|
|||
ShimmerFairy | e.g. I spot a 'uassoc' key that appears to be unused, but which I'm guessing determines the left/right associativity for unary ops (which are otherwise marked :assoc<unary>) | 23:14 | |
raiph | stevieb: you're composing an object in FALLBACK? | ||
(Well, adding methods and recomposing, but I'm still surprised and suspicious of such a power move) | 23:16 | ||
stevieb9 | my goal there is to auto-generate methods so that I don't have to repeat a whole bunch of code, but I'm too new to understand if that's breaking other things | 23:17 | |
the following works fine, and does what I expect: perl6 -MLog::Simple -e 'my $l=Log::Simple.new; my $l2=Log::Simple.new; $l._7("obj1"); $l2._2("obj2");' | 23:20 | ||
so I don't know what's up with the test file | 23:21 | ||
hmmm, this doesn't though: perl6 -MLog::Simple -e 'my $l=Log::Simple.new; $l._3("obj1 3"); my $l2=Log::Simple.new; $l._7("obj1"); $l2._2("obj2");' | 23:22 | ||
so if I call log() (through the numbered methods) prior to creating the second object, it breaks. | |||
unfortunately I've got to take off for a while, but I'll play around again later. I may just have to take a step back and write simpler code until I can start better understanding what's actually happening :) | 23:26 | ||
raiph | stevieb9: If I figure anything out I'll .tell you. Maybe catch you later. o/ | 23:28 | |
23:33
ocbtec left
23:34
firstdayonthejob left
23:38
abruanese left
|
|||
AlexDaniel | “The following list is stolen from the Perl 5 perlunicode documentation:” :D | 23:38 | |
not sure if “stolen” is the right word, but it is funny :) | |||
sortiz | Surprised by the change in REPL output from 2016.06+, now the eval result is printed even when undefined (i.e, a simple "enter" produces Nil). Is this change documented? | 23:40 | |
23:42
abruanese joined
|
|||
ShimmerFairy | Oh, that reminds me, I had an idea to "rewrite" the synopses using the tests as a base; something like literate programming, though not necessarily put the doc part in-source. The idea being that someone wanting to learn the exact specification of P6 would likely prefer English to read :) | 23:44 | |
BrokenRobot | sortiz: it's likely caused by awwaiid++'s REPL rework. It went in about a week before the release: github.com/rakudo/rakudo/pull/738 | 23:54 | |
As for documented: no idea. It wasn't mentioned in the release notes/change log as I figured it was just an internal change that weren't supposed to have any user-facing side effects | 23:55 | ||
sortiz | BrokenRobot, Well. I like it, only that just now notice it :-) | 23:59 |