»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by moritz on 3 May 2013. |
|||
ssutch | i am getting a right strange result from rakudo: | 00:06 | |
gist.github.com/samuraisam/5778469 | |||
00:13
Khisanth joined
00:16
ggoebel left
|
|||
colomon | ssutch: what code is generating that? | 00:20 | |
ssutch | the trace? | 00:21 | |
it's Grammar::Tracer | |||
colomon | the trace is from Grammar::Tracer | ||
but the error message appears to be from your code after the match? | |||
ssutch | no | ||
it's from the parse command | 00:22 | ||
if i put a single space " " in front of "ass" in that string, it parses just fine | |||
if i escape the opening bracket "{" then it merely fails to match | 00:28 | ||
dies: 'message fart {ass }' | |||
works: 'message fart { ass }' | |||
fails: 'message fart \{ass }' | |||
however, if i change message-body to the following, it works: | 00:31 | ||
token message-body { '{' [\s+]? <ident> [\s+]? '}' } | |||
00:33
adu left
|
|||
ssutch | sorry, colomon, the file lines don't match up, this is copied from a file with a bunch of comments above | 00:37 | |
00:40
woolfy joined
|
|||
ssutch | so this works, but my grammar is ugly as crap: gist.github.com/samuraisam/5778599 what can i do to clean it up (eg remove all the [\s+]? | 00:40 | |
colomon | is there some reason they can't just be \s* | 00:47 | |
? | |||
or to put that another way: In general, I'd replace [<pattern>+]? with <pattern>* | 00:50 | ||
00:51
adu joined
|
|||
sorear | ssutch: there's a standard rule <.ws> which does smart whitespace - \s* if punctuation on either side, \s+ if bracketed by word chars | 00:56 | |
ssutch: if you s/token/rule/, then all whitespace in the former token will implicitly become <.ws> | |||
token TOP { ^ [\s+]? <proto> [\s+]? $ } | 00:57 | ||
can be rewritten as | |||
rule TOP { ^ <proto> $ } | |||
ssutch | cooool | ||
colomon | sorear++ # I was just looking that up, because I always forget which name means what in grammars. | ||
sorear | this includes whitespace between the last token and the }, but does not include whitespace between the first token and the { | 00:58 | |
this behavior is used pervasively in parsing perl 6 | |||
ssutch | hmm, it doesn't work if i have a newline at the beginning of the file | ||
rule TOP { ^ <proto> $ } | 00:59 | ||
sorear | you can override ws if you want to parse fancy forms of whitespace (like comments... and multiline comments... and Pod...) | ||
hmm, might be rakudobug | |||
ssutch | do i need to change my message to be something else then too? | ||
sorear | r: (grammar G { rule TOP { ^ } }).parse(" | ||
camelia | rakudo b2072f: OUTPUT«===SORRY!===Unable to parse expression in double quotes; couldn't find final '"'at /tmp/gzWfVpxMO7:1------> (grammar G { rule TOP { ^ } }).parse("⏏<EOL> expecting any of: method arguments argument list … | ||
sorear | r: say (grammar G { rule TOP { ^ } }).parse("\n") | ||
camelia | rakudo b2072f: OUTPUT«#<failed match>» | ||
sorear | n: say (grammar G { rule TOP { ^ } }).parse("\n") | 01:00 | |
camelia | niecza v24-75-g480a062: OUTPUT«(Any)» | ||
sorear | rr: say (grammar G { rule TOP {^ } }).parse("\n") | ||
rn: say (grammar G { rule TOP {^ } }).parse("\n") | |||
camelia | rakudo b2072f, niecza v24-75-g480a062: OUTPUT«「」» | ||
sorear | ssutch: workaround: drop the space between { and ^ | ||
ssutch | doh | ||
sorear | it's supposed to ignore that space, but apparently it's not | 01:01 | |
ssutch | yeah that works | ||
how can i fix that | |||
sorear | ssutch: "how can i fix that" - you saying you want to hack rakudo itself now? | 01:02 | |
colomon | sorear: even if it didn't ignore that space, isn't <ws> zero or more whitespace characters? is this a rachetting issue? | ||
01:02
fgomez joined
|
|||
sorear | we're talking about the rakudobug now, yes? | 01:02 | |
colomon: rules always ratchet. | |||
(as do tokens) | |||
ssutch | sorear: yeah at least look at it | ||
sorear | ssutch: hold on | ||
colomon | rn: say (grammar G { regex :sigspace { ^ } }).parse("\n") | 01:03 | |
camelia | rakudo b2072f: OUTPUT«===SORRY!===invoke() not implemented in class 'QAST::Op'» | ||
..niecza v24-75-g480a062: OUTPUT«===SORRY!===Colonpair traits NYI at /tmp/cmZTCEavEC line 1:------> say (grammar G { regex :sigspace ⏏{ ^ } }).parse("\n")Use of uninitialized value in string context at /home/p6eval/niecza/boot/lib/CORE.setting … | |||
sorear | S05:328 is the new rules | ||
which aren't implemented in rakudo yet | |||
ssutch | ah | ||
sorear | (do you know Sxx:yyyy syntax?) | ||
ssutch | do i? no | 01:04 | |
01:04
anuby joined
|
|||
colomon | ssutch: If you go to the irc log ( irc.perl6.org/) you'll find a link from the S05:328 to its position in the spec | 01:05 | |
ssutch | cool, thanks | ||
colomon | xx is the synopsis number, yyy the line number in it. | ||
but the link is the lazy man's way of finding it. :) | 01:06 | ||
ssutch | ah, i was figuring it was a perl construct | ||
but that makes sense, thanks | |||
github.com/perl6/roast/blob/master...s.t#L5-L34 ? | |||
sorear | implementation seems to be github.com/perl6/nqp/blob/master/s...s.nqp#L136 | ||
01:08
adu left
|
|||
ssutch | so the problem in this case is that S05:328 is not yet implemented in rakudo? | 01:10 | |
or is it a bug when parsing "rule { ^" | 01:11 | ||
or the two are one in the same | |||
sorear | well, the bug is that S05:328 is not implemented | 01:14 | |
there are at least two ways to go about fixing this | |||
you can modify P6Regex::Grammar to gobble up irrelevant whitespace at the start of matches and alternatives; | 01:15 | ||
or you can track the location of space fragments in P6Regex::Actions and remove the ones that shouldn't be used | 01:17 | ||
you should also add better tests for this (ideally in S05-modifier/sigspace.t) because the current tests are quite incomplete | |||
ssutch | damn, i don't think that i understand the stack well enough yet (eg how nqp relates to the rest of the parts) i understand that nqp is hosted on something (rakudo, rakudo-jvm, etc) and that in turn implements the language | 01:27 | |
which is the more correct fix, to fix Actions or to fix Grammar? | 01:30 | ||
01:30
xenoterracide joined
|
|||
colomon | n: say (grammar G { rule TOP { ^ } }).parse("\n") | 01:31 | |
camelia | niecza v24-75-g480a062: OUTPUT«(Any)» | ||
01:34
tgt left
01:37
jlaire left,
jlaire joined
|
|||
sorear | ssutch: I would try the grammar first | 01:41 | |
ssutch | how does this look for a test? github.com/samuraisam/roast/commit...3f945d6c6a | 01:46 | |
01:53
benabik left
01:55
SamuraiJack joined
01:56
bonsaikitten left
|
|||
dalek | ecza: 3e65d84 | (Solomon Foster)++ | lib/CORE.setting: Remove obsolete (I hope!) to-set coercion multis. |
01:56 | |
01:57
bonsaikitten joined
|
|||
colomon | how does implicit anchoring work with something like TOP { ^ } ? | 01:59 | |
sorear | ssutch: it's in the wrong file | 02:05 | |
ssutch | doh | ||
S05-modifier/sigspace.t? is it a decent test? | 02:08 | ||
i didn't see any other grammars in that file, so wasn't sure about it being the right place, or exactly how to explain its existence (sorry, im a newb here) | |||
sorear | sigspace is the name of the feature by which whitespace matches whitespace | 02:14 | |
ssutch | ok, that makes sense | ||
sorear | rule foo { ... } is similar to m :sigspace :ratchet /.../ | ||
ssutch | ah ok, thanks | 02:15 | |
lue | Can anyone tell me why S03/Adverbs is a head1, and in the middle of the sequence of precedence level head2's? It's always struck me as odd. | ||
(seems to me like it should be a =head2, if its location is due to the "at a pseudo-precedence level slightly tighter than item assignment" statement at the top of S03/Adverbs) | 02:18 | ||
02:23
SamuraiJack left
02:25
SamuraiJack joined
02:26
benabik joined
|
|||
ssutch | sorear: this appears to work in rakudo: ok "\n\n\n" ~~ m:sigspace/^ $/, 'sigspace captures newline' | 02:31 | |
however the rule one does not | |||
sorear | ssutch: don't forget nok. it's extremely important to test that things that shouldn't work don't | 02:34 | |
ssutch | ok | ||
sorear | make sure you have tests that would fail if someone changed ws to .* | 02:35 | |
ssutch | so this: nok " " ~~ m:sigspace/^.*$/, 'sigspace should not capture .*' | ||
sorear | ummmmm | 02:36 | |
sorear does not understand the confusion of ideas that could lead to such a test | |||
ssutch | haha | ||
sorry | 02:37 | ||
yeah that's all confused | |||
sorear: what would be an example of what you meant? | 02:39 | ||
something more like: nok "asdf" ~~ m:sigspace/^ $/ | 02:41 | ||
sorear | any feature has certain limits of activity, and the tests need to constrain it from both sides | 02:42 | |
you need to make sure that spaces are not accepted where they shouldn't be | |||
m:s/ foo / should match "foo " but not " foo" | |||
:s is short for :sigspace | |||
02:44
atroxaper joined
02:45
btyler joined
02:46
_jaldhar_ joined
|
|||
ssutch | ah ok | 02:46 | |
ok, thank you so much for all the help (sorear, et al.) | 02:47 | ||
diakopter | ssutch++ you rock | 02:56 | |
03:13
Chillance joined
03:20
ssutch left
03:21
prevost joined
03:22
geekosaur left
03:29
mrallen1 joined
03:36
Horace joined,
geekosaur joined
03:37
Horace left
|
|||
diakopter | so, I paid for the linkedin paid account, and now I get several times *more* spam from them | 03:39 | |
sorear | "let's milk the sucker"? | 03:41 | |
benabik | You obviously liked the service they were providing for free, so they gave you even more of it. | 03:43 | |
bonsaikitten | diakopter: funny thing - they offered me a 30-day free trial that expired | 03:47 | |
a day after it expired I got a totally new offer for a 30-day trial | |||
03:58
preflex_ joined,
ChanServ sets mode: +v preflex_
04:00
preflex left,
preflex_ is now known as preflex
04:23
btyler left
04:26
sjn left
04:28
raiph joined
04:29
raiph left,
Patterner left
04:31
Psyche^ joined,
Psyche^ is now known as Patterner
04:37
sjn joined,
adu joined
04:49
raiph joined
|
|||
raiph | ssutch: fyi: rosettacode.org/wiki/Parse_EBNF#Perl_6 | 04:50 | |
04:53
birdwindupbird joined
|
|||
sorear | trouble with EBNF is that there are quite a lot of variations | 04:54 | |
04:55
btyler joined
04:56
xenoterracide left
05:20
raiph left
05:45
mrallen1 left,
btyler left,
prevost left
05:50
dmol joined,
dayangkun joined,
lustlife joined
05:55
shachaf left
06:00
dmol left
06:02
dmol joined
06:04
salv0 left
06:05
shachaf joined
06:07
salv0 joined
06:27
PacoAir joined
06:29
dmol left
06:31
FROGGS joined
06:34
PacoAir left
06:35
xinming joined
06:39
xinming_ left
06:47
tomyan joined,
domidumont joined
|
|||
FROGGS | o/ | 06:55 | |
06:55
domidumont left
06:56
domidumont joined
07:00
sjn left
07:02
tomyan left
07:06
woolfy left
07:08
lizmat left
07:11
adu left
07:12
arlinius left
07:18
dayangkun left
07:27
sjn joined
07:36
kresike joined
|
|||
kresike | hello all you happy perl6 people | 07:36 | |
FROGGS | hi kresike | 07:38 | |
kresike | FROGGS, o/ | 07:39 | |
07:41
arlinius joined
07:42
GlitchMr left
07:48
cognominal joined
07:57
fhelmberger joined
07:58
GlitchMr joined
08:01
sjn left
08:09
atroxaper left
08:13
lizmat joined
08:25
cibs_ left,
cibs joined
|
|||
lizmat | morning #perl6! | 08:27 | |
08:29
pochi joined
08:30
pochi_ left
08:38
rindolf joined
|
|||
lizmat | r: my @a=0..Inf; @a.push(1) | 08:42 | |
camelia | rakudo b2072f: OUTPUT«.push on infinite lists NYIcurrent instr.: 'throw' pc 347557 (src/gen/CORE.setting.pir:151689) (src/gen/CORE.setting:8887)called from Sub 'sink' pc 379739 (src/gen/CORE.setting.pir:164183) (src/gen/CORE.setting:10169)called from Sub 'MAIN' pc 381 (src/gen/perl6.… | ||
lizmat | .push on infinite lists NYI ?? will that *ever* work? | ||
moritz | no | ||
08:42
ssutch joined
|
|||
moritz | feel free to update the error message | 08:42 | |
lizmat | :-) | ||
08:43
rindolf left
|
|||
mathw | morning | 08:48 | |
lizmat | morning! | ||
r: my @a=0..Inf; @a.sort # huh? | 08:49 | ||
camelia | rakudo b2072f: OUTPUT«Cannot index Array with 10 11 12 13 ... in method at_pos at src/gen/CORE.setting:6638 in method at_pos at src/gen/CORE.setting:1618 in method postcircumfix:<[ ]> at src/gen/CORE.setting:1540 in method postcircumfix:<[ ]> at src/gen/CORE.setting:1489 in bl… | ||
lizmat | feels like a similar message like the one for .push on infinite list is needed here ? | ||
moritz | aye | 08:50 | |
lizmat | also for classify and categoriize :-) | 08:54 | |
moritz | r: say (1..*).categorize({ last }).perl | 08:55 | |
camelia | rakudo b2072f: OUTPUT«No such method 'categorize' for invocant of type 'Range' in block at /tmp/diNjcPUeKw:1» | ||
moritz | r: say (1..*).list.classify({ last }).perl | ||
camelia | rakudo b2072f: OUTPUT«().hash» | ||
lizmat | r: my @a=0..Inf; @a.classify( {$_} ) # timeouts | ||
camelia | rakudo b2072f: OUTPUT«(timeout)» | 08:56 | |
08:56
sjn joined
|
|||
moritz | lizmat: the point I'm trying to make is that there are cases where .classify terminates | 08:56 | |
lizmat | ah, ok… hmmmm…. | 08:57 | |
moritz | maybe dying/failing is still the right thing to do, because last() in classify arguments isn't the normal use case | 08:59 | |
but that's a decision we need to make, not something automatic | |||
lizmat | feels to me that it should fail, and one could consider the use of "last" or any other loop related statement to be a Bad Thing | 09:01 | |
I'll make a spec issue out of category/classify's behaviour on infinite lists | 09:02 | ||
also: what is the difference between "$!nextiter.defined" and "self.inifinite". is the latter just a newer form? | 09:03 | ||
09:10
drin_m joined
|
|||
lizmat | also: .classify and .categorize are both specced to return Hash. In fact, .classify returns %result, and .categorize returns %result.pairs. | 09:13 | |
feels to me .categorize is wrong | |||
09:13
cognominal left
|
|||
lizmat | r: say (^5).list.classify( {$_} ).WHAT, say (^5).list.categorize( {$_} ).WHAT # should be Hash,Hash | 09:15 | |
camelia | rakudo b2072f: OUTPUT«(List)(Hash)True» | ||
lizmat | r: say (^5).list.classify( {$_} ).WHAT; say (^5).list.categorize( {$_} ).WHAT # should be Hash,Hash | ||
camelia | rakudo b2072f: OUTPUT«(Hash)(List)» | ||
lizmat | Behavior of .classify and .categorize on infinite lists: github.com/perl6/specs/issues/52 | 09:21 | |
09:37
daxim joined
09:40
salv0 left
09:43
salv0 joined
09:51
sqirrel joined
|
|||
dalek | kudo/nom: 5b61bcc | (Elizabeth Mattijsen)++ | src/core/List.pm: Make sure some list methods fail (early) on infinite list I wonder whether "infinite" shouldn't become a true attribute on List, rather than a method that calculates stuff. And/or use MMD with a different candidate for Infinite lists. |
09:55 | |
lizmat | lunch& | ||
09:55
lizmat left
10:18
anuby left
10:40
eternaleye joined
10:41
lizmat joined,
mtk left
10:45
mtk joined
10:46
woolfy joined,
GlitchMr left
|
|||
lizmat | r: my %h; %h<a>.push(1); say %h # I guess %h<a> //= [] isn't necessary anymore ? | 10:55 | |
camelia | rakudo b2072f: OUTPUT«("a" => [1]).hash» | 10:56 | |
11:00
chutchut joined
11:04
ssutch left
|
|||
lizmat drops a pin | 11:04 | ||
moritz | lizmat: it's probably from before autovivification | ||
moritz catches the pin before it hits the floor | 11:05 | ||
lizmat | :-) | ||
moritz | in space, nobody can hear your pins! | ||
moritz has to wait 30 minutes for a test run to finish :/ | |||
lizmat knows the feeling | 11:06 | ||
11:08
woolfy left
|
|||
moritz | (not rakudo though; some accounting stuff at $work) | 11:10 | |
dalek | p: 72d5841 | sorear++ | src/vm/jvm/ (2 files): Add nqp::continuation* to the compiler, stub runtime |
11:11 | |
11:15
GlitchMr joined
|
|||
dalek | kudo/nom: 856bc55 | (Elizabeth Mattijsen)++ | src/core/List.pm: Remove unneccesary vivication, they autovivify now. |
11:16 | |
kudo/nom: d412678 | (Elizabeth Mattijsen)++ | src/core/List.pm: Make .categorize return Hash rather than a Parcel of Pairs To match S32/Containers:191 |
|||
11:19
GlitchMr left
11:23
eternaleye left
11:27
JimmyZ joined
11:29
eternaleye joined
|
|||
dalek | p: 948a2ce | sorear++ | docs/continuations.pod: Initial documentation for the continuations feature |
11:33 | |
sorear | After I add t/jvm, should I just add it to tools/Makefile-JVM.in or is there a better place? | 11:35 | |
JimmyZ | I guess Makefile-JVM | 11:39 | |
11:48
tgt joined,
tgt left
|
|||
dalek | kudo/nom: ac36cac | (Elizabeth Mattijsen)++ | src/core/List.pm: Add :keytype and :of named parameters to classify / categorize So that we can return non-string values from test block if necessary. This is unspecced. If this feels right for TimToady / pmichaud, it should be specced. If this doesn't feel right, then I'll revert this patch. |
11:52 | |
kudo/nom: 5642f03 | (Elizabeth Mattijsen)++ | src/core/List.pm: Some more things needed to make :keytype and :of work on classify|categorize |
|||
sorear | sleep& | 11:53 | |
moritz | good night sorear | 11:54 | |
11:57
lizmat left
12:00
kaleem joined
12:01
Shozan is now known as SHODAN
12:08
lizmat joined
|
|||
lizmat | .(classify|categorize) specced as of Hash, but returns pairs github.com/perl6/specs/issues/53 | 12:14 | |
12:16
bbkr joined
|
|||
colomon tries to remember back to the days of implementing those.... | 12:16 | ||
12:19
tgt joined,
_jaldhar_ left
|
|||
lizmat | r: class A {}; my %h=A.new => 1; say %h; my %h2{Str}=A.new => 1; say %h2 # feels to me either both should fail, or both should work | 12:25 | |
camelia | rakudo b2072f: OUTPUT«("A<-465252350>" => 1).hashNominal type check failed for parameter 'key'; expected Str but got A instead in method STORE_AT_KEY at src/gen/CORE.setting:7122 in method STORE at src/gen/CORE.setting:7018 in block at /tmp/Au8hPaHP4v:1» | ||
12:27
kivutar joined
|
|||
colomon | n: class A {}; my %h=A.new => 1; say %h; my %h2{Str}=A.new => 1; say %h2 # feels to me either both should fail, or both should work | 12:31 | |
camelia | niecza v24-76-g3e65d84: OUTPUT«===SORRY!===Postconstraints, and shapes on variable declarators NYI at /tmp/Q3c0g4J0qV line 1:------> }; my %h=A.new => 1; say %h; my %h2{Str}⏏=A.new => 1; say %h2 # feels to me eithUnhandled exception: Check fail… | ||
colomon | std: class A {}; my %h=A.new => 1; say %h; my %h2{Str}=A.new => 1; say %h2 # feels to me either both should fail, or both should work | ||
camelia | std 6348f35: OUTPUT«ok 00:01 45m» | ||
12:37
lizmat left,
lizmat joined
|
|||
moritz | colomon: the default %h is more like %h{Str(Any)} # though nobody implements that | 12:45 | |
or was it Any(Str)? I can never remeber which one is the type, and which one is the coercion | |||
lizmat | %h{Str} of Any | ||
is the way I remember it | 12:46 | ||
moritz | the 'of Any' is the type that values can have | 12:48 | |
colomon | I see. | ||
moritz | what I meant is the types from which keys can be coerced to Str | 12:49 | |
colomon | lizmat: to take a simpler example, I know I certainly expect to be able to use Int keys in a normal hash, with the understanding they are implicitly converted to Str in the process. | 12:50 | |
colomon does that pretty routinely in p6 | |||
lizmat | I would probably do that too, but wonder whether that isn't too P5ish | 12:51 | |
colomon | At the same time, %h{A} probably shouldn't default to trying to convert whatever it gets to A. | ||
lizmat | generally, in P5, using an object as a key was an error, unless you really knew what you were doing | 12:52 | |
moritz | but Int is a value type | ||
not an object type | |||
so Ints are fine | |||
12:52
konundra joined
|
|||
colomon | moritz: I'm not sure I follow that distinction here? | 12:53 | |
moritz | 14:52 < lizmat> generally, in P5, using an object as a key was an error, unless you really knew what you were doing | ||
that's what I was commenting on | |||
colomon | I see | ||
lizmat | r: my %h{Str}= 1 => "a" | ||
camelia | rakudo b2072f: OUTPUT«Nominal type check failed for parameter 'key'; expected Str but got Int instead in method STORE_AT_KEY at src/gen/CORE.setting:7122 in method STORE at src/gen/CORE.setting:7018 in block at /tmp/PrOCQUc6BA:1» | ||
[Coke] | what is "value vs object" ? should that instead be "value vs. container" ? | ||
lizmat | colomon: you expect that to work, right? | 12:54 | |
colomon | lizmat: I expect my %h = 1 => "a" to work. | ||
I dunno about %h{Str} | |||
moritz | [Coke]: "contianer" has too many meanings in Perl 6 already | 12:55 | |
lizmat | well, by spec: %h is equivalent yo %h{Str} | ||
moritz | *container | ||
lizmat: that part is most certainly wrong | |||
colomon | I kind of like the idea (which moritz seemed to imply) that default hash accepts anything but converts it to Str. | ||
moritz | that's not just an idea; it's what's implemented right now | ||
colomon | whatever the syntax for specifying that is | ||
of course | 12:56 | ||
12:56
kresike left,
kresike joined
|
|||
bbkr | gist.github.com/bbkr/5781598 - libresolv SegFault, known issue? | 12:57 | |
lizmat | colomon: do you expect "my %h= A.new => 1" to work? | ||
moritz | bbkr: never seen it before | 12:58 | |
[Coke] | bbkr: me either. | ||
moritz | fwiw I really think we should have a way to mark classes as being value types | ||
bbkr | ah, it's not libresolv (this lib is just mentioned in memory map) | ||
moritz | and if they aren't, refuse to let them work as hash keys | ||
lizmat | but doing that check on untyped hashes, would slow things down significantly | 12:59 | |
and would go against perl5 expectations | |||
bbkr | I'll try extract minimum code required to reproduce this segfault, although it is random one. | 13:00 | |
lizmat | bbkr: doesn't ring a bell | ||
moritz | lizmat: I meant at hash Hash.new time, not at insertion time | ||
or rather at declaration time | |||
class A { }; my %h{A.new()} # dies | |||
lizmat | why should that die? | 13:01 | |
ah, of course | |||
are you sure you don't mean my %h{A} ? | |||
13:03
census joined
|
|||
moritz | you're right, %h{A} | 13:04 | |
lizmat | why should that die? | 13:05 | |
moritz | because A isn't a value type | ||
colomon | lizmat: I expect my %h= A.new => 1 to "work", in the sense that A gets stringified. | 13:06 | |
lizmat | moritz: why would that matter? | ||
colomon | shouldn't the hash be keyed on object identity in that case? | ||
lizmat | colomon: but then, if you do keys(), you won't get the object back | 13:07 | |
colomon | (%h{A}, I mean) | ||
lizmat: right, just like you get "1" instead of 1 if you use 1 as a key | |||
colomon thought about these issues a couple of weeks ago with regard to Set (etc) | 13:08 | ||
lizmat | not necessarily | ||
r: my %h{Int}= 1 => "a"; .WHAT.say for %h.keys | |||
camelia | rakudo b2072f: OUTPUT«(Int)» | ||
colomon | r: my %h= 1 => "a"; .WHAT.say for %h.keys | ||
camelia | rakudo b2072f: OUTPUT«(Str)» | ||
13:08
dayangkun joined
|
|||
lizmat | that's because %h is conceptually the same as %h{Str} | 13:09 | |
only, in the current implementation %h and %h{Str} don't do the same thing | 13:10 | ||
colomon | but it's not -- like moritz++ said, it's %h{Str(Any)} or however you notate that. | ||
13:10
ztt_ joined
|
|||
colomon | ie the keys are Str, but we accept Any and stringify it | 13:11 | |
13:11
ajr joined
|
|||
lizmat | we accept Any for values, and stringify keys to Str | 13:11 | |
13:11
JimmyZ left,
ajr is now known as Guest4600
|
|||
lizmat | there is no accept logic in the codepath for untyped hashes | 13:12 | |
s/accept/constrain/ | |||
13:12
Gothmog_ left,
Gothmog_ joined
|
|||
moritz | nr: my %h; %h{Mu.new} = 42; | 13:13 | |
camelia | niecza v24-76-g3e65d84: ( no output ) | ||
..rakudo b2072f: OUTPUT«Cannot call 'postcircumfix:<{ }>'; none of these signatures match::(: Mu *%_):(: :p(:$p)!, Mu *%_):(: :k(:$k)!, Mu *%_):(: :kv(:$kv)!, Mu *%_):(: :v(:$v)!, Mu *%_):(: :BIND(:$BIND)!, Mu *%_):(\SELF: $key, Mu *%_):(\SELF: $key, Mu \$BIND, Mu *%_):(\SELF: $k… | |||
moritz | well, rakudo doesn't accept Mu | 13:14 | |
so there's some constraint through the signatures | |||
13:14
JimmyZ joined
13:17
xenoterracide joined,
Guest4600 is now known as ajr_
|
|||
lizmat | well, when I was beginning to become more active in Perl 6, I found that I wanted to use Mu in many situations | 13:18 | |
and ran into these cases that didn;t work | |||
some patches were done to make some of it work, but I reverted them because it became clear | |||
moritz | Mu is something you really shouldn't be using most of the time | ||
lizmat | that they would mess with a number of optimizations | 13:19 | |
moritz | Any is the new Mu | ||
lizmat | indeed, that's what I learned | ||
moritz | r: undef | ||
camelia | rakudo b2072f: OUTPUT«===SORRY!===Unsupported use of undef as a value; in Perl 6 please use something more specific: Mu (the "most undefined" type object), an undefined type object such as Int, :!defined as a matcher, Any:U as a type constraint, Nil as the | ||
..absens… | |||
moritz | we should recommend the use of Any in that error message | ||
lizmat | r: my %h= Any.new => 1 # works without a hitch | 13:20 | |
camelia | rakudo b2072f: ( no output ) | ||
lizmat | r: my %h= Any.new => 1; say %h # works without a hitch | ||
camelia | rakudo b2072f: OUTPUT«("Any<1768327221>" => 1).hash» | ||
lizmat | *sigh* use dots bites the dust | 13:21 | |
(in Perl 5) | 13:22 | ||
nwc10 | personally I was finding that the needed rules for interpolation changes were doing my head in | 13:23 | |
qr/$a.[0-9]/; # What's this going to mean? | |||
lizmat | I'm not saying that there wouldn't be problems | 13:24 | |
but right now p5p is early in the 5.20 cycle: so plenty of time to find these problems and iron them out | |||
and then at the end, maybe decide they can't be fixed and pull "use dots" then anyway | |||
nwc10 | life doesn't seem to work like that. See smartmatch, and when in the 5.10 cycle it happened | ||
lizmat | I'm not sure you can compare this to smart match | 13:25 | |
anyways, I think it is a missed opportunity | |||
and go on with Perl 6 | |||
nwc10 | lots of problems don't get spotted until after release | 13:26 | |
sometimes several years | |||
because the deployment cycle lags the release cycle so badly | 13:27 | ||
13:27
adu_ joined
|
|||
[Coke] | does nqp support file/line directives? | 13:28 | |
(since I am forced to combine files, it would be nice for the error messages to refer to the original files) | 13:29 | ||
FROGGS | [Coke]: never seen it | ||
13:33
cosimo left
13:35
fgomez left,
cosimo joined
13:46
btyler joined
|
|||
dalek | : 292b714 | (Tobias Leich)++ | t/test.pl: added fresh_perl_is and ~_like |
13:47 | |
: c0ba047 | (Tobias Leich)++ | t/test_summary: changes since last run are displayed |
|||
: 1ad6318 | (Tobias Leich)++ | / (3 files): make heredocs work |
|||
13:49
ironcamel left
14:00
risou_awy is now known as risou,
fhelmberger left
14:01
birdwindupbird left
|
|||
dalek | : 87f9d7a | (Tobias Leich)++ | STATUS.md: dont encode <br /> |
14:03 | |
14:06
tgt left
14:07
ztt_ left
|
|||
dalek | kudo/nom: 5705c3d | (Elizabeth Mattijsen)++ | src/Perl6/Grammar.nqp: Make the "undef" message refer to Any, rather than Mu As suggested at irclog.perlgeek.de/perl6/2013-06-14#i_7197427 |
14:08 | |
14:10
btyler_ joined
14:11
xilo left
|
|||
lizmat | moritz: your wish is my command :-) | 14:11 | |
question at FPW: is anyone taking care of Advent calender examples being kept working ? | 14:12 | ||
FROGGS | lizmat++ # awesome minion :P | ||
tadzik | lizmat: some of them are in spectests, I think | 14:13 | |
lizmat | the 2009 ones | ||
only | |||
moritz | std: undef | 14:14 | |
camelia | std 6348f35: OUTPUT«===SORRY!===Unsupported use of undef as a value; in Perl 6 please use something more specific: Mu (the "most undefined" type object), an undefined type object such as Int, :!defined as a matcher, Any:U as a type constraint, Nil as the absense | ||
..… | |||
moritz | could also use the update :-) | ||
lizmat++ | |||
lizmat is unsure where to do that | |||
14:15
PacoAir joined,
btyler_ left
|
|||
FROGGS | lizmat: github.com/perl6/std/blob/master/STD.pm6#L3129 | 14:15 | |
lizmat | ok, will clone that also when I have a better connection | ||
and then fix and push if a can | 14:16 | ||
timotimo_ | how hard would it be to make shaped arrays work in rakudo? :| | 14:17 | |
[Coke] | regarding the advent calendars posts - test what you can in the spectest, but we've already had issues where the spec has changed since the post. In that case, I think, we update the spectest. Be nice if the advent posts linked to their respective tests. | ||
lizmat | if that would work at all like typed hashes, some work indeed | ||
moritz | if shaped arrays worked like typed hashes, most of the work would be wasted, because that wouldn't give any boost in performance | 14:20 | |
14:20
spider-mario joined
|
|||
lizmat | are shaped arrays about performance ? I thought they were more about making sure you don't put illegal elements into an array ? | 14:21 | |
and hence the overhead of the checks needed, would make things slower always? | |||
timotimo_ | i *think* they are somewhat about not having boxed values in them? | ||
moritz | well, there's the combination from typed and from shaped | 14:22 | |
if you have a shaped and natively-typed array, you can (and should) omit all the boxing | 14:23 | ||
and then if you do stuff like @a >>+<< @b and both are natively typed, you can even try to use SIMD instructions to speed up the stuff | |||
timotimo_ | i'm thinking about implementing cellular automatons and such, wondering if they would benefit from shaped + native arrays | 14:26 | |
also thinking about the interplay of zavolaj/inline::c and shaped arrays | |||
lizmat | I find the use of "shaped" here confusing, I'd consider them "native" arrays | 14:27 | |
timotimo_ | from the spec it seemed to me that "shaped" means something like "with defined bounds in all the dimensions" | ||
moritz | right | ||
and "native" is about the contents being natives rather than objects | 14:28 | ||
lizmat | timotimo_: and mapped as well, e.g. Jan..Dec mapping to 0 .. 11 | ||
timotimo_ | so it could in theory be a shaped array that contains non-native things; perhaps even silly things like having a shaped array of non-shaped arrays | ||
moritz | so the two are orthogonal in usage | ||
14:28
FROGGS left
|
|||
moritz | but non-orthogonal in implementation | 14:28 | |
(unless you want to give up all the advantages you could have from them) | |||
lizmat | I would say, "go native when you can, remain boxed if you must" | 14:29 | |
14:29
PacoAir left
|
|||
timotimo_ | would i benefit from having a shaped + native array, if my step function will loop over each cell, grab every neighbour cell and do work on them? probably only if i can manage to only have native integer containers inside my stepfunc, right? | 14:30 | |
14:30
cosimo left
|
|||
lizmat | bounded / index mapped arrays I assume would remain boxed, unless you can resolve at compile time | 14:30 | |
14:30
PacoAir joined
|
|||
lizmat | s/resolve/go native/ | 14:30 | |
14:31
alester joined,
xilo joined
14:32
cosimo joined
|
|||
timotimo_ | i'm not sure what you mean with index mapped; something like my @foo{Month}; @foo[Jan] = 100;? | 14:32 | |
14:37
xilo left,
xilo joined,
risou is now known as risou_awy,
Vlavv left
14:42
toebu left
|
|||
lizmat | timotimo_: yes | 14:42 | |
timotimo_ | that's pretty neat o_O | 14:43 | |
lizmat | actually, that would me @foo{Month} | ||
timotimo_ | but that's what i wrote? | ||
lizmat | @foo{Jan} = 100; | ||
timotimo_ | ah, ok | ||
14:43
raiph joined
|
|||
timotimo_ | yeah, that makes sense | 14:43 | |
14:48
bluescreen10 joined
|
|||
[Coke] | Anything look squirrely here: github.com/partcl/partcl-nqp/blob/...ons.pm#L41 | 14:49 | |
dalek | d: d4cc5ab | (Elizabeth Mattijsen)++ | STD.pm6: Same change as in rakudo |
||
[Coke] | anything run with proc ends up with: Cannot look up attributes in a type object in nqp's parsegrammar. | ||
lizmat | it appears I can commit to std ;-) | 14:50 | |
timotimo_ | science! :) | ||
[Coke] | EEEK | ||
14:50
Vlavv joined
|
|||
colomon | \o/ | 14:50 | |
timotimo_ | [Coke]: are you sure you can write :namespace(@*PARTCL_COMPILER_NAMESPACE) without the pir::find_dynamic_lex__PS? | 14:51 | |
that's the only point i can see where that message could originate | |||
pmichaud | good morning, #perl6 | ||
colomon | \o | ||
lizmat | good morning, pmichaud! | ||
kresike | bye folks | 14:52 | |
14:52
kresike left
|
|||
nwc10 | good moarning, pmichaud. Oh, wrong channel :-) | 14:52 | |
(attribution - I believe that Pm was the first to pun that, at least on IRC) | 14:53 | ||
timotimo_ | *groan* | 14:54 | |
14:57
woolfy joined
|
|||
pmichaud | [Coke]: I'm not entirely sure we still have :namespace() stuff. | 14:57 | |
lizmat | pmichaud++ for pointing out the difference between %h{Str} and %h{Str(Any)} | 14:58 | |
14:58
risou_awy is now known as risou
|
|||
timotimo_ | lizmat: the latter means you can supply any, but it will be coerced, the former means you actually have to pass a string? (as the key, iirc) | 14:59 | |
lizmat | yes, I know that (now) :-) | ||
[Coke] | timotimo_, pmichaud: that code is no doubt a holdover from the original port to nqp-rx. | ||
lizmat | r: my %h{Int(Num)} # NYI it seems ;-( | 15:00 | |
camelia | rakudo b2072f: OUTPUT«===SORRY!===Invalid hash shape; type expected» | ||
[Coke] | pmichaud: any suggestion on a current-nqp improvement there? | ||
15:01
domidumont left
|
|||
timotimo_ | lizmat: i can try to at least turn that into a proper NYI error | 15:01 | |
std: my %h{Int(Num)}; | |||
camelia | std 6348f35: OUTPUT«ok 00:00 44m» | ||
pmichaud | [Coke]: not at the moment, no. I'm sure there *is* a solution, I'm just not sure what it is. probably need some jnthn++ input. | 15:02 | |
or for me to have tuits to figure it out | |||
I think that rakudo doesn't understand A(B) type syntax yet. | |||
r: sub abc(Str(Any) $x) { say $x.WHAT; }; abc(3) | 15:03 | ||
camelia | rakudo b2072f: OUTPUT«===SORRY!===coercive type declarations not yet implemented. Sorry. at /tmp/ZdAYejqS_y:1------> sub abc(Str(Any)⏏ $x) { say $x.WHAT; }; abc(3)» | ||
[Coke] whinges at jnthn++. :) | |||
pmichaud | okay, it understands them _there_. | ||
[Coke] will try to look at this after $DAYJOB | |||
timotimo_ | yeah, i'll put an nyi where the %h{Int(Num)} thing happens | ||
pmichaud | timotimo_: I would've expected them to be in a similar location. | ||
as in the (Num) should be part of the typename | |||
I wouldn't expect it to be in two different places. | 15:04 | ||
otoh, follow whatever STD.pm6 is doing here. | |||
timotimo_ | sure | ||
pmichaud | lizmat: ":keytype" and ":of" as named parameters feel like design smell to me. | 15:08 | |
[Coke] | :of(course they do) | 15:09 | |
pmichaud | in some sense, I'd prefer to simply pass a prototype object to be filled in by .classify | ||
lizmat | open to suggestions: we also need some introspection on typed hashes to find out what the type of keys is | ||
there is already an .of method | |||
what would the other method be called: that would be a good candidate for the named parameter, no? | 15:10 | ||
pmichaud | so... .classify(:type(Hash[TVal,TKey])) | ||
lizmat | or is it you don't like the named parameters in that context, period? | ||
pmichaud | I don't like the named parameters | ||
15:10
ajr_ left
|
|||
pmichaud | I like having the separate named parameters even less | 15:11 | |
15:11
ajr joined,
ajr is now known as Guest87186
|
|||
pmichaud | I'm not sure I can eliminate the named argument entirely, but I do think it's better to specify type information directly _as a type_ rather than have yet another syntax for specifying it | 15:12 | |
I wonder if it's worthy to consider .classify(:into($obj)) | |||
which adds information to $obj, rather than creating a new one | |||
lizmat | so, syntax should be hash[::TVal](@list) ? | ||
pmichaud | the default can be .classify( :into = Hash.new ) | ||
if someone wanted a typed hash, they would do .classify(:into(Hash[TVal].new)) | 15:13 | ||
then .classify could also possibly put things into tied objects, or ... I dunno. | |||
lizmat | that smells like needing syntactic sugar to me | ||
moritz likes :into | 15:14 | ||
pmichaud | or maybe .classify should be a method on a Hash instead of a List, then. | 15:15 | |
I'd have to review the use cases for that, though. | |||
timotimo_ | how do you people feel about a classify that works with lazyness? if there's only a finite amount of resulting categories (like True, False perhaps), it could return two lazy lists and cleverly generate results from there ... | ||
pmichaud | i.e., Hash.new.classify(@list) instead of @list.classify() | ||
timotimo_: hashes tend to want to be eager, in my experience | 15:16 | ||
lizmat suddenly realizes this is not about hash( :keytype<Str>, :of<Int> ) but about classify :-) | |||
pmichaud | well, I don't like hash( :keytype, :of ) either :-) | ||
(for the same reasons) | |||
hash is supposed to be a contextualizer, not a constructor. | |||
lizmat | gotcha :-) I got the I don't like meme here :-) | ||
timotimo_ | mhm | 15:17 | |
15:17
risou is now known as risou_awy
|
|||
timotimo_ | in that case, a tuple of lazy lists ;) | 15:17 | |
i recently saw a post about how to do it in python, which was a bit harder to do becaus python won't let you address older items that were generated easily | |||
pmichaud | timotimo_: the thing is, I don't think you can know the hash keys without being eager on the list | ||
timotimo_ | right | 15:18 | |
pmichaud | anyway, just before yapc::na jnthn++ speculated "ofkey" as the keyed counterpart to "of" | ||
lizmat | thinking about it, .classify / .categorize make sense as hash methods (as well) | ||
timotimo_ | i'm trying to fix multi infix:<P5~>(*@a) is export { [~] map { .P5Str }, @a } in v5 (when doing my $a = "o"; $a .= "k 5 - concat"; $a = "foo bar" i get "Cannot modify an immutable value") | 15:19 | |
pmichaud | irclog.perlgeek.de/perl6/2013-05-20#i_7093846 # "ofkey" | 15:20 | |
timotimo_ | i tried to do my $ = [~] ..., but that doesn't seem to change anything | ||
lizmat | pmichaud: a little later: irclog.perlgeek.de/perl6/2013-05-20#i_7094585 | 15:21 | |
PerlJam | pmichaud: re, hash not a constructor, there are a few places in the synopses that talk about hash() as a "hash composer" (S03:174, S04:1660) which really seems to be the same thing as a hash constructor to me. | 15:22 | |
15:22
btyler left
|
|||
pmichaud | PerlJam: I think that's hash() and not .hash() :-P | 15:23 | |
PerlJam | oh, I guess I slipped some context. | ||
pmichaud | lizmat: yes, in that later section TimToady echoes what I've been saying... key and value type information is done by instantiating a role | 15:24 | |
so, based on TimToady's comment, I'd go with a .keytype method on TypedHash | 15:25 | ||
lizmat | to introspect, like .of, right? | ||
15:25
domidumont joined
|
|||
pmichaud | yes | 15:25 | |
and while we're here (for the benefit of the irclogs), it might be worth re-mentioning that "TypedHash" in Rakudo itself might be a scaffolding anomaly and not a true implementation. | 15:26 | ||
15:26
tgt joined
|
|||
pmichaud | i.e., TypedHash is just the way we simulate typed hashes while we're still getting all of the pieces into place, in reality all hashes are typed. | 15:26 | |
lizmat | gotcha | 15:27 | |
pmichaud | (there's a bit of a bootstrapping issue in that we can't parameterize Hash directly yet...) | ||
lizmat | we can now with Hash.new | ||
pmichaud | right, but.... | 15:28 | |
r: my %h; say %h.of; | |||
camelia | rakudo b2072f: OUTPUT«(Mu)» | ||
pmichaud | oh, that works. | ||
cool. | |||
r: my %h; say %h ~~ TypedHash; | |||
camelia | rakudo b2072f: OUTPUT«===SORRY!===Undeclared name: TypedHash used at line 1» | ||
pmichaud | r: my %h; say %h ~~ Hash::TypedHash; | ||
camelia | rakudo b2072f: OUTPUT«Could not find symbol '&TypedHash' in method <anon> at src/gen/CORE.setting:10166 in any at src/gen/Metamodel.nqp:2504 in any find_method_fallback at src/gen/Metamodel.nqp:2492 in any find_method at src/gen/Metamodel.nqp:939 in block at /tmp/Xjm7zF_QgS:… | ||
pmichaud | hmmm | ||
rakudo++ | |||
15:29
btyler joined
|
|||
pmichaud | anyway, there's a circularity saw issue that may still need resolving. | 15:29 | |
(it may not; we just don't know entirely yet) | |||
lizmat | so: .hash should just be a contextualizer that presumably should always do Mu %h{Str(Eny)} ? | 15:30 | |
Any | |||
pmichaud | it should be up to the invocant to decide what sort of hash-like entity should be returned. | ||
if you're asking about List.hash or Any.hash, I think in general it should returned a standarad Hash | 15:31 | ||
there may be an argument that it should return an (immutable) EnumMap | 15:32 | ||
15:32
cognominal joined
|
|||
pmichaud | oops, I context switched -- ignore that last statement. | 15:32 | |
lizmat | so: .hash could be reduced to "my % := nqp::create(self)" | 15:33 | |
pmichaud | uh, no. | ||
'self' in this case would be the List or Any object, so nqp::create would give you one of those. | |||
lizmat | wouldn't the % coerce it to hash then? | 15:34 | |
15:34
xenoterracide left
|
|||
pmichaud | not on a binding. | 15:34 | |
15:34
xenoterracide|2 joined
|
|||
lizmat | of course, duh :-) | 15:34 | |
15:35
kaleem left
|
|||
pmichaud looks to see what .hash is now | 15:35 | ||
lizmat covers her ears to not hear the screaming :-) | 15:36 | ||
15:36
JimmyZ left
|
|||
pmichaud | the old | 15:36 | |
method hash() { my % = self } | |||
ought to work :) | |||
lizmat | I guess I changed that because Hash.new was calling .hash | 15:37 | |
originally | |||
pmichaud | yeah, which was backwards. :) | ||
lizmat | ok, I'll fix .hash now | ||
pmichaud | slightly faster/better might be method hash() { (my %).STORE(self) } | ||
...but I'd stick with the assignment for now. | 15:38 | ||
15:38
xinming left
|
|||
lizmat | faster is better in these case, I think :-) | 15:38 | |
pmichaud | well, I don't know that it'll be faster in reality. | ||
15:38
yoleaux left
|
|||
pmichaud | it might end up being a premature opt | 15:38 | |
lizmat | I'll spectest to make sure we didn't break anytyhing | ||
15:38
xinming joined
|
|||
lizmat | ok, fair enough :-) | 15:38 | |
pmichaud | I have to check on family stuff for a bit... bbl | 15:39 | |
lizmat | pmichaud++ | ||
15:43
shlomif joined
15:47
daxim left,
dylanwh left,
daniel-s left,
labster left,
hoelzro_ joined,
atrodo joined,
daniel-s joined,
FROGGS joined
15:50
bruges_ joined
15:51
macgruber joined
15:52
macgruber left,
itz__ joined
15:53
FOAD_ joined,
pochi_ joined,
pochi left,
FOAD left,
awwaiid_ joined,
itz_ left,
FOAD_ is now known as FOAD,
bruges left
15:55
geekosaur left,
cosimo left
15:56
cognominal left
15:57
awwaiid left,
daxim joined,
dylanwh joined
|
|||
dalek | kudo/nom: 693af19 | (Elizabeth Mattijsen)++ | src/core/Any.pm: Make .hash a contextualizer again As discussed at: irclog.perlgeek.de/perl6/2013-06-14#i_7197917 |
15:58 | |
lizmat | end of presentations at FPW, getting ready to go out | 16:01 | |
16:01
geekosaur joined,
xenoterracide|2 left
16:02
cosimo joined
16:04
Guest87186 left
16:06
dylanwh left,
dylanwh joined
16:08
yoleaux joined,
ChanServ sets mode: +v yoleaux
16:11
xilo left
16:13
kivutar left
|
|||
lizmat | .tell pmichaud Maybe it is an idea to have a 2nd optional parameter to .classify|.categorize to indicate the hash to classify/categorize into? | 16:13 | |
yoleaux | lizmat: I'll pass your message to pmichaud. | ||
lizmat | dinner& | 16:14 | |
16:14
woolfy left
16:16
lizmat left
16:17
shlomif left,
SamuraiJack left,
SamuraiJack joined
16:18
rindolf joined
16:30
raiph left
16:35
chutchut left
16:40
dmol joined
16:46
ssutch joined
16:52
tgt left
16:57
zby_home_ joined
16:58
tgt joined
|
|||
timotimo_ | the reason why the nyi coercive hash shape thingie doesn't work is because it's parsed as %foo{<semilist>} and inside the semilist there's just statements and those statements just have something in them like Str(Any) | 17:04 | |
r: say Str(Any) | |||
camelia | rakudo b2072f: OUTPUT«use of uninitialized value of type Any in string context in block at /tmp/fDILKqZ7ru:1» | ||
timotimo_ | r: my %foo{Str;Str} | 17:05 | |
camelia | rakudo b2072f: OUTPUT«===SORRY!===Invalid hash shape; type expected» | ||
timotimo_ | the check that fails here is probably that there's only one statement in the semilist | ||
17:09
fgomez joined
17:10
risou_awy is now known as risou
|
|||
timotimo_ | std: my %h{say "what"}; | 17:10 | |
camelia | std d4cc5ab: OUTPUT«ok 00:00 44m» | ||
timotimo_ | is that for calculating how big the dimensions are supposed to be? | 17:11 | |
r: my %h{say "what"}; | |||
camelia | rakudo b2072f: OUTPUT«===SORRY!===Invalid hash shape; type expected» | ||
timotimo_ | wait, hashes don't have "dimensions" | ||
17:12
bluescreen10 left,
tgt left
|
|||
timotimo_ | std: my %foo{Str;Str}; | 17:13 | |
camelia | std d4cc5ab: OUTPUT«ok 00:00 43m» | ||
timotimo_ | r: my %foo{}; | 17:18 | |
camelia | rakudo b2072f: OUTPUT«===SORRY!===Invalid hash shape; type expected» | ||
timotimo_ | i wish i could easily get a dump of the QAST that's below there without recompiling ;_; | 17:19 | |
i neglected to turn on my mighty desktop at home, so i'll have to wait ~300 seconds for a setting compile :( | 17:20 | ||
17:24
dayangkun_ joined
17:25
twigel left
17:26
btyler left
17:27
dayangkun left
17:29
risou is now known as risou_awy
17:33
Khisanth left
17:35
daxim left
17:42
bluescreen10 joined
|
|||
dalek | rl6-roast-data: b6cd7e0 | coke++ | / (4 files): today (automated commit) |
17:44 | |
[Coke] | niecza up to 17 failures from 16. rakudo failing a new test. | 17:45 | |
17:47
Khisanth joined
17:51
kaleem joined
17:52
kaare_ joined,
SamuraiJack left
|
|||
dalek | q: 749d14c | GlitchMr++ | answers.md: This is HTML, not XHTML Yes, it has XHTML doctype, but it means nothing. As it's HTML document with XHTML doctype, it should follow Appendix C in XHTML specification - www.w3.org/TR/xhtml1/#guidelines (one of rules is not to write `<p />`). |
17:52 | |
17:55
colomon left
|
|||
timotimo_ | i can get the .value of a WVal containing, for instance Str and check if it's a type object with !nqp::isconcrete, right? | 17:58 | |
18:01
kaleem left
18:04
btyler joined
|
|||
timotimo_ | r: sub test(Str(Any) $bar) { $bar }; | 18:05 | |
camelia | rakudo b2072f: OUTPUT«===SORRY!===coercive type declarations not yet implemented. Sorry. at /tmp/_W5_QQyg2_:1------> sub test(Str(Any)⏏ $bar) { $bar };» | ||
18:08
xilo joined
18:11
guru joined
18:12
guru is now known as Guest40781
|
|||
moritz | timotimo_: yes | 18:12 | |
18:12
Guest40781 is now known as ajr_,
REPLeffect joined
18:17
tgt joined,
itz__ left
18:20
pochi_ left,
pochi joined
18:21
itz joined
|
|||
lue | hello world o/ | 18:23 | |
18:23
kaleem joined
18:29
FOAD left
18:30
FOAD joined,
FOAD left,
FOAD joined
|
|||
ssutch | hola hay | 18:31 | |
18:31
lustlife` joined
|
|||
ssutch | what is the proper way to represent something like this 0[xX]([A-Fa-f0-9])+ in p6 (specifically, in a grammar, i want to identify hex integers) | 18:33 | |
18:34
lustlife left
|
|||
ssutch | this: token hex-int { '0'[xX](A..Fa..F0..9)+ }, just doesn't seem right | 18:34 | |
flussence | std: token hex-int { '0' <.[xX]> (<[A..Fa..f0..9]>+) } | 18:37 | |
camelia | std d4cc5ab: OUTPUT«===SORRY!===Undeclared routine: 'xX' used at line 1Potential difficulties: 'token' declaration outside of grammar at /tmp/aXF19OYy6B line 1:------> token hex-int ⏏{ '0' <.[xX]> (<[A..Fa..f0..9]>+) }Check failedFAILED 00:00… | ||
flussence | std: token hex-int { '0' <[xX]> (<[A..Fa..f0..9]>+) } | ||
camelia | std d4cc5ab: OUTPUT«Potential difficulties: 'token' declaration outside of grammar at /tmp/Ib4vr30k0i line 1:------> token hex-int ⏏{ '0' <[xX]> (<[A..Fa..f0..9]>+) }ok 00:00 43m» | ||
flussence | meh, close enough | ||
std: grammar foo { token hex-int { '0' <[xX]> (<[A..Fa..f0..9]>+) } }; foo.parse('0x2349fb1', :rule<hex-int>).say | 18:38 | ||
camelia | std d4cc5ab: OUTPUT«ok 00:00 47m» | ||
lue | std: token hex-int { 0 [x||X] <xdigit>+ } | 18:39 | |
camelia | std d4cc5ab: OUTPUT«Potential difficulties: 'token' declaration outside of grammar at /tmp/phRA7tAoJL line 1:------> token hex-int ⏏{ 0 [x||X] <xdigit>+ }ok 00:00 43m» | ||
flussence | r: grammar foo { token hex-int { '0' <[xX]> (<[A..Fa..f0..9]>+) } }; foo.parse('0x2349fb1', :rule<hex-int>).say | ||
camelia | rakudo b2072f: OUTPUT«「0x2349fb1」 0 => 「2349fb1」» | ||
flussence | r: grammar foo { token hex-int { '0' <[xX]> <xdigit>+ } }; foo.parse('0x2349fb1', :rule<hex-int>).say | ||
camelia | rakudo b2072f: OUTPUT«「0x2349fb1」 xdigit => 「2」 xdigit => 「3」 xdigit => 「4」 xdigit => 「9」 xdigit => 「f」 xdigit => 「b」 xdigit => 「1」» | ||
lue | r: say "0xDEADBEEF" ~~ /0 [x||X] <xdigit>+/ | ||
camelia | rakudo b2072f: OUTPUT«「0xDEADBEEF」 xdigit => 「D」 xdigit => 「E」 xdigit => 「A」 xdigit => 「D」 xdigit => 「B」 xdigit => 「E」 xdigit => 「E」 xdigit => 「F」» | ||
flussence | r: grammar foo { token hex-int { '0' <[xX]> (<.xdigit>+) } }; foo.parse('0x2349fb1', :rule<hex-int>).say | ||
camelia | rakudo b2072f: OUTPUT«「0x2349fb1」 0 => 「2349fb1」» | 18:40 | |
ssutch | nice | ||
18:40
xenoterracide|2 joined,
kaleem left
|
|||
ssutch | whoa i didn't now about .xdigit | 18:41 | |
flussence | r: grammar foo { token hex-int { :i '0x' (<.xdigit>+) } }; foo.parse('0X2349fb1', :rule<hex-int>).say | ||
camelia | rakudo b2072f: OUTPUT«「0X2349fb1」 0 => 「2349fb1」» | ||
ssutch | r: grammar foo { token hex-int { '0' <[xX]> <.xdigit>+ } }; foo.parse('0x2349fb1', :rule<hex-int>).say | ||
camelia | rakudo b2072f: OUTPUT«「0x2349fb1」» | ||
ssutch | why are you putting the :rule<hex-int>.say on there? | 18:45 | |
(disregard the .say) | |||
[Coke] | tells you which rule to use when parsing using that grammar. | 18:47 | |
as opposed to if you had a single regexp. | |||
r: say / '0' <[xX]> <.xdigit>+ / ~~ '0x2349fb1' | |||
camelia | rakudo b2072f: OUTPUT«False» | ||
lue | (the default rule is one named TOP. If you don't want to use that one, then you use :rule) | ||
18:48
pjcj left
18:49
konundra left
18:50
btyler left
|
|||
ssutch | ah ok, cool | 18:51 | |
18:52
REPLeffect left
|
|||
[Coke] | (my example above is reversed. put the string on the left) | 18:57 | |
18:58
btyler joined
|
|||
dalek | ecs: e473973 | lue++ | S03-operators.pod: [S03] Remove extraneous commas from operator precedence table Wouldn't want people thinking those commas are part of the example operators, now would we? |
18:59 | |
19:02
pjcj joined
19:12
FOAD left
|
|||
ssutch | does anyone know where the grammar for this talk is stored? www.youtube.com/watch?v=7nISwfLoAoU | 19:14 | |
19:14
FOAD joined
19:19
FOAD is now known as Guest25363
|
|||
ssutch | (it is a basic SQL grammar) | 19:19 | |
19:19
Guest25363 left
|
|||
sorear | good * #perl6 | 19:20 | |
19:26
domidumont left
19:40
REPLeffect joined,
xenoterracide|2 left
19:47
labster joined
19:53
FOAD joined
|
|||
moritz | good * sorear | 19:56 | |
19:59
adu_ left
20:01
census left
20:05
xilo left
20:06
xilo joined
|
|||
timotimo_ | how did i manage to get Missing or wrong version of dependency 'src/Perl6/Actions.nqp' directly after make install when i even made the setting without trouble? :| | 20:07 | |
20:09
dukeleto joined
|
|||
dukeleto | o/ | 20:09 | |
timotimo_ | hm, apparently my path is wrong | ||
20:10
FOAD left
|
|||
dalek | : bbb8412 | (Tobias Leich)++ | t/test_summary: dont encode <br /> |
20:11 | |
: b7b1eea | (Tobias Leich)++ | / (2 files): added skip_rest and skip_all_without_config |
|||
sorear | maybe I broke nqp. I didn't make test before my last commit. | ||
20:11
FOAD joined
20:13
arlinius left
20:14
xenoterracide|2 joined
|
|||
timotimo_ | wha ... it does /usr/bin/perl -MExtUtils::Command -e cp perl6 /home/timo/build/rakudo/install/bin, but perl6 in ./ and in ./install/bin/ have different sha1sums?! | 20:16 | |
oooh, text file busy! | 20:17 | ||
20:19
kaare_ left
|
|||
moritz | file system full? | 20:20 | |
dalek | kudo-star-daily: bc697b6 | coke++ | log/ (5 files): today (automated commit) |
||
timotimo_ | moritz: no, i had a perl6 open at that time | 20:21 | |
make install didn't care to report the error | |||
moritz | why would it be an error? | 20:24 | |
timotimo_ | well, it caused the file not to be overwritten | ||
and thus the new version not to be installed | |||
moritz | afaict on linux systems you can delete and copy over a file that is opened and/or being executed | 20:25 | |
*open | |||
timotimo_ | yeah, but that command thingie doesn't like to do that | ||
moritz | that is more than just a bit weird | 20:26 | |
timotimo_ | [timo@lolcathost] $ cp perl6 /home/timo/build/rakudo/install/bin | ||
cp: cannot create regular file ‘/home/timo/build/rakudo/install/bin/perl6’: Text file busy | |||
[timo@lolcathost] $ /usr/bin/perl -MExtUtils::Command -e cp perl6 /home/timo/build/rakudo/install/bin <- no output | |||
moritz | askubuntu.com/questions/218129/text...pt-on-bash | 20:29 | |
it seems that writing + executing do get in each other's way | |||
... under certain conditions and moon phases | |||
20:29
census joined
|
|||
timotimo_ | :) | 20:29 | |
moritz | anyway, time for sleep here | 20:30 | |
good night * | 20:31 | ||
20:33
mikemol joined
|
|||
FROGGS | lolcathost *narf* | 20:37 | |
timotimo_ | :) | 20:39 | |
why would an Smts have an Op directly inside it? o_O | |||
FROGGS | why not? | 20:40 | |
timotimo_ | i thought Stmts is there to have multiple Stmt's in it? | 20:41 | |
FROGGS | no, I have seen Op in there in several places | 20:42 | |
timotimo_ | oke | ||
FROGGS | and it just does them in order and return the value of the last | ||
timotimo_ | okay, this should get a proper NYI error for coercive types in hash declaration | 20:44 | |
20:44
arlinius joined
|
|||
ssutch | forgive me, in <subrule>{1,2} in perl 6 is <subrule> ** 2 | 20:47 | |
? | |||
timotimo_ | no, it would be <subrule> ** 1..2 | ||
ssutch | aye, thank you | ||
timotimo_ | you're welcome :) | 20:48 | |
ssutch | i have a near-functional protocol buffer grammar, just adding quoted strings and comments | ||
it's a great exercise to learn S05 in p6 | 20:49 | ||
timotimo_ | cool :) | ||
timotimo_ spectests his error message improvements | 20:55 | ||
seems to be all i do these days | |||
20:58
benabik left
20:59
benabik joined
21:08
tomyan joined
|
|||
sorear | nqp-jvm: sub foo() { 5; }; my int $pi := foo(); say $pi | 21:12 | |
camelia | nqp-jvm: OUTPUT«Confused at line 2, near "say $pi" in panic in comp_unit in TOP in parse in parse in <anon> in compile in eval in evalfiles in command_eval in command_line in MAIN in <anon> in <anon>» | ||
sorear | nqp-jvm: sub foo() { 5; }; my int $pi := foo(); say($pi) | ||
camelia | nqp-jvm: OUTPUT«5» | ||
sorear | nqp-jvm: my $bob := 5; sub foo() { $bob; }; my int $pi := foo(); say($pi) | 21:13 | |
camelia | nqp-jvm: OUTPUT«5» | ||
diakopter | nqp-jvm: my $bob := " 5 "; sub foo() { $bob; }; my int $pi := foo(); say($pi) | 21:19 | |
timotimo_ | yays, i have found out how to turn my cpu fan all the way up | ||
camelia | nqp-jvm: OUTPUT«5» | ||
diakopter | sorear: ^ | ||
nqp-jvm: my int $bob := " 5 "; sub foo() { $bob; }; my int $pi := foo(); say($pi) | |||
camelia | nqp-jvm: OUTPUT«0» | ||
21:19
btyler left
|
|||
diakopter | nqp-jvm: my int $bob := 5; sub foo() { $bob; }; my int $pi := foo(); say($pi) | 21:20 | |
camelia | nqp-jvm: OUTPUT«5» | ||
sorear | diakopter: it's ok, I found my error | ||
result_[ions] does coercion | |||
21:20
konundra joined
21:22
colomon joined,
salv0 left
21:27
salv0 joined
21:28
dukeleto left
21:32
tomyan left
|
|||
timotimo_ | gist.github.com/timo/4cd10faa0768e855df87 - are these fails known? | 21:35 | |
Missing or wrong version of dependency 'src/Perl6/Pod.nqp' - wtf? >:( | |||
dalek | : c3ab678 | (Tobias Leich)++ | / (2 files): a more reliabe way for indirect object syntac with variable |
||
[Coke] | timotimo_: I occasionally get fails when I have a built, installed perl6, and then use the built, installed parrot to build a new NQP. | 21:36 | |
FROGGS | timotimo_: is it possible that you pass -j<something> to make install ? | ||
timotimo_ | no, i didn't, but perhaps my system did it for me | ||
[Coke] | ... so I try to keep it completely separate - one tool chain that I install for doing development *in* perl6, and then one each for everything that involves hacking on perl6. | ||
timotimo_ | i'll re-run it with a clean build | ||
[Coke] | FROGGS: not that that should fail. | 21:37 | |
ssutch | [^\0\n] in perl 6 = <[!\V!\\0]> ? | 21:38 | |
sorear | <-[\0\n]> | 21:39 | |
ssutch | r: 'omg\n' ~~ /<[!\V!\\0]>+/ | ||
camelia | rakudo b2072f: ( no output ) | ||
sorear | there is no ! syntax | ||
ssutch | oi, i was reading it wrong, thanks | ||
r: use Test; nok 'omg\n' ~~ /<-[\0\n]> | |||
camelia | rakudo b2072f: OUTPUT«===SORRY!===Unrecognized backslash sequence: '\0'at /tmp/Igg9Ifp7yM:1------> use Test; nok 'omg\n' ~~ /<-[\⏏0\n]> expecting any of: postfix infix stopper infix or meta-infix prefix or term… | 21:40 | |
ssutch | r: use Test; nok 'omg\n' ~~ /<-[\0\n]>/ | ||
camelia | rakudo b2072f: OUTPUT«===SORRY!===Unrecognized backslash sequence: '\0'at /tmp/9MOx7HsvPF:1------> use Test; nok 'omg\n' ~~ /<-[\⏏0\n]>/ expecting any of: postfix infix stopper infix or meta-infix prefix or term… | ||
ssutch | r: use Test; nok 'omg\n' ~~ /<-[\\0\n]>/ | ||
camelia | rakudo b2072f: OUTPUT«not ok 1 - » | ||
timotimo_ | i don't udnerstand, what do you want to not match? | 21:41 | |
ssutch | any value besides a newline or a null byte | ||
timotimo_ | oh, i think you want something else then | ||
r: use Test; nok 'omg\n' ~~ /<-[\x00\n]>/ # maybe | |||
camelia | rakudo b2072f: OUTPUT«not ok 1 - » | ||
timotimo_ | well, it will match the newline at the end | ||
r: use Test; nok 'omg\n' ~~ /^<-[\x00\n]>/ # maybe | 21:42 | ||
camelia | rakudo b2072f: OUTPUT«not ok 1 - » | ||
timotimo_ | r: say "what" ~~ /<-[\x00]>/; | ||
camelia | rakudo b2072f: OUTPUT«「w」» | ||
timotimo_ | r: say "what" ~~ /<-[\x00\n]>/; | ||
camelia | rakudo b2072f: OUTPUT«「w」» | ||
timotimo_ | r: say "what" ~~ /<-[\x00\n]>+/; | ||
camelia | rakudo b2072f: OUTPUT«「what」» | ||
timotimo_ | r: say "what\n" ~~ /<-[\x00\n]>+/; | ||
camelia | rakudo b2072f: OUTPUT«「what」» | ||
timotimo_ | do you want every character to not have newlines and nullbytes or what? | ||
sorear is writing continuation tests | 21:43 | ||
ssutch | it needs to reject if it finds a newline | ||
timotimo_ | r: say "\x00what\n" ~~ /<-[\x00\n]>+/; | ||
camelia | rakudo b2072f: OUTPUT«「what」» | ||
ssutch | (or a null byte) | ||
timotimo_ | ah, then you will want ^^<-[...]>*$$ | ||
tadzik | dagurval, timotimo_: thanks for your pull requests! | ||
timotimo_ | or you will want to not-match /\n | \x00/ | ||
ssutch | whoa | 21:44 | |
timotimo_ | tadzik: you're very welcome :) | ||
tadzik | I only now managed to review some of them | ||
exam time is practically over :) | |||
timotimo_ | yays \o/ | 21:45 | |
ssutch | r: say 'omg\n' ~~ /^^<-[\x00\n]>*$$/ | ||
camelia | rakudo b2072f: OUTPUT«「omg\n」» | ||
timotimo_ | i think you have a literal \ and n there | ||
r: say 'omg\n'; say "ong\n"; | 21:46 | ||
camelia | rakudo b2072f: OUTPUT«omg\nong» | ||
ssutch | r: say "omg\n" ~~ /^^<-[\x00\n]>*$$/ | ||
camelia | rakudo b2072f: OUTPUT«「omg」» | ||
timotimo_ | r: say "ong\n" ~~ /\n/; | 21:47 | |
camelia | rakudo b2072f: OUTPUT«「」» | ||
21:47
ajr_ left
|
|||
timotimo_ | well, it does match the newline there | 21:47 | |
i wonder why it doesn't match the newline in your example | |||
oh sill yme | |||
i meant to tell you to use ^ and $ | |||
because the old ^ and $ are now ^^ $$ (beginning of line and end of line), but ^ and $ are now beginning of string and end of string | |||
ssutch | i see | 21:48 | |
r: say "omg\n" ~~ /^<-[\x00\n]>*$/ | |||
camelia | rakudo b2072f: OUTPUT«Nil» | ||
ssutch | r: say "omg" ~~ /^<-[\x00\n]>*$/ | ||
camelia | rakudo b2072f: OUTPUT«「omg」» | ||
timotimo_ | yays! \o/ | ||
ssutch | huzzah! | ||
timotimo_ | i think the inverse may be easier: say "omg\n" !~~ / \n | \x00 / | ||
r: say "omg\n" !~~ / \n | \x00 / | 21:49 | ||
camelia | rakudo b2072f: OUTPUT«False» | ||
timotimo_ | false as in: not okay | ||
ssutch | yeah | ||
timotimo_ | ooooooooooooooh i know what i was doing wrong | 21:50 | |
i neglected to re-make-and-install v5 | 21:51 | ||
facepalm^10 | |||
FROGGS: i was trying to fix a little thing in v5, but it seemed to be a big thing in disguise or something | 21:52 | ||
FROGGS | O.o | ||
timotimo_: what are you up to? | |||
21:52
d4l3k_ joined
|
|||
FROGGS | I am currently working on bless, dunno if you know what it does in P5 | 21:52 | |
timotimo_ | well, i just randomly picked out a test file (04-strings.t i think) and it failed 10 out of 15, because it was dieing fatally when trying to put a string into a variable | ||
i have a basic idea, but i wouldn't be able to fix anything about it | 21:53 | ||
masak waves from .uk | |||
timotimo_ | heyo masak :) | ||
FROGGS | masak o/ | ||
21:53
sergot left
|
|||
masak | heyo! :) | 21:53 | |
FROGGS | hmmm, let me run that test | ||
21:53
pmichaud left,
pmichaud joined,
dalek left
|
|||
masak | the sun never sets on the British empire. but it sure can rain now and then. | 21:53 | |
timotimo_ | so what it was doing is this: my $o = "o"; $o .= "k 10 - concat"; $o = "new long string to use substr on"; | ||
and it gets "cannot change immutable value" when it tries to set $o to the new string | 21:54 | ||
21:54
tadzik left,
[Coke] joined,
tadzik joined,
sergot joined,
d4l3k_ is now known as dalek
|
|||
masak | today when coding Perl 6, I was suffering from the complete lack of tie between a nested class and the class it's nested in. yes, I know Perl 6 doesn't do that kind of thing; I just think it's a bit of a pity. | 21:55 | |
tadzik | masak! \o/ | ||
masak | in the end, I used a dynamic variable to talk between them. which works, but is kind of inelegant. | 21:56 | |
tadzik! \o/ | |||
timotimo_ | oh no, i think i made something die ;_; | 21:57 | |
masak | my use case was this: the outer class was a (LaTeX) table. the inner class was a table row. the table row has a @.columns attribute with bits of text in it. the table has a @!columns_max_widths attribute. so far so good. | ||
each class is responsible for rendering itself (with .Str) | |||
FROGGS | timotimo_: the .= operator is faulty as it seems | 21:58 | |
timotimo_ | yes, but i don't understand why. i tried to turn P5~ to return my $ = ... instead and didn't help | ||
masak | but at the time the table row needs to render itself, it needs the information about the max widths from its table. | ||
FROGGS | you cant reassign to a var after that | ||
masak | and there's no way to access that. | ||
timotimo_ | FROGGS: yeah, that's what i figured ;) | ||
FROGGS | timotimo_: I guess $s contains an unboxed string afte the .= or something like that | ||
timotimo_ | oh! unboxed? whoops :) | 21:59 | |
but it just uses [~] | |||
sorear | nqp-jvm: my $x=[]; say($x =:= $x) | ||
camelia | nqp-jvm: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 2, near "[]; say($x" in panic in infix:sym<=> in !protoregex in infix in infixish in EXPR in statement in statementlist in comp_unit in TOP in parse in parse in <anon> in compile… | ||
timotimo_ | i don't understand why it would break | ||
22:00
bluescreen10 left
|
|||
FROGGS | timotimo_: maybe we have to make a new Str after the concat? | 22:00 | |
22:00
Chillance left
|
|||
timotimo_ | should i try that? | 22:00 | |
FROGGS | yeah | ||
sorear | nqp-jvm: my $x=[]; say(nqp::eqaddr($x,$x)) | ||
timotimo_ | i'm currently fixing up my improved error messages for shaped hashes | ||
camelia | nqp-jvm: OUTPUT«Assignment ("=") not supported in NQP, use ":=" instead at line 2, near "[]; say(nq" in panic in infix:sym<=> in !protoregex in infix in infixish in EXPR in statement in statementlist in comp_unit in TOP in parse in parse in <anon> in compile… | ||
sorear | nqp-jvm: my $x:=[]; say($x =:= $x) | 22:01 | |
camelia | nqp-jvm: OUTPUT«1» | ||
22:01
alester left
|
|||
FROGGS | timotimo_: searching for 'Str' should give you something to copy&paste | 22:01 | |
timotimo_ | r: my %h{Str(Any)}; # says "coercive type declarations not yet implemented. Sorry." locally | ||
camelia | rakudo b2072f: OUTPUT«===SORRY!===Invalid hash shape; type expected» | ||
timotimo_ | r: my %h{Str;Str}; # says "Multidimensional hashes not yet implemented. sorry." locally | ||
camelia | rakudo b2072f: OUTPUT«===SORRY!===Invalid hash shape; type expected» | ||
22:03
rindolf left
22:04
lustlife` left
|
|||
FROGGS | r: class U { method new { self.HOW.^add_parent(Array) } }; | 22:04 | |
camelia | rakudo b2072f: ( no output ) | ||
timotimo_ | i really wish there was a more helpful error message when the version of some module is "out of date" | ||
FROGGS | yeah :/ | 22:05 | |
timotimo_ | i should try to hack on that, if that's anywhere in nqp at all | ||
22:05
MuRd0c_x01 joined
|
|||
FROGGS | hmmm, could be nqp, there is some sha stuff for that iirc | 22:06 | |
r: class U { method new { self.HOW.^add_parent(Array) } }; my $uo = U.new; push $uo, 1 # this fails locally | |||
camelia | rakudo b2072f: OUTPUT«NQPClassHOW does not support adding parents after being composed. in any add_parent at src/stage2/gen/nqp-mo.nqp:767 in method new at /tmp/yacDiGG1_9:1 in block at /tmp/yacDiGG1_9:1» | ||
FROGGS | ahh | ||
timotimo_ | yay, i should try a new spectest now. i'm hopeful :) | 22:08 | |
22:09
tomyan joined
|
|||
FROGGS | :o) | 22:09 | |
r: class U { }; my $uo = U.new but Array.new; say $uo; say $uo.^methods # it is not that easy ehh? | 22:12 | ||
camelia | rakudo b2072f: OUTPUT«U+{}.new()» | ||
sorear has continuation tests | 22:13 | ||
tonight: make them pass | |||
timotimo_ | ... continuations as in ... actual continuations? | 22:14 | |
for gather/take? | |||
colomon | \o/ | ||
ssutch | just watched jnthn's "To the JVM and beyond!" talk. it was awesome. | ||
timotimo_ | yaaaaays | ||
22:14
tomyan left
|
|||
diakopter | sorear: good luck :) | 22:15 | |
FROGGS | ssutch: do you have a link for me? | ||
ssutch | FROGGS: www.youtube.com/watch?v=LHjF3WujAu8 | ||
FROGGS | thanks! | ||
sorear | timotimo_: yes, actual continuations, for gather/take | 22:16 | |
ssutch | np! | ||
ugexe | im trying to test a module but prove -e perl6 -l t/ but it isnt looking in /lib for the module (which isnt installed yet) so it fails during the first test. how do i do this without manually adding use lib 'lib' to everything? | 22:18 | |
timotimo_ | that's cool :) | ||
diakopter | Liz' talk: www.youtube.com/watch?v=P0pm5eUOhbY | ||
22:18
btyler joined
|
|||
timotimo_ | Too many positional parameters passed; got 2 but expected 0 in block at t/spec/S02-names-vars/signature.rakudo:82 | 22:19 | |
this fail for anyone else? | |||
r: my @list = 1..4; my (:@even, :@odd) := classify { $_ %% 2 ?? 'even' !! 'odd' }, @list; | 22:20 | ||
camelia | rakudo b2072f: ( no output ) | ||
timotimo_ | huh, did i break it?! | ||
tadzik | This talk was given at the First Dutch Perl Workshop on 25 May 2013 in Warsaw | 22:21 | |
wæt‽ | |||
diakopter | yah | 22:22 | |
(and again in Austin) | |||
sorear | that's....not a very Dutch city. | ||
FROGGS | *g* | ||
ssutch | i am stumped again: gist.github.com/samuraisam/5785740 | 22:23 | |
a grammar for a string literal | |||
you know, it occurs to me that TinyJSON probably addresses this | 22:24 | ||
only, json does not allow for single quotes | |||
diakopter | regular char also needs to exclude double quotee | ||
masak | ssutch: if you could provide some failing test input as well...? | ||
FROGGS | ssutch: yours would allow: "abc' | ||
timotimo_ | watch out, you... yeah | ||
ssutch | yeah | ||
masak: i can indeed | |||
sorear will watch that later | 22:25 | ||
timotimo_ | you're matching \\ in regular-char | ||
diakopter | also double quote | ||
timotimo_ | indeed | ||
22:25
dukeleto joined
|
|||
FROGGS | you could do: :my $quote; <quote> { $quote := ~$<quote> } [<hex-escape> | <oct-escape> | <char-escape> | <regular-char>]+ $quote | 22:25 | |
diakopter | ssutch: remember those token alternations aren't in any order | 22:26 | |
timotimo_ | why not <start=quote> ... $<start>? | ||
ssutch | diakopter: their order is insignificant? | ||
timotimo_ | | is "longest token matching" semantics | ||
22:27
spider-mario left
|
|||
FROGGS | timotimo_: I believe you have at least to put a { } in between for current rakudo | 22:27 | |
timotimo_ | ok | ||
ssutch | yeah, it pukes | ||
diakopter | it takes the one that matches the most | ||
ssutch | diakopter: ah, ok | 22:28 | |
22:28
btyler left
|
|||
ssutch | timotimo_ FROGGS rakudo actually accepts timotimo_'s suggestion | 22:28 | |
timotimo_ | ooooh yay | ||
rakudo++ | |||
22:28
zby_home_ left
22:29
dukeleto left,
dukeleto joined
|
|||
FROGGS | cool | 22:30 | |
timotimo_ | r: say "'balanced'" ~~ / $<quote>=[\" | \'] \w+ $<quote> /; say q{'balanced"} ~~ / $<quote>=[\" | \'] \w+ $<quote> /; | ||
camelia | rakudo b2072f: OUTPUT«「'balanced'」 quote => 「'」Nil» | ||
timotimo_ | indeed. cool beans :) | ||
ssutch | gist is updated with failing code: gist.github.com/samuraisam/5785740 | ||
it actually goes into an infinite loop | 22:31 | ||
FROGGS | r: say "'balanced'" ~~ / ([\" | \']) \w+ $0 /; | ||
camelia | rakudo b2072f: OUTPUT«「'balanced'」 0 => 「'」» | ||
FROGGS | cool, | ||
somebody fixed it :o) | |||
timotimo_ | er, there is no TOP rule there | ||
ssutch | oh, right.. derp | ||
gist is updated :) | 22:32 | ||
it's not quite perfect | 22:33 | ||
FROGGS | rn: say 1001110011 ~~ /^ (.+) $0+ @([\~] $0.comb)? $ / # RT 111518 | ||
camelia | niecza v24-76-g3e65d84: OUTPUT«「1001110011」 0 => 「10011」» | ||
..rakudo b2072f: OUTPUT«No such method 'comb' for invocant of type 'Any' in regex at /tmp/QwWnmNJAY3:1 in method ACCEPTS at src/gen/CORE.setting:10509 in method ACCEPTS at src/gen/CORE.setting:683 in block at /tmp/QwWnmNJAY3:1» | |||
timotimo_ | it gives me a failed match instead of an infinite loop | ||
FROGGS | rn: say 1001110011 ~~ /^ (.+) $0+ $ / # RT 111518 | ||
camelia | rakudo b2072f, niecza v24-76-g3e65d84: OUTPUT«「1001110011」 0 => 「10011」» | ||
ssutch | yeah putting the TOP in there fixed the loop | ||
timotimo_ | :) | ||
ssutch | [derp] | 22:34 | |
timotimo_ | also, removing the ; should make it match | ||
ssutch | i have, it doesn't | ||
timotimo_ | (actually not, no) | ||
did you try the rakudo::debugger yet? | |||
ssutch | i haven't, i should | ||
timotimo_ | i think '\\' would match two actual backslashes, hold on | ||
ssutch | i have been using Grammar::Tracer successfully | ||
timotimo_ | r: "\\" ~~ / '\\' / | 22:35 | |
camelia | rakudo b2072f: ( no output ) | ||
timotimo_ | r: say "\\" ~~ / '\\' / | ||
camelia | rakudo b2072f: OUTPUT«「\」» | ||
timotimo_ | r: say "\\\\" ~~ / '\\' /; say "\\\\" | ||
camelia | rakudo b2072f: OUTPUT«「\」\\» | ||
ssutch | in this case, <regular-char> matches the ending " | ||
timotimo_ | ah, ok | ||
oooh, good point. | |||
but shouldn't it backtrack? | |||
and \' is nicer than '\'' | 22:36 | ||
</nitpick> | |||
ssutch | right | ||
when it is functional, i am happy to pick it apart to learn more, but my goal now is focused on making it work at all | 22:37 | ||
it occurs to me that matching every character against 4 regex is probably not the most performant option | 22:38 | ||
timotimo_ | sure | ||
ssutch | (using perl6-debug, wrock!) | ||
timotimo_ | :) | ||
ssutch | it doesn't appear to do any backtracking | 22:39 | |
timotimo_ | mhm | ||
22:39
Nom- left
|
|||
timotimo_ | oh yeah | 22:39 | |
token implies :ratchen | |||
try rule instead of token | |||
or regex perhaps? i would need to look up the difference again | |||
22:40
Nom- joined
|
|||
ssutch | it says in rule and token that backtracking must be explicit | 22:40 | |
timotimo_ | indeed | ||
ssutch | how does one alter that behavior | ||
FROGGS | rule is about matching whitespace implicitly | ||
>> | |||
22:41
census left
|
|||
timotimo_ | ah, right | 22:41 | |
ssutch | so i should put a :? at the end of <regular-char> | ||
22:41
benabik left
|
|||
ssutch | or on the $<start> | 22:42 | |
22:43
abnorman left,
abnorman joined,
abnorman left
|
|||
ssutch | stepping through the debugger, neither :? nor :! at the end of either <regular-char> or $<start> have an effect | 22:45 | |
22:45
xenoterracide|2 left
|
|||
timotimo_ | tadzik: can you test if the select() function actually properly returns an array with three arrays inside? | 22:47 | |
22:48
Rix left
22:53
salv0 left
|
|||
masak | 'night, #perl6 | 22:54 | |
timotimo_ | 'night masak | ||
have fun in the uk :) | |||
22:56
Rix joined
22:57
salv0 joined
|
|||
dalek | : a9deae2 | (Tobias Leich)++ | lib/Perl5/ (2 files): treat packages like classes |
23:01 | |
23:04
MuRd0c_x01 left
|
|||
timotimo_ | ugexe: somehow the -1 return value for the edistance if the limit was reached feels inelegant to me, but i don't know what's common to do the same thing | 23:04 | |
maybe Nil makes more sense? or perhaps Int | 23:07 | ||
there's also a stray comma in your edistance signature, and if you're at it, could even add Int for the $edistance and Str for the source and target (unless it works on non-strings, too?) | |||
dalek | osystem: f3d2ee0 | ugexe++ | META.list: Add Text::Levenshtein::Damerau |
23:08 | |
osystem: e1d945f | (David Warring)++ | META.list: Merge pull request #25 from ugexe/patch-1 Add Text::Levenshtein::Damerau |
|||
perigrin | Darmok and Levenshetin at The Library. | 23:16 | |
timotimo_ | slaves to darmok: god of blood | 23:17 | |
chapter 2: dwarf levenshtein | |||
FROGGS | Darmok, his hands wide... | ||
sorear | timotimo_: Inf maybe? or $limit+1? | 23:21 | |
diakopter | FROGGS: at Tinagra? | 23:22 | |
FROGGS | diakopter: I remembered something like Tenagra, but yes :o) | ||
23:22
s1n left
|
|||
FROGGS | maybe this is due to the german translation | 23:23 | |
perigrin | Temba his arms wide ... | ||
Darmok and Gilad at Tenagra. | 23:24 | ||
FROGGS | perigrin++ | ||
sorear ponders nqp::dynamicwind | 23:26 | ||
colomon ponders sailing the dynamic wind... | 23:27 | ||
[Coke] | beats the static wind. | 23:28 | |
ssutch | aha! gist.github.com/samuraisam/5785740 | 23:29 | |
perhaps more verbose, but for my feeble abilities, appears to work | 23:30 | ||
sorear | my mind translates 'dynamic wind' to 'apparent wind', interestingly | 23:31 | |
timotimo_ | i broke a test with my "improvement" of the error message :( | 23:32 | |
23:34
abnorman joined
|
|||
ugexe | timotimo_: will do | 23:35 | |
timotimo_ | i think i found out what happened, but i don't understand why it broke the test ... not at all :( | ||
23:35
lizmat joined
|
|||
ssutch | Grammar::Tracer and perl6-debug do not like to play together | 23:36 | |
timotimo_ | the debugger shouldn't step into the tracer, though, should it? | 23:37 | |
because the tracer was compiled without the debug hooks i think? | |||
and now it works, but why? i'm confused, but i won't argue with the spectests | 23:43 | ||
(40 minutes of spectests now :( ) | |||
i was testing the wrong test file >_> | 23:46 | ||
can someone please check t/spec/S02-names-vars/signature.rakudo? because it gives me Too many positional parameters passed; got 2 but expected 0 for the 13th test, but i don't know if my changes caused that and i don't have the time to build another older rakudo >_> | 23:47 | ||
lizmat | will do | ||
got the same error here | 23:48 | ||
diakopter | lizmat: your talk is online | ||
23:50
woolfy joined
|
|||
timotimo_ | oh thank you so much, lizmat, i was going crazy | 23:51 | |
23:51
lizmat left
|
|||
timotimo_ | because the same code on the evalbot doesn't error out >_< | 23:51 | |
23:51
lizmat joined
|