»ö« 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.
sorear good * #perl6 01:20
TimToady: consider grammar A { multi method foo() { ... }; multi regex foo() { <...> } } 01:21
TimToady: A.foo is clearly a dispatcher - is it a LTM dispatcher or a nominal type dispatcher?
TimToady I suspect that normal methods won't participate in LTM unless they know the secret handshake 01:25
sorear phenny: tell masak STD.pm6 uses ~= to construct error messages in a few places. I haven't figured out how to make a sane (fast!) implementation of my $x; $x ~= "x"; ok $x eq "x"; 01:28
phenny sorear: I'll pass that on when masak is around.
sorear cpk++ # "Mo" is the best new unit I've heard this year. 01:29
no more "butbut 9 bit bytes" for me!
phenny: tell cpk I have a vague suspicion that on Windows Niecza isn't recognizing "\x0A" ~~ /\v/, and so rcrpg.pl is being interpreted as on one line, with the resulting right brace issues 01:30
phenny sorear: I'll pass that on when cpk is around.
sorear phenny: tell cpk [300 Mo Win64, 30 Mo Win32] Are both of those measurements for the second run? Sounds like more confusion from the "setting autocompilation on first run" wart. 01:31
phenny sorear: I'll pass that on when cpk is around.
TimToady decommuting & 01:32
sorear hey, I'm in a sane position to add -n and -p (correctly) now 01:34
I'm still hashing out the best factoring for implementing MY:: et al
jnthn: it's nqpnet:, and it's broken
TimToady: is $foo failover to package scope dependant on strict? 01:37
arnsholt sorear: Octets instead of bytes seem to be the normal state of affairs in Romance languages, if you care =) 01:54
sorear TimToady: Is that definition of A erroneous? 02:00
TimToady maybe, and maybe... 02:05
PerlJam doesn't quite grok "multi regex"
PerlJam seems like that's the same thing as category matching but spelt different 02:06
sorear niecza: grammar A { proto regex TOP {*}; multi regex TOP:a { a }; multi regex TOP:b { b } }; say ?(A.parse("b"))
p6eval niecza v3-65-g55abf9d: OUTPUT«Bool::True␤»
sorear Right now, the proto is mandatory
I'd like to get rid of that while I unify multi-regex with multi-method 02:07
TimToady: What would you think of increasing the precedence of adverbs? 02:11
TimToady: currently if test1() && %hash<key>:exists { ... } has a parse that I find suprising
TimToady then use 'and' instead 02:12
has to be looser than =
sorear why?
TimToady $deleted = %foo<bar>:delete
sorear HAH!
in that expression, :delete binds to =, not <> 02:13
adverb precedence suprises even TimToady :>
er, actually, no 02:14
adverbs bind *just* tighter than =
if they were any looser, $deleted = %foo<bar>:delete would misparse
tightening adverbs, possibly as high as y=, wouldn't change that parse 02:15
niecza: my %hash = foo => 2; my $a = ""; say $a ~ %hash<foo>:delete;
p6eval niecza v3-65-g55abf9d: OUTPUT«Unhandled exception: Excess arguments to CORE infix:<~>, unused named delete␤ at /home/p6eval/niecza/lib/CORE.setting line 0 (CORE infix:<~> @ 0)␤ at /tmp/YsvPiFrVIG line 1 (MAIN mainline @ 5)␤ at /home/p6eval/niecza/lib/CORE.setting line 1261 (CORE C524_ANON @ 2)␤
..at /home/p6e…
TimToady adverbs used to be tighter, and that causes problems too 02:16
sorear we used to have many infix operators that needed adverbs 02:17
1..10 :by(5) parses correctly now, but wouldn't with y= adverbs
ditto 2 + 2 == 4 :ok("not in 1984") 02:18
TimToady tests was the other reason to make them pretty loose
(but tighter than ,)
sorear are there any plans to resurrect :ok? 02:19
PerlJam It's still in S03
TimToady yeah, but it keeps bouncing :)
PerlJam that's not the kind of trampoline we need :) 02:21
I suspect that since the precedence rules are so inscrutable, people will use parentheses more often than not just to get the semantics right. 02:23
(for adverbs I mean) 02:24
at least for operators
maybe what's one thing should really be two things, one with a new syntactic marker :) 02:25
sorear adverbs have been looser than most infix operators for as long as the specs have been in mu
sorear would like a more complete specs repo, one with history going back to the first drafts of each document 02:26
Were the apocalypses "alive" and then "frozen", or did they have their present form for as long as they have been public?
do they have useful history?
PerlJam sorear: that apocalyses were "alive" at least until the synopses came into being. 02:27
sorear PerlJam: it's already easy enough to say (%foo<bar>:delete) with the present syntax, or ($x +< 1):rotate with tightened adverbs
PerlJam: I am merely arguing for a different Huffman code
TimToady: What should the name of the -p and -n settings be? 02:30
TimToady Corp and Corn, obviously :) 02:46
colomon how do you turn on Rakudo's grammar debugging? 03:07
(he said, optimistically thinking that he vaguely remembers such a thing exists.) 03:09
PerlJam colomon: <?DEBUG> 03:32
colomon: from that point onward the rules that match will output verbose information about the matches
colomon from that point onward -- forward in time, further down the stack, hmm? 03:33
PerlJam further down the stack
colomon PerlJam++ 03:34
colomon So, the debugger is telling me where it goes wrong, but as far as I can tell there's no reason for panic there.... 03:54
sorear TimToady: CORE, Corp, and Corn? 04:17
mberends that just needs a Cork as well 04:24
jdhore and Cord 04:28
sorear hrm 05:03
role composition needs to be able to turn normal methods into multi
pugs: say (1 +> 1):rotate 05:05
p6eval pugs: OUTPUT«pugs: Named argument found where no matched parameter expected: (rotate,Val (VBool True))␤»
sorear TimToady: what should that give? :)
mberends \o/ sorear++ niecza passes all 786 tests on mono 2.6.7 (Debian 6.0 i386) 06:09
sorear \o/ 06:38
mberends: psst. mono --aot run/*.dll run/Niecza.exe && ln -s /path/to/roast t/spec && t/run_spectests 06:39
mberends ok
sorear is back with better ideas of how to factor MMD 06:41
mberends "The assembly mscorlib.dll was not found or could not be loaded. It should have been installed in the `/usr/lib/mono/1.0/mscorlib.dll' directory." Out-the-box Debian.
sorear wait, it passed 'make test', but failed like that? 06:42
mberends yes :(
sorear do you have mono-complete (specifically, libmono-corlib1.0-cil) installed? 06:43
mberends it did choke on lack of gmcs during the first build, then finished after I apt-got mono-gmcs. maybe a clean rebuild?
mberends looks 06:44
sorear sounds like you probably don't. 06:45
niecza isn't Debian-mono-aware; mono-complete is recommended
mberends mono-complete is not installed. OMG, installing it will bring the whole Internet into my netbook 06:46
sorear how many not-obviously-Mono packages? 06:47
the specific missing file you just noticed should be in libmono-corlib1.0-cil
mberends Firebird2.5, libmono-oracle1, libmono-oracle2, I do not really want
mberends sudo apt-get -s install mono-complete lists 33 lines off package names 06:52
laterz, commute &
mberends sorear: sudo apt-get install libmono-corlib1.0-cil installs only two packages, then the mono --aot run/*.dll run/Niecza.exe succeeds to niecza/run/RxOp.dll and fails at niecza/run/SAFE.DLL 08:40
WARNING **: The class Niecza.DynMetaObject could not be loaded, used in Kernel, Version=0.0.0.0 etc etc 08:41
mberends warnings are apparently fatal when in caps 08:42
mberends sorear: for portability testing I highly recommend occasionally trying your code on one of these: www.debian.org/CD/live/ (I sometimes try a Live FreeBSD as well) 09:01
jnthn morning o/ 09:24
Tene hallo jnthn 09:27
mberends morning jnthn, had enough beauty sleep? 09:38
moritz_ and did it halp? :-) 09:38
jnthn No, I'm really ugly today. :P
mberends just write beautiful code, and all will be forgiven 09:40
jnthn Right now I'm working on docs at $dayjob to avoid the ugly codebase. :P On the upside, at least somebody writes docs! 09:43
jnthn Oh great...writing docs = discovering security vulnerability in the thing I'm documenting. :/ 09:45
mberends :) 09:46
[Coke] jnthn: so, you did the hard work. Good think you have coworkers on the channel to do the hard bits. 13:03
takadonet morning all
[Coke] er, s/hard/boring/:2nd
awwaiid Am I restricted from doing 'class Array is also { ... }'? 13:06
moritz_ awwaiid: 'is also' is gone. Grep for 'augment' in the specs 13:07
awwaiid gracias 13:09
Though this I have now gained further insight into Whatever-star :) 13:18
wanted to see if Array got something special when you do $stuff.pick(*). But no! Just gets Whatever.
which is, of course, wonderful
awwaiid Exploring through experiment is fun. And now when I go to look at how it's implemented in Rakduo it is even further solidified. 13:21
tadzik hello Zebras 13:50
takadonet tadzik: mroning 13:51
morning*
tadzik will there be Rakudo GSoC tasks? 13:52
Util rakudo: my $pair = "k1" => "v1"; my $k = $pair.key; say $k; say $k.trans( ["k"] => ["z"] ); 13:53
p6eval rakudo a38d45: OUTPUT«k1␤z1␤»
Util rakudo: my $pair = k1 => "v1"; my $k = $pair.key; say $k; say $k.trans( ["k"] => ["z"] );
p6eval rakudo a38d45: OUTPUT«k1␤too few positional arguments: 2 passed, 3 (or more) expected␤ in main program body at line 22:/tmp/xlJ8M2sS1D␤»
Util rakudo: my $pair = :k1("v1"); my $k = $pair.key; say $k; say $k.trans( ["k"] => ["z"] );
p6eval rakudo a38d45: OUTPUT«k1␤too few positional arguments: 2 passed, 3 (or more) expected␤ in main program body at line 22:/tmp/IcKwnMr4te␤»
Util Known bug? Something magical about a auto-quoted key, like a "can be a named argument" flag?
flussence_ std: my $pair = k1 => "v1"; my $k = $pair.key; say $k; say $k.trans( ["k"] => ["z"] ); 13:54
p6eval std 4608239: OUTPUT«ok 00:01 123m␤»
flussence_ those all look like they should work, to me...
Util The first one works as I would expect. #2 and #3 should work the same as #1; I can't see why they die. 13:55
jnthn tadzik: I plan to make some Rakudo GSoC suggestions that I'd be willing to mentor. 14:06
tadzik jnthn: is Rakudo represented by Perl foundation? I think today's the deadline for GSoC organizations application 14:07
jnthn tadzik: I think so, yes. 14:12
Tene jnthn: looks like I've got no commitments over the weekend; any chance you'll be available for consulting about 6model? 14:21
jnthn Tene: Yes, I'm planning to do some 6model-y hacking this weekend. :) 14:23
Tene Great.
Tene I really really should get to sleep soon... 14:23
jnthn What time is it there?! 14:25
[Coke] dukeleto submitted apps for both PAFO & TPF
4:30
</obscure 90s pop music reference> 14:26
jnthn Too obscure for me :P
I know only know "What time are you going to the dentist?" "2:30" :P
[Coke] www.youtube.com/watch?v=e86omL8uzks
[Coke] hasn't heard the full song in a while. google++ 14:27
Tene jnthn: 6:30 14:28
Util jnthn: Is your long-term intention for the Meta Object Protocol to be in: Parrot? NQP? Perl6? All three? 14:29
jnthn Util: All three (more) 14:41
Languages should supply their meta-objects that implement OO as they view it.
jnthn Parrot could contain the core 14:42
That's really up to Parrot folks :)
The core is pretty minimal. Doesn't even know what inheritance is, for exmaple.
mberends of course not Perl6, but you bothe probably mean Rakudo instead 14:43
the closer the parts align, the less glue we need to put on because of impedance mismatches 14:45
jnthn oh heh, I read "Rakudo" jsut because that's what I expected the question to say :)
Util mberends: yes, I meant "Rakudo" instead of Perl 6. Thanks 14:49
jnthn: which of the three will actually use MOP first? 14:51
twinshadow How can I makes calls to Parrot from Rakudo or another Perl 6? Would it just be NativeCall?
jnthn You can only make calls to Parrot from a Perl 6 implementation running on Parrot. :) But Rakudo is one that is. You can use pir::foo() to call Parrot opcode foo. Or Q:PIR { ... } lets you embed PIR. But you're making your code backend specific by using those. 14:53
NativeCall is for calling C libraries.
Tene twinshadow: at one time, Rakudo supported "use Foo :from<parrot>;", but that's been broken for quite a while afaik. 14:54
Same with eval "...", :lang<parrot>;
donri pir::, are those only in nqp?
rakudo: pir::say("hi"); 14:55
p6eval rakudo a38d45: OUTPUT«hi␤»
jnthn donri: They're available in Rakudo too *at the moment*.
jnthn donri: In the not too distant future they'll need a pragma to make them work. 14:55
donri how does perl6 pragmas look?
jnthn So people declare up front they're writing a superset of Perl 6.
donri use pir;?
twinshadow Fun. I found a Markdown PIR, and was considering using it in a P6 Text-Markdown module
jnthn use ParrotyStuff;
or something
donri hey does eval() take some pair for hllcompiler 'target'? 14:57
Tene donri: :lang
oh, wait, target? No. 14:58
donri Tene: say i want to eval ruby to a past in perl6
Tene It certainly could.
when I've wanted to do that myself, I've just grabbed the compiler object and called the methods directly
jnthn That's probably the better way.
donri or maybe there could be a compile() function :) 14:59
mberends does the TGIF dance and dashes to the de-commute &
donri python does that: you can compile() to a code object that can then be eval()d or exec'd, useful if you're gonna eval the same thing more than once 15:01
donri lucumr.pocoo.org/2011/2/1/exec-in-python/ 15:01
jnthn You can mimic that with Perl 6 eval just by evaling a closure :) 15:04
Though I agree that feels less neat.
donri which makes me wonder, is parrot (rakudo) compile-on-run or does/will it do anything like python's .pyc? 15:05
sure you can do that manually, compiling to .pbc
but if you just perl6 foo.pl twice, will it compile twice?
moritz_ I guess in the long run we'll do something like storing the .pbcs
moritz_ and I think there will be something like Perl6::Compiler.compile($string), which returns a Code object 15:06
which you can then invoke as $code.(@argv)
donri might be worth noting that python seems to have learned that storing them next to the source is suboptimal: www.python.org/dev/peps/pep-3147/
perhaps pbc's are supposed to be more backwards-compatible though, but then again, it's rather annoying to have pyc's all over your source tree 15:08
flussence_ I think a good start would be $XDG_CACHE_DIR/parrot/${full_path_to_file}_${file_hash}.{pbc,pir} 15:20
jnthn You'll have to deal with rolling invalidations too. 15:21
flussence_ rolling invalidations?
jnthn gha, that was wrong wrod
*word
I mean
if you have a Foo.pm that is pre-compiled, and a Bar.pm that does use Foo; and then Foo.pm changes, then the cache of it *and* Bar.pm is now invalid. 15:22
It's all do-able, it just needs a bit more than file level :)
flussence_ oh, never thought of that. files that modify their caller's code...
jnthn It doesn't even need to be that complicated a case 15:23
If we compile calls to methods with v-table index optimizations, for example, and then the object changes, the indexes in the call are now invalid. 15:24
Or if the compiler decided to inline something from another module.
[Coke] jnthn: my vote is to just make compilation faster. ;)
jnthn :) 15:25
My vote is for both :P
moritz_ our ideas from the Copenhagen hackathon were a simple flat cache directory, and a meta data file that stores the dependency tree
jnthn *nod*
OK, enough $dayjob for one day. 15:26
jnthn -> home :)
flussence_ completely crazy idea: have a perl6 daemon that keeps the setting persistent in memory and forks to run .p6 files 15:30
flussence_ (do we have a working fork() yet? I can imagine that being done in 2 dozen lines of code...) 15:31
[Coke] jnthn: what, it's only... right, time zones. HOW DO THEY WORK!? 15:32
Tene flussence_: I wrote an implementation of async { ... }; for Rakudo over two years ago that worked fine, except for how it crashed due to a parrot bug. It's still unfixed, and nobody's planning to work on threading in Parrot any time soon. 15:41
flussence_ aww :( 15:42
donri flussence_: the point in python though is incompatible bytecode between versions; if that could be an issue in parrot the path should be versioned too 15:50
also i don't see the point in filepath AND hash, just hash should be nuff? 15:51
or path + syncronised mtime
Tene flussence_: there are some patches submitted on trac that I wasn't able to verify correctness of; You could always take up the work yourself and try looking into the current state of this bug: trac.parrot.org/parrot/ticket/757 15:52
I would be shocked if the patches applied cleanly, but they might at least be relevant information.
flussence_ donri: if it has the filepath then it's easier to clean stale entries out, because there's a pointer back to the source file
donri true, but then it's also fixed to a filepath and dead if you move the source, not that it might be a big issue 15:53
flussence_ well, it's only a cache after all 15:54
Tene: that stuff looks *way* outside my area of competence :) 15:55
Tene flussence_: me too :)
jnthn home :) 16:12
Tene jnthn: if a simplified repr for cardinal happened to be waiting for me when I wake up later today, I wouldn't mind. ;) 16:14
colomon \o/
jnthn Tene: ;) 16:20
mberends flussence_: github.com/jnthn/zavolaj/blob/mast...ix-fork.p6 16:35
Tene phenny: remind me to post gsoc proposals 17:04
phenny: tell tene to post gsoc proposals 17:05
phenny You can tell yourself that.
Tene phenny: :(
jnthn phenny: tell tene to post gsoc proposals 17:06
phenny jnthn: I'll pass that on when tene is around.
jnthn :)
Tene: Don't thank me. :P
sorear good * #perl6 17:22
TimToady o/
jnthn o/ 17:23
sorear mberends: rm run/SAFE.DLL; it's no longer used for anything
mberends: must be stale from an earlier build.
mberends :D thanks
sorear mberends: also the --aot step is optional.
sorear moritz_: (caching compiled modules) Are you interested in how niecza does it? 17:27
moritz_ sorear: sure
mberends sorear++: \o/ niecza t/run_spectests passed all 1444 tests 18:04
jnthn Anyone know where Rakudo GSoC project suggestions should get posted? 18:06
moritz_ jnthn: epo.means.no/gsoc2011/ideas I think
tadzik epo means no. Not a fortunate url I'd say 18:10
mberends shi: speak up or get banned! 18:11
tadzik I assume he enters and leaves again? Looks like my weechat does a good job filtering that 18:12
jnthn gist.github.com/866304 # one of my ideas for GSoC project I'd be happy to mentor.
tadzik nice one 18:13
moritz_ indeed 18:14
tadzik how do I run spectests in niecza?
diakopter flaky connection;doesn't seem intentional
moritz_ ./t/run_spectests
diakopter two competing clients maybe :) 18:14
tadzik bah, that doesn't work at all 18:15
KyleHa The Test.pm dies_ok still has the Null PMC access check commented out. Why does that not work?
moritz_ KyleHa: probably would now
tadzik wklej.org/id/491013/ 18:15
KyleHa moritz_: I tried putting it in, and I got all kinds of fireworks.
moritz_ tadzik: stale t/spec/ ? 18:15
tadzik: it doesn't update that for your automatically 18:16
tadzik moritz_: I have no t/spec
moritz_ tadzik: that might explain it :-)
tadzik hah :)
tadzik yeah, for some reason that helped :) 18:17
jnthn Added my GSoC idea to epo.means.no/gsoc2011/ideas 18:18
lichtkind rakudo: my @y; push @y[0], [<a b>]; 18:22
p6eval rakudo a38d45: OUTPUT«Method '!fill' not found for invocant of class ''␤ in 'List::push' at line 2905:CORE.setting␤ in main program body at line 22:/tmp/xE7sRMLT7A␤»
lichtkind rakudo: my @y = 1,2; push @y[0], [<a b>]; 18:23
p6eval rakudo a38d45: OUTPUT«Method '!fill' not found for invocant of class 'Int'␤ in 'List::push' at line 2905:CORE.setting␤ in main program body at line 22:/tmp/VyOiYdZMOy␤»
lichtkind rakudo: my @y = [],[]; push @y[0], [<a b>]; 18:23
p6eval rakudo a38d45: ( no output )
lichtkind rakudo: my @y = [],[]; push @y[0], [<a b>]; @y.perl.say 18:24
p6eval rakudo a38d45: OUTPUT«[[["a", "b"]], []]␤»
tadzik niecza passes the tests for me too
KyleHa rakudo: try { say 'OH HAI' }; if "$!" ~~ /OMG/ { say 'WTF' }; say 'JK!'; 18:35
p6eval rakudo a38d45: OUTPUT«OH HAI␤␤ in main program body at line 1␤»
KyleHa Thou shalt not smartmatch an undefined stringied $! 18:36
rokoteko isnt $! still unspecced anyhow?
takadonet thank you perl6 for .trim :) 18:37
TimToady rakudo: { say 'OH HAI'; CATCH { when /OMG/ { say 'WTF' } } }; say 'JK!' 18:41
p6eval rakudo a38d45: OUTPUT«OH HAI␤Null PMC access in setprop()␤ in main program body at line 22:/tmp/rQW2DRjleS␤»
TimToady o_O
jnthn OMGWTF...
KyleHa Is it true there's no more $! ?
TimToady no 18:42
KyleHa Oh good. Phew.
TimToady but the standard way of dealin with $! doesn't explicitly mention it
see my attempt
colomon adding a CATCH phaser to a block is adding a de facto try statement to it, or something like that? 18:44
jnthn rakudo: { say 'OH HAI'; CATCH { when /OMG/ { say 'WTF' } } };
p6eval rakudo a38d45: OUTPUT«OH HAI␤Null PMC access in setprop()␤ in main program body at line 22:/tmp/JwfCIhJEh0␤»
TimToady colomon: since about forever :)
jnthn rakudo: { say 'OH HAI'; CATCH { say "in catch"; when 'OMG' { say 'WTF' } } };
p6eval rakudo a38d45: OUTPUT«OH HAI␤Null PMC access in setprop()␤ in main program body at line 22:/tmp/j7MEvfgknL␤»
jnthn rakudo: { say 'OH HAI'; CATCH { say "in catch"; } };
p6eval rakudo a38d45: OUTPUT«OH HAI␤Null PMC access in setprop()␤ in main program body at line 22:/tmp/2fBYZ3Ttey␤»
jnthn rakudo: { CATCH { say "in catch"; } }; 18:45
p6eval rakudo a38d45: OUTPUT«Null PMC access in setprop()␤ in main program body at line 22:/tmp/m1bVwGE7CR␤»
jnthn rakudo: CATCH { say "in catch"; }
colomon TimToady: I have carefully ignored exception handling in p6.
p6eval rakudo a38d45: ( no output )
jnthn rakudo: my $x = -> { CATCH { say "in catch"; } }; $x()
p6eval rakudo a38d45: ( no output )
takadonet what is the different between BEGIN {} and INIT {} ?
jnthn :/
colomon TimToady: and since it looks like it doesn't actually work yet... ;)
TimToady BEGIN runs immediately upon parsing 18:46
INIT runs at INIT time when the official run-time is starting up
so if you have separate compilation, BEGIN happens at compile, INIT at run
CHECK happens at the end of compile time 18:47
takadonet so if i wanted to initialize a package variable, it be better to set in INIT?
TimToady END at the end of run time
rokoteko I was mainly talking about the spec. isnt it true that stuff like $!.pending does exist? 18:48
TimToady the initializer on an 'our' is defined to run at INIT time
rokoteko but how does the pending queue end up in $! ? that is still a mystery to me.
TimToady there have been discussions of renaming $! to @!
rokoteko and what on earth is $! anyhow, is it an array, is it a variable?
TimToady: ahh.
I havent been following very closely. 18:49
TimToady several months ago now
rokoteko For several months I havent been following either. :)
Anyhow, Im happy to heard its proceeding. 18:50
TimToady and CATCH might actually be 'for @!' rather than 'given $!'
takadonet TimToady: thanks. It is exactly what I did
TimToady rakudo: say $GLOBAL::foo; our $foo = 1; 18:51
p6eval rakudo a38d45: OUTPUT«Null PMC access in type()␤ in main program body at line 22:/tmp/54zlEFjMdA␤»
TimToady hmm
jnthn Rakudo doesn't, afaik, know GLOBAL/UNIT and so on 18:52
TimToady rakudo: say our $foo; our $foo = 1;
p6eval rakudo a38d45: OUTPUT«===SORRY!===␤Redeclaration of symbol $foo at line 22, near " = 1;"␤»
jnthn std: say our $foo; our $foo = 1;
p6eval std 4608239: OUTPUT«ok 00:01 121m␤»
jnthn std: say my $foo; my $foo = 1;
p6eval std 4608239: OUTPUT«Potential difficulties:␤ Useless redeclaration of variable $foo (see line 1) at /tmp/3dOQG8spaJ line 1:␤------> say my $foo; my $foo⏏ = 1;␤ok 00:01 121m␤»
jnthn Why the inconsistency? 18:53
TimToady globals are meant to be shared
so we expect 'our' in multiple locations for the same package var
jnthn hm
So we decide just on scope declarator? 18:54
TimToady rakudo: { say our $foo; }; { our $foo = 1; }
p6eval rakudo a38d45: OUTPUT«Any()␤»
TimToady looks like rakudo is not yet initializing ours at INIT time
jnthn What should that have printed?
1?
TimToady yes
jnthn News to me. 18:55
takadonet rakudo: {our $x INIT { $x=42 } say $x;}
p6eval rakudo a38d45: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 22␤»
TimToady S03:4802
takadonet rakudo:our $x INIT { $x=42 } say $x;
p6eval rakudo a38d45: OUTPUT«===SORRY!===␤Confused at line 22, near "our $x INI"␤»
jnthn Do we parse it any differently to a normal assignment?
moritz_ takadonet: that's two terms in a row
takadonet ya just saw that 18:56
rokoteko TimToady: do you think perl 6 is experiencing the second system syndrome?
takadonet rakudo: our $x; INIT { $x=42 }; say $x;
p6eval rakudo a38d45: OUTPUT«Null PMC access in getprop()␤ in '&infix:<=>' at line 1␤ in main program body at line 22:/tmp/KMJbUzIYKW␤»
TimToady rokoteko: our slogan is "Second System Syndrome Done Right!"
rokoteko SSSDR. That's not very far from CCCP.
TimToady yes, but at least it's a "democratic republic" 18:57
rokoteko probably some AI system could figure out the link pretty quickly. :)
takadonet rakudo:our $x; INIT { our $x=42}; say $x;
p6eval rakudo a38d45: OUTPUT«42␤»
TimToady should work in the other order
TimToady rakudo: say our $x; INIT { our $x = 42 } 18:57
p6eval rakudo a38d45: OUTPUT«42␤» 18:58
jnthn Is that correct?
TimToady how could it not be?
jnthn So every time we see an our $foo = ..., we have to actually do the assignment at INIT time?
TimToady I mean, the INIT shouldn't be necessary
jnthn What if it's
TimToady all assignment to declarators is special
think about 'has'
assignment to 'my' is the least special 18:59
jnthn sub foo($x) { our $y = $x; say $y; } # what happens here?
I assume Any() ?
TimToady I would assume so
jnthn That feels kinda weird. 19:00
TimToady yes, but we're trying to avoid Unicode operators
jnthn It's like making them init-time constants or something.
TimToady it's consistent with other declarations; see the passage in S03 19:01
masak weekend! \o/ 19:01
phenny masak: 01:28Z <sorear> tell masak STD.pm6 uses ~= to construct error messages in a few places. I haven't figured out how to make a sane (fast!) implementation of my $x; $x ~= "x"; ok $x eq "x";
masak sorear: ah.
colomon masak! \o/
mberends \o masak
jnthn TimToady: In a handwavy "as early as it makes sense given the scope" sorta sense I guess it does. 19:02
Doesn't mean I'm going to like it. :)
TimToady s/scope/lifetime/ 19:04
jnthn Yes, lifetime is a better word.
jnthn Maybe it'll grow on me. 19:04
TimToady masak, sorear: the specs for the semantics of ~= and friends are at S03:3987 19:05
TimToady is that insane or non-fast? 19:06
tadzik masak: o/ 19:07
jnthn Righty, noms, then nqp/ctmo hacking. :) 19:08
diakopter TimToady: yes?
jnthn wonders if he can finish the branch this weekend :)
rokoteko "non-fast" mentioned at the develop phase?
diakopter where "fast" means "even fast enough to have a tolerable development/test cycle" 19:09
rokoteko where "mentioned at the develope phase" means "who gives a fucking shit?"
diakopter O 19:10
rokoteko Just make it work. when there are practical applications suffering from performance, then optimize it. :)
TimToady one of the tenets of SSSDR is to do everything all at once, even though you can't... 19:11
rokoteko: and we are allowed to think about optimizability in general terms
diakopter :) all you want; my point was "development *is* a practical application"
(and if the development takes forever because the development/test cycle takes forever...) 19:12
rokoteko Ahh. Sorry, Im not a perl6 developer. Id rather see it fully working first and people use actually use it and *then* optimize for performance where you see the need for for it. but who am I to comment? 19:13
TimToady that's kinda either-or thinking, when the reality is we make a gradual transition from make-it-work to make-it-work-fast 19:14
moritz_ rokoteko: that was our approach at first too
rokoteko moritz_: what happened?
TimToady it was very slow
moritz_ rokoteko: and then we noticed that once we had a usable compiler (in terms of features), what people wanted next was speed
rokoteko Ahh.. Ive been critizing about that also.
moritz_ rokoteko: long before it was "done"
rokoteko "man, this is so slow, can this ever be done using Parrot" - I remember myself asking here. 19:15
TimToady the fact is that your optimize later approach works well with specific applications, but for interpreters and compilers you don't really know even when you're "done" where the user's hotspots are going to be
rokoteko: so now you're complaining that we're worrying about "faster"? :P 19:16
rokoteko ok. so $! (THE goddamn error variable) is not implemented yet. and then you talk about lazy evaluation but the feed operators arent yet working?
moritz_ rakudo: try { die "foo" }; say $!
p6eval rakudo a38d45: OUTPUT«foo␤»
rokoteko TimToady: yes, I understand the contradiction of my comments, but it's just my comments. :)
TimToady looks implemented to me
moritz_ who said it was NYI? 19:17
TimToady and feeds are only one form of laziness
rokoteko moritz_: arent they supposed to be stacked when using fail() ?
diakopter perl6: try { die "foo" }; say $!
jnthn rakudo: <foo bar baz> ==> map *.uc ==> say
p6eval pugs, rakudo a38d45, niecza v3-65-g55abf9d: OUTPUT«foo␤»
rakudo a38d45: OUTPUT«FOOBARBAZ␤»
moritz_ rokoteko: yes, but that's not the same as "not yet implemented"
rokoteko moritz_: oh. ok.
TimToady "working consensus and rough code" :) 19:18
rokoteko moritz_: so the stacking when using fail() is implemented?
moritz_ rokoteko: no
rokoteko ...
moritz_ rokoteko: it's not. But that doesn't meant that $! per se is not yet implemented
rokoteko Ok. who am I here to disagree.
Im just thanking you all for all the good work! :)
moritz_ there's a difference between "A doesn't exist" and "A isn't implemented in all details"
TimToady it's not the disagreement that's disagreeable, but the all-or-nothing bits 19:19
moritz_ TimToady++
TimToady we've been climbing the slippery slope for ten years now, so we're immune to half-empty/half-full arguments
rokoteko This has just been a real mental puzzle for me. To keep on appreciating perl5 and its modernization, to wait for perl6 and it's greatness, or to just check if Haskell really would suit me the best. 19:20
TimToady why do those have to be exclusive?!?! 19:21
moritz_ there's no need to wait, you can always speed up things yourself (hint, hint)
flussence_ that reminds me, I gotta go finish T-T-W today
TimToady all your arguments seem to be of the either/or variety
Perl has always been more about both/and. 19:22
dalek ast: d38ece7 | moritz++ | fudge:
[fudge] give a better error message for missing test files
19:25
diakopter in my experience, deciding '[which language would] suit me the best' is often a euphemism for deciding 'which language would suit my employer's (and thus my) project the best, where I must take into account maintainability once I'm gone, and other concerns where multi-language knowledge/expertise *seem* to add costs'
takadonet flussence_++
diakopter (making it an either-or question) 19:26
so the frank answer to a complaint such as "This has just been a real mental puzzle for me." really ought to be "do *not* ever get your hopes up about Perl 6 unless you're willing to invest personally in it yourself, because there are precious few resources devoted/committed/invested in it (both historically and currently)." 19:29
sorear rokoteko: worrying about "fast" is specifically my prerogative. Rakudo can get away with being slow far more than "An implementation dedicated to exploring possibilities for efficient implementation"
diakopter: agree. 19:30
masak diakopter: I told a person at $dayjob basically that AFK today.
in some sense, you not only have to be an early adopter at this point; you have to be an early adopter with patience. :) 19:31
(patience for frequent spec changes, for example. or for inventing your own short-term wheels.) 19:32
rokoteko diakopter: were you referring to me by this 'which language would suit me the best' coment?
sorear rakudo: my $x; $x++ until $x == 10000; say "alive" 19:32
p6eval rakudo a38d45: OUTPUT«Use of uninitialized value in numeric context in <anon> at line 22:/tmp/sM2E7pbIIm␤alive␤»
diakopter not necessarily; I was referring to the many many other times I've heard/seen others make that query
sorear rakudo: my $x = 0; $x++ until $x == 100000; say "alive" 19:33
p6eval rakudo a38d45: OUTPUT«(timeout)»
sorear rakudo: my $x = 0; $x++ until $x == 50000; say "alive"
p6eval rakudo a38d45: OUTPUT«(timeout)»
sorear rakudo: my $x = 0; $x++ until $x == 20000; say "alive"
p6eval rakudo a38d45: OUTPUT«alive␤»
takadonet the timeout is really short btw
jnthn No, Rakudo is really slow :P
rokoteko diakopter: Ok. :) If I dont find another language (besides perl5) that I love to program with I will probably stop programming and switch to some other IT related job. :) 19:34
takadonet ssshh!
masak takadonet: what jnthn said :)
sorear niecza: my $x = 0; $x++ until $x == 1_000_000; say "alive"
p6eval niecza v3-65-g55abf9d: OUTPUT«alive␤»
sorear niecza: my $x = 0; $x++ until $x == 50_000_000; say "alive"
p6eval niecza v3-65-g55abf9d: OUTPUT«(timeout)»
rokoteko diakopter: actually my (current) *dream* is to have some kind of lobster farm! :)
flussence_ nice try :)
sorear niecza: my $x = 0; $x++ until $x == 10_000_000; say "alive"
p6eval niecza v3-65-g55abf9d: OUTPUT«(timeout)» 19:35
sorear niecza: my $x = 0; $x++ until $x == 5_000_000; say "alive"
rokoteko diakopter: and there was even a dude suggesting me that I could get some EU financing by farming sturgeons.
p6eval niecza v3-65-g55abf9d: OUTPUT«alive␤»
flussence_ it can't do infinite loops in 5 seconds, but it's getting there... 19:36
rokoteko diakopter: but goddamn. sturgeons live like 100 years old, can weigh more than 2000 kilos, and can be taller than 5 meters. also they need a LARGE pool, atleast 30m deep.
masak rokoteko: I love programming in Perl 6. but Perl 6 only exists in imperfect forms so far. many of us are willing to help to make it a reality. of course, not everyone has that time or interest... but be aware that any kind of assistance or encouragement is appreciated.
rokoteko diakopter: so you kinda understand me if that sounds ridiculous. :)
masak: to be honest, Im so goddamn fucking tired after each day at work (maintaining a perl5 dinosaur) that I absolutely have no energy to help you with perl6 :( 19:37
Im desperately waiting for my next freedays which will last longer than 2 days (aka. a weekend).
diakopter hands out earplugs to the daintier of ears 19:38
masak rokoteko: having recently gotten an 8-5 dayjob, I completely understand.
flussence_ hey, I'm doing perl6 to *forget* about my dayjob
masak I'm doing Perl 6 because I think it's the most exciting thing the programming community has to offer. 19:39
flussence_ I've been there years and only got to start writing tests this month :(
sorear rokoteko: as you can see, niecza is currently 250 times faster than Rakudo, and I'd like it to stay that way
masak sorear++
flussence_ (and I fixed like a dozen things as a result so far...)
rokoteko sorear: niecza is the mono implementation of perl6? 19:40
(not that I really understand what mono is)
sorear: how much more features has it got implemented?
sorear rokoteko: less, actually. 19:41
niecza: my $x = 0; $x++ until $x = 5_000_000_000_000; say "alive" # this never gets old.
rokoteko sorear: but it looks like it could work very well? I was correct with the mono -thing?=
p6eval niecza v3-65-g55abf9d: OUTPUT«alive␤»
sorear rokoteko: yeah, mono. 19:42
rokoteko: it also works on .net
rokoteko nods. at $work Ive been lately porting our product to work on Windows box also. :)
masak sorear: 5... BILLION!?
masak eagerly awaits Yapsi-on-Niecza 19:43
TimToady niecza: my $x = 0; $x++ until $x = 5_000_000_000_000; say "alive $x"; # even gets all the way there :)
jnthn :)
flussence_ 5 BILLIARD‽ # does anyone even use long millions any more?
sorear masak: don't use billions in international channels. it means 10^9 in some countries and 10^12 in others. :(
p6eval niecza v3-65-g55abf9d: OUTPUT«alive 5000000000000␤»
diakopter didn't know that
masak flussence_: you mean "milliard"? 19:44
sorear: er. I'm from a 10^12 country. I know that. :P
flussence_ I mean 5×10¹² :)
TimToady I'm a USian; I believe in cultural imperialism, especially when I'm right. :)
masak sorear: I'm using it because it means 10^9 in English.
sorear: and I don't much feel like saying "five thousand million" each time. 19:45
or "five thousand thousand thousand". 19:46
flussence_ "5 with four lots of three Os after it"
masak but I see I counted wrong. it's five TRILLION!?
flussence_ it's over nine thousand! 19:47
masak o.O
flussence_ but yeah, an "infinite loop" is ^ 2**31, isn't it?
masak niecza: say 2 ** 31 19:48
rokoteko sorear: In our company we have a lot of people from other countries and continents. they are mainly using MS related technologies. I can only imagine their juices flowing after hearing about a Windows only implementation of perl that does all that perl6 does. :) Good luck with your work, you definitely got a market! :)
p6eval niecza v3-65-g55abf9d: OUTPUT«2147483648␤»
flussence_ niecza: my $x = 0; $x++ until $x = 2**31; say "alive $x"; # 5 seconds?
p6eval niecza v3-65-g55abf9d: OUTPUT«alive 2147483648␤»
flussence_ 4!
masak rakudo: say (2 ** 31).flip.comb(/..?.?/).reverse>>.flip.join("_") 19:50
p6eval rakudo a38d45: OUTPUT«2_147_483_648␤»
masak niecza: say (2 ** 31).flip.comb(/..?.?/).reverse>>.flip.join("_")
p6eval niecza v3-65-g55abf9d: OUTPUT«Unhandled exception: System.Exception: Unable to find lexical &hyperunary in mainline␤␤Server stack trace: ␤ at Niecza.CLRBackend.NamProcessor.ResolveLex (System.String name, System.Int32& uplevel, Boolean core) [0x00000] in <filename unknown>:0 ␤ at
..Niecza.CLRBackend.NamProcesso…
flussence_ no » yet
masak aww :)
flussence_ niecza: say (2 ** 31).flip.comb(/..?.?/).reverse.map(*.flip).join("_") 19:51
p6eval niecza v3-65-g55abf9d: OUTPUT«Unhandled exception: Unable to resolve method flip in class Num␤ at /tmp/zG_ZiSbjLd line 1 (MAIN mainline @ 2)␤ at /home/p6eval/niecza/lib/CORE.setting line 1261 (CORE C524_ANON @ 2)␤ at /home/p6eval/niecza/lib/CORE.setting line 1262 (CORE module-CORE @ 39)␤ at
../home/p6eval/nie…
flussence_ :(
masak LHF?
flussence_ niecza: say (2 ** 31).flip.comb(/..?.?/).reverse.map(*.Str.flip).join("_")
p6eval niecza v3-65-g55abf9d: OUTPUT«Unhandled exception: Unable to resolve method flip in class Num␤ at /tmp/2w5ptsYmHd line 1 (MAIN mainline @ 2)␤ at /home/p6eval/niecza/lib/CORE.setting line 1261 (CORE C524_ANON @ 2)␤ at /home/p6eval/niecza/lib/CORE.setting line 1262 (CORE module-CORE @ 39)␤ at
../home/p6eval/nie…
flussence_ huh
oh.
masak flussence_: read the error message.
niecza: say (2 ** 31).comb.reverse.join.comb(/..?.?/).reverse>>.flip.join("_")
p6eval niecza v3-65-g55abf9d: OUTPUT«Unhandled exception: System.Exception: Unable to find lexical &hyperunary in mainline␤␤Server stack trace: ␤ at Niecza.CLRBackend.NamProcessor.ResolveLex (System.String name, System.Int32& uplevel, Boolean core) [0x00000] in <filename unknown>:0 ␤ at
..Niecza.CLRBackend.NamProcesso…
masak er. :) 19:52
flussence_ I was looking at the second .flip
masak niecza: say (2 ** 31).comb.reverse.join.comb(/..?.?/).reverse.map(*.flip).join("_")
p6eval niecza v3-65-g55abf9d: OUTPUT«Unhandled exception: Unable to resolve method reverse in class Array␤ at /tmp/AX5WBHuCpr line 1 (MAIN mainline @ 3)␤ at /home/p6eval/niecza/lib/CORE.setting line 1261 (CORE C524_ANON @ 2)␤ at /home/p6eval/niecza/lib/CORE.setting line 1262 (CORE module-CORE @ 39)␤
..at /home/p6eva…
masak oh :(
flussence_ oh well
rokoteko so what is perl6's market? Unix -people, Windows -people, (I hope not the Mac -people), or all of them? 19:53
TimToady either/or vs both/and
tadzik erm, why not Mac-people? 19:54
it's "all of them" currently
flussence_ tadzik: Mac's a Unix. Certified, in fact. 19:54
Mac people as a separate thing would imply OS<=9 ...
TimToady yeah, but Mac people aren't Unix people :)
tadzik (: 19:55
rokoteko there is this kthakore dude (I apologize if I forgot his exact nick) that helped me to package a Windows port (using perl) of this: processingjs.org/learning/topic/tree to perl5. Has anyone got any estimate when this could be actually possible in perl6? 19:56
sorear masak: .flip is LHF to do KISSily
TimToady Perl 6 is turing complete, so it's possible now. 19:57
sorear masak: there's &reverse in the setting
masak sorear: ah; only the sub form?
sorear yeah
probably there will be a C# version of flip at some point
it's a simple enough operation
masak niecza: say (reverse (2 ** 31).comb).join.comb(/..?.?/).reverse.map({(reverse .comb).join}).join("_") 19:58
p6eval niecza v3-65-g55abf9d: OUTPUT«Unhandled exception: Unable to resolve method reverse in class Array␤ at /tmp/nSaF1UGF4z line 1 (MAIN mainline @ 6)␤ at /home/p6eval/niecza/lib/CORE.setting line 1261 (CORE C524_ANON @ 2)␤ at /home/p6eval/niecza/lib/CORE.setting line 1262 (CORE module-CORE @ 39)␤
..at /home/p6eva…
masak ah. missed one.
rokoteko (the source, and windows executables, are available at rehn.fi/tree.zip # if you want to take a look. sorry about all these silly questions, but Im just trying to map where I should be heading at.)
masak niecza: say (reverse (reverse (2 ** 31).comb).join.comb(/..?.?/)).map({(reverse .comb).join}).join("_")
p6eval niecza v3-65-g55abf9d: OUTPUT«2_147_483_648␤»
masak \o/
see, children? in the end, workarounds always work. 19:59
sorear masak: have you figured out the infinite loop in 5 seconds trick yet?
masak sorear: I suppose it's a special optimization...
TimToady ...but some are more equal than others... 20:00
sorear actually it's an optical illusion
rakudo: my $i = 0; $i++ until $i = 1_000_000_000_000; say "alive $i"
p6eval rakudo a38d45: OUTPUT«alive 1000000000000␤»
sorear you want to see a counting loop, but there isn't really one
colomon $x = instead of $x ==
masak oh!
dang, I totally fell for it. 20:01
flussence_ that's a dirty trick :)
colomon sorear++
TimToady we should be able to make rocket launches easier with that
you won't have to track the rocket after the first few seconds...
flussence_ it'd go into an infinite loop in 5 seconds 20:02
well, more like a finite loop...
masak rakudo: my $i = 0; $++ until $i = Inf; say $i 20:03
p6eval rakudo a38d45: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name at line 22, near "$++ until "␤»
masak rakudo: my $i = 0; $i++ until $i = Inf; say $i
p6eval rakudo a38d45: OUTPUT«Inf␤»
TimToady it'll end up in the finite pool
masak there's your infinite loop.
diakopter well, it was what TimToady did with niecza above 20:05
masak oh. :/ 20:05
I'm out of practice reading IRC.
TimToady no, I last did that with Inf a month or two ago 20:06
masak two months ago is "above" :P
diakopter yeah but I meant the 5e12 20:07
TimToady which is not Inf in niecza
masak diakopter: oh, I saw that one.
that one's still finite, so it's not as impressive :P
TimToady niecza is still cheating with floaters, last I knew
TimToady not that Ints are supposed to top out either... 20:08
diakopter perlesque: my $x = 2_000_000_000; my $t=Diagnostics::StopWatch.StartNew();1 while --$x; say "alive "~$x; say $t.Elapsed; say $x.GetType()
p6eval perlesque: OUTPUT«alive 0␤00:00:07.1678034␤System.Int32␤» 20:09
TimToady niecza: say 100000000000000000000000000042
p6eval niecza v3-65-g55abf9d: OUTPUT«1E+29␤»
diakopter perlesque: say 100000000000000000000000000042
p6eval perlesque: OUTPUT«100000000000000000000000000042␤»
diakopter perlesque: say 100000000000000000000000000042 / 100000000000000000000000000041
p6eval perlesque: OUTPUT«1␤»
diakopter ha 20:10
perlesque: say (100000000000000000000000000041).GetType()
p6eval perlesque: OUTPUT«Could not resolve routine name and signature.␤»
diakopter hrm
flussence_ that's a weird thing to say on stdout 20:11
diakopter perlesque: my $a = 100000000000000000000000000042; say $a.GetType
p6eval perlesque: OUTPUT«System.Numerics.BigInteger␤»
TimToady maybe perlesque has been infected by Stuxnet
diakopter at least ;)
TimToady perlesque: my $a = 1000000000000000000000.01; say $a.GetType 20:13
p6eval perlesque: OUTPUT«System.Double␤»
TimToady ooh, cheaters all over the place
diakopter what should that be
TimToady you should smell a Rat
diakopter heh 20:14
TimToady rakudo: say 1000.01.WHAT
p6eval rakudo a38d45: OUTPUT«Rat()␤»
masak today I learned that in Common Lisp, the command for printing a newline is called (terpri) -- that looks like a name a sadistic Lojbanist might have come up with. Scheme calls the same function (newline).
diakopter perlesque doesn't know about Rats, just CLR builtins that mostly overlap with p6 lowest-levels
"sadistic Lojbanist" 20:15
sorear TimToady: if -p is passed, what should be used instead of CORE.setting? 20:16
colomon masak: classic lisp has some "wonderful" names. 20:17
sorear LAMBDA
rokoteko that raises a question. are rats more advanced than squirrels or the other way around? :)
sorear CDR
rokoteko anyhow Im going to visit a friend soon. and therefore Ill be thanking you all for the good chat :)
colomon CADR 20:18
rokoteko See you next time when I feel curious about perl6! :)
masak rokoteko: \o
sorear I think it's funny how lispies have latched on to lambda and car despite being approximately the worst names imaginable
plobsing sorear: what do you mean? cdaddaadr makes complete and total sense! 20:19
flussence_ lambda I'm sort of familiar with. "car"... no idea
masak Arc ditches 'lambda' for 'fun', but keeps 'car' et al for hystericacl raisins.
hysterical*
colomon yeah, I'm okay with lambda, which at least has mathematical meaning.
masak (and with the rationale that it's hard to do 'caddr' et al with any other naming scheme) 20:19
sorear plobsing: once you know car and cdr, cdaddaadr is at least regular
diakopter preferred to read that as 'hysteric access-control-lists raisins' 20:20
masak sorear: though probably not the best of ideas in any event.
diakopter: *lol*
colomon If I'm understanding the wikipedia page correctly, cdaddaadr isn't actually supported (usually)
masak five levels of nested lists ought to be enough for anybody.
sorear Classical LISP has one of the most insane variable models every invented 20:21
plobsing colomon: I don't expect it to be. it was an extrapolation of a common pattern.
colomon ooo, wait, maybe it is. "Common Lisp and Scheme both provide forms with up to four repetitions of the a and d." might mean four each, I suppose.
masak ok, I've now updated strangelyconsistent.org/blog/p5-fin...-substring with small notices about colomon++ having the latest and best news on p5.
colomon: it doesn't, IIRC. 20:22
plobsing bringing the car/cdr discussion back on topic, would it be possible to augment the Perl 6 grammar to take any c[ad]+r function and autogenerate the appropriate accessor? 20:23
masak ...yes. :)
masak plobsing: though my guess is that the autogeneration bit wouldn't end up in the grammar. 20:24
maybe in the actions, or maybe even later on.
jnthn Probably actions.
colomon masak: ah, good, you're planning on saying more on it. I think it's interesting (and nice) that the best algorithm depends on the sort of string you expect to be dealing with. 20:25
jdhore Does Perl (either P5 or P6) have something like radix tries?
shortcircuit I don't know what radix trees are, but suddenly I want them on Rosetta Code. >.> 20:26
jdhore en.wikipedia.org/wiki/Radix_trie
plobsing I've seen a Trie module on CPAN before 20:27
masak colomon: from what I see from your new stats, fox and moritz_ are both better off than I thought, but your algorithm beats them when strings get long.
jdhore I tend to call it a patricia trie, but radix trie is more accepted :(
masak jdhore: I haven't seen a radix trie implementation, no.
does STD contain anything like that? and is that part in Perl 6?
sorear radix trees and patricia trees are not quite the same 20:35
masak: std used to use radix trees, but does no longer 20:36
masak oh!
colomon masak: that would be my summary as well. :) 20:40
masak I just like to have that summary spring out of data coming out of my runs :P no offense.
in retrospect, I made two mistakes with collecting statistics: 20:41
* data was a bit too one-sided, and favored certain solutions, skewing the results.
* the timings for each solution were all collected during one single program run. should have re-started the program each time. 20:42
sorear colomon: augment slang MAIN { token prefix:sym<cxxxr> { c <[ad]>+ r <O(|%named_unary)> } } should work
TimToady: when augmenting slangs, how do semantics get attached? Embedded blocks with &make? 20:43
colomon sorear++
sorear TimToady: what should I call the file that contains the -p setting? 20:45
sorear is mostly trying to get multis working, today. 20:46
jnthn Also, what does the MAIN refer to in augment slang MAIN?
sorear jnthn: the main Perl 6 language, c.f. STD.pm6:1100 20:47
%*LANG hash key
jnthn ah, ok
Is a slang meaningful in a non-augmentation sense? 20:48
sorear You could define an entirely new one 20:49
I'm not really happy with "slang" as a type_declarator 20:50
it feels more like a scope to me
augment slang \approx BEGIN { %*LANG<MAIN> but= role { ... } } 20:51
my slang \approx BEGIN { %*LANG<MAIN> = grammar { ... } }
supercede and my would be the same thing... I don't think any other scope makes sense 20:52
rakudo: my proto token bit {*}; my token bit:alpha { <.alpha>+ }; my token bit:num { \d+ }; say "abc123def456".comb(/<&bit>/).perl 20:58
p6eval rakudo a38d45: OUTPUT«===SORRY!===␤Quantifier quantifies nothing at line 22, near "}; my toke"␤»
sorear rakudo: my proto token bit {...}; my token bit:alpha { <.alpha>+ }; my token bit:num { \d+ }; say "abc123def456".comb(/<&bit>/).perl 20:59
p6eval rakudo a38d45: OUTPUT«Could not find sub &bit␤ in <anon> at line 22:/tmp/UJoEHd0Z4M␤ in 'Cool::match' at line 2659:CORE.setting␤ in <anon> at line 2317:CORE.setting␤ in 'Any::join' at line 1␤ in 'List::perl' at line 2843:CORE.setting␤ in main program body at line 22:/tmp/UJoEHd0Z4M␤»
sorear rakudo: my proto token bit { <...> }; my token bit:alpha { <.alpha>+ }; my token bit:num { \d+ }; say "abc123def456".comb(/<&bit>/).perl
p6eval rakudo a38d45: OUTPUT«Could not find sub &bit␤ in <anon> at line 22:/tmp/lUP93KkOeD␤ in 'Cool::match' at line 2659:CORE.setting␤ in <anon> at line 2317:CORE.setting␤ in 'Any::join' at line 1␤ in 'List::perl' at line 2843:CORE.setting␤ in main program body at line 22:/tmp/lUP93KkOeD␤»
sorear What does Rakudo want in proto tokens?
jnthn That looks fine 21:08
I can only guess it's some oddity about it not being in a grammar.
sorear jnthn: oh, does rakudo not support proto regex outside grammars? 21:25
jnthn sorear: Looking at the error and knowing how its prefix stashing works, I fear not.
I do know it'd complain if you put the wrong thing in a proto token. 21:26
sorear Is there going to be any specifically Perl 6 GSoC stuff this year?
jnthn I wrote up one suggestion earlier today
jnthn I hope there'll be more. 21:26
masak what's the deadline? 21:31
moritz_ afaict there's no real deadline for ideas 21:31
it's just that more students will look at the proposal if it's there earlier 21:32
masak ah, ok.
sorear someone on parrot-dev said that Google is going to look at idea pages over the weekend and use that to decide which orgs get funding 21:43
masak I think that was dukeleto 21:46
dalek p/ctmo: 32f2a59 | jonathan++ | src/ops/nqp.ops:
Fix error message typo.
21:47
p/ctmo: 13b2478 | jonathan++ | src/pmc/serializationcontext.pmc:
Add quick and dirty method for getting the index of an object in an SC.
p/ctmo: 929093e | jonathan++ | src/ops/nqp.ops:
D'oh, another typo.
p/ctmo: d17eb00 | jonathan++ | src/metamodel/ (3 files):
KnowHOW and it's HOW need to live in a serialization context, so we make a core one.
sorear masak: I looked over yapsi from the niecza-compatibility POV yesterday
masak sorear: yes? 21:48
sorear masak: at_pos has to go.
sorear so... I'm likely going to be working on a branch 21:48
masak sorear: that one's a workaround for a Rakudo thing.
sorear: would you be willing to work on a branch in the Yapsi repo?
prammer Would I be doomed to failure if I tried to implement some of the p6 builtin classes/roles in p5/Moose?
dukeleto sorear: yes, that was me 21:49
moritz_ prammer: depends on what you try
prammer Something like $hash->pairs->map( sub { ... } ); seems kinda nice
sorear masak: yes
masak sorear: excellent. you now have commit access.
dukeleto sorear: i think Perl 6 will be part of The Perl Foundation GSoC org this year
jnthn sorear: at_pos has to go? 21:50
prammer It seems like Parcel would be hard
dukeleto sorear: as well as Rakudo. But Rakudo-folk are free to be part of TPF or Parrot, as they see fit
masak sorear: my immediate plans include fixing the bug you pointed out (shouldn't be difficult), and then fixing the backtracking problems in the grammar.
sorear masak: how does "has FUTURE::Node @.children is rw" work? I thought Rakudo couldn't do typed arrays
masak prammer: what is your aim?
sorear: it parses them and then does nothing.
sorear: consider it a piece of documentation :) 21:51
moritz_ prammer: Parcel is very specific Perl 6 thing; I don't see how a Perl 5 program would benefit from it 21:51
sorear jnthn: masak's code uses at_pos, which is not standard Perl 6.
masak: ok. that I can do :)
prammer I think one of my aims it to figure out how all the p6 classes/roles fit together
masak prammer: if you find out, let us know :P 21:52
sorear masak: where does yapsi fail on rakudo, without at_pos?
prammer right. Well it could be a testing ground to see what works
sorear masak: have you ever thought about integrating yapsi with gge? :D
jnthn sorear: Oh, I thought it was spec.
moritz_ jnthn: pmichaud_ planned to spec it
jnthn Ah, OK
moritz_ but never got around to it
jnthn *nod* 21:53
masak sorear: yes, that was the plan when I had only GGE and hadn't started with Yapsi.
moritz_ there's some sense in it
masak sorear: oh, seems I'm mixing up at_pos with something else.
prammer I think I'd leave out Parcel, but I was hoping I could figure out Iterator but I'm having trouble
moritz_ postcircumfix:<[ ]> handles things like slices and WhateverCode closures etc.
masak sorear: anyway, I'd very much like to see an implementation-independent version of at_pos.
moritz_ and then calls at_pos for each index
so if you want to provide your own array-ish type, you only have to provide the actual storage calls 21:54
masak pmichaud_ seems quite proud over at_pos.
moritz_ for individual indexes
moritz_ likes it
same with at_key for hashes
jnthn Yeah, I like it too.
It made things a bunch simpler.
moritz_ sorear: are you OK with speccing at_pos? 21:55
sorear moritz_: possibly. 21:56
niecza's at_pos differs in some small details from what you just described
moritz_ sorear: care to elaborate? 21:57
sorear prammer: Iterator is in a state of flux atm. No major implementation follows the spec.
prammer: (the spec is lagging)
moritz_: my at_pos methods are responsible for handling WhateverCode and slices themselves 21:58
moritz_ sorear: so what's its advantage over postcircumfix:<[ ]> ? 21:59
sorear at_pos methods don't have to handle adverbs 22:00
prammer sorear: ah. good to know. I read some stuff about .reify but it still wasn't clear to me what the api is supposed to look like
sorear also, they're methods - postcircumfix:<[ ]> is a sub
moritz_ not at all
sorear: take a look at S13 22:02
prammer is there a good place to look to figure out the direction Iterable/Iterator are going? I guess I can look at how rakudo does it 22:03
sorear niecza chooses to follow S12:416 instead. 22:04
moritz_ sorear: S12:416 looks to me like an example of &foo(bar) and bar.&foo being the same. I don't see how that implies that postcircumfix:<[ ]> is a sub 22:08
donri is foo.&bar syntax or does that work with any block-like 22:31
rakudo: "foo".{ say $^a } 22:32
p6eval rakudo a38d45: OUTPUT«Null PMC access in type()␤ in main program body at line 22:/tmp/LXgE0z0hCU␤»
masak submits rakudobug
donri rakudo: "foo".(*.say)
:$
p6eval rakudo a38d45: OUTPUT«invoke() not implemented in class 'Perl6Str'␤ in main program body at line 22:/tmp/TyPrYjOEi7␤»
masak donri: that last one is trying to invoke "foo". 22:33
donri: I guess what you're after is "foo"."$method"()
donri masak: nah, arbitrary invokable objects 22:34
sorear niecza: "foo".$({ say $^a })
p6eval niecza v3-65-g55abf9d: OUTPUT«===SORRY!===␤␤Contextualizer variables NYI at /tmp/sbNnLGTCoa line 1 (EOF):␤------> "foo".$({ say $^a })⏏<EOL>␤␤Unhandled exception: Check failed␤␤ at /home/p6eval/niecza/boot/lib/CORE.setting line 387 (CORE die @ 2)␤ at
../home/p6eval/niecza/sr…
sorear donri: it has to be a syntactic variable.
donri rakudo: *.say "foo"
p6eval rakudo a38d45: OUTPUT«===SORRY!===␤Confused at line 22, near "*.say \"foo"␤»
donri rakudo: (*.say) "foo" 22:35
p6eval rakudo a38d45: OUTPUT«===SORRY!===␤Confused at line 22, near "(*.say) \"f"␤»
sorear also, that's fixable now...
donri wait what am i doing
masak donri: that's two terms in a row :/
donri ;)
rakudo: (*.say)("foo")
p6eval rakudo a38d45: OUTPUT«foo␤»
masak \o/
donri i dub it the boobie style
rakudo: *.say("foo")
p6eval rakudo a38d45: ( no output )
masak rakudo: say("foo") 22:36
p6eval rakudo a38d45: OUTPUT«foo␤»
jnthn rakudo: "foo".$({ say $^a })
p6eval rakudo a38d45: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name at line 22, near "$({ say $^"␤»
jnthn Aw.
donri rakudo: "foo".&({say $^a })
p6eval rakudo a38d45: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name at line 22, near "&({say $^a"␤»
donri rakudo: "foo"."{say $^a }"
p6eval rakudo a38d45: OUTPUT«===SORRY!===␤Quoted method name requires parenthesized arguments at line 22, near ""␤»
masak good night, #perl6. 22:38
jnthn rakudo: "foo".&({say $^a })() 22:39
p6eval rakudo a38d45: OUTPUT«===SORRY!===␤Non-declarative sigil is missing its name at line 22, near "&({say $^a"␤»
jnthn Nah, don't think that's gonna work. :( 22:40
Not yet.
donri std: "foo".&({say $^a }) 22:41
p6eval std 4608239: OUTPUT«ok 00:01 123m␤»
dalek ecza: 129d407 | sorear++ | TODO:
A few TODO additions
22:51
ecza: eec33bf | sorear++ | / (2 files):
$foo.&() syntax
sorear stefan@stefans:~/rel/niecza$ mono run/Niecza.exe -e '"foo".&({say $^a })'
foo
sorear pokes donri 22:52
donri sorear: and it's supposed to work? i was only making that up as i went
sorear donri: yes
donri cool 22:53
dalek p/ctmo: c8c7a6f | jonathan++ | build/Makefile.in:
Seems that we have got the meta-objects and setting reified into the wrong levels of the bootstrap. :/ As a first step, this fixes up the Makefile dependencies, but it's probably not enough.
23:10
p/ctmo: 80b8275 | jonathan++ | src/HLL/SerializationContextBuilder.pm:
First bits towards SC cross-referencing. Not able to use it just yet, due to issues with bootstrap layer reificationa and separate compilation. :/
p/ctmo: 765695a | jonathan++ | src/HLL/SerializationContextBuilder.pm:
Little more sketching out in the SC builder.
p/ctmo: 3100f3d | jonathan++ | src/NQP/Actions.pm:
Resolve lexically installed items (e.g. don't assume they're all package scoped).
jnthn More tomorrow :) 23:47
phenny: tell Tene got distracted hacking on other bits, but will write the REPR for you tomorrow
phenny jnthn: I'll pass that on when Tene is around.
jnthn sleep &