Camelia, the Perl 6 bug

IRC log for #perl6, 2012-11-04

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:13 havenn joined #perl6
00:41 tokuhiro_ joined #perl6
00:43 adu joined #perl6
00:52 jj123 joined #perl6
00:53 xinming joined #perl6
01:06 friendofthefanat joined #perl6
01:06 friendofthefanat hello
01:08 TimToady most of the interesting people have gone to sleep
01:10 sftp joined #perl6
01:11 johnny4shure joined #perl6
01:11 johnny4shure is that you lewis?
01:12 johnny4shure #quietfanatic
01:12 johnny4shure nvm no its not
01:12 TimToady quietfanatic is his nick
01:13 johnny4shure I know, I checked his IP and its not where it would be if he was who is claims to be
01:13 TimToady many of us run screen sessions on long-running servers
01:14 johnny4shure ah
01:14 TimToady and the irc "server" is kinda arbitrary anyway
01:15 TimToady quietfanatic is on appflux, the same server I use, which is, I believe, in Virginia
01:16 johnny4shure ah I see
01:16 johnny4shure any good perl 5 tutorials? / books?
01:17 TimToady well, I hear the Camel book is pretty good... :-)
01:17 TimToady but it really depends on your learning style
01:19 geekosaur p5 is probably best not discussed here, though
01:19 johnny4shure oops sorry guys my bad
01:20 TimToady yah, the folks hang out here are mostly interested in p6, but it's okay
01:20 TimToady we talk about p5 sometimes too :)
01:20 geekosaur (some people here do know p5 fairly well, but not all)
01:21 johnny4shure perl 6 isnt released is it?
01:21 TimToady "It's released every month."
01:21 johnny4shure lol
01:21 johnny4shure from the man himself
01:21 TimToady no implementation implements the entire spec yet, fershure
01:22 johnny4shure ah
01:22 TimToady and none of the implementations quite measure up to p5 in terms of speed
01:22 TimToady (yet)
01:23 TimToady but http://rosettacode.org/wiki/Category:Perl_6 has 481 examples of (mostly) running Perl 6 code
01:24 TimToady otoh there's no Camel book for it yet
01:27 * sorear waves to johnny4shure
01:28 johnny4shure Im not sure how to wave back :)
01:29 sorear I did /me waves to ...
01:29 sorear in theory /commands depend on your choice of client, but /me is pretty standard
01:29 cognominal joined #perl6
01:31 sorear I'm still up, unsure if I count as an interesting person...
01:31 TimToady well, I hedged it in any case, like a good engineer
01:37 johnny4shure haha
01:37 cognominal_ joined #perl6
01:38 johnny4shure is it a mystery when the camel book for perl 6 will grace us with its presence?
01:38 [Coke] moritz: you added S03-operators/andthen.t to rakudo's spectest - did you forget to push the test file?
01:38 [Coke] phenny: ask moritz you added S03-operators/andthen.t to rakudo's spectest - did you forget to push the test file?
01:38 phenny [Coke]: I'll pass that on when moritz is around.
01:39 TimToady johnny4shure: well, we just have to write it first
01:40 johnny4shure I guess thats true isn't it.
01:41 * diakopter becomes more interesting
01:42 TimToady diakopter: did the lights go out on all your whales?
01:42 diakopter that's tomorrow
01:42 TimToady ah, yes
01:42 diakopter today was Monterey
01:42 TimToady which is pretty much everything except whales
01:43 diakopter it's a nice aquarism
01:43 diakopter aquarium
01:43 diakopter couldn't find much else to do
01:43 johnny4shure should I start by learning perl 5 or perl 6
01:44 diakopter johnny4shure: depends what you want to use it for, I guess
01:44 TimToady there'r some nice restaurants, and shop that sells all kinds of hot sauce
01:44 johnny4shure web development
01:44 TimToady does it also have to run on your teacher's computer?
01:45 johnny4shure nah
01:45 johnny4shure just mine :)
01:46 johnny4shure Im trying to abandon rails
01:46 johnny4shure just cause I've realized it's not the proper tool for any job imho
01:46 TimToady there's a web framework for p6 called Bailador, but I don't know what it's state is, and the people who do know are mostly asleep
01:47 TimToady 'course you can always roll your own with Perl
01:47 * johnny4shure
01:48 TimToady p5 will have many more existing tools on various levels currently, since p6 is still being explored
01:48 TimToady otoh p6 is a nicer language to work with
01:48 johnny4shure I was looking at catalyst
01:49 TimToady that's a common choice, and good for many uses
01:49 TimToady a bit harder to get going in, but probably more flexible than rails
01:50 johnny4shure ive just hit a lot of operating boundaries of rails way too fast
01:50 TimToady web frameworkds in p5 do tend to bring out strong opinions in people though, so don't expect everyone to agree with your choice :)
01:52 TimToady it's not like in ruby where rails is almost completely dominant
01:53 johnny4shure I hate uniformity so I can deal
01:54 diakopter I'm confused. how is my single-threaded Java program maxing all four cores
01:54 johnny4shure infinite loop?
01:55 johnny4shure but that would only max one
01:55 johnny4shure so nvm
01:55 cotto very infinite loop
01:55 TimToady maybe the optimizer is attempting some autothreading
01:55 cognominal_ joined #perl6
01:55 diakopter that would be seriously *impressive*
01:56 diakopter though how it derived that this algorithm is wait-free and trivially parallelizable, I don't know
01:56 TimToady well, one thread can easily be the GC
01:57 TimToady and maybe the GC can multithread if if gets tired
01:57 diakopter nm, I found it. I was actually launching 128 threads that were all spinning
01:57 TimToady *ifit
01:57 diakopter forgot to disable this other thing
01:57 cotto I like all of the less likely explanations.
01:58 TimToady 1. Write an autothreader for Perl 6.
01:59 TimToady 2. Write a Java-to-Perl 6 translator
01:59 TimToady 3. ???
01:59 TimToady 4. Profit
02:11 Timbus <diakopter> I'm confused. how is my single-threaded Java program maxing all four cores -> <diakopter> nm, I found it. I was actually launching 128 threads
02:11 Timbus my sides
02:11 diakopter :)
02:11 diakopter well, I thought I had commented out all the threadpool thing
02:12 diakopter but missed some
02:12 diakopter (I hadn't seen it use all the cores yet)
02:17 diakopter my statements. the jvm or cpu, it's reordering them.
02:17 diakopter or both.
02:25 sorear cpus reorder statements all the time
02:25 sorear and even when they don't, memory models often make it look like they do
02:25 sorear cache coherency protocols are seriously funky
02:39 sizz joined #perl6
02:43 jlaire joined #perl6
02:48 xinming joined #perl6
02:53 japhb I'm reminded of "Variables won't; constants aren't."
02:55 tokuhiro_ joined #perl6
03:10 orafu joined #perl6
03:20 REPLeffect joined #perl6
03:47 xinming_ joined #perl6
04:02 [particle]1 joined #perl6
04:08 dalek perl6-roast-data: d80f178 | coke++ | / (9 files):
04:08 dalek perl6-roast-data: * rebuild from scratch each time.
04:08 dalek perl6-roast-data: * Rename file tests.
04:08 dalek perl6-roast-data: * use one version of roast
04:08 dalek perl6-roast-data: * record roast sha1
04:08 dalek perl6-roast-data: * avoid div-by-zero error.
04:08 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/d80f178404
04:08 dalek perl6-roast-data: dd6ac96 | coke++ | bin/niecza.sh:
04:08 dalek perl6-roast-data: Need a ./perl6 for test_summary.
04:08 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/dd6ac96f00
04:08 dalek perl6-roast-data: 405f649 | coke++ | / (4 files):
04:08 dalek perl6-roast-data: today (automated commit)
04:08 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/405f6493bd
04:08 [Coke] there. rakudo is up about 1K tests from a month ago.
04:14 [Coke] I've reinstalled the cron job, hopefully we'll get daily runs again.
04:32 dalek roast: a2adec0 | coke++ | integration/weird-errors.t:
04:32 dalek roast: refudge for niecza
04:32 dalek roast: review: https://github.com/perl6/roast/commit/a2adec0081
04:35 jlaire joined #perl6
04:40 grondilu_ r: macro f($x) { "{{{$x}}} (just testing macros)" };  say f "ok"
04:41 p6eval rakudo 68460c: OUTPUT«f␤===SORRY!===␤too few positional arguments: 2 passed, 3 (or more) expected␤»
04:41 grondilu_ *
04:41 grondilu_ left #perl6
04:43 grondilu joined #perl6
04:47 xinming joined #perl6
05:48 xinming_ joined #perl6
05:53 [Coke] r: macro f($x) { quasi "{{{$x}}} (just testing macros)" } } ; say f "ok"
05:53 p6eval rakudo 68460c: OUTPUT«===SORRY!===␤Missing block␤at /tmp/QaW2tPJF8Y:1␤»
05:54 xinming joined #perl6
05:55 gootle joined #perl6
05:57 diakopter r: macro f($x) { quasi { "{{{$x}}} (just testing macros)" } } ; say f "ok"
05:57 p6eval rakudo 68460c: OUTPUT«AST<-1403658370> (just testing macros)␤»
06:21 grondilu shouldn't it output "ok (just testing macros)"?
06:24 sorear no
06:24 sorear the outermost layer of {} delimits code from text
06:24 sorear the code which is interpolated is just {{$x}} which is equivalent to $x
06:24 sorear r: macro f($x) { quasi { "{{{{$x}}}} (just testing macros)" } } ; say f "ok"
06:24 p6eval rakudo 68460c: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling block f: Error while compiling block : Error while compiling block : Unknown QAST node type QAST::Unquote␤at /tmp/cM33Hcj2KD:1␤»
06:25 sorear r: macro f($x) { quasi { {{{$z}}} ~ " (just testing macros)" } } ; say f "ok"
06:25 p6eval rakudo 68460c: OUTPUT«===SORRY!===␤Variable $z is not declared␤at /tmp/ZqjmVP9ZWV:1␤»
06:25 sorear r: macro f($x) { quasi { {{{$x}}} ~ " (just testing macros)" } } ; say f "ok"
06:25 p6eval rakudo 68460c: OUTPUT«ok (just testing macros)␤»
06:26 sorear phenny: tell masak interpolating unquotes into strings like "foo {{{{$x}}}} bar" breaks messily. diakopter++
06:26 phenny sorear: I'll pass that on when masak is around.
06:26 sorear r: macro f($x) { quasi { for 1..5 { {{{$x}}} } } } ; say f "ok"
06:26 p6eval rakudo 68460c: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling block f: Error while compiling block : Error while compiling block : Unknown QAST node type QAST::Unquote␤at /tmp/hTSrBKOAU4:1␤»
06:26 sorear phenny: tell masak update/retraction: it's actually a generic issue with block-wrapping syntaxes and probably something you know about
06:26 phenny sorear: I'll pass that on when masak is around.
06:29 grondilu r: macro infix:<m+>($a, $b) { quasi { ({{{$a}}} + {{{$b}}}) % 13 } }; say [m+] ^10;
06:29 p6eval rakudo 68460c: OUTPUT«Type check failed in unquote evaluation; expected AST but got Int␤  in method evaluate_unquotes at src/gen/CORE.setting:10274␤  in method incarnate at src/gen/CORE.setting:10264␤  in macro infix:<m+> at /tmp/Px9WO9UEdl:1␤  in sub  at src/gen/CORE.setting:12223␤  in…
06:30 grondilu can't I use a macro operator with a meta-operator?
06:31 tokuhiro_ joined #perl6
06:31 grondilu (if that makes any sense, which I'm not sure)
06:33 diakopter [Coke]++ for that one, actually
06:33 sorear grondilu: I don't think so.
06:34 sorear macros, because of their ability to look into expressions, subvert the higher-order function system
06:34 grondilu yeah that's what I thought.
06:35 sorear masak et al been talking about allowing macros in HOFs, but silently converting them to subs, along the lines of sub ($x,$y) { $x m+ $y }
06:35 grondilu that would be nice
06:35 sorear I'm a little dubious of this, it seems to me that if a macro _can_ usefully be turned into a sub, it _should_ have been a sub to begin with
06:36 sorear I can't think of a case where it'd be a win to use a macro where a sub would do
06:36 sorear other than working around stupid optimizers
06:36 grondilu wouldn't a macro be faster?
06:36 diakopter r: print &fff
06:37 p6eval rakudo 68460c:  ( no output )
06:37 diakopter O_O
06:37 diakopter r: print &fff; say 'alive'
06:37 p6eval rakudo 68460c: OUTPUT«alive␤»
06:38 diakopter r: say (&fff).WHAT; say 'alive'
06:38 p6eval rakudo 68460c: OUTPUT«Nil␤alive␤»
06:38 diakopter std: say (&fff).WHAT; say 'alive'
06:38 p6eval std 04216b1: OUTPUT«[31m===[0mSORRY![31m===[0m�Undeclared routine:� 'fff' used at line 1�Check failed�FAILED 00:00 45m�»
06:38 diakopter that seems new
06:39 diakopter phenny: tell masak r: print &fff; say 'alive' # no error like std? # also r: say (&fff).WHAT; say 'alive'
06:39 phenny diakopter: I'll pass that on when masak is around.
06:43 adu joined #perl6
06:46 diakopter r: macro foo { quasi { say macro bar { 55 } } }; say foo
06:46 p6eval rakudo 68460c: OUTPUT«===SORRY!===␤Method 'evaluate_unquotes' not found for invocant of class 'NQPMu'␤at /tmp/oVJS9KJsJs:1␤»
06:46 diakopter phenny: tell masak r: macro foo { quasi { say macro bar { 55 } } }; say foo # boom
06:46 phenny diakopter: I'll pass that on when masak is around.
06:52 sorear grondilu: if macros are faster than small subs, it means your inliner is broken
06:53 xinming joined #perl6
06:53 grondilu sorear: ok
06:55 diakopter phenny: tell masak r: macro foo { die macro bar { 55 } } # different kind of boom
06:55 phenny diakopter: I'll pass that on when masak is around.
06:55 diakopter phenny: tell masak r: macro foo { die macro bar { 55 } }; foo # another different kind of boom
06:55 phenny diakopter: I'll pass that on when masak is around.
06:55 diakopter r: macro foo { die macro bar { 55 } }; foo
06:55 p6eval rakudo 68460c: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling block foo: Error while compiling op p6typecheckrv: Error while compiling op lexotic: Error while compiling op p6decontrv: Error while compiling op call: Unknown QAST node type NQPMu␤at /tmp/uKpHj4LjXH…
06:58 diakopter star: macro foo { package bar { } }; foo
06:58 p6eval star 2012.10: OUTPUT«===SORRY!===␤too few positional arguments: 2 passed, 3 (or more) expected␤»
06:58 diakopter r: macro foo { package bar { } }; foo
06:59 p6eval rakudo 68460c: OUTPUT«foo␤===SORRY!===␤too few positional arguments: 2 passed, 3 (or more) expected␤»
06:59 diakopter phenny: tell masak r: macro foo { package bar { } }; foo # weird boom
06:59 phenny diakopter: I'll pass that on when masak is around.
07:03 ingy joined #perl6
07:06 diakopter r: require lion
07:06 p6eval rakudo 68460c: OUTPUT«Could not find lion in any of: /home/p6eval/nom-inst/lib/parrot/​4.8.0-devel/languages/perl6/lib, /home/p6eval/nom-inst/lib/parrot/4.8​.0-devel/languages/perl6/vendor/lib, /home/p6eval/nom-inst/lib/parrot/4.​8.0-devel/languages/perl6/site/lib, /home/p6eval/.perl6/2012…
07:17 diakopter r: say (macro a { }).DUMP
07:17 p6eval rakudo 68460c: OUTPUT«(timeout)»
07:17 diakopter I'll time you out
07:43 * grondilu created http://rosettacode.org/wiki/Talk:Permutati​ons_by_swapping#Alternative_Perl6_version
07:47 xinming_ joined #perl6
07:48 grondilu ahh it does not work
07:49 * grondilu removed it
07:57 tokuhiro_ joined #perl6
08:06 l3x joined #perl6
08:07 GlitchMr joined #perl6
08:17 SamuraiJack joined #perl6
08:24 zby_home joined #perl6
08:27 domidumont joined #perl6
08:48 xinming joined #perl6
08:52 domidumont joined #perl6
09:00 tokuhiro_ joined #perl6
09:16 kaare_ joined #perl6
09:21 l3xer joined #perl6
09:44 Psyche^ joined #perl6
09:46 kaare_ joined #perl6
09:48 xinming_ joined #perl6
09:50 Psyche^ joined #perl6
10:04 GlitchMr eval: print "\x{FF5F}\x{FF60}"
10:04 buubot_backup GlitchMr: ⦅⦆1
10:05 GlitchMr eval: print "\x{201c}\x{201d}"
10:05 buubot_backup GlitchMr: “”1
10:16 spider-mario joined #perl6
10:22 GlitchMr Also: https://github.com/rakudo/rakudo/b​lob/nom/src/Perl6/Actions.pm#L3469
10:22 GlitchMr Somehow I doubt this line is intentional
10:22 GlitchMr Could it be removed?
10:29 Psyche^ joined #perl6
10:44 jnthn ohhai o/
10:45 tadzik oh hai
10:45 jnthn [Coke]++ # fixing the roast data
10:46 jnthn Rakudo has quietly sneaked past the 24,000 passing tests marker, it seems :)
10:48 xinming joined #perl6
10:49 dalek rakudo/nom: 64208d7 | jnthn++ | src/Perl6/Actions.pm:
10:49 dalek rakudo/nom: Remove leftover debugging code; GlitchMr++.
10:49 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/64208d73c6
11:00 sisar joined #perl6
11:01 leont joined #perl6
11:03 lumi__ Is there some way to evaluate macro arguments?
11:09 jnthn Haven't seen one, though may just be NYI
11:09 kaare_ joined #perl6
11:10 jnthn Well, I mean, there's no "official" way. Of course, there's *a way*. :)
11:10 jnthn r: sub eval_ast($ast) { eval 'macro m() { quasi { {{{$ast}}} } }; m' }; macro foo($a) { say eval_ast($a); $a }; foo 42
11:10 p6eval rakudo 68460c: OUTPUT«42␤»
11:29 PacoAir joined #perl6
11:37 kaare_ joined #perl6
11:48 xinming_ joined #perl6
11:52 jaffa4 joined #perl6
11:52 jaffa4 hi
11:53 jaffa4 What does :? do in regular expression?
11:55 jnthn jaffa4: After a quantifier? It's a backtracking modifier, iirc.
11:55 jnthn Gives you frugal matching
11:55 jaffa4 What is frugal matching?
11:55 MayDaniel joined #perl6
11:55 jnthn r: say 'aaa' ~~ /\w+/
11:55 p6eval rakudo 64208d: OUTPUT«「aaa」␤␤»
11:55 jnthn r: say 'aaa' ~~ /\w+:?/
11:55 p6eval rakudo 64208d: OUTPUT«「a」␤␤»
11:56 jnthn It does the quantifier, but does as few characters as it can, rather than swallowing as many as it can.
11:56 chee joined #perl6
11:56 jaffa4 This is what ? did in Perl 5
11:56 jnthn r: say 'aaa' ~~ /\w+?/
11:56 p6eval rakudo 64208d: OUTPUT«「a」␤␤»
11:56 jnthn And still does in Perl 6 :)
11:56 jaffa4 What difference does : make?
11:59 jnthn Looking at the implementation...none...
11:59 jnthn However, note that : on its own means no backtracking
12:00 jnthn : is don't backtrack, :? is frugal backtracking, :! is greedy backtracking
12:01 jaffa4 backtracking I understand but what is the difference between greedy backtracking and frugal?
12:02 jnthn Greedy = match as much as you can, and if you have to backtrack then try matching less
12:02 jnthn Frugal = match as little as you can, and if you have to backtrack then try matching more
12:02 jnthn r: say 'abab' ~~ /\w+b/
12:02 p6eval rakudo 64208d: OUTPUT«「abab」␤␤»
12:03 jnthn r: say 'abab' ~~ /\w+?b/
12:03 p6eval rakudo 64208d: OUTPUT«「ab」␤␤»
12:04 jaffa4 r: say 'abab' ~~ /\w+!b/
12:04 p6eval rakudo 64208d: OUTPUT«「abab」␤␤»
12:04 jaffa4 I guess with ! is the same as without !
12:05 jnthn In a regex, yes.
12:05 jnthn In a rule or token declaration, the default is ratchet (no backtracking)
12:05 jaffa4 ok, thanks
12:16 bowtie joined #perl6
12:34 jerome joined #perl6
12:35 Psyche^ joined #perl6
12:40 mcero joined #perl6
12:47 jaldhar joined #perl6
12:48 xinming joined #perl6
13:09 cognominal joined #perl6
13:28 tokuhiro_ joined #perl6
13:31 cognominal joined #perl6
13:44 jaldhar joined #perl6
13:45 masak g'day, #perl6
13:45 phenny masak: 06:26Z <sorear> tell masak interpolating unquotes into strings like "foo {{{{$x}}}} bar" breaks messily. diakopter++
13:45 phenny masak: 06:26Z <sorear> tell masak update/retraction: it's actually a generic issue with block-wrapping syntaxes and probably something you know about
13:45 phenny masak: 06:39Z <diakopter> tell masak r: print &fff; say 'alive' # no error like std? # also r: say (&fff).WHAT; say 'alive'
13:45 phenny masak: 06:46Z <diakopter> tell masak r: macro foo { quasi { say macro bar { 55 } } }; say foo # boom
13:45 phenny Further messages sent privately
13:45 masak as indeed they were.
13:45 masak diakopter++ # stresstesting macros
13:46 masak I will get back to all of these reports after lunch.
13:46 masak diakopter: re defining anything declarational inside a quasi, that's for D4, so that's not expected to work yet.
13:47 jnthn o/ masak
13:48 xinming_ joined #perl6
13:57 brrt joined #perl6
14:05 cognominal joined #perl6
14:17 brrt left #perl6
14:18 cognominal hi, how to test the type of an object that is not 6model in nqp?
14:23 jnthn Don't.
14:23 jnthn Find another way to do what you want that means you don't have to.
14:23 jnthn The rest of Rakudo and NQP have been done without needing to do this...
14:24 cognominal hum
14:24 jnthn If you must, pir::isa__IPs($foo, 'SixModelObject'). But don't expect your code to be portable.
14:26 jnthn Note that nqp::istype does not explode if given non-6model objects.
14:29 cognominal ok, so if I want to check if the value is a string, I do a string operation in a C<try>? If it passes, it is a string?
14:30 jnthn Er, most things can work as strings.
14:30 jnthn nqp: say(1 ~ 2)
14:30 p6eval nqp: OUTPUT«12␤»
14:30 jnthn What are you actually trying to do?
14:31 cognominal I am rewriting the code you gave me this summer to generated json from a match
14:32 cognominal it worked only for a few cases
14:32 cognominal but was a good start :)
14:33 jnthn OK, and where do you hit problems?
14:34 cognominal ok, I protect my  .isa(Match) and the rest can be treated as a string because I have already treated the list/hash cased.
14:34 cognominal thx
14:35 jnthn Note that nqp::istype($foo, NQPMatch) or so will not need protecting
14:36 cognominal nice
14:40 jnthn And it'll keep working :)
14:48 xinming joined #perl6
14:49 cognominal joined #perl6
14:49 cognominal joined #perl6
15:09 am0c joined #perl6
15:11 masak cognominal: whatever it is you're doing exactly, you don't seem to be working "with the grain" of Perl 6.
15:12 masak r: "foobarbaz" ~~ /foobar/; say $/.substr(3)
15:12 p6eval rakudo 64208d: OUTPUT«bar␤»
15:12 masak most common objects are Cool, i.e. they will act as Str if you need them to.
15:14 grondilu guys, what would you think of this:  http://paste.siduction.org/20121104151335 for http://rosettacode.org/wiki/Wr​ite_language_name_in_3D_ASCII  ?
15:15 * masak looks
15:15 masak aww, I expected source code.
15:15 grondilu oops, I forgot to expand
15:16 grondilu http://paste.siduction.org/20121104151608
15:16 Pleiades` joined #perl6
15:16 masak most of these language exmples are cool. python's isn't, though. :/
15:16 masak examples*
15:17 masak grondilu: the output looks wrongly formed here.
15:17 grondilu indeed
15:18 masak and I'm still more interested in the source than the output.
15:18 masak if the source is just "print this multi-line string literal", I don't think it's a nice solution.
15:18 masak (IMHO)
15:19 jaffa4 r:/(.*?(';'\s*||()<before \x27>||()<before \x22>||<before \/\*>||<before $>||()<before \n>)) /
15:19 jaffa4 r: /(.*?(';'\s*||()<before \x27>||()<before \x22>||<before \/\*>||<before $>||()<before \n>)) /
15:19 p6eval rakudo 64208d: OUTPUT«===SORRY!===␤Unrecognized regex metacharacter ) (must be quoted to match literally) at line 2, near "<before \\x"␤»
15:20 jaffa4 std: /(.*?(';'\s*||()<before \x27>||()<before \x22>||<before \/\*>||<before $>||()<before \n>)) /
15:20 p6eval std 04216b1: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Null pattern not allowed at /tmp/fvdKiUZgEw line 1:â�¤------> [32m/(.*?(';'\s*||([33mâ��[31m)<before \x27>||()<before \x22>||<before[0mâ�¤    expecting any of:â�¤       quantmodâ�¤       regex atomâ�¤     regex_infixâ�¤    sigmaybeâ�¤Parse failedâ�¤FAILED 00:00
15:20 p6eval ..42m␤»…
15:20 Chillance joined #perl6
15:21 grondilu masak: I was planning on making a home-made compression of the string literal
15:22 cognominal masak: that's nqp, not Perl 6  :)
15:23 masak cognominal: I see. yes, nqp does more of explicit coercion, that's true.
15:26 masak TimToady: oops! I meant to do 'does'...
15:27 masak I updated https://gist.github.com/c97c37efa09d0d72ad9e to reflect this fact.
15:28 jaffa4 : "b\x27"~~ /<before \x27>/;
15:29 jaffa4 How to match \x27 without advancing .pos?
15:30 jnthn Matching it will advance the position, but you can probably capture it.
15:31 masak diakopter: the accidental neologism "aquarism" sounds like a bias one might accrue if one works too much with water-dwelling creatures.
15:34 masak r: macro f($x) { quasi { "{{{{$x}}}} (just testing macros)" } } ; say f "ok"
15:34 p6eval rakudo 64208d: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling block f: Error while compiling block : Error while compiling block : Unknown QAST node type QAST::Unquote␤at /tmp/ThGOl8kMre:1␤»
15:34 masak this one is indeed interesting.
15:34 timotimo masak, be wary of the aquatic supremacist types. they want to subvert (actually submerge) most of humanity
15:34 masak TimToady: would you expect {{{}}} or { {{{}}} } inside a qq string in a quasi?
15:34 * masak submits rakudobug
15:34 masak timotimo: :P
15:35 jnthn .oO( if you could use different stoppers for the quasis, we can avoid this crazy... :P )
15:36 jnthn masak: I think the answer is that quasis only have meaning in the MAIN language, so you need to be inside the closure.
15:36 masak I think that's sane, yes.
15:36 jnthn er, please confirm STD actually belives what I just told you :P
15:37 masak because we're essentially doing a post-lexicalizing unquote substitution here, and qq strings are tokens.
15:37 jnthn They're not tokens, but the inside of them is a different language.
15:37 masak right.
15:38 masak they're tokens in the sense that they're one "thing" to the optable parser.
15:38 masak but so are parenthetical expressions, so I guess that definition of "token" is not very standard :)
15:38 cognominal joined #perl6
15:39 masak r: macro f($x) { quasi { for 1..5 { {{{$x}}} } } } ; say f "ok"
15:39 p6eval rakudo 64208d: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling block f: Error while compiling block : Error while compiling block : Unknown QAST node type QAST::Unquote␤at /tmp/xqmqR5HheK:1␤»
15:39 masak huh? why the heck does that break? it looks perfectly OK to me...
15:40 * masak submits rakuodbug
15:40 jnthn Lack of delayed declarations?
15:41 jnthn (a block is a declaration, really)
15:42 masak no, it's failing to find and substitute the unquote.
15:43 masak note to everyone about to stumble over early macro bugs: whenever you get the above "Unknown QAST node type QAST::Unquote", it means that you managed to place a {{{}}} in a place where it was not found and substituted. congratulations. it's always a bug, so make sure to report new cases.
15:45 jnthn masak: Ok, well, it's both :)
15:45 masak r: print &fff; say (&fff).WHAT; say 'alive'
15:45 p6eval rakudo 64208d: OUTPUT«Nil␤alive␤»
15:45 masak I don't know what to think about this one.
15:45 jnthn Unsurprising, I think.
15:45 jnthn r: print Nil
15:45 p6eval rakudo 64208d:  ( no output )
15:45 jnthn Unless you want the &fff to whine at compile time, which arguably it should.
15:46 masak r: print &foweubtweyrghasrasrt; say (&foweubtweyrghasrasrt).WHAT
15:46 p6eval rakudo 64208d: OUTPUT«Nil␤»
15:46 masak ah.
15:46 masak n: print &foweubtweyrghasrasrt; say (&foweubtweyrghasrasrt).WHAT
15:46 p6eval niecza v22-16-g4c016f5: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Undeclared routine:â�¤     'foweubtweyrghasrasrt' used at line 1,1â�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5) â�¤  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_uni…
15:46 masak yes, it should whine, I think.
15:46 * masak submits rakudobug
15:46 masak diakopter++
15:46 jnthn Make sure it's not already filed.
15:46 masak ok.
15:46 jnthn I'm sure we've had this discussion before...
15:47 jnthn It'll need the optimizer to catch it I expect.
15:47 dalek perl6-roast-data: 3276340 | coke++ | .gitignore:
15:47 dalek perl6-roast-data: Ignore new roast/ dir
15:47 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/3276340be8
15:47 jnthn Can't do the variable path as postdecls are OK
15:47 masak we have https://rt.perl.org/rt3/Tic​ket/Display.html?id=107960 which is arguably the same issue.
15:48 xinming_ joined #perl6
15:48 masak r: macro foo { die macro bar { 55 } }; foo
15:48 p6eval rakudo 64208d: OUTPUT«===SORRY!===␤Error while compiling block : Error while compiling block foo: Error while compiling op p6typecheckrv: Error while compiling op lexotic: Error while compiling op p6decontrv: Error while compiling op call: Unknown QAST node type NQPMu␤at /tmp/MqNFBXtLcV…
15:48 * masak submits rakudobug
15:49 masak r: macro foo { die "OH NOES" }; foo
15:49 p6eval rakudo 64208d: OUTPUT«===SORRY!===␤Method 'SET_FILE_LINE' not found for invocant of class 'X::AdHoc'␤»
15:49 masak r: macro foo { die }; foo
15:49 p6eval rakudo 64208d: OUTPUT«===SORRY!===␤Method 'SET_FILE_LINE' not found for invocant of class 'X::AdHoc'␤»
15:49 masak yeah, that should work.
15:49 jnthn I think that's a general problem, fwiw
15:49 jnthn (any non-X::Comp exception thrown at compile time, in certain cases)
15:50 whiteknight joined #perl6
15:50 masak r: macro foo { quasi { die "this works, though!" } }; foo; say "alive"
15:50 p6eval rakudo 64208d: OUTPUT«this works, though!␤  in  at /tmp/vMPQqM2Njn:1␤  in block  at /tmp/vMPQqM2Njn:1␤␤»
15:50 masak \o/
15:52 jnthn yeahbut that's thrown at runtime :)
15:53 masak GlitchMr: re http://irclog.perlgeek.de/​perl6/2012-11-04#i_6124794 -- please tell me more about your doubts that that line is "intentional".
15:53 GlitchMr It was already fixed
15:53 GlitchMr jnthn already removed that line
15:53 GlitchMr It was this line: https://github.com/rakudo/rakudo/commit/​64208d73c65ba32998dda503ffa0962b6efcc40b
15:54 masak oh!
15:54 masak yes.
15:54 masak GlitchMr++
15:54 * masak feels bad for letting that line slip through :)
15:54 jnthn Don't worry, happens to all of us :)
15:54 GlitchMr I've found this line while making Perl 6 changes article
15:55 jnthn Also, I'm always impressed how many times people who aren't Rakudo core devs catch stuff like this. It's really nice having such code review.
15:56 TimToady masak: when we switch to ¤ we won't have that problem
15:57 TimToady ({{{}}} vs {{{{}}}})
15:58 jnthn .oO( then our problem will be how the f**k to type ...that thing )
15:58 TimToady it's supposed to be hard :)
15:58 TimToady but witha compose key it's probably just COMPOSE ox
15:58 jnthn I guess it's not replacing {{{ }}}
15:58 TimToady (is how I typed it)
15:58 jnthn Just additional?
15:59 TimToady well ¤() or some such
15:59 TimToady ¤foo for a direct one
15:59 TimToady ¤escape() for something that might be recognized in a string, maybe
16:00 TimToady some kind of syntax to name the syntactic category that it participates in the alternation of
16:00 TimToady so the parser knows what to treat it as, and what to expect after it
16:01 TimToady but I'm not in a hurry to spec that since it gives masak++ a cold grue
16:01 TimToady (and is not part of his grant)
16:01 * jnthn would be curious to see it prototyped in STD
16:02 * TimToady 2
16:02 jnthn I'd perhaps be less wary of it if I knew how it worked... :)
16:02 masak I would be curious to see it prototyped in spec, too.
16:03 TimToady maybe I can figure it out while we're taking Julian to Disneyland this week
16:03 masak it's not that I'm so against it anymore. I just know that there are conceptual problems with things I've seen proposed so far, making them unsuitable as replacements for {{{}}}
16:04 TimToady can you remind me of those when they occur to you?
16:05 masak it's in the logs. just search for ¤ :P
16:05 plobsing joined #perl6
16:06 TimToady it's possible, I suppose, that (like your AST types determined by the lexical context), we should be determining the targetted alternation by marking the quasi, not the unquasi
16:07 masak but if I recall correctly, something like parsing an operator is problematic because the information about precedence and associativity sits on the operator, which if it's parametric isn't available at parse time.
16:07 masak things like that.
16:08 TimToady I suspect that a restriction on parametricity is probably in order there, or you can't parse the role
16:08 TimToady (correctly)
16:08 masak note that I'm not distinguishing between "AST types" in any strict sense. it's more of a difference on the domain level. i.e. macro ASTs can turn out to have originated from quasis or from macro arguments.
16:09 TimToady my bias these days is to try to think of such things as "types" by default, in a loose sense, since it tends to drive the design into a saner direction, even if they don't officially become types
16:09 masak it's noticeable in the source code, where things were previously named $quasi_ast, and can now be named $macro_ast, etc.
16:09 TimToady since many of the RFCs can be analyzed as "type failures"
16:09 masak TimToady: nod.
16:11 TimToady here's a funny way to do parametric operator precedence: require the operator to be defined in its own file, and stop the parse as soon as you see the operator, and then complete the parse each time it's instantiated :)
16:11 TimToady but probably we should just make a way to eval something at instantiation time
16:13 TimToady (and let the result of the eval poke things in where the compiler would have at compile time)
16:13 masak I don't think {{{}}} is powerful enough to do things like 'class {{{$name}}} { ... }' -- which people seem to expect.
16:13 masak same with subs, methods, etc.
16:13 masak there seems to be an expectation that macros do this. I don't think it's at all unreasonable.
16:14 TimToady hence the ¤ proposal, as an escape that is highly unlikely to occur in normal code
16:14 masak aye.
16:14 TimToady so it can be special-cased in every lexer
16:14 jnthn walk &
16:15 masak 'class {{{$name}}} { ... }' is interesting, because what is $name? most likely, it'll be a Str. so in a way, it's a text-based macro substitution.
16:15 masak (well, an AST containing a Str, I guess)
16:16 masak because 'create-class MyClass;' with MyClass being a bareword won't work.
16:16 masak so it'd have to be 'create-class "MyClass";'
16:16 TimToady you'd really like to have something like a quasi :category<longname> { stuff } to poke in there
16:17 [Coke] alright, got muddle working locally agian...
16:17 masak std: Unknown::Longname
16:17 p6eval std 04216b1: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤Undeclared name:â�¤    'Unknown::Longname' used at line 1â�¤Check failedâ�¤FAILED 00:00 41mâ�¤Â»
16:17 masak TimToady: my point is that if it's not declared at macro invocation time, it won't work.
16:17 masak TimToady: and since the purpose of the macro is to declare it...
16:18 TimToady that's why macros need to be able to also say "this argument is parsed as :category<longname>"
16:19 masak oh, non-textual macros having a hand in how their arguments are parsed? interesting.
16:19 masak yes, that would solve a lot of current issues I see.
16:19 TimToady the only alternative is the one-size-fits-all aproach of Lisp
16:19 masak for example how you'd even pass an operator.
16:20 TimToady "the one true syntax" crops up in lots of languages for that reason
16:20 * masak is excited by this last suggestion
16:20 TimToady which last suggestion, forcing everyone to use Lisp?  :)
16:21 masak no, being able to specify what category the macro arguments belong to. :)
16:22 TimToady well, the parser has to know when to stop parsing any given category, but for an operator this is usually self-limiting by LTM and whatever the longest token implies
16:22 GlitchMr Why Lisp? Why not Logo programming language?
16:22 TimToady why not Tcl, which also has the "one true syntax"
16:23 masak as does TECO.
16:23 masak oh, was thinking of Trac.
16:23 GlitchMr In Logo, strings, numbers, arrays and code blocks are this same type - strings
16:23 TimToady I remember Tom Christiansen congratulating John Osterhaut for finding a way to force people to put the opening curly on the same line as the condition "as God and Dennis Ritchie intended it"
16:24 GlitchMr (or perhaps they are arrays... not sure, really)
16:24 masak in JavaScript, everything is either a double-precision float, a string, or a hash. :)
16:24 leont joined #perl6
16:25 TimToady but Lisp is the granddaddy of all languages that force you to use a single syntax for every possible AST
16:25 TimToady they perceive this to be a feature
16:25 GlitchMr masak: or undefined or null
16:25 GlitchMr or NaN
16:25 masak yes, it's interesting that both Arc and Clojure deviate from this trend.
16:25 GlitchMr (but NaN is float...)
16:25 masak GlitchMr: NaN is a double-precision float.
16:25 TimToady in a sense, Perl 6 is finally inventing M-EXPRs
16:26 masak TimToady: I heard the same meme from jnthn the other day.
16:26 masak curious.
16:26 GlitchMr I've once done a language that looks like this - https://gist.github.com/4012490
16:26 GlitchMr That "almost" looks like Lisp
16:29 GlitchMr (that wasn't intended to be used like normal language... it's REALLY slow)
16:32 jaffa4 How to make a reverse for  loop?
16:32 masak r: for reverse 1, 2, 3 { .say }
16:32 p6eval rakudo 64208d: OUTPUT«3␤2␤1␤»
16:32 jaffa4 ok
16:36 cognominal joined #perl6
16:37 GlitchMr jaffa4: reverse makes iterator so it should be as fast as normal for loop
16:37 arkydo joined #perl6
16:37 jaffa4 good to know
16:39 masak most list functions make iterators.
16:39 GlitchMr Isn't the general rule - everything makes iterator unless it's sort?
16:40 masak er.
16:41 masak I think we need to define terms here if the discussion is to have any meaning.
16:41 masak by "iterator", I assume you mean something gather-like.
16:42 masak many list function have a gather somewhere in them, either directly or indirectly.
16:42 masak map and grep do, but I think Rakudo has some optimization there so it's not really gather. don't remember the details.
16:43 masak r: my @a = map { last when * %% 7; $_ }, 1..10; say @a
16:43 p6eval rakudo 64208d: OUTPUT«1 2 3 4 5 6␤»
16:44 masak sort isn't unique in not returning its results using gather. not even among the list functions.
16:45 masak basically anything which needs the whole input before being able to emit its first piece of output will have this property.
16:45 masak and note that sort still *could* return results using an iterator. I just don't think it does.
16:48 xinming joined #perl6
16:52 cognominal joined #perl6
16:54 raiph joined #perl6
16:58 raiph [Coke]'s spectest passing data mentions numbers for "spec" and "plan". for rakudo, for the last few months, "plan" has been higher than "spec". what's that about?
16:58 TimToady yes, sort could be lazy on the last merge
16:58 jnthn What types of iterators things use under the hood is probably best left as an implementation detail :)
16:58 jnthn raiph: It's about people thinking explicit test plans are too much like hard work. ;)
16:59 jnthn raiph: Some tests do there stuff and then have "done" at the end. Many have an explicit "plan 42;"
17:00 jnthn raiph: Those with an explicit plan can be counted into spec as they can be analyzed statically without having to actually run the tests.
17:01 masak it's an interesting data point in a big discussion about being explicit/redundant vs statically analyzing code for its properties.
17:03 tokuhiro_ joined #perl6
17:03 jnthn Personally, I'd find it more intersting to know how many spectests we actually have :P
17:06 masak I don't think anyone would contest that.
17:06 masak the question is more, how.
17:07 jnthn What if we put the number of tests somewhere in the file, in a way that could be easily regex'd out? :D
17:08 masak then we might as well plan it.
17:08 masak otherwise the risk is too big that it gets out of sync.
17:08 jnthn masak: You missed the sarcasm :)
17:08 masak yes, I did.
17:09 jnthn (My point being, that's what plan actually gives us, where it's used)
17:09 masak probably because I don't fully agree with its premise.
17:09 masak I think it'd be nice to have enough tooling to be able to get by with 'plan *'/'done'. I know we don't have such tooling.
17:10 jnthn I'm not sure we can.
17:10 jnthn What if the is/ok etc are in a loop?
17:11 jnthn I guess I just don't find twiddling a number at the top of a test file painful, so fail to see the motivation for plan */done.
17:13 doy why is running the test suite a problem?
17:13 jaffa4 How would you count number of matches in a string of regular expression?
17:13 jnthn doy: Because some test files don't actually run yet.
17:14 raiph is the "spec" number the total of explicit "plan"s and the "plan" number (closer to) the actual number of spec tests?
17:14 raiph (ie I'm confused. :)
17:14 jnthn raiph: The plan number is the number of planned tests from files that ran.
17:14 jnthn The spec number is adding up the explicit plans for all files.
17:15 doy jnthn: that could be fixed by explicit skip counts, couldn't it?
17:15 raiph jnthn: thanks. that makes sense. any idea what the "spec" number is? :)
17:15 raiph oops. thanks
17:15 masak r: "aaaaaaaa" ~~ /(a)+/; say $0.elems
17:15 p6eval rakudo 64208d: OUTPUT«8␤»
17:15 masak jaffa4: like that?
17:16 masak r: "aaaaaaaa" ~~ /(a)+/; say +$0
17:16 p6eval rakudo 64208d: OUTPUT«8␤»
17:16 jnthn doy: When it's the whole test file that won't parse or isn't meaningful to run, that really boils down to the number of tests in the file.
17:16 jnthn Yes, we could get a better estimate by running the test that will run, adding up all that they plan, then just looking for explicit plans in the remaining test files.
17:16 jnthn *tests
17:16 jaffa4 r: "\nererer\n" ~~ / \n /;
17:16 p6eval rakudo 64208d:  ( no output )
17:17 jaffa4 NUmber of \n s in the text?
17:18 jnthn r: say "\nererer\n".match(/\n/, :g).elems
17:18 p6eval rakudo 64208d: OUTPUT«2␤»
17:18 jaffa4 n: say "\nererer\n".match(/\n/, :g).elems
17:18 p6eval niecza v22-16-g4c016f5: OUTPUT«Unhandled exception: Excess arguments to Cool.match, unused named g␤  at /home/p6eval/niecza/lib/CORE.setting line 0 (Cool.match @ 1) ␤  at /tmp/dfzWZwWqb6 line 1 (mainline @ 3) ␤  at /home/p6eval/niecza/lib/CORE.setting line 4215 (ANON @ 3) ␤  at /home/p6…
17:19 jnthn Guess it's nyi in n
17:20 jaffa4 n: "aaaaaaaa" ~~ /(a)+/; say $0.elems
17:20 p6eval niecza v22-16-g4c016f5: OUTPUT«8␤»
17:21 GlitchMr grep > +grep * eq "\n", "\nabc\n".comb
17:21 GlitchMr 2
17:21 GlitchMr This is probably bad hack
17:21 GlitchMr I meant
17:22 GlitchMr +grep * eq "\n", "\nabc\n".comb
17:22 jnthn Well, if it's just \n you are about then in this specific case
17:22 jnthn r: say "\nererer\n".lines.elems
17:22 p6eval rakudo 64208d: OUTPUT«2␤»
17:22 jnthn :)
17:23 jaffa4 yes , or "\n\n" ~~ /(.*?\n)+/;
17:24 circlepuller joined #perl6
17:26 masak r: say "".lines.elems
17:26 p6eval rakudo 64208d: OUTPUT«0␤»
17:26 masak r: say "a".lines.elems
17:26 p6eval rakudo 64208d: OUTPUT«1␤»
17:26 masak r: say "\n".lines.elems
17:26 p6eval rakudo 64208d: OUTPUT«1␤»
17:26 masak r: say "a\n".lines.elems
17:26 p6eval rakudo 64208d: OUTPUT«1␤»
17:26 jnthn Yeah, it aint' really the same as looking for \n. But may be righter anyway, dependong on the use case :)
17:37 Vlavv_ joined #perl6
17:38 masak r: macro foo { package bar { } }
17:38 p6eval rakudo 64208d:  ( no output )
17:40 GlitchMr r: say +"a\nb".lines
17:40 p6eval rakudo 64208d: OUTPUT«2␤»
17:41 GlitchMr Yeah... I guess if you would insert \n at end of string and remove 1, it would work
17:48 xinming_ joined #perl6
17:50 cognominal joined #perl6
18:16 masak clearly the best answer is "\nabc\n".comb.Bag{"\n"} ;)
18:16 masak (but I don't think that works yet)
18:21 jaffa4 r: print $*ERR: "error";
18:21 p6eval rakudo 64208d: OUTPUT«===SORRY!===␤Confused␤at /tmp/M7UiEc7ZOH:1␤»
18:22 jaffa4 s: print $*ERR: "error";
18:22 jaffa4 std: print $*ERR: "error";
18:22 p6eval std 04216b1: OUTPUT«ok 00:00 43m␤»
18:22 jaffa4 n: print $*ERR: "error";
18:22 p6eval niecza v22-16-g4c016f5: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Invocant handling is NYI at /tmp/XGRxk_C9kr line 1:â�¤------> [32mprint $*ERR: "error"[33mâ��[31m;[0mâ�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5) â�¤  at /home/p6eval/…
18:23 jaldhar joined #perl6
18:23 bruges joined #perl6
18:23 masak it's NYI in Rakudo, too. but Rakudo's just acting confused about it.
18:24 jaffa4 r: $*ERR.print ("error");
18:24 p6eval rakudo 64208d: OUTPUT«===SORRY!===␤Confused␤at /tmp/tTFAiPaMWM:1␤»
18:24 jaffa4 n: $*ERR.print ("error");
18:24 p6eval niecza v22-16-g4c016f5: OUTPUT«[31m===[0mSORRY![31m===[0m��Two terms in a row (method call requires colon or parens to take arguments) at /tmp/cn45IiCvgK line 1:�------> [32m$*ERR.print [33m�[31m("error");[0m��Parse failed��»
18:24 jaffa4 IS there a way to print to the STDERR?
18:28 masak r: $*ERR.print ("error")
18:28 p6eval rakudo 64208d: OUTPUT«===SORRY!===␤Confused␤at /tmp/pnQtFYiCxz:1␤»
18:28 masak r: $*ERR.print("error")
18:28 p6eval rakudo 64208d: OUTPUT«error»
18:28 masak r: $*ERR.print: "error"
18:28 p6eval rakudo 64208d: OUTPUT«error»
18:28 masak you almost had it.
18:37 jaffa4 n: $*ERR.print("error");
18:37 p6eval niecza v22-16-g4c016f5: OUTPUT«error»
18:37 jaffa4 ok";
18:39 jaffa4 IS it possible to redirect stderr and stdout?
18:42 flussence r: https://gist.github.com/1606837
18:42 p6eval rakudo 64208d: OUTPUT«def␤abc␤␤»
18:45 colomon In theory, I think $*ERR = IO object should work.  dunno if it works in practice yet.
18:45 masak I've successfully temporized $*OUT, I'm pretty sure.
18:45 jnthn yeah, shoudl work. Tehre's even an IO::Capture module
18:48 xinming joined #perl6
18:52 masak right, exactly.
18:54 sorear o/
18:58 jaffa4 What chmod? Is there such a function somewhere?
18:59 jnthn o/ sorear
19:02 jaffa4 r:   chmod( 700, "basename.plx" );
19:02 p6eval rakudo 64208d: OUTPUT«Failed to set the mode of 'basename.plx' to '0o1274': chmod failed: No such file or directory␤  in block  at src/gen/CORE.setting:7521␤  in method chmod at src/gen/CORE.setting:7516␤  in sub chmod at src/gen/CORE.setting:7803␤  in block  at /tmp/W6kF9MHJRP:1␤␤»…
19:03 jaffa4 n:   chmod( 700, "basename.plx" );
19:03 p6eval niecza v22-16-g4c016f5: OUTPUT«[31m===[0mSORRY![31m===[0mâ�¤â�¤Undeclared routine:â�¤     'chmod' used at line 1â�¤â�¤Unhandled exception: Check failedâ�¤â�¤  at /home/p6eval/niecza/boot/lib/CORE.setting line 1437 (die @ 5) â�¤  at /home/p6eval/niecza/src/STD.pm6 line 1147 (P6.comp_unit @ 37) â�¤  at /ho…
19:03 masak sorear! \o/
19:06 jaffa4 the speed of Niecza seems to be less than 120 lines/s
19:08 sorear masak: best discovery of today: http://www.jmilne.org/math/
19:08 snearch joined #perl6
19:09 * masak looks
19:11 havenn joined #perl6
19:12 masak sorear: nice! thanks.
19:16 jaffa4 rakudo does not like tis... quotestart:  if ( $quote == 0 ) {
19:17 masak jaffa4: the label? no, Rakudo doesn't do labels yet. Niecza does.
19:17 masak wow, the thought of someone writing 112 pages about complex multiplication...
19:18 jaffa4 ok
19:19 colomon masak: context?
19:21 * colomon thought he had it for a moment, but the article he was looking at is 154 pages on complex multiplication....
19:21 masak colomon: <sorear> masak: best discovery of today: http://www.jmilne.org/math/
19:22 masak the article I found was at http://www.jmilne.org/math/CourseNotes/cm.html
19:22 masak it is beyond me; I don't know that much group theory.
19:22 colomon gotcha
19:23 sorear seems to be something much broader than just multiplication over C
19:23 sorear skimming this it makes a lot of references to semisimple K-algebras
19:24 colomon over my head as well.
19:26 * masak .oO( "semisimple"... unfortunately it's the wrong half of it that's simple ) :P
19:27 sorear it's like a small planet...
19:28 sorear I came looking for information on elliptic curves
19:28 sorear I will be here a while
19:28 masak ;)
19:28 PacoAir joined #perl6
19:29 PacoAir joined #perl6
19:30 masak I feel like an amateur chess player in terms of category theory. I still have to remind myself that monomorphisms correspond to injective functions, and epimorphisms to surjective functions.
19:30 masak it's like having to remind oneself that the horsie moves two steps in one direction, then turns 90 degrees and moves one more step.
19:32 colomon masak++
19:41 cognominal masak: my math teacher (who was a moron) would chastize you for wrongly assimilating the general case to one particular example.  But he was a Bourbakian bureaucrat who has no clue about the learning process.
19:43 masak the epithet "Bourbakian bureaucrat" has a nice ring to it, even if it's not that flattering ;)
19:43 cognominal for him, apparently,  everything was said in the formal language of math and it was a crime to try to interpret it or to reformulate in more common languag.
19:43 sorear mm, Bourbaki
19:44 masak cognominal: to me mathematics is awesome precisely because I can context-switch between (sometimes necessary) formalism and (sometimes very useful) informality.
19:44 cognominal right
19:44 masak I think many people consider math lethally boring because they are only taught the former.
19:45 masak to me it has always been a very alive topic.
19:47 cognominal we are not straying far away from Perl. It is about languages. Should they be a straight jacket or a way to think?
19:48 masak right.
19:51 cognominal btw, I should go someday back to read  http://www.di.ens.fr/users/longo/f​iles/CategTypesStructures/book.pdf
19:54 sorear cognominal: would you blame any major part of that on the Bourbakis themselves?
19:54 cognominal sorear: nope
19:58 cognominal but its caricature fits very well in the educational system. They make it a mechanical way to teach, and to rate students. Somehow formalism is the new numerology of so callled educated people, meaning if you frame anything with enough formalism, it has to be true.
19:59 cognominal … or meaningful in some vague platonist way.
19:59 cognominal *platonic?
20:06 masak no, I think it has always been that way. probably even before we had empirical science in a big way.
20:06 cognominal sorear: I think the first Bourbakists would be horrified to see how their stuff has been transmogrified into a arbitrary selection process. Most of the formalism has been invented to deal with various form of infinities which are hardly touched in school (except for the convergence of series).
20:06 masak people who don't know how to clearly convey their message resort to hiding behind majestic formalisms.
20:07 sorear what level of schooling are we talking about here?
20:09 cognominal I forget the equivalency with the american system. I meant before what we call the bacallauréat you get around 17-18 years of age.
20:10 masak sounds like 10th to 12th grade here.
20:14 kurahaupo joined #perl6
20:17 cognominal Right now, I am reading Bernard Stiegler and his messsage is buried in Derridian crap wordplay. He has an excuse, he was his student but I don't know why so many authors need to wrap their message in pretentious forms that alienates them from their pontential readership.
20:22 masak cognominal: have you seen http://masi.cscs.lsa.umich.edu/~crsh​alizi/chomsky-on-postmodernism.html ?
20:25 sorear Derrida :|
20:27 masak I think Eliezer Yudkowsky woke me up from some of the excessive respect for high-falutin' language which doesn't make a difference in the observable universe. does the falling tree in the forest make a sound if no-one's there to hear it? well, if I answered "yes" or "no" to that question, is there any way to tell the difference in the physical universe?
20:28 masak that is, models better describe something that matters, or they won't matter either.
20:29 cognominal masak: Chomsky is very much hated by the french intelligentsia because he denounces their lack of integrety : pompous language and playing fast with facts or downright ignoring them. They were very vicious when he got framed by a revisionist. The case was closed : Chomsky himself is a revisionist.  http://en.wikipedia.org/wiki/Faurisson_affair
20:30 masak Chomsky v. the French. I don't know anything about that, but I can imagine. :)
20:35 GlitchMr perl6: print +'З'
20:35 p6eval rakudo 64208d: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏З' (indicated by ⏏)␤  in method Str at src/gen/CORE.setting:9992␤  in method print at src/gen/CORE.setting:7488␤  in sub print at src/gen/CORE.setting:7298␤  in block  at /tmp/…
20:35 p6eval ..niecza v22-16-g4c016f5: OUTPUT«Unhandled exception: Cannot parse number: З␤  at /home/p6eval/niecza/lib/CORE.setting line 1443 (die @ 5) ␤  at /home/p6eval/niecza/lib/CORE.setting line 3546 (ANON @ 11) ␤  at /home/p6eval/niecza/lib/CORE.setting line 3548 (NumSyntax.str2num @ 5) ␤  at /h…
20:36 GlitchMr ok, I guess that putting Russian letters instead of digits won't work ;-)
20:36 GlitchMr (ok, that wasn't even an attempt... it's a programming language, not human)
20:36 jnthn .u З
20:36 phenny U+0417 CYRILLIC CAPITAL LETTER ZE (З)
20:36 sorear I kind of feel like a bad person for stereotyping French philospohers as unintelligible
20:37 sorear ===SORRY!=== Cross-script phishing attack detected
20:37 jnthn :D
20:37 GlitchMr But well, phishing using Russian is actually possible
20:37 GlitchMr Many letters are... similar
20:38 jnthn Yeah, peоple wоn't nоtice a thing...
20:38 GlitchMr But today, considering that browsers display punycode if website address contains letters from different scripts...
20:38 GlitchMr Probably all you can do is paypaI.com
20:38 GlitchMr or...
20:39 sorear 2012.10.24.13.32.13 < kurahaupo> κλεπτψ?
20:39 sorear 2012.10.24.13.32.39 < jnthn> .oO( gee, that's some really messed up cyrill...oh, wait... )
20:40 GlitchMr раураІ.com
20:40 GlitchMr ^ this is actually cyrillic...
20:41 GlitchMr Actually, І is not Russian, but still
20:41 GlitchMr .u І
20:41 phenny U+0406 CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I (І)
20:44 sorear did not realize Belarus had its own letters
20:44 GlitchMr Not really. Those letters just have disappeared from Russian.
20:45 jnthn iirc, Belarusian can best represent my surname compared to other Cyrillic alphabets.
20:45 GlitchMr I was in Russian before 1918
20:45 * jnthn read that as "I was in Russia before 1918" :D
20:45 * sorear mis-parsed that as "I was in Russi...
20:46 GlitchMr I is 9th letter of alphabet.
20:46 GlitchMr (no... it's I am... wait)
20:47 sorear GlitchMr, Russian revolution refugee
20:47 GlitchMr I was referring to letter, not me.
20:47 GlitchMr sorear: https://en.wikipedia.org/wiki/​Reforms_of_Russian_orthography
20:47 felher masak++ # macro work and newest blogpost. Very nice :)
20:48 * sorear kind of doubts that GlitchMr was alive in 1918
20:48 masak felher: thanks! I'm pretty happy about the recent progress.
20:48 GlitchMr lol, I wasn't
20:49 GlitchMr I should put it in quotes or something
20:49 GlitchMr Or perhaps as U+0406
20:49 GlitchMr U+0406 was in Russian before 1918
20:49 GlitchMr (but they didn't have Unicode...)
20:49 * masak .oO( Belarussian, the beautiful version of Russian... )
20:50 masak Belarusian*
20:58 felher masak: glad to hear that. While i'm quite impressed to see how far the macro-work has come I am also quite eagerly waiting to see COMPILING:: work. Not that I have a particular use case at hand, but it strikes me as one of those things people will do great stuff with :)
20:59 felher But maybe thats just me. I can't help it and I can't explain it -- but I just like macros. :)
20:59 masak me too :)
21:00 masak COMPILING:: will likely have several parts.
21:00 masak you're supposed to be able to both define new things in the mainline scope, and refer to existing things there, for example.
21:00 jnthn .oO( In the first part, we collect together the long list of things the spec and spectests think COMPILING means... )
21:01 * masak .oO( it means the programmers are fighting with swords from their office chairs )
21:07 felher masak: oh, does this mean that one can write a macro that defines a sub in the mainline code? And this sub may be used by the normal code following it? Something like ' macro make-stubs(...) {...} ; make-stubs(<sub1 sub2 sub3 sub4>); ' which will then make sub1, sub2, sub3 and sub4 in the mainline code, with some stub code in them?
21:08 felher Someting like : https://gist.github.com/7064d9fc21e5b1df6a1a
21:11 masak felher: yes, but the macros as currently spec'd are not powerful enough to vary over sub names. see discussion earlier today with TimToady.
21:13 felher masak: okay, great, thanks! :)
21:22 theOnliest joined #perl6
21:32 felher 'night, #perl6
21:37 [Coke] raiph: pretty sure that's from tests with "plan *"
21:38 [Coke] ... sees jnthn already addressed it.
21:40 avar joined #perl6
21:41 plobsing joined #perl6
21:48 dalek perl6-roast-data: b5f5c0d | coke++ | / (3 files):
21:48 dalek perl6-roast-data: today (automated commit)
21:48 dalek perl6-roast-data: review: https://github.com/coke/perl6​-roast-data/commit/b5f5c0d4ca
21:50 masak 'night, #perl6
21:51 sorear night masak
21:51 * [Coke] is glad to see his family's home country discussed in backscroll.
21:52 [Coke] sorear: 8 failures in my niecza run today. (down from 11)
21:56 sorear Which one?  Belarus?
22:05 nyuszika7h joined #perl6
22:18 rindolf joined #perl6
22:22 kda joined #perl6
22:28 fgomez joined #perl6
22:29 [Coke] yes. though "home country is extremely generous, since I only found out it was Belarus and not Russia about 5 years ago.
22:30 shoeswat joined #perl6
22:33 sorear [Coke]: did you ever live there yourself?
22:34 [Coke] no. pretty sure you have to go back 3 more generations for that.
22:34 [Coke] records are sketchy.
22:37 Rix joined #perl6
22:38 chee left #perl6
22:50 daniel-s_ joined #perl6
22:51 fgomez joined #perl6
22:55 leont joined #perl6
23:07 benabik joined #perl6
23:08 azawawi joined #perl6
23:09 azawawi hi
23:26 benabik_ joined #perl6
23:28 benabik_ joined #perl6
23:30 plobsing joined #perl6
23:47 sjohnson joined #perl6
23:48 sjohnson joined #perl6
23:57 * azawawi starts dancing... Farabi6 run dialog with various Perl 6/5 runtimes implemented... :)
23:57 sorear \o/
23:59 azawawi panda install Farabi6  # to test it... since right now Safe is not enabled

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs