»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:01
raiph joined
|
|||
dalek | blets: 5f34264 | (Herbert Breunung)++ | docs/index.txt: formating index |
00:13 | |
blets: 508bafd | (Herbert Breunung)++ | docs/appendix- (3 files): still weeding formating |
|||
00:14
eviltwin_b joined,
geekosaur left
00:15
eviltwin_b is now known as geekosaur
00:21
spider-mario left
00:22
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
00:30
lichtkind left
00:44
JimmyZ_ joined
00:50
tokuhirom joined
00:54
geekosaur left,
eviltwin_b joined,
eviltwin_b is now known as geekosaur
01:01
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
|
|||
rurban | heap-buffer-overflow with /perl6 -e'my @a=splice([], 1);' reading 2 byte left a 64byte buffer | 01:05 | |
01:08
geekosaur left,
eviltwin_b joined,
eviltwin_b is now known as geekosaur
|
|||
rurban | error is in item + offset + elems1 src/pmc/resizablepmcarray.pmc:673 | 01:08 | |
when shrinking the array | 01:09 | ||
01:12
raiph left
|
|||
gfldex | rurban: what does perl6 --version for you? | 01:24 | |
rurban | latest git master | 01:25 | |
parrot also | |||
its actually a parrot bug | |||
gfldex | i don't got that problem under cygwin 32bit | ||
01:28
wolfman2000 joined
01:30
eviltwin_b joined,
geekosaur left
01:31
eviltwin_b is now known as geekosaur
01:32
PacoAir left
01:35
thelazydeveloper left
01:36
Chillance left
01:43
vlixes joined,
JimmyZ_ left,
araujo joined,
araujo left,
araujo joined
|
|||
rurban | gfldex: I use a special address checking tool address-sanitizer, like valgrind, just better | 01:43 | |
Described here: blogs.perl.org/users/rurban/2012/03...und-2.html | 01:44 | ||
02:02
whiteknight left
02:10
jaldhar joined
02:13
alvis` joined
02:15
alvis left
02:17
ddima left
02:19
arnsholt_ joined,
ddima joined
02:21
tkr joined
02:25
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
02:30
ponbiki joined
02:33
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
02:38
bluescreen10 left
02:39
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
02:40
orafu left,
Helios` joined,
orafu joined
02:44
kranius joined
02:47
eviltwin_b joined,
geekosaur left
02:48
eviltwin_b is now known as geekosaur
02:49
Timbus joined,
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
02:50
Entonian joined
02:53
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
02:57
geekosaur left,
geekosaur joined
03:01
fgomez left
03:02
Entonian left
03:05
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
03:32
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
03:39
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
03:44
geekosaur left
03:45
geekosaur joined
03:47
poincare101 left
03:58
cognominal___ joined
04:01
thou joined
04:17
JimmyZ_ joined
04:26
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
04:39
geekosaur left
04:41
geekosaur joined
04:46
tokuhirom left
04:47
ponbiki left
04:48
birdwindupbird joined
04:49
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
04:55
geekosaur left
04:56
geekosaur joined
|
|||
moritz | o/ | 05:14 | |
05:16
sftp left
|
|||
sorear | o/ | 05:17 | |
05:25
kaare__ joined
05:34
noam left
05:35
noam joined
05:36
uvtc joined
|
|||
uvtc | How can I match one digit from 1..9, then one or more 0..9 digits after that? I'm trying $s ~~ m/(<[1..9]>\d2..*)/ but it doesn't seem to be working right (for one thing, it's not capturing the first digit). | 05:45 | |
And for another, it seems to be matching letters as well. $s looks like jf5b492c3i, and I'm trying to match the 492 in there, but I'm getting 492c3i. | |||
moritz | r: 'foo 42' ~~ /<[1..9]>\d/ and say ~$/ | 05:46 | |
p6eval | rakudo cf40f2: OUTPUT«42» | ||
moritz | uvtc: ..* matches the same as .+ | ||
uvtc: that is, any characters, but at least one | |||
uvtc | r: 'jf5b492c3i' ~~ /<[1..9]>\d/; say $0 | ||
p6eval | rakudo cf40f2: OUTPUT«Any()» | ||
moritz | if you want it to capture, use parens around it | 05:47 | |
uvtc | r: 'jf5b492c3i' ~~ /(<[1..9]>\d)/; say $0 | ||
p6eval | rakudo cf40f2: OUTPUT«=> <49>» | ||
uvtc | moritz, could you show me the regex syntax to get that to match 492? | ||
sorear | <[1..9]> \d 2 . .* means a digit from 1-9, then any digit, then a literal '2', then one or more arbitrary characters | ||
moritz | uvtc: just append a 2 | 05:48 | |
uvtc | I want to match: a digit from 1 to 9, then any number of digits following that. | ||
Not just if it's 2. | |||
(the digit 2) | |||
r: 'jf5b492c3i' ~~ /(<[1..9]>\d+)/; say $0 | |||
moritz | so, \d+ or \d* | ||
p6eval | rakudo cf40f2: OUTPUT«=> <492>» | ||
sorear | <[1..9]> \d* | ||
uvtc | Oh, using the + worked. | 05:49 | |
sorear | I think you need to learn how to mentally parse regexes | ||
uvtc | I do. | ||
:) | |||
But I already mostly know Perl 5 regexes. | |||
sorear | [1-9] \d 2 . .* won't do what you want there either :) | 05:50 | |
uvtc | Ah. I see some confusion. I'd originally tried to get *2* or more (not 1 or more), and I'd tried the usual \d{2,} | ||
sorear | I think you may have been trying to use 2..* as a repitition count? | ||
uvtc | but rakudo told me, Unsupported use of {N,M} as general quantifier; in Perl 6 please use ** N..M (or ** N..*) at line 14 | 05:51 | |
TimToady | so where's the ** | ||
uvtc | Sorry about the confusion. | ||
r: 'jf5b492c3i' ~~ /(<[1..9]>\d{2,})/; say $0 | |||
p6eval | rakudo cf40f2: OUTPUT«===SORRY!===Unsupported use of {N,M} as general quantifier; in Perl 6 please use ** N..M (or ** N..*) at line 1, near ")/; say $0"» | ||
uvtc | r: 'jf5b492c3i' ~~ /(<[1..9]>\d2..*)/; say $0 | 05:52 | |
p6eval | rakudo cf40f2: OUTPUT«=> <492c3i>» | ||
sorear | r: 'jf5b492c3i' ~~ /(<[1..9]>\d**2..*)/; say $0 | ||
p6eval | rakudo cf40f2: OUTPUT«=> <492>» | ||
TimToady | I repeat, where's your **? | ||
sorear | the ** isn't line noise, it actually means something | ||
uvtc | Oh, I see. I need the ** first, then the range. | ||
r: 'jf5b492c3i' ~~ /(<[1..9]>\d**2..*)/; say $0 | |||
p6eval | rakudo cf40f2: OUTPUT«=> <492>» | ||
TimToady | except that won't match 49 | 05:53 | |
uvtc | Right. | ||
I only wanted 3-digit numbers and up. | |||
05:53
eviltwin_b joined,
geekosaur left
|
|||
uvtc | Thanks! I suppose I wasn't understanding the error message, and should've asked directly about that first. | 05:54 | |
sorear | fwiw, I would probably write this as <![0]> \d**3..* | ||
05:54
eviltwin_b is now known as geekosaur
|
|||
uvtc | r: 'jf5b492c3i' ~~ /(<![0]>\d**2..*)/; say $0 | 05:54 | |
p6eval | rakudo cf40f2: OUTPUT«=> <492>» | ||
sorear | to emphasise the idea that nonzero digits and unrestricted digits are of a kind | ||
uvtc | Hm. How can that work? ![0] looks to me like, "anything but zero" (for example, letters) | 05:55 | |
r: 'jf5b492c3i' ~~ /(<![0]>\d ** 2..*)/; say $0 | |||
p6eval | rakudo cf40f2: OUTPUT«=> <492>» | ||
sorear | that's -[0] | ||
![0] is a zero width assertion | |||
it doesn't match anything itself | 05:56 | ||
it only prevents the next item from matching 0... | |||
uvtc | [a..z] is all the characters from a to z, right_? | ||
sorear | r: 'jf5b492c3i' ~~ /(<-[0]>\d ** 2..*)/; say $0 # for comparison | ||
p6eval | rakudo cf40f2: OUTPUT«=> <b492>» | ||
sorear | yes, but we recommend you avoid things like that | 05:57 | |
you might get mail from irate Spaniards wondering why your program accepts n and o but not ñ | |||
uvtc | Wait -- sorry, typo. I meant <[a..z]>, not [a..z]. | ||
sorear | <:ll> probably better | ||
uvtc | sorear, Right. Not unicodey. | 05:58 | |
sorear | or <:Lowercase_Letter> | ||
uvtc | How can I initialize a hash to look like this: %h = 1 => 0, 2 => 0, 3 => 0, 4 => 0, 5 => 0; ? | 06:01 | |
(without typing them all out?) | |||
moritz | r: my %h = 1..5 X=> 0; say %h.perl | ||
p6eval | rakudo cf40f2: OUTPUT«("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0).hash» | ||
uvtc | Thanks, moritz. | 06:02 | |
06:07
geekosaur left,
eviltwin_b joined,
eviltwin_b is now known as geekosaur
06:15
fglock_ joined
|
|||
sorear | o/ fglock_ | 06:15 | |
fglock_ | sorear: hi! | 06:16 | |
sorear | random comment | ||
niecza has an informal deprecation policy | |||
if a feature is currently supported in niecza AND documented in the synopses, I will not break it lightly | |||
fglock_ | perlito5 has a "* Deprecate" section in the TODO file | 06:17 | |
with things that may eventually be deprecated | 06:18 | ||
I have a perl6 question, I have a set of classes that define an AST, and another set of classes that define a code emitter | 06:20 | ||
I currently link the classes with each other by sharing the class name with MONKEY_TYPING | |||
I want to get rid of the monkey_typing | 06:21 | ||
moritz | you can stub types before using them | 06:22 | |
r: class A { ... }; class B { method x(A $) { } }; class A { } | |||
p6eval | rakudo cf40f2: ( no output ) | ||
sorear | fglock_: niecza does the exact same thing. I suspect it may be optimal in the absense of whole-program compilation | 06:25 | |
fglock_ | moritz: I understand in your example '$a.emit()' would be written 'B.emit($a)' ? | ||
sorear: because whole-program compilation would reconstruct a different AST for output? | 06:28 | ||
uvtc | I wrote a little string/number crunching program just for some speed tests. It's here gist.github.com/2600314 . But my calls to min and max don't seem to always work right. Could anyone tell me why? | 06:29 | |
sorear | fglock_: that question does not make sense | ||
uvtc: you're taking the max of a collection of strings. | 06:30 | ||
uvtc: you should find that it always returns the lexicographically greatest item. | 06:31 | ||
fglock_ | sorear: I don't understand why you said "in the absense of whole-program compilation" - it that because you don't need to traverse the AST in the emitter? | ||
uvtc | sorear, Ah. Thanks! How can I tell min that I want to treat @nums as nums? | ||
sorear | uvtc: Easiest way is to add a + to line 15 so that the values are stored as numbers | ||
15 push @nums, $0 | 06:32 | ||
for some reason gist thinks there are three blank lines at the top | |||
uvtc | push @nums, +$0 ? | ||
sorear | yes | ||
uvtc | Thanks, sorear! | ||
sorear | fglock_: the 'natural' Perl 6 way would be to write emit() as a multi sub. | 06:33 | |
06:33
eviltwin_b joined
|
|||
sorear | fglock_: this is what PAST::Compiler does | 06:33 | |
06:33
geekosaur left,
eviltwin_b is now known as geekosaur
|
|||
sorear | fglock_: but I won't tolerate the speed hit for that unless it can be optimized somehow, and I don't know how to do that without whole-program compilatiomn | 06:33 | |
fglock_ | sorear: ah, that makes sense! that's how it works in the SBCL implementation too | 06:34 | |
'multi emit (AST::Int $node: ) { ... } ' could be compiled to a plain method call (sorry if the syntax is wrong) | 06:39 | ||
(reading S12) | 06:41 | ||
sorear | fglock_: that's called wishful thinking. It is one of the most consistant features of of the synopses. | 06:44 | |
06:44
eviltwin_b joined,
geekosaur left
06:45
eviltwin_b is now known as geekosaur
|
|||
uvtc | For anyone interested in performance comparisons (I understand that rakudo still has a lot of optimizations ahead of it), here's that simple script in Perl 6 gist.github.com/2600403 , and here it is in Python gist.github.com/2600409 . | 06:45 | |
fglock_ | sorear: you mean it "looks like it can be optimized" but it can't? | ||
sorear | fglock_: first off, that colon is entirely out of place for a multi method | 06:46 | |
and second, yes | |||
06:46
JimmyZ_ left
06:49
sjohnson left
|
|||
fglock_ | "consistent feature" you are referring to "wishful thinking"? | 06:50 | |
sorear | yes | ||
fglock_ | heh - ok | 06:51 | |
06:52
uvtc left
|
|||
fglock_ | the reason that is wouldn't work is the lexical scoping? | 06:52 | |
it | |||
when the multi is out of scope then the actual method would be called | 06:54 | ||
moritz | but at least you know at compile time which multis are in scope | ||
a piece of information that rakudo uses to good effect | 06:55 | ||
where it can, it determines the candidate to call at compile time, and sometimes even inlines the call | 06:56 | ||
fglock_ | reading the discussion at code.activestate.com/lists/perl6-language/32268/ | 06:57 | |
sorear | single dispatch turns into vtable-like calls | 06:58 | |
I don't know of any multi dispatch algorithm which scales in O(1) with the candidate count | 06:59 | ||
niecza has dozens of types of AST nodes | |||
I suppose I should actually test this, rather than just assuming 20 type checks will add a lot of overhead to calling | 07:00 | ||
07:06
geekosaur left,
geekosaur joined
07:16
xinming joined
07:19
xinming_ left
|
|||
fglock_ | sorear: SBCL multi dispatch lookup: www.sbcl.org/sbcl-internals/The-Cac...anism.html | 07:19 | |
lexical multis do complicate things a bit | 07:20 | ||
the method looks like a Bloom filter, I think | 07:25 | ||
07:33
vlixes left
07:38
GlitchMr joined
07:39
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
07:40
SHODAN joined
|
|||
fglock_ | sorear: re candidate count, I understand they create a hash value that represents the candidates; they use this value to exclude the multis that don't match | 07:43 | |
dalek | Iish: 77f8857 | moritz++ | / (2 files): [t] test that quoted question marks are OK also fix Pgs method do |
07:49 | |
sorear | fglock_: that would work better if Perl 6 had final classes :( | 07:57 | |
fglock_ | sorear: I understand this is runtime dispatch, and the cache can be changed at runtime. Maybe they recompile as-needed, though | 08:03 | |
08:05
sergot joined
|
|||
sergot | o/ | 08:05 | |
dalek | blets: 677dd45 | (Herbert Breunung)++ | docs/appendix-a-index.txt: still fixing link formating has also advantage of more fine grained bold making |
08:10 | |
08:11
adu joined
08:13
tokuhirom joined
|
|||
fglock_ | but yes, final classes are good for compile-time optimization; runtime dispatch on a static-ish vm is painful | 08:18 | |
tadzik | sjn: re invoices, wizzair claims to have sent an invoice in english, but neither I nor sergot did receive one. I sent an email for them requesting one | 08:24 | |
moritz | wizzair? is that an airline with wizz-bang features? :-) | 08:25 | |
tadzik | you mean www.wizz-bang.com.au/ ? :) | 08:26 | |
08:27
thou left
08:33
Khisanth left
08:34
Khisanth joined
08:37
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
08:54
sergot left
|
|||
moritz | r: say 1 !~ 2 | 08:55 | |
p6eval | rakudo cf40f2: OUTPUT«===SORRY!===Unsupported use of !~ to do negated pattern matching; in Perl 6 please use !~~at /tmp/jJi2NQrfnQ:1» | ||
dalek | blets: a9ccd66 | moritz++ | docs/tablet-4-operators.txt: [op] negated smart match is !~~, not !~ |
08:57 | |
09:00
eviltwin_b joined,
geekosaur left
09:01
eviltwin_b is now known as geekosaur
09:08
sisar left
|
|||
masak | morning, #perl6 | 09:14 | |
r: say "492" ~~ / (\d\d\d) <?{ $0 >= 100 }> / # this is how I would have written it | 09:15 | ||
p6eval | rakudo cf40f2: OUTPUT«=> <492> 0 => <492>» | ||
tadzik | I don't know what is "it", but I'd probably go for 1\d\d | 09:21 | |
masak | r: say "492" ~~ / 1\d\d / | 09:22 | |
p6eval | rakudo cf40f2: OUTPUT«#<failed match>» | ||
masak | tadzik: then it doesn't match. | ||
tadzik | oh, right | ||
masak | here, have some coffee :P | ||
tadzik | the water's still boiling :) | ||
masak | :) | 09:23 | |
general question: do you prefer to (a) have two methods, one .is-X-allowed and one .perform-X, and always do one after the other on the caller side, or (b) only have the .perform-X method, and check feasibility by trying and catching an exception? | 09:33 | ||
tadzik | what kind of allowance is this? | 09:34 | |
I like exceptions to be reserved for, well, exceptional situations | |||
if it's an exception that sometimes the method is not allowed, then (b). If it just happens sometimes, and is a normal thing then (a) | 09:35 | ||
masak | well, in both scenarios .perform-X will throw an exception if the operation isn't allowed. it never fails silently. | 09:36 | |
tadzik | understood | ||
masak | it's just that, in scenario (a), the expected way to detect illegal operations is to call .is-X-allowed first. | ||
tadzik | yeah, you're focusing on the API here, I'm thinking a bit more philosophical :) | 09:37 | |
is it really an exceptional situation that something is not allowed, or is it a normal thing you should think about? | |||
masak | I'm not sure we're using "exceptional situation" in the same way here. | ||
to me it has nothing to do with "often" or "sometimes". | |||
tadzik | agreed | 09:38 | |
masak | it has to do with whether the caller creates a situation for the callee that was somehow forbidden by contract. | ||
that's why using exceptions for exiting a loop, for example, breaks this rule. because every finite loop ends, so it's not a break of a contract, it's expected. | 09:39 | ||
09:41
geekosaur left,
eviltwin_b joined
09:42
eviltwin_b is now known as geekosaur
|
|||
masak | why does the CHECK complainer output the called subs in alphabetic order, and not in the order the calls appeared in the file? | 09:43 | |
moritz | example? | ||
ah, I know what you mean | |||
it can list several call locations for each routine | 09:44 | ||
09:44
eviltwin_b joined,
geekosaur left
|
|||
moritz | so you can't get a consistent sorting by call location | 09:44 | |
you could sort by first call location though | |||
09:44
eviltwin_b is now known as geekosaur
|
|||
masak | I think I'd prefer that. | 09:45 | |
sometimes alphabetic order is helpful, but here it doesn't give any advantage at all. | |||
whereas call location is something I can relate to. | |||
I just was to point out that it feels great to be having Rakudo complaints at this high level. :) jnthn++ | 09:46 | ||
09:46
eviltwin_b joined,
geekosaur left
|
|||
masak | means all the lower levels are basically fine. | 09:46 | |
09:46
eviltwin_b is now known as geekosaur
|
|||
moritz | nom + bs = win! | 09:47 | |
masak | :) | ||
09:50
ab5tract joined
|
|||
arnsholt_ | masak: I think I'd use the is-X-allowed if there was some way for me as the caller to gracefully handle it not being allowed | 09:51 | |
If If not, I'd just let the exception percolate up and probably get some kind of "I can't let you do that, Dave" message | 09:52 | ||
09:52
arnsholt_ is now known as arnsholt
|
|||
masak | arnsholt: oh, that sounds like a good rule-of-thumb. | 09:55 | |
it's like, go with triggering the exception if there's no better way to proceed. | 09:56 | ||
10:06
ab5tract left
|
|||
masak | r: say "ab c" ~~ / ab c / | 10:06 | |
p6eval | rakudo cf40f2: OUTPUT«#<failed match>» | ||
masak | r: say "ab c" ~~ mm/ ab c / | ||
p6eval | rakudo cf40f2: OUTPUT«===SORRY!===Preceding context expects a term, but found infix / instead at line 1, near ""» | ||
masak | aww | ||
r: say "ab c" ~~ / :s ab c / | 10:07 | ||
p6eval | rakudo cf40f2: OUTPUT«=> <ab c>» | ||
moritz | r: say 'ab c' ~~ ms/ ab c / | ||
p6eval | rakudo cf40f2: OUTPUT«#<failed match>» | ||
masak | oh, it's ms// these days? | ||
moritz | that last one should have worked | ||
masak submits rakudobug | |||
moritz | mm// is m:m// | ||
masak | what does :m mean? | ||
moritz | ignore:mark | 10:08 | |
masak | oh right. | ||
moritz++ | |||
r: say 'ab c' ~~ ms/ab c / | 10:09 | ||
p6eval | rakudo cf40f2: OUTPUT«#<failed match>» | ||
masak | just checking :) | ||
moritz | I think I have a fix locally | ||
10:16
thelazydeveloper joined
|
|||
jnthn | afternoon o/ | 10:17 | |
tadzik | \o | ||
jnthn | masak: (output order) surprised it's alphabetic. I shove the things in a hash. | 10:18 | |
masak: It's all written in NQP though. Feel free to hack on it. | |||
10:19
spider-mario joined
|
|||
masak | jnthn: nod | 10:19 | |
10:20
ab5tract joined
10:21
geekosaur left,
eviltwin_b joined
10:22
eviltwin_b is now known as geekosaur
|
|||
tadzik | woooow, wtf | 10:24 | |
10:24
eviltwin_b joined,
geekosaur left
|
|||
tadzik | github.com/tadzik/panda/blob/maste.../panda#L37 | 10:24 | |
10:24
eviltwin_b is now known as geekosaur
|
|||
tadzik | this line takes about 3-4 seconds to execute | 10:25 | |
removing <> around $string it needs approximately 0 seconds | |||
jnthn | What's in $string? | 10:26 | |
It's calling into the regex compiler there I guess... | |||
tadzik | an arbitraty string, e.g. "kitten" | ||
pulling my $regex = / <$string> /; before the loop doesn't help much | 10:27 | ||
(and then matching ~~ $regex) | 10:28 | ||
jnthn | Hmm. | ||
It is slow indeed. | |||
10:30
fglock_ left
|
|||
dalek | kudo/nom: 3b028e9 | moritz++ | src/Perl6/Grammar.pm: fix ms// |
10:39 | |
tadzik | jnthn: how do you > /dev/null on windows? | 10:45 | |
moritz | > nul I think | 10:46 | |
not sure though | |||
windows has several reserved names, such as 'con' and 'nul' and 'lpt' and so on, which may never be used as file names, and which serve such special purposes | 10:47 | ||
tadzik | I think about something along run-silently() | 10:49 | |
jnthn | Yes, it's > NUL | 10:50 | |
tadzik: <$foo> uses eval, which also seems a bit slower than would be desirable. | |||
tadzik | ah, I see | 10:51 | |
10:56
whiteknight joined
|
|||
jnthn | tadzik: oooh... | 10:57 | |
tadzik: I just worked out why it's ridiculously slow. | |||
tadzik | hm? | 10:58 | |
jnthn | Imagine /<$x>/ where $x contains "kitten" | ||
And we match it against /a kitten/ | |||
It tries to match at the start of the string. It goes off and compiles $x into a regex. And evaluates it and...no match | |||
So, it moves to the next character. Compiles $x into a regex *again*. And evaluates it and...no match. | |||
And...yeah, it goes on :) | 10:59 | ||
tadzik | ew | ||
yeah, that could hurt | |||
jnthn wonders what S05 says about the lifetime of <$x> :) | |||
I suspect we should not be recompiling it every single time we backtrack. | |||
tadzik | it sort of sucks that MAIN(*@args, :$notests) supports panda --notests install NativeCall, but not panda install --notests NativeCall | 11:00 | |
and yet I'm afraid that might be per-spec | 11:01 | ||
11:02
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
|
|||
tadzik | As usual, switches are assumed to be first, and everything after the first non-switch, or any switches after a --, are treated as positionals or go into the slurpy array (even if they look like switches). | 11:04 | |
yeah | |||
how would you name a module that treats --arguments as switches even if they come after positionals? | 11:09 | ||
moritz | Getopt::Random :-) | 11:10 | |
tadzik | Main::Sain :) | 11:12 | |
gist.github.com/2601641 cool :) | 11:16 | ||
jnthn | tadzik: S05 seems to give us some allowance to do some caching. Got a patch here that helps, just gonna spectest it. | 11:17 | |
tadzik | \o/ | ||
11:17
NamelessTee joined
|
|||
masak | jnthn: the only reason to recompile $x in <$x> with every backtrack is if $x or one of its subrules contains code that changes $x. | 11:19 | |
jnthn: but that seems like a very corner-y case. I'd rather have the speed, and compile <$x> at most once per rule execution :) | |||
jnthn | masak: S05 has some langauge on the issue. | 11:20 | |
11:21
JimmyZ_ joined
|
|||
jnthn | masak: It's basically "does $x change" and "obey rebinding due to lexicality" and the thing I've implemented would seem to cover those requirements. :) | 11:21 | |
dalek | nda: 5a4b981 | tadzik++ | bin/panda: Rip off the REPL and refactor bin/panda a bit |
11:24 | |
nda: 83a7058 | tadzik++ | bin/panda: Avoid regex compilation in 'panda search' to make it usable |
|||
nda: 9b5ddfd | tadzik++ | lib/Panda/Ecosystem.pm: Simplify Panda::Ecosystem, we're not _that_ slow anymore |
|||
nda: 1b86a11 | tadzik++ | bin/panda: Implement --nodeps and --notests, fixes GH-5 |
|||
kudo: d7f45ff | moritz++ | src/core/Cool.pm: Cool.eval |
11:26 | ||
kudo/nom: dbcdb16 | jnthn++ | src/core/Cursor.pm: In /<$x>/ don't recompile $x every single time we pass it while scanning/backtracking. This implements it exactly as S05 suggests: 'the compiled form is cached with the string'. |
|||
jnthn | tadzik: Hopefully ^ is a good speedup :) | 11:28 | |
tadzik | will see, thanks :) | ||
moritz | oh noez, somebody has pushed to rakudo/master again :( | 11:33 | |
jnthn | me | 11:34 | |
I :master'd again though | |||
:/ | |||
In my defense, I didn't have much coffee yet today... :P | |||
moritz | I think we should rename nom to master | 11:35 | |
it just happens over and over again | |||
and it occasionally confuses people | |||
in the long run, there's just no benefit not to have master | |||
masak | +1 | 11:39 | |
11:41
geekosaur left
|
|||
Celelibi | hum... What about the "local" variables un perl6 ? | 11:41 | |
What about $_ ? | |||
11:41
am0c joined
|
|||
gfldex | r: .say for 1,2,3; | 11:42 | |
p6eval | rakudo 3b028e: OUTPUT«123» | ||
gfldex | r: $_.say for 1,2,3; | ||
p6eval | rakudo 3b028e: OUTPUT«123» | ||
Celelibi | yes, that's the simple part. | ||
gfldex | still there but you will need is less | ||
JimmyZ_ | +1 to have master | ||
because we are using git | 11:43 | ||
Celelibi | but I remember having some troubles with $_ in perl5 | ||
moritz | well, p5 has messed up some things | ||
Celelibi | like map {foo($_, $somestuff)} @list | ||
tadzik | Celelibi: what kind of 'local' do you mean? | 11:44 | |
moritz | for example the scoping of $_ in given and for is different | ||
Celelibi | and inside foo sone something like while (<$fd>) | ||
tadzik | if it's as in Perl 5's 'local $/', then we use dynamic $*Variables for that now | ||
Celelibi | which messed up the value of $_ in the map. | ||
11:44
jaffa4 joined,
geekosaur joined
|
|||
jaffa4 | hi | 11:44 | |
tadzik | hi jaffa4 | 11:45 | |
Celelibi | actually it was more like map {foo($_, $bar); somethingelse($_, $baz) } | ||
@list | |||
masak | hi jaffa4 | ||
Celelibi | the value of $_ on the call to somethingelse was different from the call to foo because a while (<$fd>) changed $_ | ||
and I had to declare $_ as "local". | 11:46 | ||
tadzik: that's the local I talk about. | |||
jaffa4 | This example seems to be wrong in rakudo: paste.org/48868 | 11:47 | |
Sorry This example seems to be wrong in niecza: paste.org/48868 | |||
gfldex | Celelibi: that bahaviour would be a bug in perl6 | ||
Celelibi | The thing that simulate in some way the the local variable by just saving the old value and restoring it at the end of the block. | ||
tadzik | Celelibi: in Perl 6 'local $FOO = 5' is 'my $*FOO = 5' | ||
moritz | jaffa4: you're right. Known bug. | ||
gfldex | but since we don't do while (<$fd>) anymore, it doesn't matter much | ||
Celelibi | tadzik: what's the star ? | 11:48 | |
tadzik | I'm wondering how much sense does it make to have a sort of application-level configuration using dynamic variables | ||
jaffa4 | So how do I use that? | ||
tadzik | Celelibi: it indicates that it's a dynamic variable | ||
e.g. panda would do my $*VERBOSE = True, and then various panda modules will look at it | 11:49 | ||
Celelibi | gfldex: what do we do instead ? | ||
gfldex | slurp("yourfile.end") | 11:50 | |
Celelibi | what if the file is big? | ||
tadzik | no | ||
we use lines(), not slurp() | |||
moritz | or just for $fd.lines -> $l { say $l } | ||
tadzik | slurp() serves a different purpose | ||
moritz | and since lists are lazy, this doesn't consume all the memory upfront | ||
Celelibi | ok | ||
JimmyZ_ | r: say (7, 14, * ... 100); | 11:51 | |
p6eval | rakudo 3b028e: OUTPUT«Cannot call 'Numeric'; none of these signatures match::(Mu:U \$v, Mu *%_) in method Numeric at src/gen/CORE.setting:648 in sub infix:<==> at src/gen/CORE.setting:2377 in method ACCEPTS at src/gen/CORE.setting:2159 in block <anon> at src/gen/CORE.setting:1… | ||
Celelibi | lists are always lazy? | ||
gfldex | if they use gather/take | ||
Celelibi | ok | ||
gfldex | most of the stuff in the settings do that | ||
tadzik | r: say (7, 14 ... 100); | ||
p6eval | rakudo 3b028e: OUTPUT«(timeout)» | ||
tadzik | heh | ||
r: say (7, 14 ... * > 100); | 11:52 | ||
p6eval | rakudo 3b028e: OUTPUT«7 14 21 28 35 42 49 56 63 70 77 84 91 98 105» | ||
Celelibi | what's the "..." in this context? | ||
tadzik | series operator | ||
r: say (1, 2, 4 ... * > 1000); | 11:53 | ||
p6eval | rakudo 3b028e: OUTPUT«1 2 4 8 16 32 64 128 256 512 1024» | ||
jaffa4 | r: say (1,4,10 .. 100) | 11:54 | |
p6eval | rakudo 3b028e: OUTPUT«1 4 10..100» | ||
tadzik | :) | ||
jaffa4 | r: say (1,4,10 ... 100) | ||
p6eval | rakudo 3b028e: OUTPUT«Unable to deduce sequence in method Str at src/gen/CORE.setting:8671 in method Stringy at src/gen/CORE.setting:677 in method join at src/gen/CORE.setting:1063 in method Str at src/gen/CORE.setting:4978 in method gist at src/gen/CORE.setting:5272 in sub … | ||
JimmyZ_ | why outputs 1024? | ||
jaffa4 | r: say (1,4,9 ... 100) | ||
p6eval | rakudo 3b028e: OUTPUT«Unable to deduce sequence in method Str at src/gen/CORE.setting:8671 in method Stringy at src/gen/CORE.setting:677 in method join at src/gen/CORE.setting:1063 in method Str at src/gen/CORE.setting:4978 in method gist at src/gen/CORE.setting:5272 in sub … | ||
tadzik | JimmyZ_: 1024 satisfies *>1000, so it stops then, but it includes it. Exclusive is also possible | 11:55 | |
r: say (1, 2, 4 ...^ * > 1000); | |||
p6eval | rakudo 3b028e: OUTPUT«1 2 4 8 16 32 64 128 256 512» | ||
JimmyZ_ | oh | ||
tadzik | ...^, as in ..^ with ranges | ||
r: say (1..^10).list | |||
p6eval | rakudo 3b028e: OUTPUT«1 2 3 4 5 6 7 8 9» | ||
Celelibi | where can I find more about this syntax? | ||
masak | S03 | 11:56 | |
perlcabal.org/syn/S03.html | |||
tadzik | perlcabal.org/syn/S03.html#List_infix_precedence | ||
scroll down to infix:<...> | |||
JimmyZ_ | I think ...^ is the most what I want | ||
tadzik | alpha: say (1, 2, 4 ... 1000).perl | 11:57 | |
11:57
eviltwin_b joined,
geekosaur left
|
|||
tadzik | no alpha? :( | 11:57 | |
Celelibi | <tadzik> Celelibi: in Perl 6 'local $FOO = 5' is 'my $*FOO = 5' <-- what's the difference with "temp $FOO = 5"? | 11:58 | |
11:58
eviltwin_b is now known as geekosaur
|
|||
tadzik | I'm not sure what temp is | 11:58 | |
masak | tadzik: no alpha. | ||
Celelibi | www.programmersheaven.com/2/Perl6-F...ables#temp | ||
JimmyZ_ | r: say (1..100/7)>>*>>7 | ||
p6eval | rakudo 3b028e: OUTPUT«7 14 21 28 35 42 49 56 63 70 77 84 91 98» | ||
tadzik | Celelibi: I suppose temp lives only in the current scope, while dynamics are global-ish (example coming) | 11:59 | |
r: my $*FOO = 5; sub foo { say $*FOO }; foo; { my $*FOO = 6; foo(); }; foo | 12:00 | ||
p6eval | rakudo 3b028e: OUTPUT«565» | ||
jnthn back alter | |||
*later | |||
masak | tadzik: 'temp' means "this variable gets its previous value at scope LEAVE time". | 12:01 | |
tadzik | right | ||
masak | in fact, 'temp' should be LHF now that we have LEAVE. | ||
huf | how is temp different from redeclaring the variable in the inner scope with my? | 12:02 | |
Celelibi | ok, temp $x; is just like "my $x = $x" (provided this would be a legal statment) | ||
masak | huf: redeclaring in an inner scope creates a new container. 'temp' re-uses the old one. | 12:03 | |
Celelibi: 'my $x = $x' is a no-op in Perl 6, and (I think) always illegal in Perl 5. | |||
Celelibi | then "temp $x = constantevalue" does not make much sens. | ||
masak | it doesn't? I think it does. | ||
huf | masak: i see | 12:04 | |
masak: where would this matter? | 12:05 | ||
Celelibi | does rakudo actually implements temp variables? | ||
12:05
Chillance joined
|
|||
huf | is this similar to the $foo = [] vs @$foo = () distinction? | 12:05 | |
from perl5 i mean | |||
Celelibi | are $*FOO variables "our" variables? | 12:07 | |
12:07
geekosaur left
|
|||
Celelibi | if not, what's the difference? | 12:07 | |
12:08
geekosaur joined
|
|||
Celelibi | And is there a fucking way to make rakudo work faster? | 12:09 | |
For evey perl6 -e line I type it takes a second to compile and do stuff before actually running my code. | |||
tadzik: what does actually do "my $*FOO = 6" in your previous example? | 12:12 | ||
masak | huf: no, I don't think so. that distinction is about "actual values" vs their references. this distinction is about "actual values" vs the container they're stored in. | ||
Celelibi | does it create a new variable (as I would expect by the "my" keyword)? | ||
tadzik | Celelibi: from that moment, up to the end of current lexical scope, the global variable $*FOO has a value of 6 | ||
huf | masak: hmm. so in what actual case would using temp vs redeclaring with my result in different behavior? | ||
Celelibi | Does it just store the old value and restore it at the end of the scope? | ||
(just like "local") | 12:13 | ||
tadzik | somehow | ||
huf | or is this just to signal intent to the next programmer (and maybe make it a bit faster)? | ||
masak | huf: so, in the 'my' case there are essentially two different variables with the same name. | 12:16 | |
Celelibi | tadzik: I need to have an actual mental representation of what happen. | 12:17 | |
masak | huf: in that case, we could have a situation where a routine called from the inner scope sees the outer variable (with the original value). | ||
Celelibi | Some languages create several variables with the same name and trying to access it just take the last value. | ||
huf | masak: since the compiled routine is actually referencing a container, not the name of the variable? | ||
Celelibi | that's the case of O'Caml and its "let". | ||
masak | huf: in the case of 'temp', there would only ever be one variable, and the routine called would see the current, temporized value. | ||
huf: hm. maybe. | 12:18 | ||
tadzik | Celelibi: think of a dynamic variable as a global variable. Then redeclaring it locally is like 'temp' | ||
Celelibi | masak: what if I take a reference to a $*FOO? | ||
tadzik | it changes the value globally, and restores it at the end of scope | ||
huf | masak: is this mostly theoretical at the moment, since the implementations arent far enough along to have bumped into this distinction? | 12:19 | |
masak | huf: all normal lexical lookups are settled at compile-time, and compiled into something like "two scopes up, third door on your right". | ||
huf | ah. | ||
masak | huf: the implementations are far enough. | ||
the distinction I'm talking about can already be demonstrated. | |||
masak puts together an example | |||
huf | so temp is totally cool and i should use it and finally we can localize lexicals? sweet. | 12:20 | |
masak | r: my $var = 5; sub foo { $var = 42; #`(pretend this is temp) bar; $var = 5; #`(pretend this happens automatically) }; sub bar { say $var } | ||
p6eval | rakudo dbcdb1: ( no output ) | ||
masak | r: my $var = 5; sub foo { $var = 42; #`(pretend this is temp) bar; $var = 5; #`(pretend this happens automatically) }; sub bar { say $var }; foo | 12:21 | |
p6eval | rakudo dbcdb1: OUTPUT«42» | ||
masak | that's the 'temp' case. | ||
r: my $var = 5; sub foo { my $var = 42; bar; }; sub bar { say $var }; foo | |||
p6eval | rakudo dbcdb1: OUTPUT«5» | ||
masak | that's the 'my' case. | ||
huf | the normal lexical variable lookup | ||
i see. | 12:22 | ||
masak | aye. | ||
huf | sweet. thanks for the explanation. | ||
masak | all I've been saying so far is that "normal lexical lookup applies" :) | ||
huf | ;)))) | ||
masak | even with 'temp'. | ||
huf | right, since there is no second variable in that case. | ||
masak | right. | 12:23 | |
TimToady sometimes refers to 'temp' and 'let' as "pseudo-declarators". since they don't declare a new thing, they just modify an existing one. | 12:24 | ||
12:25
lutok joined
|
|||
Celelibi | r: my $*FOO = 5; my $RFOO = \$*FOO; say $$RFOO | 12:25 | |
p6eval | rakudo dbcdb1: OUTPUT«5» | ||
Celelibi | why doesn't this work on my computer ? | ||
masak | because your computer is broken? | ||
because you installed Rakudo wrong? | |||
because you have a very old version of Rakudo> | 12:26 | ||
? | |||
flussence | maybe your shell's doing something screwy with the \ | ||
Celelibi | I just apt-get install rakudo | ||
this shouldn't be wrong. | |||
flussence | oh, that'd be why | ||
which distro is that? | |||
Celelibi | debian | 12:27 | |
masak | r: my $a; say (\$a).^name | ||
p6eval | rakudo dbcdb1: OUTPUT«Capture» | ||
Celelibi | "This is Rakudo Perl 6, version 2011.07 built on parrot 3.6.0 0" | ||
masak | that's old. | ||
b: my $*FOO = 5; my $RFOO = \$*FOO; say $$RFOO | |||
p6eval | b 922500: OUTPUT«===SORRY!===Non-declarative sigil is missing its name at line 22, near "$$RFOO"» | ||
masak | right. | ||
Celelibi | ok, let's upgrade to sid's version. | ||
flussence | that'd also explain why your perl6 -e takes forever | 12:28 | |
tadzik | sid is not too new either :/ | ||
they have 2012.01 | |||
Celelibi | works still better. | ||
and the sid version take longer to compile... | 12:29 | ||
it takes 2 seconds! | |||
That's just... unbearable. | |||
flussence | 2 seconds every time? that can't be right | ||
tadzik | it takes 0.29 here | 12:30 | |
2012.01 is pre-bs | |||
Celelibi | between 2.6 and 3 seconds yes. | ||
tadzik | Celelibi: the startup time has been massively improved over the last few months | 12:31 | |
Celelibi | ok. | ||
tadzik | Celelibi: what's time perl6 -e 1 on 2012.01? | 12:32 | |
JimmyZ_ | rakudo: my $a = 3; my $b = 4; $a = $a xor $b; $b = $b xor $a; $a = $a xor $b; say $a, ' ', $b; | 12:33 | |
p6eval | rakudo dbcdb1: OUTPUT«3 4» | ||
Celelibi | my $*FOO = 5; my $RFOO = \$*FOO; sub p {say $*FOO; say $$RFOO}; p; {my $*FOO = 42; p} | 12:34 | |
JimmyZ_ | r: my $a = 3; my $b = 4; $a xor= $b; $b xor= $a; $a xor= $b; say $a, ' ', $b; | ||
p6eval | rakudo dbcdb1: OUTPUT«4 4» | ||
Celelibi | r: my $*FOO = 5; my $RFOO = \$*FOO; sub p {say $*FOO; say $$RFOO}; p; {my $*FOO = 42; p} | ||
p6eval | rakudo dbcdb1: OUTPUT«55425» | ||
JimmyZ_ | is it a bug? | ||
Celelibi | tadzik: quite nothing. | ||
0.013 | |||
tadzik | hm, 0.1 here | ||
maybe that's too simple :) | 12:35 | ||
Celelibi | tadzik: my bad, I forgot the 6. This was the time for perl 5. ^^ | ||
tadzik | :) | ||
Celelibi | time perl6 -e 1 | ||
perl6 -e 1 2,33s user 0,14s system 98% cpu 2,508 total | |||
tadzik | yeah, it's 0.1 on my git version | ||
flussence | that reminds me, I've got some overdue fixing to do... (tryrakudo@feather3:~$ time perl6 -e 1 -> 0m0.958s) | 12:37 | |
Celelibi | r: my $x; sub foo {temp $x;} | 12:38 | |
p6eval | rakudo dbcdb1: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&temp' called (line 1)» | ||
masak | is there an easier way to say .kv.hash.invert? | 12:39 | |
JimmyZ_ | rakudo: my $a = 3; $a = $a xor 4; say $a; | ||
p6eval | rakudo dbcdb1: OUTPUT«3» | ||
JimmyZ_ | rakudo: my $a = 3; $a xor= 4; say $a; | ||
p6eval | rakudo dbcdb1: OUTPUT«Nil» | ||
masak | more precisely, why don't we have .invert on Lists? | ||
JimmyZ_ | masak: is it a bug? | ||
masak | JimmyZ_: "it"? | ||
flussence | r: my @list = 'a'..'z'; say {@list Z=> 1..*}.perl | 12:40 | |
p6eval | rakudo dbcdb1: OUTPUT«Block.new()» | ||
flussence | argh | ||
masak | JimmyZ_: no. | ||
flussence | r: my @list = 'a'..'z'; say { (@list Z=> 1..*) }.perl | ||
p6eval | rakudo dbcdb1: OUTPUT«Block.new()» | ||
flussence | r: my @list = 'a'..'z'; say %(@list Z=> 1..*).perl | ||
p6eval | rakudo dbcdb1: OUTPUT«("a" => 1, "b" => 2, "c" => 3, "d" => 4, "e" => 5, "f" => 6, "g" => 7, "h" => 8, "i" => 9, "j" => 10, "k" => 11, "l" => 12, "m" => 13, "n" => 14, "o" => 15, "p" => 16, "q" => 17, "r" => 18, "s" => 19, "t" => 20, "u" => 21, "v" => 22, "w" => 23, "x" => 24, "y" => 25… | ||
masak | JimmyZ_: precedence. same as 'and' and 'or'. | ||
flussence | r: my @list = 'a'..'z'; say @list.kv.hash.invert.perl; | ||
p6eval | rakudo dbcdb1: OUTPUT«("a" => "0", "b" => "1", "c" => "2", "d" => "3", "e" => "4", "f" => "5", "g" => "6", "h" => "7", "i" => "8", "j" => "9", "k" => "10", "l" => "11", "m" => "12", "n" => "13", "o" => "14", "p" => "15", "q" => "16", "r" => "17", "s" => "18", "t" => "19", "u" => "20", "… | ||
JimmyZ_ | hmm | ||
masak | JimmyZ_: don't use the loose-precedence boolean operators when you don't require loose precedence. | ||
flussence | oops, off by one | ||
r: my @list = <a b c d e f b d d>; say @list.kv.hash.invert.perl; | 12:41 | ||
p6eval | rakudo dbcdb1: OUTPUT«("a" => "0", "b" => "1", "c" => "2", "d" => "3", "e" => "4", "f" => "5", "b" => "6", "d" => "7", "d" => "8").list» | ||
JimmyZ_ | rakudo: my $a = 3; my $b = 4; $a = $a xor $b; $b = $b xor $a; $a = $a xor $b; say $a, ' ', $b; | ||
masak | I'm advocating an .invert on Lists | ||
p6eval | rakudo dbcdb1: OUTPUT«3 4» | ||
flussence | r: my @list = <a b c d e f b d d>; say %(@list Z=> 0..*).perl; | ||
p6eval | rakudo dbcdb1: OUTPUT«("a" => 0, "b" => 6, "c" => 2, "d" => 8, "e" => 4, "f" => 5).hash» | ||
flussence | well that didn't work... | ||
masak | :) | ||
Celelibi | hum... for perl 5 "local" was also creating a new variable with the same name and the same visibility but with a lifetime limited to the block. | 12:42 | |
masak | also, I'd like a sub form of .invert | ||
Celelibi | And not just storing the value and restoring it back later. | ||
flussence | Celelibi: it's a bit hard to store/revert there, since they can have tied variables | 12:43 | |
12:43
eviltwin_b joined,
geekosaur left
12:44
eviltwin_b is now known as geekosaur
|
|||
masak | moritz: somehow we're back to the ugly, noisy stacktraces with lots of eager/gimme/reify in them :/ | 12:49 | |
12:51
geekosaur left,
eviltwin_b joined,
eviltwin_b is now known as geekosaur
12:54
sergot joined
12:55
zhutingting joined
12:59
tokuhirom left
|
|||
masak writes 'return so all', and shivers happily | 13:00 | ||
13:06
adu left
13:08
fgomez joined
13:13
poincare101 joined
13:14
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
13:16
lutok left
13:21
fgomez left,
fgomez joined
|
|||
moritz | masak: are we? example? | 13:29 | |
r: for 1..10 { die 'foo' } | |||
p6eval | rakudo dbcdb1: OUTPUT«foo in block <anon> at /tmp/9Am3mG992v:1» | ||
13:29
eviltwin_b joined,
geekosaur left
|
|||
moritz | no eager/gimme/reify | 13:29 | |
13:29
eviltwin_b is now known as geekosaur
|
|||
masak | I'm getting it all the time in the script I'm writing. | 13:32 | |
I'll try and golf it. | |||
13:33
isBEKaml joined
|
|||
masak | r: for ^1 { for ^1 { die "foo" } } | 13:34 | |
p6eval | rakudo dbcdb1: OUTPUT«foo in block <anon> at /tmp/JNHtXyA2qd:1 in method reify at src/gen/CORE.setting:4783 in method reify at src/gen/CORE.setting:4678 in method reify at src/gen/CORE.setting:4678 in method gimme at src/gen/CORE.setting:5065 in method eager at src/gen/CORE.… | ||
masak | moritz: two nested for loops. | 13:35 | |
moritz | curious. | ||
masak | seems it can handle the one, but not two or more :) | ||
and my script has two or more. | |||
moritz | I'll see if I can awesomify it | ||
isBEKaml | so... matrix operations always bomb? :) | ||
moritz | masak++ # actually using my code | ||
masak | moritz++ # making things incrementally better | 13:36 | |
moritz | isBEKaml: no, you can matrix-operate with a single loop and multiple variables :-) | ||
jnthn | Also it's a bug in error reporting, not in nested loops. :) | ||
moritz | right, not dying also helps :-) | 13:37 | |
masak | sometimes not dying isn't an option. | ||
isBEKaml | O.o(topic of all things philosophical suddenly takes form in #perl6!) | 13:38 | |
13:40
isBEKaml left
|
|||
moritz | jnthn: in Grammar.pm, can I access subroutines from Perl6::Actions? | 13:40 | |
13:40
isBEKaml joined,
am0c left
|
|||
moritz | jnthn: in particular I think I need make_simple_code_object to evaluate the <arglist> of a use statement at compile time | 13:40 | |
jnthn | moritz: Technically, if they're our-scoped, yes. BUT it feels...odd. | ||
moritz: Ah... World feels a righter place. | 13:41 | ||
(And make_simple_code_object arguably belongs in World anyway.) | |||
moritz | jnthn: should I rename it to create_simple_code_object? | 13:45 | |
jnthn: most world stuff seems to start with create_ instead of make_ | 13:46 | ||
jnthn | +1 | ||
I bet a bunch of $*W calls it does become self. too | |||
moritz | 3 | ||
jnthn | Sounds about right. | 13:47 | |
13:49
geekosaur left
13:50
geekosaur joined
13:52
geekosaur left,
eviltwin_b joined
13:53
eviltwin_b is now known as geekosaur,
birdwind1pbird joined
|
|||
tadzik | hehe. My browser suggests daringfireball.net/projects/markdown/syntax#img when I tye in 'mark'. I should probably learn this syntax once and well | 13:54 | |
masak | r: my %h1 = 1..4; my %h2 = 5..8; my %h = %h1, %h2; say %h.^name | 13:59 | |
p6eval | rakudo dbcdb1: OUTPUT«Hash» | ||
masak | r: constant %h1 = 1..4; constant %h2 = 5..8; constant %h = %h1, %h2; say %h.^name | 14:00 | |
p6eval | rakudo dbcdb1: OUTPUT«Parcel» | ||
masak | I just got bitten by this. I expected Hash in the second case, too. | ||
tadzik | r: my %h1 = 1..4; my %h2 = 5..8; my %h = %h1, %h2; say %h.perl | ||
p6eval | rakudo dbcdb1: OUTPUT«("1" => 2, "3" => 4, "5" => 6, "7" => 8).hash» | ||
masak | is my expectation wrong here? if so, why? what is it we enable by making %h a Parcel in the constant case? | ||
jnthn | masak: Remember that constants don't do the right kinda thing with % and @ just yet. | ||
masak | oh, so it's a NYI thing? | 14:01 | |
I'd like to note for the record that I expect the above two to both give Hash. | |||
jnthn | masak: Yeah. All my attempts to build a model that satisfies all the things people expect "constant" to do have failed. :/ | ||
masak | jnthn: I can understand if it's tricky. | ||
but here's what I expect: I expect it to work like 'my' :) | 14:02 | ||
I'm interested to hear what other expectations that clashes with. | |||
jnthn | masak: Well, one view is "constants are really just binding the RHS under a name into the package" | ||
masak | r: constant %h1 = 1..4; constant %h2 = 5..8; constant %h = (%h1, %h2).hash; say %h.perl | ||
p6eval | rakudo dbcdb1: OUTPUT«("1" => 2, "3" => 4, "5" => 6, "7" => 8).hash» | ||
masak | r: constant %h1 = 1..4; constant %h2 = 5..8; constant %h = (%h1, %h2).hash; say %h.^name | ||
p6eval | rakudo dbcdb1: OUTPUT«Hash» | ||
masak | there's a workaround for now. | ||
jnthn | masak: Do %h1.^name to understand the issue :) | 14:03 | |
masak: Anyway, if they are just bindings then we never actually made a hash in the above example. | |||
masak | r: constant %h1 = 1..4; say %h1.^name | ||
p6eval | rakudo dbcdb1: OUTPUT«Range» | ||
masak | right, yes. | ||
I expect that one to say Hash as well. | 14:04 | ||
jnthn | masak: TimToady seems to what that we have them be more container-ish. | ||
masak: The upshot of JFDI on that one is that Hash is mutable... | |||
masak | yeah. we're running into unresolved container/mutability issues. | ||
jnthn | Right. | ||
masak | it's pretty clear that the spec is inconsistent there somewhere. | 14:05 | |
jnthn | So basically, whichever way I change it out of the options I have in front of me seems to make things better in one way and worse in another. :) | ||
I can try and do something like "we force it to be an EnumMap" or "we force it to be a List", I guess. | 14:06 | ||
Anyway, I agree the current state is wrong. | |||
moritz | it's even RONG! :-) | 14:08 | |
jnthn | Really 'orribly Not Good? :) | ||
14:08
spider-mario left
14:17
birdwind1pbird left,
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
14:19
noam left
14:20
noam joined
|
|||
masak | I'm having similar pains now, when assigning lists calculated with nested maps to an array. | 14:21 | |
when I do it with 'my', the array assignment flattens the lists, and everything works smoothly. | |||
when I do it with 'constant', things don't flatten, and turn into unexpectednesses down the line. | |||
14:25
lichtkind joined
|
|||
lichtkind | moritz: we gotta do something with faq.perl6.org/ | 14:27 | |
masak | do what? | 14:31 | |
flussence | it does look a little... rough | 14:45 | |
14:46
geekosaur left
14:47
geekosaur joined
|
|||
masak | there isn't enough padding in places, agreed. | 14:47 | |
lichtkind | masak: i mean mostly the conent | ||
wirs question i will soon better explain better in tablets | |||
masak | and the code bits could do with their own background color. (grey, preferably) | 14:48 | |
lichtkind | and when i have a better FAQ i maybe should redirect there | ||
masak | lichtkind: well, this FAQ was created for very specific purposes. just make sure those purposes are not lost. | ||
lichtkind | masak: dont worry i incorporate it first | 14:51 | |
14:54
eviltwin_b joined,
geekosaur left
|
|||
isBEKaml | lichtkind: I saw cowens coming around to tablets. Is he active here? I vaguely recall him working on revaming perldocs on the p5 doc list. | 14:54 | |
masak | so, you're objecting against this FAQ being here, because your material explains things better, after you've incorporated this FAQ into your material? | ||
isBEKaml | masak: I think lichtkind means that content is a little sparse on perl6 faq. | 14:55 | |
14:55
allbery_b joined,
allbery_b is now known as geekosaur
|
|||
masak | agreed. | 14:58 | |
14:58
eviltwin_b left
|
|||
lichtkind | isBEKaml: i didnt known this he just mad some small patches which were fine so far | 15:02 | |
isBEKaml: and the content is partiall random and partially doesnt belong there rather into docs | 15:03 | ||
15:03
lutok joined
|
|||
isBEKaml | lichtkind: I was just pleasantly surprised to see him contributing to tablet docs. He had been incredibly helpful on perl beginners list and probably understands more perl than I can ever hope to. :) | 15:04 | |
lichtkind | isBEKaml: good to know | 15:05 | |
15:06
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
15:11
penguin_ joined
15:12
penguin_ left,
geekosaur left
15:13
geekosaur joined
15:17
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
|
|||
lichtkind | isBEKaml: but you dont have interest to contribute? | 15:24 | |
15:24
fglock_ joined
|
|||
isBEKaml | lichtkind: I'll be around. :) | 15:24 | |
lichtkind: Though TBQH, tablets wiki finally seems a lot better than the shitty perl.org's wiki formatting. | 15:26 | ||
15:26
noam left
15:27
noam joined
15:28
noam left,
noam joined,
sisar joined
|
|||
sisar | tadzik: i'm sorry, but i'm not yet ready to hack on Panda yet. I need a bit more improvement of my P6-fu... that said, i'll surely get back to panda later. | 15:30 | |
masak | let us know if we can assist with the P6-fu bit. | 15:31 | |
sisar | masak: sure | ||
masak: so i'm back to your June 2011 posts. On strangelyconsistent.org/blog/june-2...-connect-4 , variable "$current_player" is not predeclared, line 36. | 15:32 | ||
masak | oops | 15:34 | |
masak looks | |||
indeed. | |||
probably worked earlier due to a bug in b. | |||
should work just by moving the declaration of $current_player to somewhere above 'sub input_move'. | 15:35 | ||
sisar | masak: yeah, i got that :) | ||
masak | I'll also make sure to fix it in the post. thanks for noticing. | ||
sisar | masak: no problem. while you are at it, you might also fix the hangamn code which I reported earlier as missing a ".IO" or something similar... | 15:37 | |
masak | oh, yes. | 15:38 | |
sisar | masak, neverming. You've already fixed it ! | 15:39 | |
*mind | |||
JimmyZ_ | r: 1, 1, 2, 3, 5 ... * > 30 | 15:40 | |
p6eval | rakudo dbcdb1: ( no output ) | ||
masak | oh, good. | 15:42 | |
sisar | masak, earlier "True" and "False" were called "Bool::True" and "Bool::False" ? | 15:43 | |
masak | still are. | ||
sisar | ohk | ||
masak | they exist both under the package name Bool, and imported into your current namespace. | ||
that holds true for user-defined enumerations, as well. | 15:44 | ||
sisar | ah, i see. | ||
masak | r: enum A <b c d e>; say A::c; say d | ||
p6eval | rakudo dbcdb1: OUTPUT«cd» | ||
masak | but yes, they've also recently changed so that .gist prefers the short form. | ||
lichtkind | isBEKaml: tablets are not wiki based any more | 15:45 | |
[Coke] | Celelibi: I am Coke, and I condone your anti pepsi rhetoric. | 15:47 | |
15:47
geekosaur left
|
|||
sisar | masa: "June is Coming". Can we expect another streak of 30 perl6-tutorials-spiced-with-games ? | 15:47 | |
masak; ^ | |||
masak | heh :) | ||
15:48
geekosaur joined
|
|||
masak | well, I meant to spend a little bit of time each day in June 2012 cleaning up the material I wrote last year, supplying it with things that in retrospect turned out to be missing, etc. | 15:48 | |
preparing things for publishing. | |||
15:48
Psyche^ joined
|
|||
masak | but... now I've allocated two vacation weeks in the beginning of June, and I don't expect to be bringing the laptop on vacation. so, it'll have to be some other month. maybe July :) | 15:49 | |
sisar | oh, yeah sure, adding things to them might also be good. Just carry the same style: building things from ground up, assuming no previous knowledge. | 15:51 | |
[Coke] | PerlJam++ # made a mental note to follow up on a scrollback comment, scrollforward slightly, he's already got it covered. | ||
sisar | I;m fine with July too | ||
masak++ | |||
15:52
Patterner left,
Psyche^ is now known as Patterner,
geekosaur left,
eviltwin_b joined
|
|||
masak | sisar: I'm happy to hear you're working through the posts. your feedback on them is valuable. | 15:52 | |
sisar | :) | ||
15:52
eviltwin_b is now known as geekosaur
|
|||
masak | sisar: the amount of stuff added in the last few posts is disproportionate. which is part of the reason why I want to go back and edit things. | 15:53 | |
sisar | yeah, I agree. Things are not causal in the last posts. Like you talk of things you have not introduced yet. Revisiting them is a good idea. | 15:54 | |
15:54
noam left,
noam joined
|
|||
sisar | masak: i did not have much problem with them though. | 15:54 | |
for example, on strangelyconsistent.org/blog/june-24-2011-types, you mention subroutine signatures, though you have not mentioned them before. | 15:55 | ||
masak | well, I'm talking mostly about the 27..30 posts. | 15:56 | |
[Coke] | moritz: does nom+bs rhyme with zombies? | 15:57 | |
sisar | ah, well. When you are polishing them, if you want a student's perspective, you know where to find me :) | ||
masak | \o/ | 16:00 | |
sisar | .oO (inside everyone, there is a critic ;-) | 16:01 | |
moritz | lichtkind: when questions are frequently asked, I answer them on faq.perl6.org. Contributions from others are very welcome too | 16:02 | |
masak | & | 16:06 | |
moritz | [Coke]: yes, if the "+" is silent :-) | ||
16:07
geekosaur left,
allbery_b joined,
allbery_b is now known as geekosaur
|
|||
dalek | kudo/use-arglist: ff4843a | moritz++ | src/Perl6/Grammar.pm: preparations for use with arglist |
16:08 | |
kudo/use-arglist: 3b5d78c | moritz++ | src/Perl6/ (3 files): move make_simple_code_object to World, rename it to start with create_ |
|||
moritz | phenny: "arglist"? | ||
phenny | moritz: "malice" (de to en, translate.google.com) | ||
jnthn | :D | 16:09 | |
[Coke] | HA! | ||
arnsholt | Oooh, use with arglist | 16:10 | |
moritz++ | |||
moritz | arnsholt: only preparations so far | ||
jnthn | moritz: You know there's a make_thunk too? :) | 16:11 | |
16:11
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
|
|||
moritz | jnthn: no. I just stole the code from the 'constant' handler | 16:11 | |
jnthn: I guess make_thunk should be in World too? | 16:12 | ||
16:16
isBEKaml left
|
|||
sisar | masa: "for example, on strangelycon...." <---- scratch that comment, i was wrong. | 16:17 | |
*masak | |||
sisar afk | |||
jnthn | moritz: Yes, it's better if they're in the same place. | 16:21 | |
(More predictable.) | |||
16:22
JimmyZ_ left
16:23
JimmyZ_ joined,
JimmyZ_ left,
JimmyZ_ joined
|
|||
jnthn afk | 16:27 | ||
16:32
zhutingting left
|
|||
Celelibi | <sisar> .oO (inside everyone, there is a critic ;-) <-- even inside your sistar ? That's awkward. | 16:33 | |
:) | |||
16:33
birdwindupbird left
|
|||
sisar | :) | 16:33 | |
16:37
Timbus left
16:38
Timbus joined
16:40
Guest55778 left
|
|||
moritz | TIL that SGML was a simplification of GML | 16:40 | |
or standardization | |||
considering that sgml isn't quite great, I shudder to think how GML must have been | 16:43 | ||
JimmyZ_ | postgresql uses sgml for documentation | 16:44 | |
moritz | well, HTML (versions 1 to 4) is SGML, so that's not too surprising | 16:45 | |
JimmyZ_ | hehe | 16:46 | |
16:52
sftp joined
16:54
JimmyZ_ left
16:56
xenu joined,
xenu is now known as Guest44043
16:57
PacoAir joined
|
|||
moritz | en.wikipedia.org/wiki/Standard_Gene...r_features | 16:57 | |
16:58
geekosaur left
16:59
geekosaur joined
17:01
sergot left,
GlitchMr left
17:02
sergot joined
17:13
tokuhirom joined
|
|||
dalek | kudo/use-arglist: ba1f23a | moritz++ | src/Perl6/ (3 files): move make_thunk to World, as create_thunk |
17:21 | |
sorear | good * #perl6 | 17:22 | |
moritz | good * sorear | ||
17:24
eviltwin_b joined,
geekosaur left,
isBEKaml joined,
eviltwin_b is now known as geekosaur
|
|||
dalek | rlito: 2f51501 | (Flavio S. Glock)++ | / (2 files): Perlito5 - command line option -v message |
17:35 | |
fglock_ | o/ | 17:36 | |
sorear | o/ | 17:45 | |
17:47
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
17:52
geekosaur left
|
|||
lichtkind | continue is gone? | 17:53 | |
17:53
geekosaur joined
|
|||
lichtkind | how to i go to next when clause .nextsame? | 17:53 | |
moritz | proceed iirc | ||
17:58
geekosaur left,
eviltwin_b joined
17:59
eviltwin_b is now known as geekosaur
18:02
eviltwin_b joined,
geekosaur left
18:03
eviltwin_b is now known as geekosaur
18:06
brrt joined
|
|||
lichtkind | thank you | 18:07 | |
18:08
geekosaur left,
eviltwin_b joined
18:09
eviltwin_b is now known as geekosaur
18:11
au joined
18:12
eviltwin_b joined,
geekosaur left
|
|||
lichtkind | moritz: break is also asay? | 18:12 | |
ahhh i mena away | |||
18:12
eviltwin_b is now known as geekosaur
18:18
mucker joined
18:19
mucker left
|
|||
moritz | hm, the thunk that should evaluate the arglist is a Code object, but invoking it gives me "Method 'postcircumfix:<( )>' not found for invocant of class 'Bool'" | 18:20 | |
18:21
geekosaur left,
eviltwin_b joined,
eviltwin_b is now known as geekosaur
|
|||
lichtkind | moritz: i ask becasue i didnt found it but just want to get sure | 18:23 | |
didnt found in synopses | 18:24 | ||
moritz | succeed I think | 18:27 | |
18:27
birdwindupbird joined
|
|||
moritz | I mean, 'break' is now called 'succeed' | 18:27 | |
lichtkind | moritz: thats how i read it too, i just want to be sure when recrafting this area | 18:29 | |
tadzik | 'evening | 18:31 | |
18:31
ggoebel left
18:32
ggoebel joined
|
|||
jaffa4 | How woild you repeated matching in niecza? | 18:33 | |
lichtkind | hai tadzik | ||
18:37
kaare__ is now known as kaare_
18:46
NamelessTee left
18:54
geekosaur left,
eviltwin_b joined,
eviltwin_b is now known as geekosaur
|
|||
dalek | blets: 4fb608a | (Herbert Breunung)++ | README.md: reform how to help section |
18:57 | |
blets: 6219e26 | (Herbert Breunung)++ | README.md: new formating rules |
|||
blets: fcd1f99 | (Herbert Breunung)++ | docs/tablet-4-operators.txt: Merge branch 'master' of github.com:perl6/tablets |
|||
blets: 28b45aa | (Herbert Breunung)++ | docs/ (4 files): update jump command and massive ongoong link format fix |
|||
18:59
NamelessTee joined
19:02
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
19:06
geekosaur left
19:07
geekosaur joined
|
|||
dalek | rlito: 2d338cf | (Flavio S. Glock)++ | / (8 files): Perlito5 - javascript: add sprintf(), printf() |
19:18 | |
19:20
wamba joined
19:22
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
19:28
autark joined
19:35
geekosaur left,
eviltwin_b joined,
eviltwin_b is now known as geekosaur
19:45
brrt left
19:47
kaare_ left
20:02
jaffa4 left
20:04
adu joined
20:18
adu left
20:21
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
20:30
geekosaur left,
geekosaur joined
20:32
tokuhirom left
20:37
wamba left
20:41
wolfman2000 left
|
|||
dalek | blets: 0eb0ce1 | gerdr++ | docs/tablet-2-basic-syntax.txt: minor correction UTF-8 <-> Unicode |
20:53 | |
blets: 2df5fcf | (Tomasz Konojacki)++ | docs/tablet-2-basic-syntax.txt: Merge pull request #5 from gerdr/patch-1 minor correction UTF-8 <-> Unicode |
|||
lichtkind | phew | 21:03 | |
dalek | blets: 9df26e8 | (Herbert Breunung)++ | docs/appendix- (2 files): major reformat is finally over |
21:06 | |
blets: f749de1 | (Herbert Breunung)++ | docs/tablet-2-basic-syntax.txt: Merge branch 'master' of github.com:perl6/tablets |
|||
blets: fe53478 | (Herbert Breunung)++ | README.md: added gerdr++ to authors list |
21:08 | ||
21:08
dorlamm joined
21:16
jferrero joined
21:17
lutok left
21:18
lutok joined
|
|||
lichtkind | can you hear that !!!! i reworted over 1000 links hulk!! | 21:19 | |
21:20
raiph joined
|
|||
sorear | lichtkind++ | 21:22 | |
21:23
alvis` left
|
|||
raiph | hi all | 21:24 | |
lichtkind++ | |||
sorear | hello raiph | ||
lichtkind | thanks | 21:25 | |
its alsmost as i have bithday :) | |||
birthday | |||
bit its late :) | 21:26 | ||
21:26
birdwindupbird left
|
|||
sergot | lichtkind++ | 21:31 | |
lichtkind | i had yesterday :9 | 21:32 | |
thanks :) | |||
tadzik | yay, happy birthday lichtkind! | ||
21:32
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
|
|||
lichtkind | :) | 21:32 | |
raiph | happy day after b'day lichtkind | 21:37 | |
lichtkind | thank you | 21:38 | |
sergot | lichtkind: happy birthday! \o/ | 21:39 | |
lichtkind | :) | ||
sergot | :) | ||
And good night everyone! o/ | |||
21:39
Chillance left
21:40
erkan left,
Chillance joined
21:43
sergot left,
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
21:45
spaceships left
|
|||
lichtkind | good night | 21:48 | |
sorear | night | 21:50 | |
21:52
dorlamm left
21:55
adu joined
21:57
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
21:58
kaare_ joined
22:00
adu left
22:05
felher joined
22:17
thelazydeveloper left
22:21
thelazydeveloper joined
|
|||
dalek | blets: 20e2c64 | (Herbert Breunung)++ | docs/report.pl: added shebang to report script |
22:26 | |
blets: 1211ee2 | (Herbert Breunung)++ | docs/report.pl: not counting empty lines |
|||
blets: 52a8253 | (Herbert Breunung)++ | docs/appendix-h-links.txt: update links |
|||
22:28
kaare_ left
|
|||
dalek | blets: 3237594 | (Herbert Breunung)++ | docs/ (2 files): repairing minor format issues |
22:55 | |
22:59
lestrrat left
23:00
lestrrat joined
23:07
geekosaur left
23:08
eviltwin_b joined,
eviltwin_b is now known as geekosaur,
ab5tract left
23:15
geekosaur left
23:17
geekosaur joined
23:18
alvis joined
|
|||
dalek | blets: 6127a13 | (Herbert Breunung)++ | docs/build-html.pl: dont numerate headings |
23:18 | |
23:27
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
23:30
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
23:33
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur
23:36
eviltwin_b joined,
geekosaur left,
eviltwin_b is now known as geekosaur,
lichtkind left
23:49
isBEKaml left
23:56
eviltwin_b joined,
geekosaur left
23:57
eviltwin_b is now known as geekosaur
|