»ö« 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 NYI␤current 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).hash␤Nominal 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 eith␤␤Unhandled 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 1␤Potential difficulties:␤ 'token' declaration outside of grammar at /tmp/aXF19OYy6B line 1:␤------> token hex-int ⏏{ '0' <.[xX]> (<[A..Fa..f0..9]>+) }␤Check failed␤FAILED 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\n␤ong␤␤»
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