»ö« 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:00 tokuhirom left, pmichaud joined, [Coke] joined, PerlJam joined 00:04 Juerd joined 00:06 tadzik joined 00:09 tokuhirom joined
ingy tadzik: is HTTP::Easy psgi? 00:12
full disclosure... I'm working on ActiveState on Stackato which is a downloadable PaaS 00:13
you can run your own polyglot app hosting env and push apps to it etc 00:14
like dotcloud but you host it (or pick any place to host it) 00:15
I'd like to think about adding p6 to our 8 or so languages
I think having this work for Perl 6 would be a huge shot in the arm for Perl 6 evangelism. 00:18
00:18 qu1j0t3 joined
qu1j0t3 hello chan. somebody might want to add a Perl 6 status update to this Quora topic. www.quora.com/What-is-the-future-of...rogramming 00:18
skids perl6: class A { has $.a = 2; }; class B { has A $.aa handles A = A.new; has $.b; }; my B $f .= new(); $f.a.say; 00:25
p6eval rakudo 4e5d8a: OUTPUT«2␤»
..niecza v13-166-gcdf48b2: OUTPUT«===SORRY!===␤␤Action method trait_mod:handles not yet implemented at /tmp/ICrrfTgnIV line 1:␤------> = 2; }; class B { has A $.aa handles A ⏏= A.new; has $.b; }; my B $f .= new(); $␤␤Trait 0 not available on variables…
..pugs b927740: OUTPUT«*** No such method in class B: "&a"␤ at /tmp/QWKGE4oCrW line 1, column 97-105␤»
skids rakudo: class A { has $.a = 2; }; class B { has A $.aa handles A; has $.b; }; my B $f .= new(); $f.aa .= new(); $f.a.say; 00:26
p6eval rakudo 4e5d8a: OUTPUT«Cannot assign to a readonly variable or a value␤ in method dispatch:<.=> at src/gen/CORE.setting:788␤ in block <anon> at /tmp/XsMB2hHmP5:1␤ in <anon> at /tmp/XsMB2hHmP5:1␤»
00:28 molaf joined
raiph ingy: nice! 00:30
colomon ingy: please keep bringing this up. If needed we can write something to get the job done. 00:32
colomon is ignorant of the current state of p6 web stuff, but is very willing to learn and code.
sorear sounds like getting bailador to run on niecza should be a high priority of mie 00:33
00:33 qu1j0t3 left
ingy stackato is built over CloudFoundry. dukeleto is the "ingy" of that project. 00:34
so this would be good for parrot as well. 00:35
dukeleto: make sense?
CF is on github.
also someone recently added mono support iirc 00:36
so it could support niecza
colomon woot! 00:37
00:37 tokuhirom left
ingy Stackato is an "enterprise ready" paas built over VMWare's open source CloudFoundry paas. If we targeted p6 as a runtime for CF, it would also just work on Stackato, and thus be available to ActiveState's corporate customers. 00:42
sorear can you explain paas? 00:43
ingy I personally convinced ActiveState to make Stackato have a free license for single node non-commercial use. So people can download and use it free forever...
sorear: sure
EC2 and Linode etc are IaaS
DotCloud and Heroku (and CF and Stackato) are PaaS 00:44
PaaS is essentially a VM that is ready to run applications
sorear I have not personally used *any* of those examples.
ingy it has all the components preconfigured 00:45
OS, language runtime, database, services, etc
so you just 'push' an app and it's running 00:46
you control every aspect of the VM from a console...
although we provide ssh access too
most PaaS providers provision a VM for you on their own IaaS configuration 00:47
sorear what's IaaS?
ingy Infrastructure as a Service
virtual hardware 00:48
rackspace, linode, amazon ec2
etc
paas is Platform aaS
kshannon sorear: irclog.perlgeek.de/perl6/2012-01-08#i_4952481 "this has been... rectified" 00:49
Does this mean p6eval should have my change?
sorear kshannon: yes
ingy this is the future of running web apps...
kshannon Hmm.... It doesn't seem to work :(
nom: github.com/perl6/roast/blob/master...als/args.t
p6eval nom 4e5d8a: OUTPUT«===SORRY!===␤Confused at line 1, near "gi"␤»
ingy Stackato and CF are called "Private PaaS" 00:50
sorear evalbot control restart
00:50 p6eval joined, ChanServ sets mode: +v p6eval
ingy meaning we don't care where you run it 00:50
which is why I joined AS
because cloud computing is a big push towards centralization of power 00:51
which is the end of a free internet as we know it
imho...
00:52 kmwallio joined
ingy offering cloud ease of use without giving away all your power is a win/win 00:52
having perl6 apps that deploy in 5 seconds is just the icing on the cake ;) 00:53
00:55 Juerd_ joined, Juerd_ left
sorear o/ Juerd 00:56
Juerd Hi
(Confused yet? I am...)
ingy Juerd: re? 00:58
Juerd mi fa so la ti do! 01:00
ingy :)
cognominal s/ti/si/
Juerd tomato, tomato.
IPA would have worked better but I don't know IPA. Or SAMPA. 01:01
cognominal you say tomato i say tomato :)
Juerd I tend to say tomaat. 01:02
That's kind of the norm, here in .nl
benabik I prefer Stouts to IPAs.
01:12 twirp joined, twirp left 01:13 twirp joined 01:15 kmwallio left 01:20 ksi left
flussence just read the CORE2 stuff in backlog... looks promising 01:31
01:32 wolfman2000 joined
sorear o/ flussence 01:33
flussence I'm more of the opinion that there should be a good autoloader system for heavy classes, but I'll take an improvement that doesn't kill my netbook. also hi :) 01:34
01:34 twirp left 01:36 kmwallio joined 01:37 ggoebel joined 01:41 ggoebel left 01:47 ggoebel joined
dalek ast: f951a3e | coke++ | integration/advent2009-day09.t:
niecza fudge
02:30
ecza: e960439 | coke++ | t/spectest.data:
run more tests
02:31 tokuhirom joined 02:34 am0c joined 02:36 tokuhirom left
dalek ecza: 25c122b | sorear++ | / (2 files):
Add a 'pure' trait, mark a bunch of setting functions
02:38
ecza: eba5eb3 | sorear++ | / (9 files):
Take a first crack at implementing constant folding

Using the 'pure' trait on functions, a function call with only immutable constant arguments can be replaced with its result value. For now only works on true functions; some pieces of function-like syntax that are implemented differently don't fold.
sorear I spent most of today debugging eba5eb3 ... that fought me a lot more than roles have :|
skids What are the semantics of "class A is rw {...}"? 02:39
sorear marks all attributes rw 02:43
niecza: 5**5**5
p6eval niecza v13-166-gcdf48b2: ( no output )
sorear niecza: for ^1000 { 5**5**5 }
p6eval niecza v13-166-gcdf48b2: ( no output )
sorear niecza: 5**5**6
p6eval niecza v13-166-gcdf48b2: ( no output )
sorear niecza: for ^1000 { 5**5**6 }
p6eval niecza v13-166-gcdf48b2: ( no output )
sorear niecza: 5**5**7
p6eval niecza v13-166-gcdf48b2: ( no output )
sorear niecza: 5**5**8
p6eval niecza v13-166-gcdf48b2: ( no output )
sorear niecza: for ^1000 { 5**5**8 } 02:44
p6eval niecza v13-166-gcdf48b2: OUTPUT«(timeout)» 02:45
sorear evalbot rebuild niecza
p6eval OK (started asynchronously)
dalek Rebuild of niecza complete. 02:46
sorear niecza: for ^1000 { 5**5**8 }
p6eval niecza v13-169-geba5eb3: ( no output )
sorear look how much faster it is!!!
benabik Fix for exponentiation? 02:47
[Coke] sorear: in backscroll I cannot tell the difference. ;)
colomon sorear++ 02:48
02:48 HarryS joined
[Coke] ah. I lie, I can, if I read the last 2. nifty. 02:48
perl6: List.new(4,5,6).say 02:50
p6eval niecza v13-169-geba5eb3: OUTPUT«Unhandled exception: Excess arguments to List.new, used 1 of 4 positionals␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (List.new @ 1) ␤ at /tmp/jy0xOJzb6k line 1 (mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2842 (ANON @ 3) ␤ at /h…
..rakudo 4e5d8a: OUTPUT«4 5 6␤»
..pugs b927740: OUTPUT«*** Must only use named arguments to new() constructor␤ Be sure to use bareword keys.␤ at /tmp/I2bec2OfGY line 1, column 1 - line 2, column 1␤»
[Coke] is rakudo wrong here?
colomon it's probably not spec'd 02:52
perl6: list(4, 5, 6).say
p6eval rakudo 4e5d8a, niecza v13-169-geba5eb3: OUTPUT«4 5 6␤»
..pugs b927740: OUTPUT«456␤»
felher will rakudo/nom compile with 400MB free RAM? 02:55
sorear Maybe, if you have 2 gigs of fast swap and a lot of patience. 02:56
02:56 jeffreykegler joined
felher sorear: :D. k, thnx :) 02:56
03:00 lutok joined 03:03 jeffreykegler left 03:04 am0c_ joined 03:06 am0c left, am0c_ is now known as am0c, am0c is now known as Guest71677 03:07 Guest71677 is now known as am0c^ 03:08 lutok left 03:28 kmwallio left 03:33 thou_ joined
[Coke] i wonder if we should just always re-fudge when running t/spec/fudge 03:36
(rather than relying at all on timestamps.)
03:38 Psyche^ joined 03:39 Psyche^ is now known as Patterner
sorear [Coke]: +1... the fudger is very fast compared to all current implementations 03:43
03:50 orafu joined
dalek ast: 2372496 | coke++ | fudge:
Always attempt to refudge.

Handles cases when arguments change or version control mucks with timestamps.
03:57
[Coke] ah. it was also impacting autounfudge. whee. 03:59
kshannon coke++ 04:02
04:12 raiph left 04:19 dku joined 04:37 odoacre joined 05:04 satyavvd joined 05:08 cognominal joined 05:13 kaleem joined 05:15 mkramer joined 05:20 am0c^ left
moritz phenny: tell jnthn about gist.github.com/1581336 (nqp qbootstrap test output with ICU) 05:40
phenny moritz: I'll pass that on when jnthn is around.
kshannon I've got a NQP 'int' from nqp::getattr_i($c, NQPCursorRole, '$!pos') and I want to put it in a string for tracing but everything I'm trying is giving: get_string() not implemented in class 'int' 05:44
dalek ast: 42626ba | coke++ | S (14 files):
niecza (auto)unfudge
05:45
moritz kshannon: is that in NQP or in Rakudo? 05:46
in rakudo, I'd nqp::p6box_s() the thing 05:47
in NQP; I'd try pir::set__SI() around it
05:47 kaleem left
kshannon NQP qbootstrap debugging 05:48
05:50 benabik joined 06:05 tokuhirom joined 06:09 kaleem joined, tokuhirom left
[Coke] std: regex b {}; 06:11
p6eval std dc62e1d: OUTPUT«===SORRY!===␤Null pattern not allowed at /tmp/M47szwRhuk line 1:␤------> regex b {⏏};␤Other potential difficulties:␤ 'regex' declaration outside of grammar at /tmp/M47szwRhuk line 1:␤------> regex b ⏏{};␤Parse …
[Coke] std: regex b {'a'};
p6eval std dc62e1d: OUTPUT«Potential difficulties:␤ 'regex' declaration outside of grammar at /tmp/LIFCIeDulm line 1:␤------> regex b ⏏{'a'};␤ok 00:01 120m␤»
[Coke] sorear: there are a few tests we can't run they have a regex/token outside of a grammar. 06:12
ah, misread the error, looks like it's the same as std. 06:14
(so it's not an error and there's something else going on.)
06:15 baest_ joined
sorear niecza: regex b {'a'} 06:18
p6eval niecza v13-169-geba5eb3: OUTPUT«===SORRY!===␤␤Methods must be used in some kind of package at /tmp/cT1obwdQ0z line 1:␤------> regex b ⏏{'a'}␤␤Potential difficulties:␤ 'regex' declaration outside of grammar at /tmp/cT1obwdQ0z line 1:␤------> reg…
sorear [Coke]: My understanding of the current spec is that a regex outside of a grammar must be marked "my"
it's possible we'll rule this is automatic
06:19 dukeleto joined
[Coke] ah. 06:25
06:26 thou_ left, zby_home_ joined 06:27 nornagest joined 06:31 Woodi joined, koban joined 06:32 koban left 06:36 DrEeevil joined 06:38 y3llow_ joined
moritz I thought the idea was to invent some magic handwaving that mixes regexes into the current slang (?), and thus makes regex a { foo }; 'a' ~~ /<a>/ work 06:38
sorear moritz: that can be accomplished just by having regex a default to my 06:41
moritz sorear: but /<a>/ doesn't look for a lexical &a, does it? 06:42
sorear moritz: it does
06:43 wtw joined
sorear S05:1422 06:43
I interpreted this to mean *only* Regex-classed objects
so / <sin> / is still a call to a method 06:44
if you have a burning desire to use a trig function as a parsing method, you'll need to use <sin=&sin> like in Rakudo b
06:45 REPLeffect joined 06:46 dukeleto left, odoacre left, orafu left, p6eval left, tadzik left, Util left, Lorn left, `patch` left, y3llow_ is now known as y3llow 06:47 orafu joined
moritz nom: my regex a { }; say 06:48
nom: my regex a { 'a' }; say 'a' 9~
nom: my regex a { 'a' }; say 'a' ~~ /<a>/
what's up with p6eval?
kshannon Netsplit
moritz worse 06:49
it doesn't react to ctrl+c from the command line
06:50 bbkr joined, MC91 joined, tadzik joined, dukeleto joined, odoacre joined, p6eval joined, Util joined, spetrea joined, fsergot joined, ashleydev joined, lestrrat joined, daxim joined, fhelmberger joined, mattp_ joined, daemon joined, dalek joined, Tene joined, kfo joined, Lorn joined, `patch` joined, wolfe.freenode.net sets mode: +vv p6eval dalek
kshannon nom: my regex a { 'a' }; say 'a' ~~ /<a>/ 06:50
06:50 p6eval left, p6eval joined, ChanServ sets mode: +v p6eval
kshannon nom: my regex a { 'a' }; say 'a' ~~ /<a>/ 06:50
moritz it received that input at least 06:51
p6eval nom 4e5d8a: OUTPUT«Method 'a' not found for invocant of class 'Cursor'␤ in regex <anon> at /tmp/06o0zaeUGJ:1␤ in method ACCEPTS at src/gen/CORE.setting:7228␤ in block <anon> at /tmp/06o0zaeUGJ:1␤ in <anon> at /tmp/06o0zaeUGJ:1␤»
nom 4e5d8a: OUTPUT«Method 'a' not found for invocant of class 'Cursor'␤ in regex <anon> at /tmp/CBvV5AexSy:1␤ in method ACCEPTS at src/gen/CORE.setting:7228␤ in block <anon> at /tmp/CBvV5AexSy:1␤ in <anon> at /tmp/CBvV5AexSy:1␤»
moritz niecza: my regex a { 'a' }; say 'a' ~~ /<a>/
p6eval niecza v13-169-geba5eb3: OUTPUT«#<match from(0) to(1) text(a) pos([].list) named({"a" => #<match from(0) to(1) text(a) pos([].list) named({}.hash)>}.hash)>␤»
moritz niecza: my regex a { 'a' }; { my sub a() { }; say so 'a' ~~ /<a>/ }
p6eval niecza v13-169-geba5eb3: OUTPUT«Potential difficulties:␤ &a is declared but not used at /tmp/_jIipyvpZ4 line 1:␤------> my regex a { 'a' }; { my sub a⏏() { }; say so 'a' ~~ /<a>/ }␤␤Unhandled exception: Unable to resolve method a in class Cursor␤ at /tmp/_jIipyvpZ4 …
sorear moritz: transatlantic routing glitch causes netsplit and disrupts your ssh connection? 06:52
moritz sorear: no, the ssh connection was fine; I could change windows inside the screen
06:54 DrEeevil is now known as bonsaikitten 07:04 jaldhar joined
sorear rakudo: sub foo(::Int $x) { say 15 ~~ Int }; foo("xyz") 07:07
p6eval rakudo 4e5d8a: OUTPUT«===SORRY!===␤You cannot create an instance of this type␤»
07:09 sayu joined
sorear Does initial in parameters :: always mean "en passant type capture"? 07:09
japhb nom: my $class := Any.HOW.HOW; my @m := $class.HOW.methods($class, :local).list; say @m.WHAT; 07:10
p6eval nom 4e5d8a: OUTPUT«List()␤»
japhb nom: my $class := Any.HOW.HOW; my @m := $class.HOW.methods($class, :local).list; say @m.WHAT; for @m { say "alive" } 07:11
p6eval nom 4e5d8a: OUTPUT«List()␤Unmarshallable foreign language value passed for parameter '$value'␤ in method new at src/gen/CORE.setting:5111␤ in sub coro at src/gen/CORE.setting:4522␤ in method reify at src/gen/CORE.setting:4497␤ in method reify at src/gen/CORE.setting:4280␤ in method…
japhb OK, how do I iterate @m in the above? I've clearly got Tired Brane
sorear Why are you using .list there at all? 07:12
japhb nom: my $class := Any.HOW.HOW; my @m := $class.HOW.methods($class, :local); say @m.WHAT;
p6eval nom 4e5d8a: OUTPUT«Type check failed in binding␤ in block <anon> at /tmp/P4dKWJPLj6:1␤ in <anon> at /tmp/P4dKWJPLj6:1␤»
japhb That's why.
sorear You're saying @m
Don't do that
japhb nom: my $class := Any.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m.WHAT; 07:13
p6eval nom 4e5d8a: OUTPUT«Hash()␤»
sorear @m requires Positional, which is a Perl 6 type, excluding NQP result values
...or those
japhb WTF?
sorear nom: my $class := Any.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m
p6eval nom 4e5d8a: OUTPUT«Unmarshallable foreign language value passed for parameter '$value'␤ in method new at src/gen/CORE.setting:5111␤ in sub coro at src/gen/CORE.setting:4522␤ in method reify at src/gen/CORE.setting:4497␤ in method reify at src/gen/CORE.setting:4280␤ in method reify …
sorear nom: my $class := Any.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m.Str
p6eval nom 4e5d8a: OUTPUT«Unmarshallable foreign language value passed for parameter '$value'␤ in method new at src/gen/CORE.setting:5111␤ in sub coro at src/gen/CORE.setting:4522␤ in method reify at src/gen/CORE.setting:4497␤ in method reify at src/gen/CORE.setting:4280␤ in method reify …
sorear nom: my $class := Any.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m.keys 07:14
p6eval nom 4e5d8a: OUTPUT«Unmarshallable foreign language value passed for parameter '$value'␤ in method new at src/gen/CORE.setting:5111␤ in sub coro at src/gen/CORE.setting:4522␤ in method reify at src/gen/CORE.setting:4497␤ in method reify at src/gen/CORE.setting:4280␤ in method reify …
sorear nom: my $class := Any.HOW.HOW; say $class
p6eval nom 4e5d8a: OUTPUT«Method 'gist' not found for invocant of class 'NQPClassHOW'␤ in sub say at src/gen/CORE.setting:5702␤ in block <anon> at /tmp/UIgLocYCpJ:1␤ in <anon> at /tmp/UIgLocYCpJ:1␤»
sorear nom: my $class := Any.HOW.HOW.HOW; say $class 07:15
p6eval nom 4e5d8a: OUTPUT«Method 'gist' not found for invocant of class 'KnowHOW'␤ in sub say at src/gen/CORE.setting:5702␤ in block <anon> at /tmp/EOnuiUqMkG:1␤ in <anon> at /tmp/EOnuiUqMkG:1␤»
sorear nom: my $class := Any.HOW.HOW.HOW.HOW; say $class
p6eval nom 4e5d8a: OUTPUT«Method 'gist' not found for invocant of class 'KnowHOW'␤ in sub say at src/gen/CORE.setting:5702␤ in block <anon> at /tmp/561r3cJriK:1␤ in <anon> at /tmp/561r3cJriK:1␤»
japhb chuckles: Find the class by looking at the error message telling you it can't show you the name for the class.
sorear japhb, I'm ready to try to add &val to niecza 07:16
I'm wondering what the parse rules should be, esp. for Pairs
kshannon \o/
japhb The annoying thing is that on a conceptual level, it looks like there's a decent-ish set of metamethods all the way down, but unfortunately beyond a certain point, I can't actually seem to introspect any further from Perl6-land. 07:17
sorear japhb: You need to use NQP to use the lower metamethods 07:18
Perl6 can only really use its own objects
I think that... thing... was a parrot;Hash
nom: my $class := Any.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m.REPR
p6eval nom 4e5d8a: OUTPUT«P6opaque␤»
japhb Yeah, that's my guess as well.
sorear hmm, maybe not 07:19
jnthn has been pretty clear in the past that Any.HOW.HOW is meant to be an NQP-world object in Rakudo
japhb nom: my $class := Any.HOW.HOW.HOW; my $m := $class.HOW.methods($class, :local); say $m.REPR
p6eval nom 4e5d8a: OUTPUT«P6opaque␤»
japhb Yeah, it's lying.
sorear I don't know if he intends to make gisting a P6hash work, though 07:20
japhb nom: my $class := Any.HOW; my $m := $class.HOW.methods($class, :local); say $m.REPR
p6eval nom 4e5d8a: OUTPUT«P6opaque␤»
benabik nom: my $class := Any.HOW; say $class
p6eval nom 4e5d8a: OUTPUT«Method 'gist' not found for invocant of class 'Perl6::Metamodel::ClassHOW'␤ in sub say at src/gen/CORE.setting:5702␤ in block <anon> at /tmp/OKHMwo9wxz:1␤ in <anon> at /tmp/OKHMwo9wxz:1␤»
benabik nom: my $class := Any.HOW; say $class.name
p6eval nom 4e5d8a: OUTPUT«too few positional arguments: 1 passed, 2 (or more) expected␤ in name at src/gen/Metamodel.pm:58␤ in block <anon> at /tmp/vXY_xGljPo:1␤ in <anon> at /tmp/vXY_xGljPo:1␤»
moritz nom: my $class := Any.HOW; say $class.name($class) 07:21
p6eval nom 4e5d8a: OUTPUT«Any␤»
sorear nom: my $class := Any; say $class.HOW.name($class)
p6eval nom 4e5d8a: OUTPUT«Any␤»
japhb doesn't actually care about .gist for this stuff per se; I was really just trying to figure out how to write a tool that introspected the entire class space and drew a massive diagram of the whole reality all the way down to the bottom turtle.
sorear nom: my $class := Any; say $class.^name # how it's meant to be used
p6eval nom 4e5d8a: OUTPUT«Any␤»
benabik sorear++
07:21 zby_home_ left
benabik nom: my $class := Any.HOW; say $class.^name 07:22
p6eval nom 4e5d8a: OUTPUT«Method 'dispatch:<.^>' not found for invocant of class 'Perl6::Metamodel::ClassHOW'␤ in block <anon> at /tmp/Z9iHNNf7zb:1␤ in <anon> at /tmp/Z9iHNNf7zb:1␤»
benabik nom: my $class := Any.HOW; say $class.name($class)
p6eval nom 4e5d8a: OUTPUT«Any␤»
benabik nom: my $class := Any.HOW.HOW; say $class.name($class)
p6eval nom 4e5d8a: OUTPUT«Perl6::Metamodel::ClassHOW␤»
benabik nom: my $class := Any.HOW.HOW.HOW; say $class.name($class) 07:23
p6eval nom 4e5d8a: OUTPUT«NQPClassHOW␤»
sorear don't get into the habit of writing $class.name($class)
japhb benabik discovered why I was compulsively writing the longhand. :-)
sorear it's wrong
07:23 jaldhar left
japhb Once you cross into the metamodel, .^ doesn't work. 07:23
... at least, not in nom
sorear it happens to work because all of jnthn's metaclasses (except KnowHOW) ignore their argument
the correct way to write the longhand is $class.HOW.name($class) 07:24
the invocant and the first argument should not be the same
japhb Yes, and you'll note I was using the correct longhand. ;-)
sorear But benabik was not.
benabik nom: my $class := Any.HOW.HOW; say $class.HOW.name($class)
p6eval nom 4e5d8a: OUTPUT«NQPClassHOW␤»
japhb nods in acknowledgement 07:25
benabik sorear: Ah, I see the difference. Hard for me to remember this late at night.
sorear your IRC client thinks you're in London. How late is the night? 07:26
benabik London?
sorear 0730
japhb tables this line of thought until jnthn++ is back to explain how it can magically Just Work. :-)
sorear UTC+0000
benabik Oh. It's returning UTC. I have no idea why. I'm EST. -5 07:27
sorear now it's my turn to be all tired braney, I was thinking "EEST? That's not night at all!"
benabik Heh. There's a reason I added the -5 07:28
benabik doesn't see an option for fixing local time. Pity.
japhb sorear, What exactly did you want to talk about re: Pair syntax? Obviously I think it should try to interpret a string that looks like a colon pair as a numeric form first, since we can assume that colon syntax with a decimal integer key is not meant as a Pair but rather as a Numeric. 07:29
sorear benabik: irssi?
japhb But I'm not sure what you are thinking beyond that?
benabik sorear: Colloquy
sorear benabik: oh, you're not using a colo server?
sorear had to manually set the timezone in .bashrc on this VM 07:30
benabik It's always displayed the timestamps in UTC, but I figured that was server time. :-/
No, this is running on my laptop.
I intend to set up a bouncer on my server when I rebuild it.
sorear (seriously, who thinks 'America/Los_Angeles' is a sane way to set a timezone? I'm 200 miles south of LA, but I can't seem to set an actual offset.) 07:31
benabik America/New_York makes sense for me, but I bet it was named after the city, not the state. 07:33
sorear japhb: Mostly I just want to co-ordinate.
benabik sorear: I think you can use US/Pacific instead of America/Los_Angeles. The reason why you can't just use an offset is that it also has to find leap seconds, DST, etc etc 07:37
japhb sorear, so that our algorithm is (functionally) the same, I assume? Which is to say, both Niecza and Rakudo will make the same sort of thing out of identical strings? 07:39
sorear japhb: yes 07:40
japhb Ah, excellent.
sorear japhb: also I don't want to duplicate work on the grammars & stuff 07:41
japhb Fair enough.
sorear Do leap seconds actually vary by locale? I thought IERS set them for everyone.
benabik Not everyone listens? 07:42
japhb Well, the thing that started me down the mental path that eventually led to trying to introspect all the turtles was just making sure I had a good mental model of all the types and how I wanted to approach (or ignore) them for val().
benabik Huh. file reports different numbers of "transition times" for US/Eastern and US/Pacific. 07:43
japhb As benabik++ said, I suspect not every timezone respects leap seconds.
tadzik ingy: yes, HTTP::Easy supports PSGI
japhb tadzik, What is the intended difference between HTTP::Server::Simple and HTTP::Easy?
Or do they in fact inhabit the same niche? 07:44
sorear (IERS has to be one of the coolest NGO names anywhere)
tadzik japhb: HTTP::Easy is generally HTTP::Server::SImple rewritten with some new features, I observed 07:45
japhb Ah, OK.
sorear, one thing that occurs to me with val() is that we might want some way to remove some of the default-secure at programmer request. Specifically, I've already wanted to be able to say "Expose this Enum to val()", even though I think the default should be that no Enum not provided by the setting should be visible. 07:47
sorear I don't like this proliferation of random names. It should just be called HTTP:auth<cpan:TADZIKES> 07:48
japhb: to me, that's not a security issue but rather a single-valuedness issue 07:50
japhb: I don't really care if user input can get enum values, but I do think that if val uses CALLER, we'll have a lot more problems 07:51
(for a start, CALLER absolutely will not work with the constant folding I implemented earlier today)
japhb Hence my thought that if one wanted to expose additional types to val(), they'd have to expose that desire at the call site. An adverb on val(), perhaps, or even another sub entirely. 07:53
bacek jnthn, ping 07:54
japhb bacek, chances are he's still asleep
bacek japhb, ah, thanks. In which timezone he is now? 07:55
japhb Sweden, I believe
bacek ok
japhb (But he likes to go to sleep around 2 AM local time IIRC.)
bacek aloha, clock? 07:56
ok, about 9PM. Waaaaay too early :)
sorear japhb: ...no wonder we get along so well! :D 07:57
japhb *chuckle* 07:58
sorear o/ bacek
07:59 lutok joined 08:00 stepnem joined
japhb Are there (Perl 6) types that (should) exist by the end of the setting that are not represented in the list at the end of nom's src/Perl6/Metamodel/BOOTSTRAP.pm ? 08:06
Duh, yes.
Sigh.
All I want for winter holiday is NomIllGuts. 08:07
sorear S02's list of types not good enough for you? 08:11
08:11 baest_ is now known as baest
masak morning, #perl6 08:12
sorear masak!
masak sorear! \o/
tadzik hello masak!
masak oh hai tadzik 08:13
I think you can expect jnthn soonish -- or at least not too late.
sorear is studying the uses of <typename> and <type_constraint> in STD 08:15
trying to figure out how best to handle the entire gamut 08:16
japhb sorear, I can pull most of what I want from different places in S02, yes.
sorear japhb: what kind of charts do you want? 08:17
japhb But I was hoping to not have to do the gathering by hand. :-)
sorear, Have you seen IllGuts for Perl 5?
sorear not recently 08:18
japhb or rather, perl5, I suppose.
The doc's been kept up to date. Someone's got a rev for every perl5 release with a guts change. 08:19
Anyway, I want to have such a thing for Rakudo. If I have to create it myself, I will. :-)
sorear japhb: I am going to guess now that pm is an early riser. 08:20
japhb pmichaud? Why do you say that? 08:21
sorear I wonder what should be allowed inside the () in my Str(...) $x;
japhb: because jnthn sleeps at 2am, and I don't get along nearly as well with pm
japhb *snrk* 08:22
sorear STD parses the ... as a postcircumfix 08:23
so you could have my Str(:bar) $x ... which is just wrong
it should probably be limited to smartmatchers or type objects
seems to me it might be better to parse it as '(' <typename>? ')' 08:24
08:26 orafu left, orafu joined
masak sorear: yes, pmichaud is an early to very early riser. 08:26
08:28 mj41 joined 08:30 cognominal_ joined
sorear masak: constant folding! 08:30
masak: also, isBEKaml expressed interest in Yapsi.
japhb All this talk of sleep and waking is reminding me that kid's vacation is over, and thus I'd better get to bed, or regret it when the alarm goes off. ;-) 08:31
sorear :)
masak sorear: oh, so that's how you got the exponentiation to be faster. kudos!
sorear good night
japhb good night all & 08:32
masak o/
08:32 cognominal left
moritz \o 08:32
sorear I see how this works ... type_constraint is only used in signatures, easy enough 08:33
still a bit of a tangle with leading :: support; not sure if I should try to restrict the grammar or the actions 08:34
(NONE of the places where typename is used, have a use for a WHENCE block, but typename still looks for one. Etc.) 08:35
nom: sub foo(Int(Cool) $x) { } 08:36
p6eval nom 4e5d8a: OUTPUT«===SORRY!===␤Malformed block at line 1, near "(Int(Cool)"␤»
sorear nom: sub foo(Cool $x as Int) { say $x }; foo 1.5 08:37
p6eval nom 4e5d8a: OUTPUT«1␤»
sorear ah, not quite on the latest spec?
sorear -> sleep 08:38
jnthn morning 08:47
phenny jnthn: 05:40Z <moritz> tell jnthn about gist.github.com/1581336 (nqp qbootstrap test output with ICU)
jnthn moritz: Thanks :) 08:48
masak sorear: no, not quite on the latest spec with that one.
jnthn The latest spec on that one is deeper than being a purely syntactic matter
I think coercion types are meant to be first class or some such... 08:49
08:52 snearch joined, daxim left
masak not sure I see what that means. 08:53
jnthn Not sure I fully do yet either :P 08:54
moritz I thought it just meant that you store two types per container
the type to coerce to, and the type that is checked before coercion 08:55
08:56 wolverian joined, daxim joined
jnthn role R[::T] { method m(T $x) { } }; R[Int(Str)].m('42') # should this be possible? 08:57
afk for a moment
masak I don't immediately see any problems with that. 08:58
and yes, that explains what "first class" means for coercion types.
moritz I too see the point now, and I don't know if that's meant to work
08:59 cognominal_ left, cognominal joined 09:00 icwiener joined
kshannon moritz++ # Awesomness of acronyms on irc.perlgeek.de 09:09
masak the thing inside the R[] is a signature, and we know that signatures can contain Int(Str) -- hence the above is correct. :)
moritz masak: no, it's not a signatue 09:11
*signature
masak: it's a signature in the declaration (R[::T]), but not in the application. There it's an argument list or Capture
jnthn What moritz said 09:12
It's showing up as a term in my example
Probably parsed by typename
er
by term:name
moritz masak: yesterday I closed a bug where you tried to use ::T inside the role concretization, and got a NPMCA; now you just get a different error :-) 09:13
b: role A[$x] { }; class B does A[::T] { }
p6eval b 1b7dd1: ( no output )
moritz b: role A[$x] { }; class B does A[::T] { }; say B.new
p6eval b 1b7dd1: OUTPUT«B()<0x4b76490>␤»
moritz huh, then that ticket was really old
jnthn ...what does that mean? :)
moritz nom: role A[$x] { }; class B does A[::T] { }; say B.new 09:14
p6eval nom 4e5d8a: OUTPUT«===SORRY!===␤Could not locate compile-time value for symbol T␤»
jnthn nor could I, nom :)
moritz b: role A[$x] { method x() { $x } }; class B does A[::T] { }; say B.new.x
p6eval b 1b7dd1: ( no output )
09:14 mkramer left
moritz b: role A[$x] { method x() { $x } }; class B does A[::T] { }; say B.new.x.WHAT 09:14
p6eval b 1b7dd1: OUTPUT«Failure()␤»
moritz b: role A[$x] { method x() { $x } }; class B does A[::T] { }; say B.new.x.perl
p6eval b 1b7dd1: OUTPUT«undef␤»
jnthn o.O
Glad nom didn't do that, or masak'd be submitting already :P 09:15
moritz I don't think nom mentions undef, except for generating an error message about misuse of undef 09:16
jnthn Good. :) 09:17
jnthn figures he should do some $dayjob 09:18
09:21 dakkar joined
masak point taken about the signature/capture distinction in parametric roles. it mirrors the declare/use of routines, I guess. 09:23
jnthn Rajt.
masak Grejt. 09:24
09:30 mikemol joined
dalek p: bb332d9 | bacek++ | src/pmc/ (3 files):
Don't use pmc-specific accessors when not necessary
09:33
09:39 orafu left, orafu joined
cognominal S04-control.pod:1668: macro statement_control:<if> ($expr, &ifblock) {...} 09:59
does that mean that macro call arguments are not space separated?
jnthn ...what's a macro doing taking something with an & sigil? 10:00
It only gets ASTs in, no?
cognominal that also...
masak jnthn: ooh, I had not seen that one before. 10:01
cognominal but that may be a macro for the implementation of an interpreter 10:02
masak but yeah, the specification is full of those half-working macro examples.
to be fair, E06 is worse ;)
jnthn just asks masak when he wants to know how macros will work :)
masak I don't think they'll ever work like S04:1668 :) 10:03
cognominal meaning a function is returned not an ASTm to be bound to &ifblock
masak keep in mind though that these bits of the spec are known to be slushy. TimToady proposed a whole 'nuther *syntax* for quasi-interpolation a few months back, which never went into the spec because it was vastly problematic. 10:05
(the syntax proposed to annotate each unit of interpolation with a syntactic class.)
kshannon jnthn: you're rxtrace in qbootstrap has some issues...
./nqp t/nqp/01-literals.t dies with: Confused at line 18, near "say(q <ok" 10:06
./nqp --rxtrace t/nqp/01-literals.t instead: Confused at line 5, near "say('1..9'"
find_dynamic_lex of "$*QUOTE_STOP" stops working...
tadzik did you mean: your?
kshannon s/you're/your/
jnthn kshannon: That's...odd. 10:08
kshannon very.
I patched QHLL/Grammar.pm stopper to die if it can't find $*QUOTE_STOP and it does just after the ' on line 5, but only when --rxtrace is on. 10:10
jnthn wtf 10:13
kshannon I really wish the parrot debugger was in a workable state. GDB just isn't at the right level :( 10:14
bacek jnthn, \o 10:18
jnthn o/ bacek
bacek jnthn, have a few minutes? I've got few questions about 6model
jnthn bacek: I'm $dayjobbing, but can probably answer a few :) 10:19
bacek jnthn, I'll try to be short :) Why in SixObjectCommonalities "stable" and "sc" are PMCs? Just for GC? 10:20
jnthn, (next one) what do you think is bare minimum of VTABLEs required to support 6model natively in Parrot? My current list is "init", "mark", "destroy", "store", "freeze" and "invoke". Did I miss something obvious? 10:21
jnthn bacek: An SC probably wants to be GC-able 10:23
STable need not be
I've more than once pondered switching to ref-counting them.
Because not doing so runs into finalisation order issues
bacek jnthn, I'm thinking about something like STableRegistery for memory management. 10:24
.. of STables
jnthn So long as they can be collected
10:24 donri joined
jnthn Well 10:25
freed
When no longer needed
bacek jnthn, erm. Who cares? They are freed only at program exit afaik.
jnthn No
bacek ah. My bad.
jnthn Types can come into existence during execution 10:26
And then go out of scope and need freeing
bacek otoh, how many different types we can have? 1k? 10k? 100k? 10:27
jnthn 100k would be very unusual, I suspect.
Well
Existing at once
bacek Indeed. 10:28
jnthn There's no hard limit of course, but generally you have many instnaces of a much smaller number of types
bacek 10k stables. With 100 bytes per stable it's only 1M of memory
jnthn Yeah, and 10k sounds excessive. 10:29
Well, for a large application maybe not
bacek Not a big deal if we will keep them till end.
jnthn Oh, I said "existing at once"
Example: Test::Mock creates anonymous subclasses for mock objects. They need collecting, otherwise each test csae leaks memory 10:30
10:30 tokuhirom joined
jnthn Or even internally, I think role composition's temporary summation role that it creates may be collectable. 10:30
bacek Ok. Agreed. To summarise: STable should be "GCable" but not necessary PMC. 10:31
jnthn Well
PMCs really want to be 6model objects I guess.
bacek jnthn, yes.
jnthn, this lead us to next question: "minimal set of VTABLEs" :) 10:33
afk # bb in 5
jnthn Mark and destroy are representation operations. 10:35
init - really needs splitting in two. What are the required initialization actions at a representation level, no matter what type we have (which is what initialize in the REPR API is for), plus some type-space mechanism that's like Perl 6's BUILD. 10:36
The initialization level ones are non-optional and just part of object creation. 10:37
kshannon Ah! find_dynamic_lex is working, it's the return from peek_delimiters... 10:41
(start, stop) = self.'peek_delimiters'(target, pos)
moritz that only works in PIR I suppose
kshannon TWO return arguments... the trace wrapper only passes ONE back...
moritz not on the NQP level
oh, that's it
bacek jnthn, we have 2 stage registration of PMC in Parrot right now. First stage can be used for init REPRs. 10:42
jnthn Oh.
bacek: Something in there sounds like a mis-understanding... 10:43
bacek jnthn, second stage can be used as .compose for PMCs. Or we can even simplify it a bit.
kshannon I'm starting to get pretty good at twisting GDB to do what I need for breakpoints in parrot.
bacek jnthn, erm... Explain?
jnthn OK, now I'm really confused
bacek: Every object has an STable pointer. An STable points in turn to a meta-object and a REPR function table. That function table is a "singleton" per REPR. If it wants per-type data, it hangs it off the STable. 10:45
bacek: The meta-object is just a completely normal object.
bacek: It's meta-objects that generally have compose methods. But generally it's just a convention, not something that'd be baked in too deeply 10:46
bacek: The point is that representation operations are not vtable-like things on an object itself. In fact, if you statically know the representation then it needn't be an indirect call at all. 10:47
bacek jnthn, oookey.
moritz nom: enum A <b c>; say A.HOW 10:48
p6eval nom 4e5d8a: OUTPUT«Method 'gist' not found for invocant of class 'Perl6::Metamodel::EnumHOW'␤ in sub say at src/gen/CORE.setting:5702␤ in block <anon> at /tmp/az7G1FQd1v:1␤ in <anon> at /tmp/az7G1FQd1v:1␤»
moritz jnthn: if I want to add a method that all enums need to have, do I put it into EnumHOW? 10:50
jnthn moritz: ? 10:51
moritz erm, no, that's the wrong meta level
jnthn Right :)
moritz where does it go?
jnthn moritz: See src/core/Enumeration.pm
moritz ah, wonderful
nom: say Bool.pick
p6eval nom 4e5d8a: OUTPUT«Bool::True␤» 10:52
moritz that one is fixed already, great
10:53 explorer__ joined
kshannon nom: say Bool.pick 10:54
p6eval nom 4e5d8a: OUTPUT«Bool::False␤»
kshannon just checking...
moritz adds Bool.roll too
nom: say Bool.roll(8)
p6eval nom 4e5d8a: OUTPUT«True True True True False True True True␤»
10:55 DarthGandalf joined
moritz why does that work, even though there's no method roll in src/core/Enumeration.pm? 10:55
nom: say Bool.roll
p6eval nom 4e5d8a: OUTPUT«Bool::True␤»
moritz oh, I guess Any.roll re-dispatches to self.pick or so 10:56
nom: say Bool.list
p6eval nom 4e5d8a: OUTPUT«use of uninitialized value of type Bool in string context␤␤»
moritz no, it doesn't. Any.roll redispatches to self.list.roll, and List.roll does all the work itself 10:57
bacek jnthn, why SixModel_REPROps_Indexing supports only integer indexes? And how hashes are implemented in terms of REPR? 11:00
jnthn moritz: Because Bool isn't an enum, iirc
bacek: Oh, the index REPR ops part is *very* new.
*indexed 11:01
11:01 explorer__ left
bacek jnthn, hmm... Looks like you'll have full set of current parrot's VTABLEs in REPRs... 11:01
jnthn bacek: Only those that explicitly relate to allocation and storage of stuff. For example, there'd never be a find_method, does, etc. 11:02
moritz nom: enum A <b c>; say A.pick(*); say A.roll(8) 11:05
p6eval nom 4e5d8a: OUTPUT«b c␤use of uninitialized value of type A in string context␤use of uninitialized value of type A in string context␤use of uninitialized value of type A in string context␤use of uninitialized value of type A in string context␤use of uninitialized value of type A in stri…
bacek jnthn, ook. So, get_{foo}_keyed_{bar} is in.
jnthn, get/setattr is in (Modulo my confusion about what the heck is difference between attr and prop in parrot)
jnthn, boxing is in 11:06
jnthn, all math ops are out (?)
moritz bacek: what are you trying to do? migrate 6model to parrot?
bacek moritz, other way round. Migrate parrot to 6model 11:07
masak \o/
bacek moritz, to make parrot small, simple, fast and comprehensible.
masak bacek++ 11:08
moritz bacek: awesome!
jnthn bacek: Yeah. Either REPR-specific ops (see nqp_bigint.ops) or we always unbox things to native types and do the computation natively
bacek: To clarify, I don't think Parrot should be doing MMD in PMCs at all.
If languages want to do their ops that way, they probably have their own idea of multiple dispatch.
bacek jnthn, it was 3rd question about MultiSub vs DispatcherSub :)
jnthn bacek: DispatcherSub implements NQP multi-dispatch semantics. 11:09
bacek: But really, IMHO Parrot should be dis-entangling itself from multi-dispatch, not entangling itself in another language's view of it. 11:10
bacek jnthn, if "NewMultiSub" will provide only storage for Subs with empty .invoke, than we can have "DispatcherSub" and "P6MultiSub" inherited from it and provide different semantics for MMD
jnthn Argh no, not inheritance!!! 11:11
moritz simply store a function pointer to the multi dispather
masak jnthn: it takes some time for people to get used to a core world without inheritance :)
jnthn bacek: We really need a "protocol" of some kind for invocation 11:12
Where a type can say "this is what invocation means to me"
bacek: I don't think we should make languages commit to one way of storing their candidate lists.
bacek: Already NQP and Perl 6 look differently there
bacek: When I prototyped 6model on the CLR, I did just have a delegate (basically, function pointer) hanging off the STable. 11:13
11:14 LlamaRider joined
jnthn has to leave for $meeting soon 11:15
bacek: I sense that if the notion of vtable as Parrot has it today survives a 6model transition, it's function will be mostly reduced to HLL interop. 11:18
*its
11:21 cognominal left 11:23 cognominal joined 11:25 cognominal_ joined
jnthn meeting & 11:27
11:29 cognominal left 11:35 jaldhar joined 11:39 Juerd left, Juerd joined
bacek jnthn, ok. 1) If MMD is basically doesn't exists from VM point of view; 2) and call is just "VTABLE_invoke" on Object; than we can hand it over to HLL. 11:41
jnthn, one problem - MMD over free functions. Should we have some kind of "Namespace.invoke"?
11:49 tokuhirom left, tokuhirom joined 11:53 tokuhirom left 11:55 cognominal_ left 11:56 birdwindupbird joined 11:57 cognominal joined 11:58 satyavvd left 12:11 LlamaRider left
masak bacek: what's a "free function"? 12:15
12:15 sayu left
masak I know what a free variable is; never heard of a free function. 12:15
nom: class C { our method foo { say "OH HAI" } }; my &f = &C::foo; f(C.new) 12:16
p6eval nom 4e5d8a: OUTPUT«OH HAI␤»
masak is &f a free function?
nom: class C { our method foo { say "OH HAI" } }; my &f = &C::foo; class D is C {}; f(D.new) 12:20
p6eval nom 4e5d8a: OUTPUT«OH HAI␤»
12:21 araujo joined, araujo left, araujo joined
masak nom: class C { }; class D is C { our method foo { say "OH HAI" } }; my &f = &D::foo; f(D.new) 12:22
p6eval nom 4e5d8a: OUTPUT«OH HAI␤»
masak nom: class C { }; class D is C { our method foo { say "OH HAI" } }; my &f = &D::foo; f(C.new) 12:23
p6eval nom 4e5d8a: OUTPUT«Nominal type check failed for parameter ''; expected D but got C instead␤ in method foo at /tmp/3Uls2VsWfb:1␤ in block <anon> at /tmp/3Uls2VsWfb:1␤ in <anon> at /tmp/3Uls2VsWfb:1␤»
masak \o/
12:23 pnu joined 12:26 arlinius joined
colomon masak: mind if I borrow your trans (from ng) for niecza? 12:30
kshannon Well, That's a lot of PIR to get a working sub wrapper...
18 lines: 4 prologue, 10 wrapped call, 4 epilogue 12:31
masak colomon: go right ahead.
colomon: fwiw, pmichaud reported some problems with that code. I never did, but it uses some slightly advanced features like lexical classes. 12:32
s/never did/never noticed anything/
colomon checking now to see if it compiles. :) 12:33
masak I remember developing that bit of code. what's in ng is a second approach, after my first one turned out not to be radical enough. :) 12:34
the main point is to encapsulate the difference between replacement substrings and replacement regexes.
12:41 cognominal left 12:42 cognominal joined
kshannon If anyone else (e.g. jnthn) wants my hack for tracing in qbootstrap it's at github.com/KrisShannon/nqp/tree/qb...trace-HACK ( git pull git://github.com/KrisShannon/nqp.git qbootstrap-trace-HACK ) 12:43
masak kshannon++ 12:44
kshannon I'm too ashamed of it to put it into the official repo...
masak ;)
colomon niecza: class B { has $!a; methdo foo { say $!a; }; }; my $b = B.new(a => "hello"); $b.foo
p6eval niecza v13-169-geba5eb3: OUTPUT«===SORRY!===␤␤Variable $!a used where no 'self' is available at /tmp/b59_zkKXmv line 1:␤------> class B { has $!a; methdo foo { say ⏏$!a; }; }; my $b = B.new(a => "hello");␤␤Undeclared routines:␤ 'foo' used at line 1␤…
colomon niecza: class B { has $!a; method foo { say $!a; }; }; my $b = B.new(a => "hello"); $b.foo
p6eval niecza v13-169-geba5eb3: OUTPUT«Any()␤» 12:45
moritz that's correct
colomon niecza: class B { has $.a; method foo { say $.a; }; }; my $b = B.new(a => "hello"); $b.foo
p6eval niecza v13-169-geba5eb3: OUTPUT«===SORRY!===␤␤Confused at /tmp/tPJwjlfAyh line 1:␤------> class B { has $.a; metho⏏d foo { say $.a; }; }; my $b = B.new(a␤␤Undeclared routine:␤ 'metho' used at line 1␤␤Parse failed␤␤»
moritz niecza: class B { has $.a; method foo { say $.a; }; }; my $b = B.new(a => "hello"); $b.foo
p6eval niecza v13-169-geba5eb3: OUTPUT«hello␤»
moritz colomon: you had a non-printable character inside the 'method'
colomon so that doesn't work to initialize $! attributes? 12:46
moritz correct
masak colomon: you can't see private attributes from the outside, so you can't initialize them.
colomon did it used to work in rakudo? I keep on seeing examples that try to do that...
masak yes.
moritz it used to be specced to work
until masak++ raged against it, iirc
helped by TheDamian 12:47
masak "raged"? :)
I'm the height of composure...
moritz raged in a civilized way :-)
masak it *is* a lost battle, because there has to be a mechanism or two to actually get at private attributes.
but there are good reasons for not making it easy. 12:48
colomon anyway, masak++'s old trans code relied on it. ;) 12:49
and now it works!
moritz colomon: you could have looked at nom, there it has submethod BUILD(:$!source) { } to allow that 12:50
12:51 tokuhirom joined
masak oh! didn't know my .trans had been ported to nom. 12:58
moritz masak: it has, but it has some regression 12:59
s
masak not surprised. 13:00
moritz masak: which I haven't investigated, because I don't know the code at all
it was basically a "blind" port
nom: say 'abc'.trans('b' => 'X')
p6eval nom 4e5d8a: OUTPUT«aXc␤»
moritz nom: say 'abc'.trans('b' => '')
p6eval nom 4e5d8a: OUTPUT«ac␤»
moritz oh, I thought that one failed
13:02 Trashlord joined
masak nom: say 'abbbbbc'.trans('bb' => 'b') 13:03
p6eval nom 4e5d8a: OUTPUT«abbbbbc␤»
masak nom: say 'abbbbbc'.trans(['bb'] => ['b'])
p6eval nom 4e5d8a: OUTPUT«abbbc␤»
masak ooh; that's correct! 13:04
dalek ast: f0e1cc8 | moritz++ | S (3 files):
rakudo unfudges
13:06
masak huh -- what kind of path is 'S'? 13:08
moritz masak: it's the common prefix of S32 and S02 or so
masak I see :P
no further questions. :)
moritz no further answers :-) 13:09
13:20 tokuhirom left 13:21 tokuhirom joined 13:25 tokuhirom left 13:32 kaleem left
moritz nom: say 'a'.trans(rx/a/ => sub ($x) { $x.WHAT.gist }) 13:34
p6eval nom 4e5d8a: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤ in sub <anon> at /tmp/whRiVANMpS:1␤ in method next_substitution at src/gen/CORE.setting:3720␤ in method trans at src/gen/CORE.setting:3765␤ in block <anon> at /tmp/whRiVANMpS:1␤ in <anon> at /tmp/whRi…
moritz ah, that's the problem in current num
s/num/nom+trans/
13:37 cognominal left 13:38 cognominal joined
masak hm -- did that ever work? 13:39
moritz nope
seems not
b: say 'a'.trans(rx/a/ => sub ($x) { $x.WHAT })
p6eval b 1b7dd1: OUTPUT«Not enough positional parameters passed; got 0 but expected 1␤ in <anon> at line 22:/tmp/htRsXK_5tq␤ in 'Cool::next_substitution' at line 2512:src/gen/core.pm␤ in 'Cool::trans' at line 2559:src/gen/core.pm␤ in main program body at line 22:/tmp/htRsXK_5tq␤»
13:40 simcop2387 joined 13:41 simcop2387 left, simcop2387 joined, alim_ joined
moritz masak: the problem with your .trans code, beautiful as it may be, is that it separates the matching and the substitution far enough that we don't have the Match object around anymore when the substitution closure is called 13:42
13:42 Trashlord left
masak nod. 13:43
I'm aware that it's not the final iteration.
the big win with that code, recall, was that it took the time complexity from O(.chars) to O(<substitutions made>) 13:44
13:44 xinming joined
masak which was a big deal with the November wiki at some point: strangelyconsistent.org/blog/novemb...pragmatism 13:45
moritz I'm not sure that calculation is correct though
it looks more like O(<subsitutions considered>) 13:46
nom: say 'aaa'.trans(['aa', 'a'] => ['X', 'Y'])
p6eval nom 4e5d8a: OUTPUT«XY␤» 13:47
masak aye, you're right about that.
moritz also it uses index() and regex matches, which are still O(.chars) 13:48
13:49 xinming left 13:51 xinming joined
masak I'll retreat my arguments from exact O() notations to "it's a lot faster". 13:51
13:51 cognominal_ joined
moritz O( :/ ) to O( acceptable) :-) 13:53
13:54 cognominal left
[Coke] .u hap 13:55
phenny U+A274 YI SYLLABLE HAP (ꉴ)
13:55 xinming left 13:58 daxim left
[Coke] who was recently trying to split the setting? 14:02
(for rakudo)
moritz
14:02 daxim joined
[Coke] any luck? and do you think breaking up the setting will speed up the build? 14:04
(or at least reduce memory pressure?)
moritz reducing memory pressure is my main goal
I've succeeded in moving some very few, isolated files out of the main setting
for example the MAIN_HELPER
but it seems I can't easily add multi candidates in the second setting to a proto defined in the first setting 14:05
jnthn++ promised to look into it
if that's fixed, it might be possible to move all the Temporal stuff to the second setting 14:06
maybe IO::Socket too
hm, that one might work today already
jnthn jnthn is always saying he'll do stuff
:)
jnthn will try and get to it today...qbootstrap hacking sucked up yesterday's tuit supply
moritz [Coke]: anyway, I already reduced virtual memory usage from 1.7G to 1.6G. Success!!! 14:09
[Coke] \o/ 14:10
dalek kudo/nom: 8b620e7 | moritz++ | src/core/Enumeration.pm:
Enumeration.roll
14:11
14:12 spine_ joined 14:13 mkramer joined
dalek ast: 8f11d73 | (Solomon Foster)++ | S05-transliteration/trans.t:
Fudge for niecza.
14:16
moritz meh, moving IO::Socket +INET to core2 gives the same 'rtype not set' error :/ 14:17
14:19 fsergot left 14:22 mkramer left, skids joined 14:24 mkramer joined 14:26 mkramer left, simcop2387 left 14:27 mkramer joined 14:28 fsergot joined
fsergot o/ :) 14:28
moritz \o 14:29
14:31 birdwindupbird left
[Coke] thinks we might hit 97% today, if colomon can find a few more of those. ;) 14:33
14:34 PacoAir joined 14:35 simcop2387 joined, simcop2387 left, simcop2387 joined 14:36 kaleem joined
colomon [Coke]: don't count on it, I need to $work 14:37
[Coke] aw. *pout* (me too. ;) 14:38
14:39 simcop2387 left
[Coke] colomon: are you missing a push to niecza, or is that for later? 14:39
colomon [Coke]: well, it's like this.
I ported masak++'s trans code to niecza. 14:40
and then I spectested
and then I got a bunch of failures.
[Coke] (we are at just over 96% as of about 20m ago.)
colomon right now I'm trying to verify the failures have nothing to do with my patch
[Coke] roger.
14:40 simcop2387 joined 14:43 nebuchadnezzar joined
colomon niecza: say 13e21 % 4e21 - 1e21 14:50
p6eval niecza v13-169-geba5eb3: OUTPUT«NaN␤»
14:50 kaleem left
colomon niecza: say 13e21 % 4e21 14:50
p6eval niecza v13-169-geba5eb3: OUTPUT«NaN␤» 14:51
colomon well now, that's revolting
moritz perl6: say 13e21 % 4e21
p6eval niecza v13-169-geba5eb3: OUTPUT«NaN␤»
..rakudo 8b620e: OUTPUT«1e+21␤»
..pugs b927740: OUTPUT«1000000000000000000000␤»
colomon niecza: say (13e21 % 4e21)
p6eval niecza v13-169-geba5eb3: OUTPUT«NaN␤»
colomon niecza: say (13e21) % (4e21)
p6eval niecza v13-169-geba5eb3: OUTPUT«NaN␤»
colomon I think it must be from the constant folding patch
because this worked yesterday in niecza.
14:53 kaleem joined
colomon dunno if it's worth trying to hunt it down, or if sorear++ will just look at it and realize what is wrong 14:54
moritz niecza: my ($a, $b) = (13e21, 4e21); say $a % $b
p6eval niecza v13-169-geba5eb3: OUTPUT«1E+21␤»
moritz constant folding indeed
colomon moritz++ # smartness 14:55
14:55 mkramer left, kmwallio joined
[Coke] I see 8 new failures since yesterday, but haven't tracked it down. 14:56
dalek ecza: 27b68eb | (Solomon Foster)++ | lib/CORE.setting:
Straightforward port of masak++'s .trans method from Rakudo ng.
ecza: a43ea40 | (Solomon Foster)++ | t/spectest.data:
Turn on S05-transliteration/trans.t.
colomon niecza: say 'bit' ~& 'wise'
p6eval niecza v13-169-geba5eb3: OUTPUT«Unhandled exception: Buffer bitops NYI␤ at /home/p6eval/niecza/lib/CORE.setting line 1075 (die @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2396 (infix:<~&> @ 3) ␤ at /tmp/hPe44s2pLW line 1 (mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setti…
dalek ast: dcb1827 | (Solomon Foster)++ | integration/real-strings.t:
Fudge for niecza.
ecza: 452c98b | (Solomon Foster)++ | t/spectest.data:
Turn on integration/real-strings.t.
14:57
masak in Niecza, unimplemented features are exceptions. 15:00
:)
15:00 wolfman2000 left 15:01 carlin joined
moritz nom: try calframe.callframe; say $!.WHAT 15:01
p6eval nom 8b620e: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&calframe' called (line 1)␤»
moritz nom: try callframe.callframe; say $!.WHAT 15:02
p6eval nom 8b620e: OUTPUT«X::NYI()␤»
moritz :-)
jnthn Typed exceptions :)
moritz++
colomon hmmm... does it even make sense to call a buffer bitop on two strings? 15:03
perl6: say 'bit' ~& 'wise'
p6eval pugs b927740, rakudo 8b620e: OUTPUT«bip␤»
..niecza v13-169-geba5eb3: OUTPUT«Unhandled exception: Buffer bitops NYI␤ at /home/p6eval/niecza/lib/CORE.setting line 1075 (die @ 3) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2396 (infix:<~&> @ 3) ␤ at /tmp/I2Loy_et2Q line 1 (mainline @ 2) ␤ at /home/p6eval/niecza/lib/CORE.setti…
moritz colomon: ~& is meant to be a string bitwise op, not necessarily a buffer bitwise op 15:04
but what they mean is another questions, since bitops usually have to assume a fixed bit width
colomon but... doesn't it depend on the string encoding?
moritz which strings don't have
colomon: iirc the ops boil down to bit operations on the codepoint numbers 15:05
colomon ugh
masak TimToady usually says that string literals are allomorphic wrt Str/Buf. 15:06
moritz which you can do just fine for & and |, but starts to get hairy for ^
masak implementation is left as an exercise to the reader ;)
colomon turns on his SEP field... 15:07
moritz colomon: it's turned off by default?
how can you possibly survive?
colomon ;) 15:08
[Coke] moritz: ... why do YOU care? ;)
masak [Coke]: because his field is off, duh!
skids spitballs on compact structs/regex/pack/unpack 15:09
What if<:: > metasyntax, if invoked as <::Class> treated a Class as a rule
(and sucked in the number of bytes in the compact struct, assuming 8-bit)
moritz [Coke]: because I wonder how low I can tune my field, and remain as (in)sane as I am today
masak skids: why do you need to treat Class as a role for that?
skids rule, not role 15:10
The normal assignment mechanisms being used to say where to stuff it
And a lookaheadbefore that could serveto validate fields if needed
masak can't read :)
[Coke] finds the embedded tabs not readable. 15:11
masak skids: there are inexplicable Tab characters (^I) in your communication.
skids Oh crap. Was pretyping and pasting.
Funny they don't show up on my client.
masak phenny: sv en "tabbe"?
phenny masak: "gaffe" (sv to en, translate.google.com)
masak :P
moritz phenny: de en "plenken"? 15:12
phenny moritz: "Plenk" (de to en, translate.google.com)
LoRe phenny: de en "kohlmeisen" 15:14
moritz phenny: de en "kohlmeisen"?
phenny moritz: "Great Tits" (de to en, translate.google.com)
[Coke] O_o
moritz it should append (bio.) or so :-) 15:15
en.wikipedia.org/wiki/Great_Tit
colomon as opposed to silicone, moritz?
moritz colomon: as opposed to the vulgar interpretation you are thinking of :-) 15:16
skids I was going to say what could be more "bio" than great tits, but then colomon brought up silicone.
15:18 araujo left 15:20 sivoais joined
[Coke] wonders if niecza/perl6 has a "nocritic" option to allow intentionall defined but unused constructs for, say, tests that are try to excercize a side effect. 15:21
masak "'Plenken' is derived as a borrowed word from the English 'blank'." -- en.wikipedia.org/wiki/Plenken
[Coke]: there's #OK
might work. 15:22
niecza: my $a
p6eval niecza v13-172-g452c98b: OUTPUT«Potential difficulties:␤ $a is declared but not used at /tmp/8eEryAM0NI line 1:␤------> my ⏏$a␤␤»
masak niecza: my $a #OK
p6eval niecza v13-172-g452c98b: ( no output )
masak yup.
[Coke] ponders applying that liberally to the spec tests.
[Coke] guesses it's not worth it for right now. 15:23
colomon we really should have a roast hackathon someday and try to clean the test files up
[Coke] reruns after colomon's commits: 15:31
niecza at 96.39%
15:31 rjbs joined
rjbs Good morning, butterfly people. 15:31
15:31 araujo joined
rjbs I have a question for you about rt.perl.org's perl6 queue. 15:31
masak shoot.
[Coke] niecza: say 18513*.97-17845
p6eval niecza v13-172-g452c98b: OUTPUT«112.61␤»
rjbs I am now a moderator for mail that gets reported to rt.perl.org's perl6 queue by email.
masak rjbs: you mean all bug reports, for example? 15:32
rjbs Yes, or followups.
Example email in the queue:
[001] MODERATE for [email@hidden.address]
From: [email@hidden.address] (via RT) [email@hidden.address]
Subject: [perl #107780] Compliments of the Season.
Obviously, this is spam.
masak aye.
moritz agreed.
rjbs If I delete the message, the ticket *is still there*
masak aye.
rjbs So it might just sit there, looking like ignored spam in your queues.
If I approve the message, you will get the spam mail, which will alert you to go delete/reject the ticket. 15:33
Which would you folks prefer?
[Coke] delete the mail.
masak just sit there, I think.
moritz rjbs: I'd prefer to never see that ticket
[Coke] we go through often enough that we'll see the spam sitting in the rt queue.
masak right.
we don't want to inconvenience p6c with spam.
rjbs Okay, thanks. 15:34
[Coke] I delete a few of those every week. (for p6 & tpfgrants)
rjbs I asked because in p5, we do not reliably go through new tickets yet. :-/
masak [Coke]++
[Coke] rjbs++ # I hate moderating. ;)
rjbs I will relate your preference to the other moderators. I wasn't 100% sure.
masak rjbs: thanks for checking.
[Coke] rjbs: we're... getting there for rakudo, but it's still not right.
15:39 nornagest_ joined 15:42 nornagest left
[Coke] niecza: say 18513*.97-17788 15:51
p6eval niecza v13-172-g452c98b: OUTPUT«169.61␤»
16:00 packetknife left
dalek ast: 45736a6 | coke++ | S05-transliteration/with-closure.t:
niecza fudge
16:07
ecza: 82f499a | coke++ | t/spectest.data:
run S05-transliteration/with-closure.t
[Coke] (10 more) 16:08
16:09 cognominal_ left 16:10 cognominal joined
[Coke] sorear: S32-num/bridge.t has another 200 tests; is this something you can get running? (looks like I'd have to fudge it down to almost nothing at the moment.) 16:13
er, ../real-bridge.t 16:14
colomon [Coke]: that's my baby, and it's going to be tricky for nieza 16:16
niecza 16:17
well, it might not be too awful to get the methods going. it's the operators that are thorny at the moment. 16:25
16:25 Trashlord joined
colomon is having one of those mystifying moments of stuff which shouldn't work working for $work 16:27
16:28 kaare_ joined
colomon and when I say "moment", I mean, "morning" 16:33
16:33 kaleem left 16:38 alester joined 16:42 cognominal left 16:43 cognominal joined 16:44 LlamaRider joined 16:51 kaleem joined, x3nU joined 16:52 spine_ left, kaleem left 16:54 kaleem joined 16:56 zipf joined 17:00 mj41 left
LlamaRider rakudo: my @a=[100]; say @a[0]/2; 17:02
p6eval rakudo 8b620e: OUTPUT«0.5␤»
LlamaRider help with array contexts?
I want to get 50 out ;) 17:03
tadzik huh 17:04
colomon rakudo: my @a=100; say @a[0]/2;
p6eval rakudo 8b620e: OUTPUT«50␤»
tadzik rakudo: my @a=[100]; say @a.perl
p6eval rakudo 8b620e: OUTPUT«Array.new([100])␤»
tadzik hehe
that's right
@a[0] is an array
numifies to its size, which is 1
colomon LlamaRider: the way you did it, the first element of @a was [100]
LlamaRider O_O 17:05
colomon rakudo: my @a=[100]; say @a.perl
LlamaRider this [] notations comes back to bite me quite often
p6eval rakudo 8b620e: OUTPUT«Array.new([100])␤» 17:06
[Coke] rakudo: my @a=(100); say @a.perl
p6eval rakudo 8b620e: OUTPUT«Array.new(100)␤»
colomon rakudo: my $a=[100]; say $a[0]/2;
p6eval rakudo 8b620e: OUTPUT«===SORRY!===␤Confused at line 1, near "say $a\x{1c}[0\x{1c}"␤»
[Coke] if you really miss something to contain the elements.
colomon stupid IRC client
LlamaRider thanks to all 17:07
I switched to () which works as in Perl 5 (in this case)
jnthn Note that you don't actually need it at all in Perl 6 17:08
nom: my @a = 1,2,3; say @a.elems
p6eval nom 8b620e: OUTPUT«3␤»
jnthn [...] is the way you write an array literal, which can be useful for nested arrays too 17:09
LlamaRider I'm just worried not to end up with a Parcel (since I never understood those fully)
jnthn LlamaRider: Parcels mostly disappear
A parcel is just the thing you get when you separate a bunch of things with commas 17:10
nom: say (1,2,3).WHAT
p6eval nom 8b620e: OUTPUT«Parcel()␤»
LlamaRider yeah, I was trying not to get that :) Arrays sound safer ( = i understand them)
jnthn :) 17:11
Time for some dinner, and then I should have some Perl 6 tuits :)
bbiab
17:12 alim_ left 17:13 alim joined 17:15 mj41 joined 17:17 alim left 17:23 mj41 left 17:24 zipf left, zipf joined
LlamaRider I'm surprised one has to say log($n,2) and can't use log(:base(2),$n). Would be nice to have both (no idea if that's relevant feedback for anyone here) 17:25
tadzik hehe, didn't we de-spec that not so long ago? :P 17:26
17:26 kaare_ left, kaare_ joined
colomon finally is getting the failure in his $work code he's been looking for all morning! o/ 17:27
moritz LlamaRider: that used to work via the general mechanism of filling positional parameters by name; we've abolished that, so now we should think about specific cases like the one you mentioned
17:27 mj41 joined 17:29 simcop2387 left
[Coke] moritz: by having one multi with named and one with positional? 17:29
LlamaRider thanks for the background
17:30 ksi joined, simcop2387 joined
moritz [Coke]: maybe that's a desired solution, or maybe we want to make the base always named. No idea. 17:31
17:31 simcop2387 left 17:33 simcop2387 joined, cognominal left 17:34 cognominal joined, shinobicl___ joined, mj41 left 17:35 wtw left 17:36 zipf left
LlamaRider rakudo: my $a = [100]; say $a[0]/2; 17:40
p6eval rakudo 8b620e: OUTPUT«50␤»
LlamaRider shortest solution to my previous issue ;)
colomon LlamaRider: I posted that one at 12:06. Not sure I'd advise it, though. :) 17:41
LlamaRider ah, the one with the encoding problems. Btw :06 is more helpful to avoid timezone issues :) 17:42
why not advise it? It will be safer to pass $a around than @a I guess (copying a reference is light)
not sure it is a reference of course... used to be in P5 17:43
tadzik LlamaRider: moritz wrote a post on this year's advent calendar about references, I think 17:44
(I think it was moritz) 17:45
17:45 zby_home joined
colomon perl6advent.wordpress.com/2011/12/1...nces-gone/ 17:45
17:45 zipf joined, daxim left
LlamaRider on it. 17:46
17:46 Chillance joined
PerlJam LlamaRider: maybe you wanted binding originally? 17:47
nom: my @a := [100]; say @a[0]/2;
p6eval nom 8b620e: OUTPUT«50␤»
LlamaRider and again O_O
PerlJam did someone already mention that? My quick eye-ball scan didn't see it. 17:49
LlamaRider I am sure I didn't *want* that, since I never thought about it from this angle. I wonder if this has some unexpected differences from the other ways.
wasn't mentioned before, no
PerlJam LlamaRider: It occurs to me that, if you learn something here, it would make a nice blog post from the non-perl6-person-doing-perl6 point of view. 17:51
LlamaRider Can't promise I will have the time, but I might sum up what I've been through after the p6cc is over. 17:54
you're definitely right that it is the least I can do to repay the generous tutoring I am offered here :) 17:55
17:56 dakkar left 18:02 thou joined 18:03 alim joined, cognominal left
sorear good * #perl6 18:03
jnthn: I'm wondering if role T { }; class Foo does ::T { } should be allowed. 18:04
18:04 cognominal joined
moritz nom: role T { }; class Foo does ::T { }; say 'alive' 18:05
p6eval nom 8b620e: OUTPUT«===SORRY!===␤Foo cannot compose T because it is not composable␤»
moritz nom: role T { }; class Foo does T { }; say 'alive'
p6eval nom 8b620e: OUTPUT«alive␤»
[Coke] sorear: hio. 18:07
18:08 nornagest_ is now known as nornagest
sorear colomon: fwiw, I'm planning to write a completely original trans for Niecza (because LTM mostly) 18:08
18:10 snearch left
colomon sorear: cool. 18:15
masak sorear: \o
colomon I won't put in any effort trying to make the current version handle flags, then. :)
sorear huh 18:18
oh!
jnthn sorear: Will you write it in Perl 6? :) 18:20
jnthn would be happy to have a better trans for Rakudo ;)
::T - I'm dubious about what that means anywhere other than in a signature. 18:21
18:22 zipf left
dalek ecza: c2021a0 | sorear++ | src/CompilerBlob.cs:
Fix constant folding with large integral Nums
18:26
sorear jnthn: well, notice that there is a T in the lexical scope 18:27
leading :: in expression context can be used to reference a type without regard to whether it has been declared yet
jnthn Ah, that 18:28
Yeah, that's sane enough too
It's the uses like
my ::T $x = ...
That bother me a bit more
Agree the thingy above shoulda probably worked.
sorear this gets used a lot in niecza to make references from modules to classes in other modules that aren't directly used
dalek ecs: d9a16d0 | coke++ | S (2 files):
remove duplicated words.
18:30
18:30 pyrimidine joined
LlamaRider hm, i figured the [] arrays mostly, but need help with figuring out if they're actually references. Seems that they are: 18:32
rakudo: sub change ($a is copy) { push $a, 1; }; my $a = [2]; say $a; say change $a; say $a;
p6eval rakudo 8b620e: OUTPUT«2␤2 1␤2 1␤»
LlamaRider this doesn't clone the Array object, but copies over a reference, right? 18:33
moritz right
perl6: sub change ($a is copy) { push $a, 1; }; my $a = [2]; change $a; say $a
p6eval pugs b927740, rakudo 8b620e, niecza v13-172-g452c98b: OUTPUT«2 1␤»
[Coke] rakudo: sub change (@a is copy) { push @a, 1; }; my @a = [2]; say @a; say change @a; say @a;
p6eval rakudo 8b620e: OUTPUT«2␤2 1␤2␤»
moritz [Coke]: that's what I would have expected
LlamaRider so, those are completely real references. Now, is this something special with refs to Array objects, or are all OO objects similar? 18:34
TimToady special to containers, more like 18:36
Hashes work the same
masak but "container" isn't a closed set of types.
LlamaRider why not make "is copy" to a $scalar throw an error? Seems awfully confusing to me. 18:37
TimToady that's how we get a read/write copy of values
otherwise it's readonly
moritz nom: sub f($x) { $x = 3 }; f(6)
p6eval nom 8b620e: OUTPUT«Cannot assign to a readonly variable or a value␤ in sub f at /tmp/uqMZ97Sw1S:1␤ in block <anon> at /tmp/uqMZ97Sw1S:1␤ in <anon> at /tmp/uqMZ97Sw1S:1␤»
moritz nom: sub f($x is copy) { $x = 3 }; f(6) 18:38
p6eval nom 8b620e: ( no output )
moritz LlamaRider: that's the common use case
LlamaRider this use case shocks me :) you just assigned something to a (passed) constant
18:38 tokuhirom joined
LlamaRider ah wait. got it. and then there are references, which are trickier. 18:39
18:40 rjbs left, Moukeddar joined
TimToady we're trying to give implementations freedom on that level to use either pass-by-value or pass-by-reference, as long as it looks readonly 18:40
and it biases solutions toward FP style to have readonly params 18:41
cognominal TimToady, what do you think of irclog.perlgeek.de/perl6/2012-01-09#i_4956213 ? 18:43
18:44 tokuhirom left
cognominal about FP, is there a way to declare a function/method as having no side effects? 18:44
LlamaRider "is rw" has to copy by reference. "is copy" has to copy by value (but not deeply clone). and the default is a read-only pass by reference. is that right?
18:46 wolfman2000 joined
sorear jnthn: I was actually hoping you'd say it shouldn't be allowed. :| 18:48
note: 18:49
std: class X does ::T { say T }
p6eval std dc62e1d: OUTPUT«ok 00:01 108m␤» 18:50
sorear in STD, ::T when parsed as <typename> is always declarative, never referential
jnthn wonders if there's any value in splitting the declarative and referential cases of type parsing in some way. 18:56
TimToady cognominal: that piece of spec is pretty ancient, and likely to need revision as we explore how syntactic defaults work for various categories 19:05
it's more there to illustrate that different categories may have different defualts
*au
19:11 mj41 joined
jnthn TimToady: After taking a look over the metamodel stuff...don't think an allmethods will be needed. Turns out that things actually get neater in some cases when I use method_table rather than methods inside the meta-model, and that it'll probably be marginally faster to boot. 19:13
TimToady: So methods can be the user-facing thing and .^mro and .^method_table can be the more "primitive" things.
TimToady \o/ 19:14
cognominal: regarding marking things as pure, I think it's the wrong default 19:15
jnthn trundles off to S12 to see what exactly .methods is meant to do
TimToady most things should be pure, the closer you get to the FP ideal
that's the C++ const failure mode, marking almost everything 19:16
TimToady is also not sure that methods can rise to the same level of purity as mathematical functions, unless the object as a whole is immutable 19:17
[Coke] about 670 tests less until niecza passes rakudo.
*left
cognominal C++ is a curse. I thought cursing was inappropriate in this channel. :) 19:18
TimToady we can discuss curses though, which is fortunate for you
kshannon jnthn: on of the parsing problems with the qbootstrap comes from the NFA mergesubrule of a protoregex not being recursive, e.g. the term NFA merges term:sym<value> which merges quote which is empty...
TimToady but also, linguists don't believe words are magical that way 19:19
colomon eh? I thought most linguists believed words *were* magical... 19:20
TimToady we feel perfectly free to talk about words like "fuck", "shit", and "cunt" without thinking we're cursing. :)
colomon ;)
jnthn o.O
:)
kshannon: Oh... 19:21
kshannon: Yes, that will be a problem.
And needs fixing :)
Fixing that'll fix a couple of busted things
Not to mention trim more branches earlier.
19:23 birdwindupbird joined, alim left
[Coke] perl6: say DateTime.new(); 19:23
p6eval niecza v13-174-gc2021a0: OUTPUT«===SORRY!===␤␤Undeclared name:␤ 'DateTime' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 919 (die @ 2) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1143 (P6.comp_unit @ 32) ␤ at /ho…
..pugs b927740: OUTPUT«*** No such subroutine: "&DateTime"␤ at /tmp/gKJc73E369 line 1, column 5-19␤»
..rakudo 8b620e: OUTPUT«use of uninitialized value of type Int in string context␤DateTime.new(year => , month => 1, day => 1, hour => 0, minute => 0, second => 0/1)␤»
TimToady I remember with amusement once when someone I know told his son that he should not use the word "frickin'", but could not bring himself to say why :)
19:24 hundskatt joined, alim joined
masak yeah, those euphemisms are so nasty. 19:24
TimToady so I explained plainly that it was commonly thought to be small swearing for "fucking".
they both looked at me, shocked :)
masak :P 19:25
TimToady linguists have to get their pleasure somewhere
the languages themselves are mostly a form of torment :) 19:26
masak I know the feeling :)
jnthn :excl exclude Cool and Any (the default) 19:28
...and presumably Mu too?
TimToady colomon: but you're also right in that linguists do believe in "magic", on one level, which they call "pragmatics"
there's a famous paper called "How to Do Things With Words"
it's all about phrases that actually do things, such as "I now pronounce you husband and wife." 19:29
and "I promise"
and insofar as all language is intended to have some effect on the listener, yes, it's all magical :) 19:30
but it's also just called "effective communication" 19:31
or in some cases "effective propaganda" :)
slavik1 TimToady: taking a dig at USSR? :P
TimToady actually, I was just talking ad hitlerium 19:32
slavik1 lol
fair enough
TimToady but we all propagandize to a lesser or greater extent 19:33
slavik1 true
TimToady pretty much all of us want people to think better of us than we think of ourselves
slavik1 TimToady: I disagree, everyone thinking better of me adds to my list of things I have to work on. :( 19:34
which I am not supposed to be responsible for.
TimToady heh
well, I did hedge it with "pretty much", so maybe you're the only exception :)
slavik1 I am sure I am not the only one, but point taken. :) 19:35
TimToady well, I did hedge it with "maybe", so it's possible you're not the only one :) 19:36
19:37 Moukeddar left
masak I see what you're doing there. 19:37
TimToady bows on some semantic level or other 19:38
[Coke] perl6: KeyHash.new(); 19:40
p6eval niecza v13-174-gc2021a0: OUTPUT«===SORRY!===␤␤Undeclared name:␤ 'KeyHash' used at line 1␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 919 (die @ 2) ␤ at /home/p6eval/niecza/src/STD.pm6 line 1143 (P6.comp_unit @ 32) ␤ at /hom…
..pugs b927740: OUTPUT«*** No such subroutine: "&KeyHash"␤ at /tmp/7RPef_2m5l line 1, column 1-14␤»
..rakudo 8b620e: ( no output )
moritz nom: saz KeyHash.^parents 19:41
p6eval nom 8b620e: OUTPUT«===SORRY!===␤CHECK FAILED:␤Undefined routine '&saz' called (line 1)␤»
moritz nom: say KeyHash.^parents
p6eval nom 8b620e: OUTPUT«Iterable() Cool() Any() Mu()␤»
[Coke] rakudo: my %a = KeyHash.new(); %a{1} = True; say %a.keys; %a{1} = False; say %a.keys;
p6eval rakudo 8b620e: OUTPUT«Method 'iterator' not found for invocant of class 'KeyHash'␤ in method reify at src/gen/CORE.setting:4283␤ in method gimme at src/gen/CORE.setting:4647␤ in method eager at src/gen/CORE.setting:4622␤ in method STORE at src/gen/CORE.setting:5313␤ in block <anon>…
jnthn It's NYRI, I think 19:42
moritz nom: say KeyHash.^methods(:local)
p6eval nom 8b620e: OUTPUT«of␤»
moritz yes, looks like a stub to me 19:43
[Coke] wonders what the point of the KeyHash is.
TimToady sorear: re irclog.perlgeek.de/perl6/2012-01-09#i_4954903, another possibility is to automatically derive a new Regex slang for the current lexical scope that derives from the outer Regex slang 19:44
then we could dispense with the &foo requirement 19:45
19:45 Vlavv_ joined
moritz and use that only for regex literals outside of grammars? 19:47
TimToady [Coke]: "A C<KeyHash> automatically deletes any key whose value goes false." 19:48
moritz: yes, a declared grammar doesn't need to make an anonymous derivation
I suppose this would only apply to named regexes, since anon regexes could be mixed in to other things 19:49
moritz TimToady: something in me says "that's wrong", but that might be because my mental model of slangs are wrong 19:50
somehow I thought a slang consists of rules for parsing the current language
jnthn too
Well
TimToady well, there's a
jnthn Something in the current language braid
moritz not something that a user-space regex is supposed to call back to (unless it wants to parse Perl 6)
TimToady Regex slang embedded in the MAIN slang 19:51
a regex with a name can be considered declarative, and mixed in at compile time
there could be compile-time mixins for other slangs in the current braid as well, I suppose 19:52
that's essentially what things like Q:c are already doing 19:53
but those scope to the current quote, not the rest of the lexical scope
[Coke] TimToady: it also says that .elems is the sum of all the values, neither of which seems awesome enough to be a core data type.
so I am wondering what problem they were trying to solve. 19:54
TimToady the postulated 'quote' keyword could be considered a to-end-of-scope mixin of a new quote construct
moritz hey, if somebody wants a bit of fun, implement the last algorithm from www.keithschwarz.com/darts-dice-coins/ for Hash.roll (or better EnumMap.roll) 19:55
and add that to the settings of both rakudo and niecza
TimToady [Coke]: it's just a generalization of mutable sets, bags, and similar values that may include fractional amounts, such as how much oil do you have in a set of oil tanks? 19:56
always assuming the oil tanks blow up when they get empty :) 19:57
it's also possible that KeyHash is slightly mis-specced, confusing false with default 19:58
[Coke] niecza: my $a is Numeric;
p6eval niecza v13-174-gc2021a0: OUTPUT«===SORRY!===␤␤Trait name not available on variables at /tmp/Lwg2MmPHaD line 1:␤------> my $a is Numeric⏏;␤␤Potential difficulties:␤ $a is declared but not used at /tmp/Lwg2MmPHaD line 1:␤------> my ⏏$a …
[Coke] sorear: that will probably block some of the type roles tests. 19:59
moritz fwiw I'll spend most of tomorrow traveling, and AFK
TimToady we probably want KeyHashes that can contain false values, so it should really be formulated in terms of the default value, which might be undefined
it's just that a Set has a default value of False, and a Bag has a default value of 0 20:00
but we don't have hash/array defaults totally thrashed out just yet
and it may be that the generalization is not KeyHash, but my %stuff is default(42) is autopruned; or some such 20:01
20:02 bluescreen10 joined
TimToady or... is default(42, :auto) 20:02
20:03 birdwindupbird left, jakky joined
skids Wouldn't a hash/array logically default to the default of its value type, rather than having its own default? 20:03
TimToady that's the default default, yes 20:04
20:04 LlamaRider_ joined
skids :-) 20:04
masak I for one would like to experiment not only with autopruning, but with many useful data structures (stacks, queues, heaps, trees) as backend implementations to '@' and '%' variables.
TimToady the autoprune generalization probably wants a smartmatch, not just a single value 20:05
so fractional bags delete when * <= 0, maybe
maybe that's the wrong approach though 20:06
jnthn
.oO( I for one welcome our data structure overlords )
20:07 LlamaRider left
skids masak: Think "backend implementation of several @'s or %'s at the same time in one data structure." 20:07
20:07 cognominal left, cognominal joined
TimToady if we have a value type that's a subset type, then if the value is outside the subset, we choose either error or deletion, depening on whether it matches the default 20:07
my Positive %fracbag is default(0) # delete if 0, complain if <0 20:08
that seems cleaner to my clouded brane 20:09
masak 'fracbag' sounds like it would be a severe insult in Battlestar Galactica. 20:10
TimToady how 'bout %auxtank that you discard when empty 20:11
assuming airplane semantics :)
jettison, I should say
skids Last time I tried taking a hash of all hash keys during hash accesses in parrot (running rakudo) something like 90% of hash accesses were for hashes from a family with about 10 or 20 distinct key states. So essentially there were tens of thousands of copies of the same hash keys with different values. (Though jnthn++'s REPR stuff will also be attacking that problem.)
masak doy: hey! I just noticed you're making Moose releases, too! doy++ 20:12
TimToady you mean you were using a %hash[Str] (the default) rather than %hash[Enum] (or some such
we're also sorely lacking non-string hash keys 20:13
20:13 Chillance left
TimToady I have most of translation of Set.pm assuming that we can have hash keys based on WHICH 20:13
20:13 Chillance joined
skids Just saying an implementation of "lots of little hashes with same keys" on the back end might speed up naive programs. 20:14
TimToady that's turning common strings into symbols, or some such, internally
p5 actually does some optimization on that wise
the trick to moving beyond string hashes is that you really only need a hash of the *identity* 20:15
when you understand the identity, you can have a hash of it 20:16
I suspect .WHICH is usually the right default for most entities, assuming we can get a hash of it 20:17
dalek ast: a40c3de | jnthn++ | S12-introspection/definite.t:
Tests for .DEFINITE.
ast: 72d6c38 | jnthn++ | S12-introspection/methods.t:
Update methods.t for :excl semantics, new proto semantics and scatter .gist to avoid some warnings.
ast: 6529af0 | jnthn++ | S12-introspection/parents.t:
Scatter some :all in parents.t to get it to pass again.
kudo/nom: 0838f41 | jnthn++ | src/ (2 files):
Implement .DEFINITE.
20:18
kudo/nom: b1d3c7c | jnthn++ | src/Perl6/Metamodel/ (4 files):
Refactor to use method_table in place of methods inside of MOP.
kudo/nom: 1f302f8 | jnthn++ | src/ (6 files):
Implement :excl and :all for methods, attributes and parents. Make :excl the default.
kudo/nom: b21d28b | jnthn++ | src/ops/perl6.ops:
Fix .DEFINITE for container case.
kudo/nom: e65b6b1 | jnthn++ | src/Perl6/Metamodel/BOOTSTRAP.pm:
Fixes to .is_dispatcher and .is_generic.
kudo/nom: 783b468 | jnthn++ | t/spectest.data:
Run S12-introspection/definite.t.
masak what's this .DEFINITE of which you speak? 20:19
jnthn See S12
TimToady what :D actually checks
masak ah.
sorear wanders back 20:20
TimToady oh, hey, moritz++ already talked about slang mixins; I should finish backlogging before commenting in my current delirous blathery state 20:23
delirious, even 20:25
dalek ast: fc605cb | jnthn++ | S12-introspection/definite.t:
Test that DEFINITE really is a macro.
20:26
ast: 7c55366 | jnthn++ | S12-introspection/parents.t:
Some tests for :excl, both explicit and as the default.
jnthn That's one less thing for TimToady++ to complain about. :) 20:27
TimToady can find something else now...
masak jnthn++
jnthn TimToady: I expected nothing less :P
tadzik jnthn: do we pass that macro one?
jnthn tadzik: ? 20:28
Yes
tadzik huh
jnthn tadzik: You meant the test I just added
?
tadzik yeah. For a moment I thought "we pass that, so we must have macros" 20:29
jnthn no, no. It's wired in Actions.pm.
tadzik I see
masak I'm not sure how one'd *define* such a macro, but... :)
sorear We do have macros. Just not user-defined macros.
masak that's the same problem as with .WHAT and the others.
[Coke] 01/09/2012 - niecza at 96.46% (sorear++'s fix earlier today)
sorear [Coke]: any remaining failures? 20:30
TimToady any sufficiently advance macro is indistinguishable from a primitive...
masak ;)
[Coke] 5 more: gist.github.com/1584782
masak maybe they're just 'macro postfix:<.WHAT>' -- but ISTR there was some problem with that notion...
I think when Niecza reaches Rakudo's number of spectests, the Mayan calendar will just go "oh, frig it" and end early. :P 20:31
skids What's a "mutator" for the purposes of perlcabal.org/syn/S09.html#Compact_structs 3rd paragraph? 20:32
dalek kudo/nom: de59b4b | jnthn++ | docs/ChangeLog:
Start a ChangeLog for the month, so we don't have it all to do right before the next release.
masak colomon++ [Coke]++ tadzik++ PerlJam++ # tutoring LlamaRider_ earlier 20:33
LlamaRider_ do you have some sort of karma system in the channel? (trying to figure out the ++ mnemonics) 20:34
tadzik karma LlamaRider_
aloha LlamaRider_ has karma of 0.
tadzik karma LlamaRider
aloha LlamaRider has karma of 0.
tadzik LlamaRider++ # for the new road of life
LlamaRider_ lol 20:35
TimToady skids: any method that modifies any of the attributes
[Coke] masak: ? I did no such thing, I was just double checking stuff. ;)
20:35 LlamaRider_ left
masak oh, ok. 20:35
[Coke]--
;P
TimToady it might be better to declare that it's a value type, and then try to catch mutators and complain
20:36 LlamaRider joined
dalek ast: 3fc0720 | jnthn++ | S14-roles/anonymous.t:
Fudge for Rakudo (curiously, Niecza and Rakudo are consistent here - maybe the test is dubious.
20:36
skids Hrm. Less flexible than I thought it would be... the reasons are probably over my head. 20:37
TimToady esp since whether it's a value type changes how its identity is calculated
dalek p/qbootstrap: f500829 | kshannon++ | .gitignore:
Make git ignore all *.pbc
p/qbootstrap: e4fe3ad | kshannon++ | src/QRegex/NFA.nqp:
The enumcharlist can be negated.

Fix the NFA building to pay attention to that.
TimToady trying to deduce value-ness from the absense of mutators now seems like a mistake
dalek kudo/nom: 6bf68d0 | jnthn++ | t/spectest.data:
Run S14-roles/anonymous.t.
20:39
masak TimToady: +1 20:40
skids I dunno it just strikes me that changing an attribute should just be treated like writing a new value to the entire set of attributes. 20:41
[Coke] jnthn: there are a lot of places where I see "nom regression" and "niecza todo" on the exact same tests in the spec. 20:42
jnthn Curious :)
TimToady skids: at which point you either have a mutable type container, or you've violated the identity of the value type 20:43
skids I'm not immersed enough in the vocabulary to converse intelligently I guess. 20:46
TimToady well, there's far too much vocabulary swirling around this subject, but to the first approximation, if something is mutable, it means it takes its identity from its containerness, which can be thought of as a location somewhere 20:53
if something is immutable, it takes its identity from its own value, and has the same identity wherever it finds itself 20:54
copying a value doesn't make two different values
5 is the same everywhere, if you ignore representations 20:55
awwaiid wherever you go, there you are?
TimToady well, buckaroo banzai is kind of a constant in that sense, yes
20:56 kaleem left
TimToady but that's really more the mystery of a container acting as a value, whose identity is "buckaroo banzai" wherever he goes 20:56
two object hashes keyed on buckaroo banzai are keyed on the same person, not on two different representations of the same person 20:57
buckaroo banzai has only one .WHICH 20:58
masak good night, #perl6.
TimToady o/
kshannon Well with a NFA recursive proto hack we now pass a lot more of the test suite: gist.github.com/1584871 20:59
jnthn kshannon++ !!
TimToady yay
jnthn kshannon: How...hacky? ;)
skids That much I get, it's the "value type" --> immutable (?) I was missing.
sorear [Coke]: the first three were missed earlier
kshannon Needs to be redone with a proper api. I'm just not sure what that api should be. 21:00
But as a proof that the missing recursiveness was most of the parsing errrors it performs brilliantly. 21:01
dalek ast: 503fe00 | jnthn++ | S32-array/delete.t:
Fudge S32-array/delete.t for Rakudo (same tests Niecza has fudged).
21:02
ecza: 7bc2d96 | sorear++ | lib/CORE.setting:
infix:<ne> also needs to handle junctions internally, gets three tests back
21:03
kudo/nom: b281b21 | jnthn++ | src/core/Hash.pm:
Handle various other cases of Hash.delete.
kudo/nom: f4b327b | jnthn++ | t/spectest.data:
Run S32-hash/delete.t.
kudo/nom: c827edc | jnthn++ | src/core/Array.pm:
Implement Array.delete (based on ng code, but with various tweaks and updatings).
kudo/nom: 38165a5 | jnthn++ | t/spectest.data:
Run S32-array/delete.t.
kshannon If we can work out why the subclassing isn't working I think we'll be very close to a working QRegex NQP 21:04
sorear jnthn: what do you think of S14-roles/anonymous.t:39?
jnthn: it's getting confused by niecza's "3 but Str("xyz")" implementation
jnthn sorear: Should be workable 21:06
sorear: We can tell the difference between a sub and a type
TimToady kshannon: perhaps you need a way to examine the new computed lexer to see if it reflects the changes correctly
jnthn sorear: I'm not sure how it's conflicting because role_generator lives in the lexpad as &role_generator, no? 21:07
sorear jnthn: but what if the sub returns a type when called without arguments?
jnthn oh, wait
:)
sorear jnthn: niecza is compiling it as &infix:<does>($a, &role_generator(), :value("hi"))
jnthn sorear: Right. 21:08
sorear: But role_generator isn't a known type
sorear: So it's possible to disambiguate that quite easily, I'd imagine.
kshannon: Oh, I know why that isn't working 21:09
kshannon: rt.perl.org/rt3/Ticket/Display.html?id=107746
kshannon: It's that - there's a case just like it package_def
colomon sorear: when you get a chance, you should probably look at the failures in t/spec/S03-junctions/autothreading.t -- I based on when it stopped working, I'm guessing constant folding related. 21:10
sorear colomon: I just fixed them 21:11
colomon sorear++
colomon has been cleaning the nasty crevices of the kitchen. :(
dalek ast: 04cea6b | sorear++ | S (2 files):
Fudge an accidental pass and a regression-with-cause for niecza
21:13
[Coke] colomon: we have some of those. you should come over, I'll bier you. ;)
colomon [Coke]: no thanks, once a decade is about enough for my taste. 21:14
[Coke] sorear: "accidental pass" - does that make a passing TODO?
sorear [Coke]: no, it switched back to a fail with the constant folding changes
jnthn afk for a bit 21:15
kshannon: BTW, if you want to pass over your protoregex/NFA patch, I'd be happy to look at the API side of it. Or feel free to hack on it yourself if you're having fun with it :)
jnthn really gone for a while
21:17 Exodist joined, spine joined, spine left 21:18 spine joined
[Coke] sorear: ah. thanks. 21:22
21:24 fsergot left 21:26 alim left 21:29 PacoAir left 21:32 zjmarlow joined 21:33 xinming joined 21:34 MC91 left, MC91 joined 21:38 Trashlord left 21:39 xinming left
LlamaRider jnthn: I mentioned I was scared of not understanding Parcels before. I got a Parcel by accident in one of my subs and tried to do a Zen slice on it. Took me a while to figure out I can't do that, since I had no clue I was working with a Parcel there :) 21:41
rakudo: my Parcel $a = (1,2); say $a[];
p6eval rakudo 38165a: OUTPUT«1 2␤»
LlamaRider ... or I need to update?
I am getting "Not enough positional parameters passed; got 1 but expected 2" 21:42
yep. seems I need to update.
21:43 PacoAir joined 21:47 kaare_ left 21:53 bluescreen100 joined 21:58 alester left 21:59 arlinius left, arlinius joined
jnthn LlamaRider: That bug was fixed recently :) 22:00
LlamaRider is it currently easy to update rakudo? 22:01
22:01 skids left
jnthn LlamaRider: How did you get your Rakudo build? 22:01
If you're just building from git, then just "git pull", then re-do the build steps 22:02
LlamaRider exactly how i did it. let me try
boy that build takes a while :) 22:09
22:09 wolfman2000 left
jnthn yeah...working on improving that. :) 22:11
LlamaRider works! :) 22:12
jnthn yay! :) 22:13
LlamaRider shame that I had to run into the bug though... took a while to find :D 22:14
good job on fixing it :)
22:15 tokuhirom joined 22:19 tokuhirom left
[Coke] # 01/09/2012 - niecza at 96.13% (after jnthn's commit fest) 22:25
sorear jnthn: Do you think it's reasonble in the short term to make class Foo does ::My::Role carp? 22:27
jnthn sorear: That's all Rakudo does at the moment :)
22:28 saberman_3 joined, saberman_3 left
jnthn phenny: tell moritz oops, the setting compilation bustage was not anything to do with moving the temporal ops. It was to do with the sleep change that came in the previous commit. 22:30
phenny jnthn: I'll pass that on when moritz is around.
jnthn phenny: tell moritz well, the rtype bit anyway
phenny jnthn: I'll pass that on when moritz is around.
dalek kudo/staged-setting-fail: 664f46b | jnthn++ | src/core/control.pm:
Work around pir::... limitation.
22:35 mj41 left 22:38 Chillance left 22:40 pyrimidine left 22:43 nornagest left 22:44 icwiener left 22:52 donri left
tadzik is there a clean way to do &some_sub.=wrap()? 22:54
I get Cannot assign to a non-container. A bug maybe?
jnthn tadzik: .wrap already is in place.
tadzik oh, ok 22:55
that was my first thought too, maybe I'm doing something wrong
dalek kudo/staged-setting-fail: ab92aff | jnthn++ | src/Perl6/ (2 files):
Fix for the 'Sub doesn't have an SC' issue - CORE and CORE2 both compile now.
22:56
jnthn nom: sub foo() { say 2 }; &foo.wrap({ print 4; callsame; }); foo()
p6eval nom 38165a: OUTPUT«42␤»
tadzik nom: &foo.wrap({ print 4; callsame; }); sub foo() { say 2 }; foo() 22:57
p6eval nom 38165a: OUTPUT«42␤»
tadzik mkay
jnthn phenny: tell moritz fixed the other bug you ran into too. Note - please can we call what you're called CORE2 as CORE, and then call the more primitive one something like PRIMITIVES? :)
phenny jnthn: I'll pass that on when moritz is around.
jnthn (Otherwise implementing CORE:: will be hell :))
tadzik nom: &foo.wrap({ callsame + 1 }); sub foo() { 2 }; say foo() 22:59
p6eval nom 38165a: OUTPUT«===SORRY!===␤CHECK FAILED:␤Calling '_block18889' will never work with argument types (Mu) (line 1)␤ Expected: :()␤»
tadzik nom: &foo.wrap({ callsame() + 1 }); sub foo() { 2 }; say foo()
p6eval nom 38165a: OUTPUT«3␤»
23:05 ksi left
jnthn sleep & 23:05
23:06 snearch joined 23:07 MC91 left 23:13 zjmarlow left 23:15 Trashlord joined, skids joined 23:16 PacoAir left 23:18 cooper joined 23:26 Trashlord left
tadzik nom: &foo.wrap({ callsame() + 1 }); sub foo() { return 2 }; say foo() 23:28
p6eval nom 38165a: OUTPUT«3␤»
sorear I wonder if Str:D(Cool:D)should be allowed
LlamaRider good night ^^ 23:29
23:29 LlamaRider left 23:44 zjmarlow joined
tadzik ohh 23:44
exported subs don't get wrapped from inside the module
gist.github.com/1585730 bug or feature? 23:46
23:47 snearch left
tadzik S11 uses the word "binding" when it comes to exportation, this looks more like copying 23:51