Camelia, the Perl 6 bug

IRC log for #perl6, 2010-05-16

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:00 plobsing yes but, doesn't it cause access to @x[0] to run off to infinity?
00:01 diakopter std: [:=] [:=] (my @x)
00:01 sorear := is a special form, not an operator
00:01 p6eval std 30649: OUTPUT«ok 00:01 111m␤»
00:01 sorear [:=] *shouldn't* parse
00:01 sorear although lots of people disagree with me on this
00:02 sorear maybe I could add := to soreakudo and tempt masak with SPECTESTS
00:02 lue I don't see how it would work.
00:02 plobsing soreakudo? you have a fork?
00:03 lue I can see [+] and [-] of course, but not [:=]
00:07 lue does [=] even work? It seems to me operators like = and := don't work well as a metaop.
00:09 plobsing AFAIC, R= is just plain evil.
00:10 lue russian reversal assignment? that does sound evil.
00:10 plobsing rakudo: my $x = 1; my $y = 2; $x R= $y; say($x); say($y);
00:10 p6eval rakudo 92508d: OUTPUT«1␤1␤»
00:11 lue (when I said metaop, I meant these guys: [+] [-])
00:11 plobsing I thought R and Z were metaops too
00:11 lue they are.
00:11 sorear plobsing: not a fork-fork, but there's a huge backlog for patch review
00:16 _jaldhar joined #perl6
00:16 plobsing sorear: does rakudo have a patch reviewer shortage?
00:21 sorear plobsing: yes, circumstantially
00:21 sorear the stuff I've been doing is almost entirely in the pmichaud bus zone
00:24 lue afk (compiling blender)
00:26 sorear I get the feeling STD_syntax_highlight was ported from Perl 4
00:43 nsh_ joined #perl6
00:57 justatheory joined #perl6
01:02 justatheory joined #perl6
01:16 sorear String::IRC-- making up custom names for every color
01:17 sorear just follow conio.h, it's the standard
01:17 sorear or curses
01:17 sorear or RGBI bitfields
01:17 sorear but not "olive", "maroon", "navy", "fuschia"
01:28 sorear evalbot control version
01:28 p6eval This is evalbot revision 30533
01:38 {shade} joined #perl6
01:41 pugssvn r30650 | lwall++ | [CORE] add protos of operators
01:41 pugssvn r30650 | [STD] add operators to symbol tables as subs
01:41 pugssvn r30650 | [Cursor] canonicalize operator names in symbol table
01:46 pugssvn r30651 | sorear++ | Add a mIRC color code backend to STD_syntax_highlight
01:52 eternaleye (backlogging) cognominal: re signatures, you have to bind, not assign and I'm not sure how that works with a signature stored in a variable. Try `my $a, $b; :( $a, $b ) := ( 1, 2 )` - :() constructs a signature, := binds to it
01:55 JimmyZ joined #perl6
01:57 eternaleye Hm, drake1 isn't here anymore. I was going to tell him about 'ls | grep ... | while read i' being much more reliable than 'for F in $(...)'
02:00 eternaleye Though find -exec ... \; is better still
02:01 eternaleye rakudo: my Int $a, Str $b; :( $a, $b ) := ( 1, 'Hi!' ); .say for $a, $b;
02:02 p6eval rakudo 92508d: OUTPUT«Confused at line 11, near "my Int $a,"␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
02:02 eternaleye rakudo: my $a, $b; :( $a, $b ) := ( 1, 'Hi!' ); .say for $a, $b;
02:02 p6eval rakudo 92508d: OUTPUT«Symbol '$b' not predeclared in <anonymous>␤current instr.: 'perl6;PCT;HLLCompiler;panic' pc 152 (compilers/pct/src/PCT/HLLCompiler.pir:108)␤»
02:02 eternaleye rakudo: my ($a, $b); :( $a, $b ) := ( 1, 'Hi!' ); .say for $a, $b;
02:02 p6eval rakudo 92508d: OUTPUT«Any()␤Any()␤»
02:02 cognominal eternaleye,  thx, I will check out
02:02 eternaleye alpha: my ($a, $b); :( $a, $b ) := ( 1, 'Hi!' ); .say for $a, $b;
02:02 p6eval alpha 30e0ed: OUTPUT«Use of uninitialized value␤␤Use of uninitialized value␤␤»
02:02 eternaleye Hmm
02:03 cognominal :)
02:03 eternaleye alpha: my ($a, $b) := ( 1, 'Hi!' ); .say for $a, $b;
02:03 p6eval alpha 30e0ed: OUTPUT«rtype not set␤in Main (file <unknown>, line <unknown>)␤»
02:03 eternaleye rakudo: my ($a, $b) := ( 1, 'Hi!' ); .say for $a, $b;
02:03 p6eval rakudo 92508d: OUTPUT«1␤Hi!␤»
02:03 eternaleye THERE we go!
02:03 eternaleye ('my' operates on a signature)
02:04 eternaleye rakudo: my (Int $a, Str $b) := ( 1, 'Hi!' ); .say for $a, $b;
02:04 p6eval rakudo 92508d: OUTPUT«1␤Hi!␤»
02:04 eternaleye rakudo: my (Int $a, Int $b) := ( 1, 'Hi!' ); .say for $a, $b;
02:04 p6eval rakudo 92508d: OUTPUT«Nominal type check failed for parameter '$b'; expected Int but got Str instead␤current instr.: '' pc 0 (EVAL_2:1)␤»
02:04 eternaleye Tada!
02:05 cognominal also I am not sure if     $a := @b[1]    should bind to the slot or to the container in the slot
02:05 eternaleye rakudo: my (Int $a, Complex $b ( :$re, :$im ) ) := ( 1, 1 + 3i ); .say for $a, $re, $im;
02:05 p6eval rakudo 92508d: OUTPUT«1␤1␤3␤»
02:05 eternaleye Unpacking is fun
02:06 cognominal if I do @b[1] = 1 should it affect $a or not?
02:06 cognominal I guess this is the most useful thing to do.
02:07 cognominal otherwise the old @b[1] will still be (only) accessible thru $a.
02:08 cognominal idle thinkings...
02:35 sorear the behavior of $a := @b[1] is effectively forced from an implementator's perspective
02:36 constant joined #perl6
02:36 constant joined #perl6
02:37 cognominal sorear, what do you mean?
02:37 sorear rakudo: sub BIND($name, $reg is rw) { pir::store_dynamic_lex__vSP($name, $reg); }; my $x; my @y; BIND('$x', @y[1]);  @y = <a b c>; say $x;
02:37 p6eval rakudo 92508d: OUTPUT«␤»
02:38 sorear rakudo: sub BIND($name, $reg is rw) { pir::store_dynamic_lex__vSP($name, pir::find_lex__PS('$reg')); }; my $x; my @y; BIND('$x', @y[1]);  @y = <a b c>; say $x;
02:38 p6eval rakudo 92508d: OUTPUT«␤»
02:38 sorear not quite working.
02:38 cognominal I am dizzy with these pir:: et Q:PIR...
02:39 sorear := is the essential binding operation
02:39 sorear it is used, notionally, during signature binding
02:40 sorear the rhs is any old value that can be passed to functions
02:40 cognominal this is the only thing implemented so far in rakudo...
02:40 sorear when you function(@foo[1]), the slot is lost
02:40 sorear only the container is passed to function
02:40 sorear so, for the rhs, the old meaningful usage is the container
02:50 justatheory joined #perl6
02:52 sorear viv gives wrong output on unimplemented cases, interesting
02:58 pugssvn r30652 | lwall++ | [Cursor] don't complain of uninit $*FATAL on supposition
02:58 TimToady s/FATAL/FATALS/
03:00 JimmyZ joined #perl6
03:00 masonkramer joined #perl6
03:05 sorear TimToady: Is there a list of what needs to be done with viv?  Are there any good "stepping stone" inputs before I spend the 4:20 to process STD?
03:07 JimmyZ std: eval "class Foo {  }"
03:07 p6eval std 30651: OUTPUT«ok 00:01 110m␤»
03:07 JimmyZ rakudo: eval "class Foo {  }"
03:07 p6eval rakudo 92508d: OUTPUT«Null PMC access in get_string()␤current instr.: '_block14' pc 29 (EVAL_1:0)␤»
03:07 sorear JimmyZ: std doesn't run code, so it can't see the runtime error in that line
03:07 sorear { is special in double-quoted strings now
03:08 sorear you need to use 'class Foo { }'
03:08 JimmyZ sorear: It's a bug?
03:08 sorear rakudo: eval 'class Foo { }'
03:08 p6eval rakudo 92508d:  ( no output )
03:08 sorear JimmyZ: There's a bug there, but it has nothing to do with classes or eval
03:09 sorear rakudo: say "class Foo { 2 + 2 }"
03:09 p6eval rakudo 92508d: OUTPUT«class Foo 4␤»
03:09 JimmyZ oh, I thought it was not a bug
03:09 sorear { XXX } interpolates Perl code
03:09 sorear { } should interpolate 'undef', but instead it crashes
03:09 sorear known bug, I'm pretty sure
03:15 cognominal also I see a point about signatures that does not appear in Perl6 (rakudo) grammar.  If the methods metha and methb  have the same signature (say $sig), I would like to  declare them     method  metha $sig { ... }   method methb $sig {  }
03:16 cognominal so as not to repeat the common signature.
03:16 cognominal ...more idel thoughts :)
03:23 TimToady sorear: no, no list for viv
03:42 sorear Can't call method "Str" on an undefined value at viv line 989
03:42 * sorear tracks
03:49 tylerni7 joined #perl6
03:50 JimmyZ phenny: help?
03:50 phenny JimmyZ: Hi, I'm a bot. Say ".commands" to me in private for a list of my commands, or see http://inamidst.com/phenny/ for more general details. My owner is sbp.
03:51 JimmyZ phenny tell moritz_ I sent a patch to RT #75114: Can't augment class Int
03:51 TimToady sorear: def_module_name changed to longname, I think
03:56 sorear yeah
03:56 sorear I figured that much out... slow going but progress
03:56 sorear that said I finally managed to read all the way through STD.pm6; correct highlighting helps a lot
03:57 sorear I wish we had something like that for perl5/cursor :)
04:04 TimToady well, we just have to rewrite it all in Perl 6  :)
04:04 TimToady 'course, for that, we need viv -5...
04:05 sorear viv -5 ?
04:05 diakopter emit_p5
04:05 * sorear is hacking on viv
04:06 sorear I wanted some p6 related stuff to work on; diakopter++ recommended viv
04:06 diakopter finally I did something right ;)
04:07 diakopter TimToady: note that viv can be read either as 6->5 or 5->4
04:07 TimToady unfortunately I already did the easy bits :)
04:07 sorear it depends on whether TimToady approves of random non-TimToady-mind-readers hacking viv
04:07 sorear TimToady: that's ok.  I only find hard things fun.
04:08 * diakopter giggles at 5->4. I kill me.
04:08 TimToady you want to take small chunks out STD.pm5 as produced by gimme5 and reproduce 'em with viv -5
04:09 * diakopter thinks sorear seems like the reverse-engineering-is-the-best-game-ever sort
04:10 diakopter sorear: does this mean you can produce an html colorized edition of STD.pm6?
04:10 sorear diakopter: once we've figured out how to write a perl 5 deparser in viv, adding the perl 4 deparser will be relatively easy
04:10 sorear then hook it up to STD_P5.pm6
04:10 pugssvn r30653 | lwall++ | [STD] read user's mind on 'Str $toto'
04:10 TimToady 'course, Perl 4 didn't have closures...
04:11 sorear diakopter: I already have an html colorized STD.pm6.  However, it contains large amounts of obfuscated javascript and crashes firefox when I load it
04:11 diakopter re: no closures; 'ts ok; I can write the framebuilder & trampoline-builder
04:11 sorear why STD_syntax_highlight generates obfuscated javascript /at all/ is beyond me
04:11 diakopter heh
04:11 diakopter node collapsing/expanding I think
04:12 TimToady I believe on mouseovers it puts the list of outer contexts
04:12 diakopter I think it appears obfuscated b/c it's minified
04:12 [mark] joined #perl6
04:13 sorear diakopter: the worst part is going to be memory management
04:13 sorear Perl 4 has no garbage collector
04:14 sorear *foo = *bar;  # the old *foo glob-object is now a memory leak
04:14 diakopter oh.
04:14 sorear you'd have to write your own garbage collector
04:14 envi^home joined #perl6
04:14 sorear you'd probably want to use inside-out objects for this
04:15 TimToady well, Perl 5 doesn't exactly have a GC either
04:15 sorear $node_types{$node_num} = 'additive';
04:15 snarkyboojum joined #perl6
04:18 * sorear needs to make a more detailed study of Perl 4 some time
04:19 sorear I've been involved with the Perl scene since, uh, 5.005
04:20 pugssvn r30654 | sorear++ | deflongname is just longname now
04:21 sorear I think I'd like a less verbose form of VAST
04:21 TimToady that would be useful
04:21 diakopter nonvast
04:28 snarkyboojum left #perl6
04:29 snarkyboojum joined #perl6
04:33 diakopter +v pugssvn
04:33 sorear diakopter: /mode #perl6
04:33 * sorear would do it himself, but this goodfornothing ISP keeps dropping my ops
04:33 diakopter I know :P; I was hoping I could trigger TimToady's alias
04:34 diakopter ooo it worked
04:34 sorear +ooo/
04:35 diakopter maybe your isp detects when you get ops
04:35 sorear I think they just don't care
04:35 sorear it's not like they have competitors
04:35 sorear a far too common story in the US
04:36 TimToady maybe they think you're tweeting :)
04:36 diakopter US, the land of threat-of-force enforced geographic monopolies
04:36 sorear TimToady: I don't *think* they've banned twitter yet.
04:36 diakopter oh wait, that's everywhere.
04:37 sorear they have dropped usenet, though
04:37 * diakopter wonders what 'twit (v.)' once meant
04:38 diakopter oh.
04:38 sorear diakopter: onomatopoeia for birdsong
04:39 TimToady as in twitterpated :)
04:40 sorear hmm
04:41 sorear lots of shared substructure
04:41 * sorear can't read YAML
04:41 sorear what does .: mean?
04:42 TimToady key is actually '.'
04:42 TimToady it's just the ordered nodes
04:42 TimToady wanted a key name that couldn't be confused with the named keys
04:42 sorear ordered nodes?
04:42 TimToady array
04:43 sorear what if there's more than one?
04:43 TimToady there's only one ., but multiple entries are marked with -
04:43 sorear .: &1 !!perl/hash:VAST::statementlist .:
04:43 TiMBuS joined #perl6
04:43 sorear irssi--
04:43 sorear what does it mean if there's a .: directly under .:
04:44 TimToady I don't recall ever seeing that
04:44 TimToady oh wait, it's indented more?
04:44 sorear yes
04:44 TimToady it's the first entrie in the oute r.
04:44 sorear why isn't it - ?
04:45 * sorear thinks yaml is overcomplicated, wants a simpler unambiguous notation for object graphs
04:47 TimToady it's not too bad when you get used to it
04:50 * diakopter worried I don't see the ambiguity
04:52 sorear YAML is not unambiguous
04:52 sorear the obvious simpler representations are
04:52 sorear YAML's sin is complexity
04:53 sorear the YAML spec is 200 pages
04:53 sorear YAML has approximately the same expressive power as s-expressions
04:54 sorear I modified viv to use Data::Dumper but Data::Dumper handles not-tree-like data structures badly
04:55 sorear (by badly I mean not human readable)
04:55 TimToady yes, I was trying to switch gimme5 to using DD yesterday but it fails
04:55 TimToady utf8 problems
04:56 TimToady not that yaml isn't without its share of utf8 problems too
04:56 diakopter I don't know how DD would handle the cross-tree references
04:57 sorear TimToady: would changing the default output format of viv to --concise break anything?
04:57 sorear once I implement concise, of course :)
04:57 TimToady I don't know
04:58 TimToady nothing major that I'm aware of
04:58 * sorear makes viv output much more readable by piping it through sed 's/  /:   /g'
04:58 diakopter mberends' vill parses the yaml output
05:00 sorear Why do VAST nodes sometimes present in both numbers and names?
05:01 TimToady std: Str $toto
05:01 p6eval std 30654: OUTPUT«[31m===[0mSORRY![31m===[0m␤Bare type Str cannot declare $toto without a preceding scope declarator such as 'my' at /tmp/KG4sNTYATH line 1:␤------> [32mStr [33m⏏[31m$toto[0m␤    expecting any of:␤    bracketed infix␤  infix or meta-infix␤      statement modifier loop␤Parse
05:01 p6eval ..failed␤FAI…
05:02 diakopter std: sub Str foo () { };
05:02 TimToady so you can reconstruct it in original order, or by semantics
05:02 p6eval std 30654: OUTPUT«[31m===[0mSORRY![31m===[0m␤Malformed block at /tmp/2Cy6RwLkN1 line 1:␤------> [32msub Str [33m⏏[31mfoo () { };[0m␤    expecting any of:␤       block␤  routine_def␤        trait␤Parse failed␤FAILED 00:01 110m␤»
05:02 eternaleye (re concise form of VAST) maybe call it DEEP?
05:03 eternaleye That way we can say that the perl6 translator is DEEP and VAST
05:03 diakopter or DISTANT (or FAR)
05:05 eternaleye One of the reasons I like Perl(5|6) so much is that there's a culture of humor. C++, Java - their cultures are so _plain_. In Perl, the language designer makes puns and those who write reference books are incorrigible :D
05:05 JimmyZ s
05:05 diakopter std: our sub Str foo () { };
05:05 p6eval std 30654: OUTPUT«[31m===[0mSORRY![31m===[0m␤Malformed block at /tmp/KUwNY1wjPc line 1:␤------> [32mour sub Str [33m⏏[31mfoo () { };[0m␤    expecting any of:␤   block␤  routine_def␤        trait␤Parse failed␤FAILED 00:01 110m␤»
05:06 diakopter std: my sub Str foo () { };
05:06 p6eval std 30654: OUTPUT«[31m===[0mSORRY![31m===[0m␤Malformed block at /tmp/QAdAIYB8Ca line 1:␤------> [32mmy sub Str [33m⏏[31mfoo () { };[0m␤    expecting any of:␤    block␤  routine_def␤        trait␤Parse failed␤FAILED 00:01 110m␤»
05:06 eternaleye std: our Str sub foo () { };
05:06 p6eval std 30654: OUTPUT«ok 00:01 111m␤»
05:06 diakopter sigh
05:06 diakopter in one neural network; out the same.
05:07 eternaleye std: our sub foo (--> Str) { };
05:07 p6eval std 30654: OUTPUT«ok 00:01 111m␤»
05:07 isBEKaml joined #perl6
05:09 diakopter that much I remembered
05:09 diakopter having implemented it
05:11 TimToady well, the error is LTA
05:12 snarkyboojum joined #perl6
05:16 canolucas joined #perl6
05:21 canolucas left #perl6
05:32 sorear TimToady: so, Cursor Matches have the parcel-nature?
05:33 sorear unlike NQP Matches, which have only capture-nature
05:38 TimToady mmm, no, they're more like captures; parcels don't do Hash
05:40 sorear captures don't do putting-keys-in-order
05:50 TimToady they do if they're really Matches and have to be able to return .chunks  :)
05:53 snarkyboojum joined #perl6
05:53 sorear joined #perl6
05:57 sorear diakopter: I begin to beleive you
06:12 TimToady just so you don't finish believing him :)
06:23 JimmyZ std: my $a = 1; ++++$a = 5;
06:23 p6eval std 30654: OUTPUT«ok 00:01 112m␤»
06:24 JimmyZ rakudo: my $a = 1; ++++$a = 10; say $a;
06:24 p6eval rakudo 92508d: OUTPUT«10␤»
06:31 pugssvn r30655 | lwall++ | [STD] properly diagnose typename between routine declarator and sub name
06:40 JimmyZ nqp: my $a :=1; ++$a;
06:40 p6eval nqp:  ( no output )
06:40 JimmyZ nqp: my $a :=1; $a++;
06:40 p6eval nqp:  ( no output )
06:42 JimmyZ Where can I report NQP-rx bug?
06:48 orafu joined #perl6
06:48 sorear JimmyZ: it's still using the parrot tracket
06:48 sorear JimmyZ: also, a lot of things that look like bugs in nqp aren't
06:49 sorear nqp has a lot of the teco-nature - not really designed to be used by the public, so it's got a *lot* of rough edges, but it's simple and works well
06:50 TimToady std: sub Str foo () { };
06:50 {shade} joined #perl6
06:50 p6eval std 30654: OUTPUT«[31m===[0mSORRY![31m===[0m␤Malformed block at /tmp/HYebboMO6N line 1:␤------> [32msub Str [33m⏏[31mfoo () { };[0m␤    expecting any of:␤       block␤  routine_def␤        trait␤Parse failed␤FAILED 00:01 113m␤»
06:51 sorear JimmyZ: what's the nqp bug here?
06:52 sorear constants aren't.  FORTRAN lives on
06:52 JimmyZ nqp: my $a :=1; ++++$a;
06:52 p6eval nqp: OUTPUT«The opcode 'inc' (inc<0>) was not found. Check the type and number of the arguments␤current instr.: 'parrot;PCT;HLLCompiler;evalpmc' pc 987 (compilers/pct/src/PCT/HLLCompiler.pir:542)␤»
06:54 JimmyZ nqp: my $a := 1; $a++++; say($a)
06:54 p6eval nqp: OUTPUT«2␤»
06:54 JimmyZ rakudo: my $a = 1; $a++++; say($a)
06:54 p6eval rakudo 92508d: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 17864 (src/builtins/Junction.pir:393)␤»
06:55 JimmyZ sorear: mutil prefix or postfix ++/-- is wrong both in rakudo and nqp
07:04 sorear mutil?
07:04 TimToady std: sub Str foo () { };
07:04 p6eval std 30655: OUTPUT«[31m===[0mSORRY![31m===[0m␤Return type Str is not allowed between 'sub' and 'foo'; please put it:␤  after the (missing) scope declarator but before the 'sub',␤  within the signature following the '-->' marker, or␤  as the argument of a 'returns' trait after the signature. at
07:04 p6eval ../t…
07:05 JimmyZ rakudo: my $a = 1; ++++$a; say($a); # sorear: something like this
07:05 p6eval rakudo 92508d: OUTPUT«3␤»
07:06 JimmyZ multi
07:06 sorear I am not so sure; TimToady, is that a lvalue?
07:07 TimToady ++$a is an lvalue
07:08 TimToady std: our multi Str foo () { };
07:08 p6eval std 30655: OUTPUT«[31m===[0mSORRY![31m===[0m␤Return type Str is not allowed between 'multi' and 'foo'; please put it:␤  after the 'our' but before the 'multi',␤  within the signature following the '-->' marker, or␤  as the argument of a 'returns' trait after the signature. at /tmp/GLMKMrzc4s
07:08 p6eval ..lin…
07:38 molaf joined #perl6
07:46 nadim_ joined #perl6
07:48 meppl joined #perl6
08:01 sorear Would anyone kill me if I used UTF-8 line drawing characters in the output of --concise?
08:12 Gothmog_ depends on the locale, i assume ;)
08:18 mberends joined #perl6
08:19 iblechbot joined #perl6
08:28 Su-Shee joined #perl6
08:29 kel_ joined #perl6
08:39 sorear TimToady: $node->{"."} is a statementlist object?  WTF?
08:39 sorear I thought you said it was an array
08:39 sorear I'm completely confused
08:41 snarkyboojum_ joined #perl6
08:43 XaeroOne joined #perl6
08:43 sorear oh, I think I see
08:43 sorear "." is all children (array if needed)
08:43 sorear "foo" is all foo children (array if needed)
08:45 moritz_ good morning
08:45 phenny moritz_: 03:52Z <JimmyZ> tell moritz_ I sent a patch to RT #75114: Can't augment class Int
08:51 Gothmog_ joined #perl6
08:54 isBEKaml hello moritz_
08:55 moritz_ oh hai
08:57 k23z__ joined #perl6
08:59 * moritz_ updated u4x.perl6.org
09:00 * JimmyZ couldn't open it
09:00 Su-Shee "Forbidden"
09:02 isBEKaml moritz_: no index file?
09:04 isBEKaml moritz_: I noticed a small typo in render.pl just now. :21 s/pt/pts/
09:04 isBEKaml this won't copy the style.css to output directory
09:05 * sorear is loving 'use warnings FATAL => 'all'; use Carp::Always'
09:06 moritz_ isBEKaml: just noticed that, and fixed locally
09:06 pugssvn r30656 | moritz++ | [u4x] correct path, warn if copy failed
09:07 Su-Shee I've just read the single most mean spirited, angry blog posting ever. luckily, it's not the perl community. ;)
09:08 JimmyZ I cou
09:08 moritz_ http://u4x.perl6.org/control-flow.html
09:08 Su-Shee (we're so well off even with all the tension between 5 & 6... -> http://deepinanime.blogspot.com/2009/1​1/rails-is-ghetto-original-copy.html)
09:08 Su-Shee moritz_: works.
09:09 Su-Shee moritz_: displays content. words can be read. code can be seen.
09:12 isBEKaml moritz_: once this is all done, you can add the TPF message or licence notices at the bottom. I have left it off for the end, with a temporary place holder in green at the bottom. :)
09:14 moritz_ isBEKaml: can I put HTML into that message?
09:14 skangas joined #perl6
09:14 isBEKaml moritz_: I think not. You can add the message in style.css. body:after
09:19 moritz_ isBEKaml++
09:19 pugssvn r30657 | moritz++ | [u4x] license notice
09:19 pugssvn r30658 | moritz++ | [u4x] rename scripts/ to web/
09:23 isBEKaml moritz_: This is only the first cut. we still have some way to go. :)
09:23 sorear It turns out that writing a good pretty printer for VAST is Harder Than It Sounds.
09:26 mberends heh
09:28 moritz_ mberends++ # nice blog post about Rakudo performance measuring
09:28 sorear is planet dead?
09:28 sorear it thinks there's been nothing new in 5 days
09:34 isBEKaml moritz_: have you found out a way out of =begin|end tags in p6 pods?
09:35 sorear abbreviated blocks?
09:36 moritz_ isBEKaml: wanted to wait for feedback from masak++ before I remove them
09:36 moritz_ sorear: maybe just no new blog entry - that happens
09:36 sorear moritz_: where is mberends' blog and why isn't it on the planet?
09:38 moritz_ http://blogs.perl.org/users/martin_berends​/2010/05/measuring-rakudo-performance.html
09:38 isBEKaml moritz_: ok. Fixing up a minor typo and removing unnecessary style then.
09:39 pugssvn r30659 | svatsan++ | Fixed minor typo and clean up style
09:39 moritz_ mberends: I think you should divide the tags on your post with a comma
09:40 moritz_ mberends: otherwise movable type thinks it's one tag 'perl6 rakudo'
09:43 mberends will do, thanks moritz_
09:45 mberends .oO( also got some ideas about how to add some aggregate stats to the bottom the JSON layout )
09:45 xinming joined #perl6
09:46 moritz_ sorear: it seems that blogs.perl.org doesn't offer a feed by tag, so it's not easy for planetsix to import all 'perl6' tagged posts
10:15 mikehh joined #perl6
10:22 pugssvn r30660 | sorear++ | Draft of a concise printer for VAST.  The code is awful and it has memory
10:22 pugssvn r30660 | issues on large inputs, but it works and the output *is* about 50% shorter.
10:22 pugssvn r30660 | It could be improved a good amount with feedback on what AST attributes are
10:22 pugssvn r30660 | actually unneccessary.
10:23 moritz_ sorear, isBEKaml: it would be nice if you started commit messages to the pugs repo with a short [foo] marker so that people know what subsystem you're committing to
10:24 sorear ok
10:24 moritz_ in that case [viv] or so
10:24 isBEKaml ok
10:33 sorear after 10 minutes and 900 MB (but very good cache behavior - average CPU was 80%), ./viv -c STD.pm6 finished
10:33 sorear producing 600,000 lines of output
10:34 * sorear sees how to turn it into a streaming algorithm, which will help, but isn't important
10:35 sorear the only reason you'd feed STD.pm6 into viv, other than stress testing, is to convert it into some machine-usable format
10:36 sorear moritz_: who runs the perl6.org webserver?
10:36 sjohnson sorear: i think Su-Shee does
10:41 pmurias joined #perl6
10:54 JimmyZ joined #perl6
10:58 * moritz_
11:01 moritz_ sorear: anything you want to put up on perl6.org?
11:07 kaare joined #perl6
11:15 yahooooo joined #perl6
11:17 iblechbot joined #perl6
11:18 Nathariel joined #perl6
11:25 Su-Shee sjohnson: no, I don't.
11:34 wknight8111 joined #perl6
11:35 uniejo joined #perl6
11:36 colomon what can we do with enums at the moment?
11:37 * colomon is looking at the enum Order and wondering...
11:43 colomon enum Order (Increase => -1, Same => 0, Decrease => 1); say +Order::Increase
11:43 colomon rakudo: enum Order (Increase => -1, Same => 0, Decrease => 1); say +Order::Increase
11:43 p6eval rakudo 92508d: OUTPUT«Can not find sub Order::Increase␤current instr.: 'perl6;Perl6Exception;throw' pc 15350 (src/builtins/Associative.pir:46)␤»
11:43 colomon rakudo: enum Order (Increase => -1, Same => 0, Decrease => 1); say +Order::Increase
11:43 p6eval rakudo 92508d: OUTPUT«Can not find sub Order::Increase␤current instr.: 'perl6;Perl6Exception;throw' pc 15350 (src/builtins/Associative.pir:46)␤»
11:43 colomon rakudo: enum Order (Increase => -1, Same => 0, Decrease => 1); enum Order (Increase => -1, Same => 0, Decrease => 1); say +Order::Increase
11:43 p6eval rakudo 92508d: OUTPUT«Contextual $*PKGDECL not found␤current instr.: 'perl6;Perl6;Grammar;add_my_name' pc 42458 (src/gen/perl6-grammar.pir:131)␤»
11:44 * colomon is very confused.
11:44 colomon locally, I get an error the first time I try that in the REPL, then it works....
11:48 colomon and if I put it in Cool-str.pm, I get "Could not find sub !YOU_ARE_HERE"
11:48 moritz_ rakudo: enum A <b c d>; say c; say A::c
11:48 p6eval rakudo 92508d: OUTPUT«1␤Can not find sub A::c␤current instr.: 'perl6;Perl6Exception;throw' pc 15350 (src/builtins/Associative.pir:46)␤»
11:48 moritz_ the fully quallified form is NYI in rakudo
11:49 colomon fully qualified?
11:49 moritz_ A::c vs. just c
11:49 colomon > enum Order (Increase => -1, Same => 0, Decrease => 1); say +Order::Increase
11:49 colomon -1
11:49 colomon that's local, with stock Rakudo.
11:50 colomon and let me emphasize that I get the YOU_ARE_HERE error just defining Order, I took away all uses of it and it still happens.
11:51 sjohnson Su-Shee: oops :[
11:51 colomon actually, here's a fresh full REPL run:
11:51 colomon > enum Order (Increase => -1, Same => 0, Decrease => 1); say +Order::Increase
11:51 colomon Can not find sub Order::Increase
11:51 colomon > enum Order (Increase => -1, Same => 0, Decrease => 1); say +Order::Increase
11:51 colomon -1
11:51 colomon notice the two input lines are exactly the same.
11:51 colomon afk # must make pancakes for wife
11:52 moritz_ you don't even need to define the enum the second time
11:54 k23z__ joined #perl6
11:55 k23z__ joined #perl6
12:12 colomon moritz_++ # good call on defining.
12:13 moritz_ I CAN HAZ A PATCH
12:13 moritz_ I'm just not sure if it's a good one
12:18 lisppaste3 moritz_ pasted "Enum patch for colomon++" at http://paste.lisp.org/display/99301
12:18 moritz_ colomon: please try if this makes any difference for you defining an enum in the setting
12:18 moritz_ you can apply it with git am $filename
12:26 colomon back now
12:33 moritz_ it's kind of a shot in the dark, no idea if it's the right thing to do
12:35 Nathariel left #perl6
12:42 colomon > enum Order (Increase => -1, Same => 0, Decrease => 1); say +Order::Increase
12:42 colomon -1
12:42 colomon seems to work from REPL, which I'm guessing you already knew.
12:43 moritz_ yes
12:43 colomon (sorry, got distracted trying to figure out how to record a Newfoundland radio show tonight.  Radioshift++)
12:43 moritz_ no problem
12:44 colomon still get the Could not find sub !YOU_ARE_HERE error when I add the enum to the setting.
12:44 colomon maybe it should be "our"?
12:44 moritz_ it's "our" by default
12:44 colomon I'm thinking we should push you patch anyway, if it passes spectest -- it definitely seems to be an improvement.
12:45 colomon "our" does not help.
12:45 colomon any other notions?
12:49 * moritz_ takes a hard look at the enum code
12:49 colomon my $result := (pir::find_sub_not_null__ps('​!YOU_ARE_HERE'))($compiled);
12:49 colomon seems likely to be the line generating the error.
12:49 moritz_ where is sub !YOU_ARE_HERE defined?
12:50 moritz_ not... in the setting maybe?
12:50 colomon YOU_ARE_HERE.pm
12:50 moritz_ no wonder it can't be found
12:50 colomon it's at the very end of core, isn't it?
12:50 moritz_ right
12:50 moritz_ and the problem is ...
12:51 moritz_ if I understand correctly, that line executes the enum body in the context of the setting
12:51 moritz_ so
12:51 moritz_ by definition, an enum in the setting isn't going to work
12:52 moritz_ possible solution: do an ordinarly lookup of !YOU_ARE_HERE
12:52 moritz_ if it succeeds, we're in "ordinary" compilation phase
12:53 moritz_ if not, we're in the setting, and need to not use YOU_ARE_HERE
12:53 colomon sounds reasonable, I guess.
12:53 colomon I'm fuzzy on why YOU_ARE_HERE is involved at all in the first place.
12:54 moritz_ iiuc, it's the sub that executes code in the context of the setting
12:55 colomon so the point (here) is to execute $compiled in the context of the setting?
12:56 colomon and if we're in the setting, we want to execute it in the context of.... ?
12:56 moritz_ of the stage0 compiler
12:57 moritz_ ie just run it
12:57 moritz_ and don't have any access to the rest of the setting
12:58 colomon do you have an idea how to code that?
12:59 moritz_ I'm trying, but I'm getting "rtype not set" errors
12:59 colomon can you paste your code?
12:59 moritz_ just a sec...
13:00 moritz_ colomon: http://nopaste.snit.ch/20569
13:01 moritz_ ah
13:01 * moritz_ stupid
13:01 moritz_ I should actually use a named enum
13:01 colomon ?
13:02 moritz_ +my %h = enum  (Increase => -1, Same => 0, Decrease => 1);
13:02 moritz_ that's an anonymous enum
13:02 colomon which is a different section of code, yes?
13:02 moritz_ yes
13:02 moritz_ Actions.pm around line 1364, if $<name> { ... }
13:03 moritz_ need to make lunch now, will try to get back hacking after that
13:11 orafu joined #perl6
13:34 XaeroOne joined #perl6
13:42 moritz_ rakudo: Q:PIR { get_hll_global('YOU_ARE_HERE') }
13:42 p6eval rakudo 92508d: OUTPUT«The opcode 'get_hll_global' (get_hll_global<0>) was not found. Check the type and number of the arguments␤current instr.: 'perl6;PCT;HLLCompiler;evalpmc' pc 987 (compilers/pct/src/PCT/HLLCompiler.pir:542)␤»
13:43 moritz_ rakudo: my $s = Q:PIR { %r =  get_hll_global 'YOU_ARE_HERE' }; $s({ say "OH HAI" })
13:43 p6eval rakudo 92508d: OUTPUT«Null PMC access in can()␤current instr.: '&infix:<=>' pc 17523 (src/builtins/Junction.pir:205)␤»
13:43 moritz_ rakudo: my $s = Q:PIR { %r =  get_hll_global '!YOU_ARE_HERE' }; $s({ say "OH HAI" })
13:43 p6eval rakudo 92508d: OUTPUT«Method 'set_outer' not found for invocant of class 'Block'␤current instr.: '!YOU_ARE_HERE' pc 378031 (src/gen/core.pir:29492)␤»
13:43 moritz_ rakudo: my $s = Q:PIR { %r =  get_hll_global '!YOU_ARE_HERE' }; say "alive"; $s({ say "OH HAI" })
13:43 p6eval rakudo 92508d: OUTPUT«alive␤Method 'set_outer' not found for invocant of class 'Block'␤current instr.: '!YOU_ARE_HERE' pc 378031 (src/gen/core.pir:29492)␤»
13:44 snarkyboojum joined #perl6
13:44 colomon moritz_: how can __p work as pir?
13:44 colomon rtype is return type, maybe?
13:45 moritz_ I think "rtype not set" means I've tried to bind/assign to somthing that's not an rvalue
13:45 moritz_ erm
13:45 moritz_ not an lvalue
13:45 moritz_ or something
13:45 moritz_ no
13:46 colomon isnull__p   takes what and returns what?
13:46 moritz_ oh
13:47 moritz_ shouldbe just isnull()
13:47 moritz_ and find_sub seems to wrong
13:47 moritz_ I'm using get_hll_global now
13:48 slavik I figured out reflection in java ...
13:51 moritz_ colomon: we're in for trouble...
13:52 moritz_ colomon: I've kinda made my patch work... except that prefix:<-> and Pair.value are defined in the setting
13:53 moritz_ colomon: so there's no way to execute the enum outside the context of the setting :(
13:53 pugssvn r30661 | svatsan++ | [u4x] Added more styles towards u4x.perl6.org
13:53 colomon oh, noes.
13:54 moritz_ well
13:54 moritz_ we could work around that
13:54 moritz_ with getattribute
13:55 colomon afk for a few, but keep typing, I'll be back soon...
13:56 isBEKaml hi slavik
14:02 pmurias joined #perl6
14:02 rv2733 joined #perl6
14:05 snarkyboojum how do you do a negated character class in Perl 6?
14:06 colomon moritz_: did you mean prefix:<~> and Pair.key?
14:06 colomon or am I not seeing somewhere the code is being used?
14:06 colomon (or is that => -1 that is the problem?-
14:06 colomon )
14:07 snarkyboojum something like <-[blah]> ?
14:08 colomon yes
14:08 colomon (he says after a quick spec search...)
14:09 snarkyboojum colomon: thanks - maybe my eyes are too blurry, but I couldn't find it clearly in the spec :|
14:09 colomon "A leading - indicates a complemented character class"
14:09 colomon example is <-[a..z_]>
14:10 snarkyboojum colomon: doh, and then the tests show the way :) cheers.
14:10 colomon you had it right in the first place, you just didn't know you did....  :)
14:10 snarkyboojum colomon: must be something else I'm doing then :)
14:11 slavik hi isBEKaml
14:12 slavik perl's reflection > java's reflection
14:13 isBEKaml slavik: don't know. never tried perl's reflection, perl6' is more intuitive imo :)
14:13 slavik haven't tried that :P what does it look like?
14:13 slavik in Perl, they are just hashes ;)
14:13 isBEKaml slavik: object.WHAT, .HOW, .WHERE and so on.. :)
14:14 isBEKaml slavik: oh, you're referring to dispatch tables?? I never thought of them as reflection, specifically.
14:14 slavik aren't they part of reflection? as in: load this thing, find out what methods it has, call one of them.
14:15 isBEKaml slavik: that's the .HOW
14:17 isBEKaml slavik: if my reading of the spec is right, (S02?), it says that every class has a way of returning a metaclass instance that gives information about the class.
14:17 isBEKaml rakudo: say Str.HOW.methods(Str);
14:17 p6eval rakudo 92508d:
14:17 p6eval ..OUTPUT«IntpredlBoolsuccNumWHICHperlsStrACCEPTSd​efroundsqrtasinsplitcoshexpmatchacoshwordssigncot​anatan2lcfirstseccislogsamecasesprintfcapitalizes​inflipp5choplcsubstacosechacotanabschompindexceil​ingcotanhunpolarcombtrim-trailingatanordacosevalc​hoptanhatanhcoseccharsrootsucucfirsttansubstrl…
14:18 slavik ooh, nice
14:19 isBEKaml slavik: Still, p5's got it a lot simpler than java and p6 just made it more intuitive.
14:20 slavik I def agree :)
14:23 snarkyboojum or you can do a shortcut
14:24 snarkyboojum rakudo: say Str.^methods
14:24 p6eval rakudo 92508d:
14:24 p6eval ..OUTPUT«StrACCEPTSdefpredIntlBoolsuccNumsWHICHpe​rlrootsucfirstsamecasetanlog10coscapitalizebytesf​mtflipp5choplcasinhNumericacotanchrcotanhacotanhc​ombfloorasechatanacosroundevalchoptanhsplitexpmat​chacoshwordscotanatan2lcfirstucseccislogsubstrspr​intfsinacosecsubstsinhcosechacosechabschompind…
14:24 isBEKaml snarkyboojum++
14:24 isBEKaml I didn't know that...
14:25 snarkyboojum read it in one of jnthn++'s blog posts
14:25 isBEKaml link?
14:25 snarkyboojum rakudo: say Str.^methods(:local)
14:25 p6eval rakudo 92508d: OUTPUT«WHICHperlsStrACCEPT​SdefpredIntlBoolsuccNum␤»
14:26 snarkyboojum isBEKaml: will try and find it
14:27 moritz_ http://use.perl.org/~JonathanWorthington/journal/ somewhere there
14:28 snarkyboojum isBEKaml: http://use.perl.org/~Jonath​anWorthington/journal/39455
14:28 rgrau joined #perl6
14:28 isBEKaml snarkyboojum: danke! :)
14:29 moritz_ colomon: noway - enums are of type EnumMap, and that's defined in the setting
14:29 snarkyboojum isBEKaml: welcome!
14:29 colomon bother
14:29 colomon seems like a major issue there....
14:29 moritz_ colomon: so... either rewrite EnumMap in PIR
14:29 moritz_ or we need a two-stage setting
14:30 moritz_ or something entirely more clever
14:30 moritz_ rewriting EnumMap in PIR doesn't look that hard
14:32 moritz_ either way, I'd like to talk to pmichaud|jnthn first
14:33 dalek rakudo: 32150d5 | (Martin Berends)++ | src/Perl6/Module/Loader.pm:
14:33 dalek rakudo: [Perl6/Module/Loader.pm] when a 'use' or 'need' cannot find a module, just say
14:33 dalek rakudo: so and exit with doing an unnecessary stack trace.
14:33 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/3​2150d50edf77d5bbb32af03a9880a69eed10ef9
14:33 JimmyZ joined #perl6
14:34 lisppaste3 moritz_ pasted "enums in the setting - I got so far only" at http://paste.lisp.org/display/99307
14:34 moritz_ colomon: current state as a patch
14:35 pmichaud good morning, #perl6
14:35 moritz_ good morning pmichaud
14:36 mberends hello pmichaud
14:36 kfo_ joined #perl6
14:41 sorear hello pmichaud
14:41 sorear moritz_: Properly syntax-highlighted versions of STD.pm6 and the spectests
14:42 moritz_ sorear: so, what do you need? an account on the box?
14:43 sorear moritz_: Not sure.  I was thinking I could, maybe, get away with power of suggestion + fixing the syntax highlighter
14:43 moritz_ sorear: I prefer actions to suggestions :-)
14:44 moritz_ I'm running far too much for the Perl 6 infrastructure alone, and would welcome anybody to take up responsibility for some corners
14:46 sorear well, then, sure, an account on the box would be a fine solution.  what other responsibilities on the box do you need releived?
14:47 moritz_ install a security update now and then (Debian)
14:47 moritz_ add a virtual host when somebody needs it
14:51 moritz_ sorear: welcome to feather2; most web stuff runs under my user account currently, so feel free to do  sudo su - moritz
14:51 moritz_ sorear: I plan to migrate each web presence to a separate UNIX user though
14:52 moritz_ so one for perl6.org, one for proto.perl6.org etc.
14:55 plobsing joined #perl6
14:56 sorear I don't know why, but there's something very pleasing about having ps -e fit on one screen
14:58 colomon moritz_: sorry to disappear on you there, was watching a video with my boy, and didn't have the second screen hooked up to the laptop.
14:58 sorear woah, only 1.2GB used?
14:58 sorear moritz_: do you have any tips for setting up small system images?
14:58 colomon moritz_: do you think that patch is worthwhile, or a dead end?
14:58 sorear the FreeBSD 7 image I'm using for portability testing is a manual "minimum full development system" and it's >4G
14:58 moritz_ colomon: that depends on the way forward... converting EnumMap to PIR *might* be a viable option
14:59 moritz_ sorear: something like grml? or DamnSmallLinux?
14:59 moritz_ sorear: but I don't really know... I avoid sysadmin tasks if possible :-)
15:00 masonkramer joined #perl6
15:09 justatheory joined #perl6
15:13 sorear pmichaud: any updates on topic/lexical-persistence-2?
15:14 pmichaud sorear: still catching up on other backlogged items, sorry
15:14 sorear no problem
15:14 pmichaud I have another task you could potentially work on, since you're a bit familiar with HLL::Compiler now... :-)
15:14 rgrau joined #perl6
15:15 pmichaud I'd really like to see --target=pbc work.
15:18 pmichaud according to jnthn++, all we really have to do is print the resulting Eval PMC object to a file.
15:18 pmichaud the only "tricky" part is getting 'pbc' into the targets list properly
15:18 pmichaud (and it's not really that tricky)
15:18 sorear I think I could pull that off
15:18 sorear It would involve making stages something more than a simple list
15:18 sorear more of a DAG
15:19 pmichaud well, it's often been my intention that stages should be a dag
15:19 pmichaud just never got around to it
15:19 sorear actually, a tree - a stage can't have >1 predeccessor
15:19 pmichaud oh, I suspect it could
15:20 pmichaud but I'm not necessarily asking for a long solution in this case, I'd be willing to live with a shortcut :-)
15:20 pmichaud we could do it with the existing linear stage by just adding a 'pbc' stage and having it do nothing if target != 'pbc'
15:21 pmichaud there's also a fair bit of leeway for changes here -- the PCT staging mechanism is already deprecated in Parrot so that we can change it as needed
15:21 pmichaud (indeed, I deprecated it precisely because I wanted to do something a bit different)
15:22 sorear I'll have to fix my code that relies on it then
15:22 pmichaud anyway, we could simplify a lot of build scripts if --target=pbc were added somehow
15:22 pmichaud and that's a project I'm not likely to get to anytime soon, myself
15:25 moritz_ pmichaud: how are context sensitive PAST nodes coming?
15:26 sorear pmichaud: Why does PCT::HLLCompiler bail in a test harness?
15:26 sorear Also, it doesn't work.  prove -e parrot-nqp works fie.
15:27 cognominal hi, what is environmenet variable specifying where to search PBCs in parrot?
15:27 sorear LD_LIBRARY_PATH
15:27 sorear erm
15:27 sorear probably not
15:28 cognominal will try it
15:28 pmichaud sorear: I don't understand "bail in a test harness"
15:29 pmichaud cognominal: I'm not sure that there is an environment variable for searching PBCs.
15:29 pmichaud there is an option to parrot for it, however.
15:29 sorear pmichaud: PCT/HLLCompilir.pir +806
15:29 cognominal that's ok
15:29 pmichaud moritz_: I'm just blocking on time -- few things going on around the house.   I also have to figure out what to call the nodes.   PAST::???
15:30 moritz_ ContextCond?
15:31 pmichaud sorear: oh, *that*
15:31 dalek nqp-rx: 4e9b9f4 | pmichaud++ | build/gen_setting.pl:
15:31 dalek nqp-rx: Add "#! nqp" marker and generation note to beginning of nqp-setting.nqp .
15:31 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/4​e9b9f4de0bd85eff170fc9f6f59a842d9365755
15:31 dalek nqp-rx: e76a952 | pmichaud++ | build/Makefile.in:
15:31 dalek nqp-rx: Rename nqp-setting.pm to nqp-setting.nqp .
15:31 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/e​76a95255068a8c37da718e3bde7b54fdfc46ef9
15:31 dalek nqp-rx: 3397f77 | pmichaud++ | src/stage0/ (4 files):
15:31 dalek nqp-rx: Update bootstrap.
15:31 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/3​397f77ce373cd541469aff3bf9d9921c77688e8
15:31 dalek nqp-rx: 44e68e4 | pmichaud++ |  (2 files):
15:31 dalek nqp-rx: More cleaning up for nqp-setting.pm -> nqp-setting.nqp .
15:31 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/4​4e68e428ca138d51863b024b7d2d9095f5e5f3c
15:31 dalek nqp-rx: 136d1b6 | pmichaud++ | src/stage0/ (3 files):
15:31 dalek nqp-rx: Update bootstrap.
15:31 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/1​36d1b6c190993bbd514e1f0c5dc4f7afd03a6be
15:31 pugssvn r30662 | svatsan++ | [u4x docs] Clean up [code] style and remove new line trouble in glossary
15:32 pmichaud earlier versions of p5's Test::Harness (i.e., 2.64)  have this nasty habit of always passing a command line option to the underlying program to set @INC
15:32 isBEKaml moritz_: I have added necessary styles. Please try that out and let me know if you need more. I'm open to suggestions. :)
15:32 pmichaud and, of course, the hll programs have no clue what to do with that option
15:33 pmichaud (because these other languages don't have an @INC)
15:33 pmichaud so, we put in the workaround to always ignore that option for now.
15:33 pmichaud I can update the note to indicate that it's 2.64 and earlier that gives the problem
15:36 moritz_ isBEKaml: looks nice, thanks
15:37 pmichaud oh, I remember now.
15:38 pmichaud Test::Harness wanted to know the underlying interpreter's idea of @INC, so it would run the interpreter once asking for @INC before it actually ran the test script.
15:38 pmichaud that works if your underlying interpreter is Perl 5, but fails miserably otherwise
15:44 pmichaud moritz_: I plan to add the context-sensitive past nodes today sometime.  Have some errands to run over the next 2-3 hours, but the remainder of the day after that is open for hacking (afaik)
15:45 moritz_ pmichaud: great. If tehre's anything I can do to help you, feel free to ask
15:46 moritz_ (except when it's writing English that's free of spelling errors :-)
15:47 pmichaud moritz_: there are days when I could really use some help with that aslo.
15:48 moritz_ :-)
15:50 agentzh joined #perl6
15:50 sorear 3.02: - Made @INC propagation more compatible with 2.64.  Was breaking Parrot's test suite.
15:52 snarkyboojum joined #perl6
15:54 patrickas joined #perl6
16:00 japhb joined #perl6
16:01 sorear # Avoid using -l for the benefit of Perl 6
16:03 xomas_ joined #perl6
16:06 sorear it seems as though 'modern' versions of Test::Harness don't run the program named in -e to get @INC
16:06 sorear I'm currently trying to quantify 'modern'
16:10 am0c joined #perl6
16:17 moritz_ rakudo: say 2 !eq 2
16:17 p6eval rakudo 32150d: OUTPUT«0␤»
16:17 pmichaud sorear: yes, but there are a few distributions out there that still come bundled with 2.64.
16:17 pmichaud Ubuntu 9.10, for example, comes with 2.64.
16:18 pmichaud So, I suspect it'll be a while before we can avoid the need for the workaround.
16:18 pmichaud afk for a while, errands
16:21 isBEKaml moritz_: I'm bad with imaging. So didn't add images into the web pages. Plus, you could still turn this fledgling stuff into this week's task. Consolidate the converted pages into a single page for navigation. Bonus points using perl. :)
16:21 isBEKaml moritz_: I'm thinking of templating. How hard is it in perl?
16:21 moritz_ isBEKaml: not hard at all
16:22 moritz_ isBEKaml: http://search.cpan.org/~samtrega​r/HTML-Template-2.9/Template.pm that's what I've used for proto.perl6.org
16:23 isBEKaml moritz_: wow, nice. I don't know how, the first thing that came to mind was TT. Was that for the web?
16:23 moritz_ TT is an alternative
16:23 moritz_ but IMHO we don't need a Turing complete templating language for something that simple
16:26 isBEKaml moritz_: hmm, I could learn about HTML::Template and try it out locally. :)
16:33 moritz_ rakudo: say 'aa' leg 'a'
16:33 p6eval rakudo 32150d: OUTPUT«1␤»
16:33 moritz_ rakudo: say 'a' lt 'aa'
16:33 p6eval rakudo 32150d: OUTPUT«1␤»
16:43 slavik leg?
16:43 moritz_ less-than, equal, greater
16:43 slavik <=> ???
16:44 moritz_ yes
16:44 moritz_ but for strings
16:44 slavik why not cmp?
16:44 moritz_ because cmp is now a more generic comparison
16:44 slavik oh, I see
16:44 sorear moritz_: how do you spell the generic boolean relationals?
16:45 moritz_ which relationals?
16:45 dalek book: f9eeb51 | moritz++ | src/operators.pod:
16:45 dalek book: [ops] string comparison
16:45 dalek book: review: http://github.com/perl6/book/commit/f9​eeb51cd6f516dbfdabdc7429c7539f26284295
16:53 patrickas std:'test'.match(/(\W & <-[\.]>)/);
16:53 moritz_ std: 'test'.match(/(\W & <-[\.]>)/);
16:53 p6eval std 30662: OUTPUT«ok 00:01 115m␤»
16:55 patrickas thanks :-)
16:55 patrickas rakudo: 'test'.match(/(\W & <-[\.]>)/);
16:55 p6eval rakudo 32150d: OUTPUT«Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 11␤current instr.: 'perl6;Regex;Cursor;FAILGOAL' pc 1696 (ext/nqp-rx/src/stage0/Regex-s0.pir:932)␤»
16:55 moritz_ rakudo: / a & b/
16:55 p6eval rakudo 32150d: OUTPUT«Confused at line 11, near "/ a & b/"␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
16:57 patrickas rakudo: / a \& b/
16:57 p6eval rakudo 32150d:  ( no output )
16:57 isBEKaml what does the <-[\. ]> mean? not all these characters between [ ] ?
16:57 moritz_ "any character except the dot"
16:57 isBEKaml and the space.
16:58 isBEKaml [^\. ] ?
16:58 moritz_ I don't think whitespace is significant in character classes
16:58 patrickas actually this is taken straight from http://github.com/carlins/http-cli​ent/blob/master/lib/HTTP/Client.pm
16:58 moritz_ neither is the dot, so no reason to escape it
16:58 isBEKaml aren't all characters in square brackets taken literally? we don't need to escape regex spl characters right?
16:59 moritz_ isBEKaml: unless you want to put a ] into a char class...
16:59 patrickas I could not get the module it to work using rakudo so I wated to mae sure if it was a rakudo bug or a HTTP::Client bug
16:59 moritz_ alpha: / a & b /
16:59 p6eval alpha 30e0ed:  ( no output )
16:59 * moritz_ wonders if alpha actually implemented it
17:00 patrickas that was a messed up sentence I typed!
17:00 moritz_ alpha: for <a b 0> { say $_, ?($_ ~~ /a & \w/) }
17:00 p6eval alpha 30e0ed: OUTPUT«a1␤b0␤00␤»
17:00 moritz_ seems it did
17:00 pmichaud the characters -, ], and whitespace have to be escaped
17:00 moritz_ and - just for catching Perl 5 errors, right?
17:00 pmichaud correct.
17:00 isBEKaml - ? range operator?
17:00 isBEKaml A-Za-z
17:01 pmichaud the range operator is ..
17:01 moritz_ notaynmore range operator
17:02 pmichaud A..Za..z
17:02 pmichaud of course, you really want to be using <?alpha>  :-P
17:03 isBEKaml if that's not the case, i'd go with POSIXy :alpha:
17:03 pmichaud that doesn't exist in p6
17:03 pmichaud more to the point, the way to write :alpha:   is <alpha>  :-P
17:04 pmichaud oh, and backslash has to be escaped :-)
17:04 isBEKaml So, p6 isn't POSIX compliant. :P
17:05 moritz_ if you want POSIX, use C :-)
17:05 isBEKaml I don't use C a lot these days. Still many languages are stuck in a PCRE limbo. :)
17:05 arnsholt IIRC <alpha> is anything defined by Unicode as an alpha
17:06 arnsholt Which I'd argue is the correct semantics =)
17:07 sorear isBEKaml: perl 6 regexes are a complete redesign, they have no compatibility whatsoever with POSIX regexes
17:07 sorear though, perl 6 will probably support rx:POSIX// at some point
17:07 sorear by analogy with rx:P5//
17:08 isBEKaml sorear: I got that. I was referring to other languages stuck with PCRE regex implementations while P6 is pushing the envelope without looking to maintain status quo. :)
17:09 isBEKaml Really, you want to be starting afresh...
17:10 pmichaud okay, really afk now
17:10 isBEKaml Does this still work? [^{list of characters to avoid}] ?
17:11 sorear no
17:11 sorear you want <-[aeiou]>
17:13 isBEKaml rakudo: for <1 b 0 -> { say "$_ +" ~ ?($_ ~~ /<alpha>/) }
17:13 p6eval rakudo 32150d: OUTPUT«1 +0␤b +1␤0 +0␤- +0␤»
17:14 isBEKaml hm, not bad..
17:14 isBEKaml we don't need to mark special character cases for unicode classes, right?
17:16 isBEKaml Doesn't seem to be needed, I guess. Case in point: \s matches even unicode white space character.
17:18 isBEKaml rakudo: for <1 b 0 -> { say "$_ +" ~ ?($_ ~~ /<-[<alpha>]>/) }
17:18 p6eval rakudo 32150d: OUTPUT«1 +1␤b +1␤0 +1␤- +1␤»
17:22 justatheory joined #perl6
17:26 sorear TimToady: [viv] Why did you choose to make the default emit_p5 behavior for leaf nodes unaltered passthrough instead of carping?
17:26 slavik joined #perl6
17:32 pugssvn r30663 | sorear++ | [viv] package_def needs to strip adverbs
17:33 * isBEKaml gonna hit the bed. have a good one, #perl6!
17:34 iblechbot joined #perl6
17:38 _buno_ joined #perl6
17:39 pmurias joined #perl6
18:18 pugssvn r30664 | sorear++ | [viv] Handle nested packages, packages with curlies
18:30 sorear TimToady: Why does gimme5 use YAML?
18:31 sorear .u 23cf
18:31 phenny U+23CF EJECT SYMBOL (⏏)
18:34 Jedai joined #perl6
18:37 pmurias sorear: what should it use instead of YAML?
18:39 sorear pmurias: that's not the question
18:39 sorear why is gimme5 sending data structures *at all*
18:41 [circuitbreaker] joined #perl6
18:41 pmurias it uses the data structure for LTM
18:41 sorear how?
18:42 pmurias it keeps the AST of the rule so that it can calculate the lexers
18:42 pmurias my knowledge how it does that is outdated and incomplete so i would have to look at the source again to tell you more
18:47 pmurias sorear: the stuff in lex/ is generated at run time
18:52 sorear How does the stash concept work?  It seems as though even lexpads are stashes.
18:55 pmurias STD seems to use for looking up variable/function/... names
18:55 pmurias s/use/use them/
18:56 pmurias and both lex pads and packages store them
19:15 sorear what's xact?
19:26 moritz_ "exact"?
19:30 dalek rakudo: 87e0e1b | moritz++ | src/Perl6/Actions.pm:
19:30 dalek rakudo: enable calling a fully qualified enum key
19:30 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8​7e0e1babad36010d1ab9cba88f8b49a8ff1f629
20:05 Su-Shee in terms of programming language design - what are "true iterators"?
20:14 patrickas rakudo: say (map { .WHAT } , ("foo"=> "bar" , "bas"=>"qux" ));
20:14 p6eval rakudo 32150d: OUTPUT«Pair()Pair()␤»
20:14 patrickas rakudo: say (map { .WHAT } , {"foo"=> "bar" , "bas"=>"qux" });
20:14 p6eval rakudo 32150d: OUTPUT«Hash()␤»
20:15 patrickas is that by design ? or is it a bug ?
20:15 g00s joined #perl6
20:17 patrickas rakudo: my %h = ("foo"=> "bar" , "bas"=>"qux" );say (map { .WHAT } , %h);
20:17 p6eval rakudo 32150d: OUTPUT«Hash()␤»
20:18 Heame joined #perl6
20:19 Heame left #perl6
20:31 sorear pmichaud: TimToady: diakopter: If type constraints in Perl6-subsets are just constraints, not coercions, then how does Callable[:(Int, Int --> Int)] avoid Rice?
20:33 lue Saluton!
20:34 lue Just wondering: how's it going on importing libraries from other languages?
20:38 sorear mildew and rakudo support is
20:48 g00s left #perl6
20:49 molaf joined #perl6
21:02 quietfanatic joined #perl6
21:11 jnthn sorear: Rioe?
21:11 jnthn *Rice?
21:16 patrickas i understand "slurp" is now a built in in perl6, is the opposite also built in?
21:18 jnthn patrickas: I don't think so.
21:18 jnthn .oO( is the opposite going to be called "spit"? )
21:18 bkeeler spew
21:18 patrickas jnthn: thnx, i usually use spew
21:18 bkeeler which I saw was added to nqp as a builtin
21:18 jnthn lol
21:19 jnthn That's...disgusting, but so is spit.
21:20 mathw "Eeeww".spew($filehandle);
21:21 patrickas filehandle or filename ?
21:21 Su-Shee well throwing errors isn't really much more pleasant ;)
21:21 mathw patrickas: well you could do either of course :)
21:21 mathw but you probably shouldn't
21:21 mathw Su-Shee: yes maybe we should replace 'die' with 'puke'
21:21 masak joined #perl6
21:21 masak loliminmoscow!
21:21 phenny masak: 15 May 10:06Z <moritz_> ask masak if there's any tool that used the =begin glossary marker in docs/u4x/documentation - if not I'd like to remove it, because then it happens to be valid perl 5 POD, and easier for me to process :-)
21:22 masak moritz_: no, no tool. feel free.
21:22 Su-Shee finally a real do what I mean and say what I really think language!
21:22 patrickas mathw: the whole point is not to bother opeining files and working with filehandles for quick one lineers
21:22 bkeeler Heyas comrade masak!
21:22 masak bkeeler: privet.
21:24 jnthn masak!!
21:24 masak jnthn!!1
21:24 jnthn masak: Did any bushes greet you in Moscow yet?
21:25 bkeeler privet bushes in particular?
21:25 jnthn Those are privet hedges.
21:25 jnthn ;-)
21:25 jnthn masak: How is it?
21:25 bkeeler Never throw the letter "Q" into a privet bush
21:25 masak I'm still thinking about those privet bushes...
21:25 masak ;)
21:26 jnthn :-)
21:26 masak it's good. the subway was quite OK. the room could fit five of me.
21:26 jnthn Ain't the subway stations majestic? :-)
21:26 masak I mean, it could sleep five of me. comfortably.
21:26 masak (it's big)
21:26 jnthn Wow.
21:26 jnthn That's a nice thing.
21:27 * jnthn also had a quite big one too
21:27 masak as journeys go, the trip here was uneventful.
21:27 masak but they made sure to scrub me hard at the passport control.
21:28 jnthn ?
21:28 masak well,
21:28 masak first I was in this line to the actual passport control.
21:28 jnthn Odd, they just look at me boredly, stamp my visa and I'm done. :-/
21:28 masak that took an hour. quite a bottleneck, that passport control.
21:28 jnthn Ouch. :-(
21:28 jnthn Depends how many other flights are coming in at the same time I guess.
21:28 masak and when I finally got to the counter, it turned out I was missing a form.
21:28 patrickas since the channel is alive again I will re ask my earlier question :-)
21:29 patrickas rakudo: my %h = ("foo"=> "bar" , "bas"=>"qux" );say (map { .WHAT } , %h);
21:29 jnthn masak: Oh?
21:29 p6eval rakudo 87e0e1: OUTPUT«Hash()␤»
21:29 jnthn masak: Ouch...they didn't give them out on the plane?
21:29 masak jnthn: yah, a "migration form". they didn't give me one.
21:29 patrickas is that expected ? or should there be two Pairs() ?
21:29 jnthn masak: Oh :-(
21:29 masak that would have been a good idea, though.
21:29 jnthn masak: Well, yeah, every time I've flown they have done that. :-|
21:29 * jnthn is a tad mystified that they didn't. :-(
21:30 pmichaud hello, all
21:30 masak so I had to fill it out, and get in line again.
21:30 bkeeler Heyas pmichaud
21:30 jnthn That sucks.
21:30 masak hi, pmichaud
21:30 jnthn hi pmichaud!
21:30 masak and then I got scowled at, in Russian, for not filling in the form properly ;)
21:30 jnthn ...grr.
21:30 masak oh well.
21:30 jnthn Russian scowls are quite unique, huh. :-)
21:30 masak I'm here now. \o/
21:30 jnthn \o/
21:30 jnthn Did you have any борщ yet? :-)
21:31 masak no, but good idea for tomorrow.
21:31 * jnthn figures that's more likely than водка
21:31 masak da.
21:31 masak today, the cafes had closed when I got to the hotel.
21:31 jnthn :-(
21:31 jnthn You find something to nom on anyways?
21:31 masak so I'm currently eating some funny spongy thing and drinking yoghurt :)
21:32 jnthn :-)
21:32 * jnthn recommends finding some proper борщ tomorrow. With сметана. :-)
21:33 masak mmmm.
21:33 masak I will.
21:33 jnthn Indeed. :-)
21:33 pmichaud patrickas: it's a bug in rakudo at the moment -- hashes don't flatten properly in list context
21:33 bkeeler Try some птичье молоко
21:33 pmichaud at least, I *think* that's the case.
21:34 masak bkeeler: pigeon milk?
21:34 jnthn bkeeler: wtf?
21:34 jnthn :-)
21:34 * jnthn googles...
21:34 bkeeler http://en.wikipedia.org/wiki/Ptasie_mleczko
21:34 jnthn oh
21:34 patrickas pmichaud: thanks. I am finding many rough edges trying my first perl6 program so expect lots of noob questions
21:35 jnthn Yes, that looks rather more appertizing than...pigeon.
21:35 jnthn Literal translation FTF.
21:35 bkeeler hehe
21:36 quietfanatic Hm.  Now that 'undef' is gone, how do I smartmatch undefined things?
21:36 jnthn Nice etymology too!
21:36 jnthn Cute. :-)
21:36 quietfanatic $val ~~ Mu matches everything
21:36 pmichaud quietfanatic: $val ~~ .notdef   # iirc
21:36 lue olol masak! [compiling blender, not paying attention]
21:36 quietfanatic That's defined things though, not undefined things...
21:37 pmichaud I don't understand the question, then.
21:37 quietfanatic Hm.
21:37 masak today's aphorism: 'Если смотреть трезво на вещи, то невольно хочется выпить.'
21:37 quietfanatic Wait no it isn't
21:37 quietfanatic just a sec
21:37 masak 'Looking at things soberly, one cannot help wanting to drink.'
21:37 masak no, .notdef went away.
21:37 quietfanatic rakudo: say (3 ~~ .notdef)
21:37 p6eval rakudo 87e0e1: OUTPUT«1␤»
21:37 quietfanatic rakudo: say (Int ~~ .notdef)
21:37 p6eval rakudo 87e0e1: OUTPUT«1␤»
21:38 quietfanatic seems to always return true.
21:38 masak but Rakudo still implements it :)
21:38 quietfanatic rakudo: say (.notdef)
21:38 p6eval rakudo 87e0e1: OUTPUT«1␤»
21:38 pmichaud what took .notdef's place, if anything?
21:38 quietfanatic Yeah, I don't think $x ~~ .method_call works that way, does it?
21:38 quietfanatic It's call the method on $_
21:38 quietfanatic *It'd
21:38 jnthn masak: I likes that one. :-)
21:38 masak pmichaud: um. don't recall.
21:38 pmichaud at one point, ~~ .methodcall  would invoke the method on the left argument
21:38 masak jnthn: thought you might :)
21:39 Sarten-X joined #perl6
21:39 pmichaud I don't know if that's still true -- apparently some things have changed recently.
21:39 masak it's still true.
21:39 quietfanatic Basically my question is, I used to have 'if $thing ~~ undef | /regex/'
21:39 jnthn pmichaud: It should do that.
21:39 masak but .notdef is gone from spec.
21:39 jnthn pmichaud: It did in alpha.
21:39 quietfanatic How do I do that now?
21:39 pmichaud Any       .foo      method truth            ?X       i.e. ?.foo
21:39 jnthn pmichaud: Didn't get the syntactic cases of smarthmatch added back yet though.
21:40 lue maybe if $thing ~~ Mu
21:40 pmichaud $thing is always Mu, though
21:40 quietfanatic Everything ~~ Mu
21:40 pmichaud that's a type check, not a definedness check
21:40 lue Ah.
21:40 pmichaud maybe   $thing !~ .defined
21:40 jnthn !~~
21:40 jnthn Yeah
21:40 jnthn I think there's another way though
21:40 quietfanatic But then it doesn't junction with my regex.
21:40 jnthn that works out well in given/when cases
21:40 * jnthn tries to remember
21:41 masak oh wait. seems .notdef is very much still in the spec. :/
21:41 masak S32/Basics.
21:41 quietfanatic Any:U doesn't parse.
21:41 jnthn oh
21:41 jnthn Any       !.defined     undefined               not .defined
21:41 jnthn (from S03)
21:41 jnthn std: "blah" ~~ !.defined
21:41 p6eval std 30664: OUTPUT«ok 00:01 115m␤»
21:41 pmichaud I'm not sure how to handle !.defined
21:41 jnthn rakudo: "blah" ~~ !.defined
21:41 p6eval rakudo 87e0e1:  ( no output )
21:41 pmichaud we do that... syntactically?
21:41 jnthn ...I...have no idea.
21:41 quietfanatic How on earth does that work?
21:42 jnthn oh
21:42 jnthn pmichaud: It is in the syntactic section of S03.
21:42 jnthn The first section contains privileged syntax; if a match can be done
21:42 jnthn via one of those entries, it will be.   These special syntaxes are
21:42 jnthn dispatched by their form rather than their type.
21:42 jnthn And it's in that first section.
21:42 jnthn So I guess it's...uglily syntactic.
21:43 pmichaud what about something like   $x ~~ .foo * 2
21:43 quietfanatic But that requires special syntax.  I'm guessing I can't do $x ~~ !.defined | /regex/ with that.
21:43 pmichaud is .foo referring to $x or to the outer $_ ?
21:43 pmichaud because the rhs isn't .foo, it's (.foo * 2)
21:43 jnthn pmichaud: I suspect $_ then... :-/
21:44 jnthn pmichaud: Which is I guess why I find making !.foo work a bit ugly.
21:44 pmichaud I find it all a bit ugly, tbh
21:44 jnthn pmichaud: I can't see anything in S03 that calls out ~~ .foo * 2 being special.
21:44 pmichaud right
21:44 masak so... we have both .notdef and !.defined ...?
21:44 jnthn I wasn't a fan of .notdef, but I'm even less of a fan of this way.
21:44 pmichaud so it's kind of weird that !.foo would be special
21:44 quietfanatic rakudo: class Undefined { method ^ACCEPTS ($thing) {!$thing.defined} }; say 3 ~~ Undefined; say Int ~~ Undefined;
21:44 p6eval rakudo 87e0e1: OUTPUT«0␤0␤»
21:45 quietfanatic rakudo: class Undefined { method ACCEPTS ($thing) {!$thing.defined} }; say 3 ~~ Undefined.new; say Int ~~ Undefined.new;
21:45 p6eval rakudo 87e0e1: OUTPUT«0␤1␤»
21:45 pmichaud I mean, ~.foo and +.foo and ?.foo aren't special
21:45 quietfanatic There we go :D
21:45 jnthn pmichaud: Aye.
21:45 masak quietfanatic: !
21:45 * pmichaud shuts his eyes and hopes the !.defined thing magically goes away
21:46 masak things have disappeared before at the blink of an eye :P
21:46 quietfanatic rakudo: class Undefined { method ACCEPTS ($thing) {!$thing.defined} }; say 3 ~~ Undefined.new | 3
21:46 p6eval rakudo 87e0e1: OUTPUT«1␤»
21:46 pmichaud either that, or that we decide that ~~ rebinds $_ for its rhs operand
21:46 diakopter rakudo: say !(.defined)
21:46 p6eval rakudo 87e0e1: OUTPUT«1␤»
21:46 pmichaud (whatever it may be)
21:46 quietfanatic rakudo: say 3 ~~ :!defined
21:46 p6eval rakudo 87e0e1: OUTPUT«0␤»
21:46 quietfanatic rakudo: say Int ~~ :!defined
21:46 p6eval rakudo 87e0e1: OUTPUT«1␤»
21:46 quietfanatic Found it.
21:47 jnthn oh, cute.
21:47 pmichaud i.e.,   thunkify the rhs operand
21:47 quietfanatic using :pair syntax, which transforms into a method call
21:47 jnthn :-)
21:47 jnthn quietfanatic++
21:47 pmichaud oh, I like that
21:47 quietfanatic I suppose it was intended for filetests.  I.E. file ~~ :e
21:47 pmichaud I like that so much I want to get rid of .defined :-)
21:47 * masak takes a shower
21:47 pmichaud and just use :defined  instead
21:47 jnthn OK, with that in mind...let's kill kill kill !.defined
21:47 jnthn ;-)
21:47 quietfanatic rakudo: say 3 ~~ :!defined | 3
21:47 p6eval rakudo 87e0e1: OUTPUT«1␤»
21:48 jnthn pmichaud: :defined desugars to a call to .defined, fwiw
21:48 masak huh. there's a tub. it's right there, next to the bidet. didn't notice it before. :)
21:48 jnthn masak: Wow. You *do* have a nice room. :-)
21:48 quietfanatic It's equivalent to -> {.defined == 1}
21:48 diakopter masak: LOL
21:49 quietfanatic or -> {.defined == 0} if you have a !
21:49 pmichaud jnthn: oh.
21:49 pmichaud so that's syntactic also?
21:49 jnthn pmichaud: Gah, I mis-spoke
21:49 jnthn pmichaud: No, it calls Pair.ACCEPTS
21:49 quietfanatic (I may be misusing that -> though)
21:49 pmichaud right
21:49 jnthn pmichaud: Which then in turn calls .defined
21:49 pmichaud right
21:49 pmichaud oh
21:49 pmichaud so it only worked for .defined
21:49 pmichaud or no?
21:49 jnthn pmichaud: No, it works for any method
21:49 quietfanatic It works for anything
21:50 pmichaud right
21:50 pmichaud so we could get rid of the icky .defined syntax and substitute pair syntax?
21:50 quietfanatic rakudo: 5 ~~ :say
21:50 p6eval rakudo 87e0e1: OUTPUT«5␤»
21:50 jnthn pmichaud: You mean, remove the smart-match syntactic special cases?
21:50 pmichaud not all of them, just that one
21:50 jnthn pmichaud: Or at least the .foo one?
21:50 jnthn Ah, OK
21:50 jnthn I think we could
21:50 jnthn I don't mind that one too much though
21:51 jnthn It's the !.defined that gives me the really uneasy feeling.
21:51 pmichaud because it really bugs me that    $X ~~ .foo * 2    doesn't do the same as   given $X { when .foo * 2 { true }; false }
21:51 jnthn Oh, ouch.
21:51 jnthn You're right.
21:51 pmichaud I don't like that $_ gets treated specially for only the case of the rhs being a lone method call
21:52 * jnthn starts to be won over to pmichaud++'s POV.
21:52 quietfanatic I agree, this special syntax is quite unnecessary.
21:53 pmichaud or, alternatively, I'd like to somehow make it clear that the lhs is bound to $_ for the whole expression
21:54 quietfanatic I'd prefer infix:<~~> stay more like an operator rather than a statement control.
21:54 diakopter rakudo: 5 .~~ say
21:54 p6eval rakudo 87e0e1: OUTPUT«Confused at line 11, near "5 .~~ say"␤current instr.: 'perl6;HLL;Grammar;panic' pc 501 (ext/nqp-rx/src/stage0/HLL-s0.pir:327)␤»
21:54 pmichaud well, ~~ by definition is "special", at least traditionally
21:54 pmichaud that's what the "smart" part of "smart match" is supposed to mean :-)
21:54 jnthn Aye, though it's mostly special in its dispatchyness rather than its thunkiness.
21:55 jnthn .oO( I use i and y totally inconsistently in English now... )
21:55 pmichaud jnthn: that ys okai, Englysh ys alwais adaptyng
21:56 pmichaud at least I don't notice you putting extra vowels in words like "color" or "flavor"  :-)
21:56 quietfanatic flaiyvor
21:56 jnthn You're just coloured by your parcitular flavour of English. :P
21:57 jnthn *particular
21:57 pmichaud (maybe you do that, and I just don't notice anymore after spending lots of time around aussies and nz'ers and brits and the like.)
21:57 jnthn pmichaud: I generally write whatever the spell checker I'm working under wants, and if there is none I just type whatever. :-)
21:57 jnthn color is shorter though. :-)
21:58 pmichaud .oO( "type whatever" -->  "colo*r" and "flavo*r"  ? )
21:58 pmichaud or even just   col*r and flav*r
21:59 diakopter sorear: the Callable[:(Int, Int --> Int)] syntax is (hopefully) temporary (for annotating strongly-typed closures) until TimToady specs something better.  I'm hoping for &:(Int, Int --> Int)
21:59 quietfanatic
22:01 masak quietfanatic: SE4 - color?
22:02 masak I'd like to propose ˈcolɵrˈ
22:03 quietfanatic masak: 色 == color, though I don't know what SE4 means
22:03 quietfanatic English-speakers usually just pronounce it colr.
22:03 spinclad 4: fourth tone?
22:03 masak quietfanatic: it's the Mandarin pronunciation. I'm coming from the hanzi direction, while I guess you're kanji. ;)
22:04 jnthn I kan zi that being a problem...
22:04 jhuni joined #perl6
22:04 quietfanatic Indeed, I inputted it as "iro"
22:04 masak I don't know the Cantonese pronunciation, unfortunately.
22:04 sorear diakopter: &:() still has the Rice problems, unless it's doing something deceptively simple like only matching the signature
22:04 orafu joined #perl6
22:05 sorear diakopter: is my &:(Int --> Int) &foo = * + 1; legal?
22:05 spinclad Rice?
22:05 spinclad my Rice $grain
22:05 masak is it something about it being computationally hard to find equivalent siggies?
22:05 quietfanatic If it's legal in a signature it ought to be legal in a my, which is parsed as a signature.
22:06 masak quietfanatic: but not all things make sense in a my.
22:06 masak quietfanatic: return type, for example.
22:06 quietfanatic Well you can say my Int|Str $x though
22:06 quietfanatic like a junction type.
22:06 quietfanatic std: my Int|Str $x
22:06 p6eval std 30664: OUTPUT«[31m===[0mSORRY![31m===[0m␤Malformed my at /tmp/CdrTqWaCbj line 1:␤------> [32mmy Int[33m⏏[31m|Str $x[0m␤    expecting any of:␤        multi_declarator␤ scoped declarator␤        typename␤Parse failed␤FAILED 00:01 113m␤»
22:06 quietfanatic maybe not
22:07 sorear quietfanatic: type checking an arbitrary function against a signature reduces to the halting problem
22:07 sorear spinclad: http://en.wikipedia.org/wiki/Rice%27s_theorem
22:07 quietfanatic ...I'm afraid all this is a bit beyond me at this time
22:08 jnthn quietfanatic: No, you can't do that in Perl 6.0.0.
22:08 jnthn quietfanatic: Maybe some day :-)
22:08 diakopter sorear: not yet
22:08 jnthn quietfanatic: There's always subset Foo where Int|Str;
22:08 quietfanatic I guess so.
22:09 diakopter sorear: (it's not yet legal, hence me saying TimToady hasn't specd it yet)
22:10 diakopter masak: why wouldn't a return type make sense in a my?
22:11 masak diakopter: because a my usually initializes variables. it doesn't return things, to my knowledge.
22:11 diakopter er
22:12 diakopter I was referring to a my variable that is initialized to a closure.
22:12 diakopter initialized with a closure.
22:12 masak ah. we're talking past each other, then.
22:12 diakopter and that closure returns a particular type.
22:12 spinclad (/me seems that the return type is the part that makes sense in a my:  my Int &foo;  as it's the covariant part of the signature)
22:12 masak I meant `my ($a, $b --> Int)`
22:12 diakopter I don't know what that is specd to mean :)
22:13 masak std: my ($a, $b --> Int)
22:13 p6eval std 30664: OUTPUT«ok 00:01 112m␤»
22:13 diakopter I didn't doubt it parsed; I don't know what it means
22:13 masak we're on the same page there :P
22:14 diakopter k
22:15 diakopter sorear: are you saying it follows from Rice's theorem that no programming language can have strongly typed function variables?
22:18 masak seems it is saying that you can't tell in general whether a function is in a particular class of functions or not.
22:18 masak I can see how that reduces to the Halting Problem, yes.
22:18 masak but I'm not sure I see the full ramifications.
22:19 sorear diakopter: no.  I am saying that Perl 6, as it is currently designed, cannot
22:19 sorear but that can change.
22:19 quietfanatic Because it doesn't do static analysis?
22:19 patspam joined #perl6
22:19 diakopter how would/could it be changed?
22:20 quietfanatic :) It's easy to see if something has the right signature--give it those arguments and check that it returns the right type.
22:21 masak quietfanatic: if it returns.
22:21 quietfanatic aw shoot :)
22:22 sorear sub { return $_ % 2 ?? 'foo' : 2.0 }
22:22 masak sorear: !!
22:22 sorear right, right, of course
22:22 masak but yes. what sorear said.
22:23 diakopter since it's not annotated, it returns an Any, I thought
22:23 sorear diakopter: the simplest way is to make signatures part of the typing of subs.  I don't really like that the presence or absense of signatures changes things, but the options are worse
22:24 diakopter sub { return $_ % 2 ?? 'foo' : 2.0 }  is the same thing as  sub (--> Any) { return $_ % 2 ?? 'foo' : 2.0 }  , right?
22:24 dalek book: 41c52f8 | jonathan++ | src/subs-n-sigs.pod:
22:24 dalek book: Various bits of editing to the subs-n-sigs chapter.
22:24 dalek book: review: http://github.com/perl6/book/commit/41​c52f8449a3b987c008ca87aa3f0f5435119cc8
22:24 sorear (Cursor still hurts my head)
22:24 sorear diakopter: no, it's the same thing as sub (Any --> Any) {...
22:24 diakopter ok
22:24 sorear the case that really bothers me is * + 1
22:24 sorear it's a WhateverCode with signature (Any --> Any)
22:25 diakopter ok
22:25 sorear should I be able to assign it to a variable typed as (Int --> Int)
22:25 sorear ?
22:25 kensanata joined #perl6
22:26 quietfanatic Probably not.
22:26 kulp joined #perl6
22:26 kulp joined #perl6
22:26 spinclad you should be able to assign it to a (Int --> Any), since then it just will only get fed Ints.
22:26 quietfanatic You'd be able to assign an (Int --> Int) sub to a (Any --> Any) variable though
22:26 quietfanatic or maybe not that either.
22:26 sorear subtyping is easy
22:27 sorear parametricity is harder
22:27 spinclad quietfanatic: no, you can assign a (Any --> Int) to a (Int --> Any)
22:27 quietfanatic Yeah, that's what it'd be.
22:27 sorear covariance vs. contravariance
22:27 spinclad that interpolates two (Int --> Any) noops
22:30 diakopter luckily for me, such contravariance can be fixed up at compile-time by injecting a runtime type-check
22:30 sorear diakopter: no, it can't, because Perl 6 type checks are Any --> Bool
22:31 sorear not Any --> ::T|Failure
22:31 diakopter not a Perl 6 type check
22:31 diakopter an underlying platform type check
22:31 szabgab joined #perl6
22:32 diakopter (is what I was considering)
22:33 lue .rnd( I tried searching for a simple sed one-liner to replace an error in many blender source files, and I get perl :) )
22:34 diakopter I don't understand how Perl 6 type checks are Any --> Bool
22:34 diakopter what does that mean
22:35 diakopter (what is passed into the "Any" slot)
22:36 sorear diakopter: the candidate
22:37 diakopter where is the type passed in?
22:37 sorear the type check is specific to the type
22:37 sorear a perl 6 type check can't replace an object or wrap it in any way
22:37 sorear it can only say "yes" or "no"
22:37 diakopter what is a "Perl 6 type check"? is this a runtime object?
22:38 sorear a Perl 6 type check is what happens when you say my TYPE $foo; $foo = VALUE;
22:39 diakopter the "when" there is very confusing; I can't tell whether you mean compile time or runtime
22:39 sorear runtime
22:39 diakopter it can't be done at compile-time?
22:39 sorear of course not; VALUE isn't known then
22:40 diakopter why couldn't one know the type of VALUE?
22:40 sorear because expressions don't have types, values do
22:41 sorear you have to evaluate the expression before you can know its type
22:41 sorear and the type can be different each time you evaluate it
22:41 sorear I should have said $foo = EXPR;
22:41 diakopter no EXPR can be typed?
22:41 jnthn sorear: "a perl 6 type check can't replace an object or wrap it" - not quite true. :-)
22:42 jnthn rakudo: subset Foo where -> $checked is rw { $checked = 42 };
22:42 jnthn :-)
22:42 p6eval rakudo 87e0e1:  ( no output )
22:42 sorear Wow.
22:43 diakopter I don't see how no EXPR can ever be booed
22:43 diakopter er
22:43 diakopter typed
22:43 diakopter heh
22:43 sorear diakopter: the type of every expression is Mu
22:44 sorear only variables can have more-specific types
22:44 diakopter that is dumb
22:44 jnthn rakudo: subset Foo where -> $checked is rw { $checked = 42 }; my Foo $x = 100; say $x;
22:44 p6eval rakudo 87e0e1: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 17864 (src/builtins/Junction.pir:393)␤»
22:44 jnthn D'oh. :-/
22:44 jnthn oh, it's probably right.
22:44 jnthn It's trying to assign to the 100 :-)
22:44 jnthn Anyway, don't do that. ;-)
22:45 jnthn rakudo: subset Foo where -> $checked is rw { $checked = 42 }; my $y = 100; my Foo $x = $y; say $x; say $y;
22:45 p6eval rakudo 87e0e1: OUTPUT«Cannot assign to readonly value␤current instr.: '&die' pc 17864 (src/builtins/Junction.pir:393)␤»
22:45 jnthn Hmpfh.
22:51 dalek book: 09a1f28 | jonathan++ | src/multi-dispatch.pod:
22:51 dalek book: Example of multi-dispatch and nested signatures.
22:51 dalek book: review: http://github.com/perl6/book/commit/09​a1f282f6f582dce3b32ac28f707b8df857d626
22:51 dalek book: 5d9cb15 | jonathan++ | src/subs-n-sigs.pod:
22:51 dalek book: A little more editing for subs-n-sigs.
22:51 dalek book: review: http://github.com/perl6/book/commit/5d​9cb1568a062bce8925fffd5427f33bd54a7674
22:58 Psyche^ joined #perl6
23:00 Targhan joined #perl6
23:02 Targhan Hmmm so I'm running "perl Configure.pl --gen-parrot" on windows and one of the very first things it prints out is "The system cannot find the path specified."  This seems kind of bad, but I have no idea what's missing.  Any ideas?
23:02 bkeeler pmichaud: still around?
23:02 sorear "one of" is rarely ever good enough in programming circles
23:02 jnthn Targhan: May not be a problem - if it then goes on to check out Parrot and build it.
23:02 sorear if only we had the whole error
23:03 Targhan okay fair enough
23:03 sorear use http://paste.lisp.org/new/perl6
23:03 sorear oh
23:03 Targhan well the actual crash line is:
23:03 snarkyboojum joined #perl6
23:03 Targhan holy god, programmin in windows is terrible.  I can't even copy from the cmd.exe window?
23:04 Targhan one moment...
23:04 jnthn Right click, Mark...
23:04 bkeeler You have to turn on the facility
23:04 diakopter there are two modes, quickedit and nonquickedit
23:04 diakopter select with the left pointer, hit enter to copy
23:04 sorear use http://paste.lisp.org/new/perl6
23:05 BinGOs I hear there is something called Console2 (http://sourceforge.net/projects/console/)
23:05 Targhan I'm attempting to download powershell now, but I'll check that out too
23:06 diakopter in quickedit mode, right click pastes and left click selects for copy
23:06 masak g'night, people.
23:06 BinGOs I found powershell to be heinously slow.
23:06 Targhan ahh quick edit is the winner
23:07 bkeeler phenny: tell pmichaud if you're in a reviewing mood, there's now a 'regex-interpolation' branch in nqp-rx
23:07 phenny bkeeler: I'll pass that on when pmichaud is around.
23:07 diakopter I daresay "programming in windows is terrible" is not a fair claim
23:08 sorear programming is terrible
23:08 diakopter :)
23:08 bkeeler Sounds perfectly fair to me
23:08 lisppaste3 Targhan pasted "windows build error" at http://paste.lisp.org/display/99321
23:08 sorear (programming in windows 95 is downright awful)
23:09 Targhan it's windows xp at least
23:09 Targhan anyway, I have MSVC installed and cl.exe is in my path
23:09 sorear Targhan: do you have VC++ installed?
23:09 Targhan as is nmake.exe
23:09 sorear ah
23:09 Targhan svn is also in path, and obviously perl
23:10 Targhan anyway I'm digging through Configure.pl to see what the error means, but if someone has encountered it before, advice is appreciated.
23:10 jnthn Targhan: In your parrot directory, there should be some file showing what the C ompiler actually outputted.
23:11 sorear Targhan: since this is a Parrot failure, you may have better luck asking in #parrot
23:11 sorear that said, the main Parrot Win32 dev is here and not there
23:11 Targhan heh
23:11 jnthn sorear: Oh?
23:11 diakopter Targhan: is this activeperl or strawberryperl?
23:11 Targhan The line between parrot and perl6 is still a bit fuzzy in my mind
23:11 Targhan this is activeperl
23:11 Targhan should I install strawberryperl?
23:12 jnthn I've had more luck building Rakudo with Active Perl.
23:12 sorear jnthn: You
23:12 Targhan A previous google search turned up someone with a similar problem in September of last year, though he was using strawberry
23:12 diakopter Targhan: 64-bit activeperl?
23:12 jnthn sorear: Heh. I'm not all that active on Parrot dev nowadays. :P
23:12 Targhan let me check the build
23:13 jnthn Targhan: Mabye cd parrot and then perl Configure.pl --verbose may help (iirc)
23:13 jnthn Or at least tell you a bit more.
23:13 Targhan perl --version says v5.10.1 build for MSWin32-x86-multi-thread
23:13 Targhan so 32 bit I guess
23:13 diakopter yeah
23:13 diakopter did you use the 64-bit msvc envvars shortcut or the 32-bit one
23:14 diakopter oh, I guess you're on 32-bit xp...
23:14 Targhan erm I don't know how to answer that question
23:14 Targhan it's 32 bit xp
23:14 diakopter how did you add cl to your path
23:14 Targhan right clicked my computer -> properties
23:14 Targhan advanced tab, edit environment variables
23:14 Targhan added vc/bin directory to it
23:15 diakopter (it's recommended to use the C:\Program Files\Microsoft Visual Studio 9.0\VCvcvarsall.bat
23:15 Targhan configure --verbose is complaining about missing libraries though
23:15 diakopter (it's recommended to use the C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat
23:15 Targhan which makes me think some linker paths are not setup
23:15 Targhan let me check out that batch file
23:15 diakopter or 8 or whichever visual studio version you have
23:16 Targhan yeah
23:16 lisppaste3 Targhan annotated #99321 "parrot configure with verbose" at http://paste.lisp.org/display/99321#1
23:16 Targhan But yeah I think it's an environment variable thing.  looking at script now
23:20 diakopter sorear: I don't understand how/why EXPR can never have a type other than Mu.
23:20 Targhan hmmm
23:21 Targhan so when I run vcvarsall from cmd, the parrot configure works
23:21 Targhan Is there a less ghetto way of making that script always run than adding it to autoexec.bat?
23:21 diakopter heh
23:22 Targhan I guess I could take a diff of the environment variables and input them manually
23:22 diakopter make a shortcut to "cmd.exe /k ""%path_to_vcvarsall%""" and run that instead
23:22 diakopter instead of cmd.exe directly I mean
23:24 Targhan looks like the autoexec.bat thing didn't work.  Guess that's system startup only
23:24 diakopter yeah
23:25 diakopter actually autoexec.bat is ignored.
23:26 Targhan Hmmm it's building an awful lot more stuff
23:26 Targhan uh.. woo!  Thank you, irc channel!
23:27 Targhan just getting something compiled that can operate against unit tests will be great.
23:30 diakopter does anyone else know why/how/whether no EXPR can be of a type other than Mu?
23:31 sorear diakopter: that's the way dynamically typed languages work
23:31 jnthn diakopter: I'm...kinda confused by the whole discussion.
23:31 diakopter I thought Perl 6 was optionally dynamically typed.
23:31 sorear javascript, perl5, etc are exactly the same way
23:31 diakopter I thought Perl 6 enforced types when annotations were present.
23:31 diakopter at compile time.
23:32 jnthn I mean, if you have for example $a + $b and you statically know all the multi-candidates (which we often do) and you statically know the types of $a and $b, then certainly unless the multi candidates are "too interesting" you could at compile time determine what the type of the expression would be.
23:32 jnthn diakopter: No, the enforcement may be at runtime.
23:33 jnthn diakopter: There's no *requirement* to do it at compile time.
23:33 diakopter right, ok
23:33 jnthn diakopter: You can fail at compile time on antyhign that would fail at runtime.
23:33 jnthn But if you can at compile time say "huh, that could never work out!", it's totally fine (and good) to fail at compile time.
23:33 sorear However, if there's even the slightest chance of it working, you need the runtime check
23:35 jnthn sorear: Aye, though there's likely pragma that will let you control what odds you're willing to accept.
23:35 sorear rakudo: try { eval "use Nonexistant" }; say "Failed: $!"
23:35 p6eval rakudo 87e0e1: OUTPUT«Unable to find module 'Nonexistant' in the @*INC directories.␤No exception handler and no message␤current instr.: 'perl6;Perl6Exception;throw' pc 15350 (src/builtins/Associative.pir:46)␤»
23:41 sorear mberends recently changed rakudo to say; exit(1) instead of throwing an exception on module not found
23:42 sorear I cannot say I am entirely happy with this
23:42 jnthn That feels...dubious.
23:42 sorear 32150d5
23:45 diakopter sorear: Perl 6 is not "dynamically typed" like Perl 5 and JavaScript.
23:47 jnthn sorear: There's some papers on Gradual Typing which, if you didn't see them before, are quite interesting reading; the ideas are quite applicable to the Perl 6 view of typing.
23:53 diakopter sorear: I'm trying to understand why you would give such a pedantic/condescending/smartass reply like "that's the way dynamically typed languages work".  Were you trying to give me an overly-simplistic answer just so I'd stop asking the question?
23:55 sorear No
23:55 sorear I was trying to flush the root misunderstanding out
23:56 diakopter okay, so my sensation of pedantry was correct.
23:56 jnthn sorear: Yes, but if your understanding is/was that Perl 6 is entirely dynamically typed like Perl 5 and Javascript, then the misunderstanding is/was yours.
23:57 Chillance joined #perl6
23:57 sorear jnthn: I never said *his* root misunderstanding
23:57 jnthn :-)
23:57 sorear If I'm wrong, I'd like to find out sooner rather than later.
23:57 sorear Broad statements help that happen.
23:58 diakopter :) hrm.  to me, questions work better
23:58 diakopter (esp when (as in this case, I respect your understanding a lot) the hearer respects the speaker)
23:59 TimToady it's generally better to give each other the benefit of the doubt

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

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs