Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2006-07-13

Perl 6 | Reference Documentation | Rakudo

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

All times shown according to UTC.

Time Nick Message
00:23 nothingmuch TimToady++ # very amusing
00:27 wolverian the dev.perl.org HTML synopses are kept up to date, right?
00:27 nothingmuch wolverian: i think they're autogenerated
00:27 nothingmuch 80% chance of that being a "yes"
00:28 wolverian thanks. unrelated: what's @@@arr? :-)
00:28 scook0 joined perl6
00:41 elmex joined perl6
00:42 pike joined perl6
00:46 xinming joined perl6
00:50 mdiep audreyt: do you know if anything is happening with the trypugs idea? I saw that cwest was going to try implementing it
00:51 audreyt cwest: commit whatever you have? :)
00:51 audreyt (as in, no)
00:51 mdiep heh, okay
00:51 clkao audreyt: hey.
00:51 audreyt yo clkao
00:52 clkao saw the test pass rate?
00:52 audreyt no, havn't backlogged
00:52 audreyt 0.05%?
00:52 clkao almost
00:52 clkao should be about 440 now
00:52 audreyt not bad
00:52 audreyt oh wait
00:53 audreyt that's actualy 5% not 0.05%
00:53 audreyt not bad, really, pil2js started much humbler
00:53 audreyt clkao: saw obra's idea ala typesafety.pm
00:53 clkao it was 200 or so two days ago
00:53 clkao yes
00:54 clkao need to supress warnings
00:54 audreyt to hijack "sub f (Int $x) {}"?
00:54 audreyt typesafety.pm had a ref.impl.
00:55 clkao i will leave the syntatic hacks for others ;)
00:55 obra audreyt: use warnings triggers a warning on it
00:55 obra at define time
00:55 audreyt really. well optree rewrite can rewrite that away
00:55 audreyt hm
00:55 audreyt obra: you still @ home?
00:55 obra yes.
00:55 obra about to come change the AC a bit. it's gotten painfully warm
00:56 ruoso joined perl6
00:58 wolverian wow, JS (and this guy)http://slipwave.info/#%5B%5BCPS%20transformation%5D%5D%20libraries%20js.lang.Recompiler%20js.aop.Observable is crazy:
00:58 wolverian thanks, irssi.
01:00 audreyt wolverian: yeah, edwardk is amazing
01:00 markstos joined perl6
01:01 wolverian right, I didn't realise you probably know him already :)
01:01 ivanfrey audreyt: can you login to my machine and change your password?
01:02 pike is now known as bcorn
01:03 revision17_ is now known as Revision17
01:03 wolverian should if be an expression?
01:04 wolverian 2. why are sub declarations expressions now?
01:07 jon__ joined perl6
01:08 audreyt ivanfrey: what's the ip?
01:08 audreyt wolverian: if can be made expr with do
01:08 audreyt ?eval do if 1 { 3 }
01:08 evalbot_11479 is now known as evalbot_11492
01:08 evalbot_11492 3
01:08 audreyt ?eval 4 + do if 1 { 3 }
01:08 evalbot_11492 7
01:09 wolverian yeah, just wondering which is the right huffmanization
01:09 audreyt there is the "or" and ??!!
01:09 audreyt and "and"
01:09 wolverian or rather, why subs are exprs now but if is not
01:09 audreyt which is already infix forms of if
01:09 audreyt because perl or/and operates on val not on bool
01:09 audreyt so is good as expr-form if
01:09 audreyt as for subs, because we have anonsub
01:10 audreyt and scoped sub
01:10 audreyt so unifying two syntaxes makes a bit more sense
01:10 wolverian right
01:10 audreyt also, "sub" and "method" as functions
01:10 wolverian "my sub foo ..." is "my(sub foo..."?
01:10 ivanfrey audreyt: 72.136.69.198
01:10 audreyt (my &foo ::= sub { ... })
01:10 audreyt something like that
01:11 wolverian right
01:11 audreyt but yeah, the idea is function declarators are so special
01:11 audreyt they can occur as expr unambiguously
01:11 audreyt whilst "if" can occur postfix
01:12 audreyt and hence can confuse if it's also expr form
01:12 audreyt print if 3;
01:12 wolverian ouch
01:12 audreyt if we take postfix away then it can be made expr
01:12 ivanfrey audreyt: did your login fail?
01:12 audreyt but that wouldn't be perl would it.
01:13 audreyt ivanfrey: I don't have an old passwd
01:13 wolverian audreyt, thanks for explaining it
01:13 audreyt wolverian: np :)
01:13 audreyt so, chromatic called for "easy tasks a newcomer to Pugs can do"
01:13 audreyt any particular suggestions?
01:13 ivanfrey audreyt: use sudo, I gave you admin privileges
01:13 audreyt ivanfrey: I can't sudo without my passwd, heh
01:14 ivanfrey audreyt: temp
01:14 audreyt done. thanks
01:16 bcorn joined perl6
01:18 TreyHarris ?eval ( [ 1, 2 ], 3 ) ~~ ( { 1 }, { 1 } )
01:18 evalbot_11492 Bool::False
01:18 TreyHarris was Yuval claiming that that should be true?  I can't see why
01:19 TreyHarris er, we're on IRC; s/Yuval/nothingmuch/ ;-)
01:22 audreyt no idea either
01:22 audreyt maybe he thinks it should distribute
01:22 audreyt list of code should be like code takes list
01:22 clkao audreyt: what are you hacking on?
01:22 audreyt clkao: at this moment, food
01:23 audreyt or rather, prospect of food
01:23 audreyt clkao: what are bite-sized tasks we can suggest random perl.com readers to join in and hack?
01:23 audreyt clkao: I thought about "use perl5:Foo" in v6.pm
01:23 audreyt but that seems a bit steep
01:24 clkao audreyt: go through the tests that are compiled and fix bits?
01:24 clkao and go through the tests that aren't compiled and fix the parser?
01:24 clkao so there's going to be perl.com article? ;)
01:26 audreyt no
01:26 audreyt perl.com newsletter
01:27 audreyt weekly by chromatic
01:27 audreyt hm, perl.com is static for 6 weeks now
01:27 audreyt must be the conferences
01:28 * clkao giggles
01:29 TreyHarris ?eval given 3 { when Int { say "yes"; Bool::True } }
01:29 evalbot_11492 OUTPUT[yes ] Bool::True
01:30 audreyt clkao: so "make smoke-perl5" works now?
01:30 imperator joined perl6
01:31 clkao audreyt: sure, two tests hang during compiling
01:31 clkao audreyt: and smoke-server doesn't accept my output
01:31 audreyt write ingo?
01:31 clkao audreyt: want to reorganise the prelude and pugs::internal:: a bit?
01:32 clkao maybe split them in different file so we can import incrementally when the syntax are implmemented
01:32 audreyt [email@hidden.address]
01:32 audreyt that sounds good. add to the hiveminder pugs group?
01:32 audreyt I think I'd like to hack a public-page
01:32 audreyt much like rt.perl.org
01:32 audreyt to export the hiveminder pugs group's up-for-grab and task status to public
01:33 clkao yes
01:33 obra cool
01:33 obra first step, get hm tests passing on your workstation ;)
01:33 audreyt doing that right now actually
01:34 audreyt wow, IO::All.
01:35 leo-max bye
01:35 leo-max left perl6
01:40 macroron joined perl6
01:45 arcady joined perl6
01:50 weinig joined perl6
02:06 cfedde joined perl6
02:07 bsb joined perl6
02:09 clkao small exercise for bored people: if/elsif/else is not emitted correctly in v6
02:09 Bit-Man joined perl6
02:11 markstos left perl6
02:16 svnbot6 r11493 | ajs++ | index, rindex and a fix to what looks like a brain fart when I wrote up time
02:22 fglock joined perl6
02:31 wolverian is there a public ghc-6.5 on feather?
02:31 wolverian is it ok to build my own if there isn't? :)
02:40 audreyt sure it's ok
02:40 audreyt try to be nice(1) though
02:40 wolverian yeah. what's a nice (cough) value?
02:40 wolverian (I also installed alex and happy, if anyone needs those)
02:42 wolverian I assume the default is ok.
02:43 audreyt yup
02:44 wolverian maybe I'll get into ghc hacking eventually (as scary as the thought is)
02:44 wolverian or at least figure out ghc api ...
02:48 wolverian I wonder if it would be possible to run a generic svn repository on feather
02:49 audreyt sure is possible
02:49 audreyt mm, I've a long-overdue ghc hacking ticket to resolve (in the lexer)...
02:50 wolverian DIY right? :) I've never configured svn.. reading on it
02:51 ivanfrey audreyt: how often should I run smoke tests and upload them?
02:54 fglock joined perl6
03:04 ivanfrey What are the bots and their role in this channel.
03:06 ivanfrey buubot, evalbot_11492, jabbot, lambdabot, perlbot?
03:08 wolverian > let x = "hi" in x ++ " ivanfrey"
03:08 lambdabot "hi ivanfrey"
03:08 fglock ivanfrey: evalbot evaluates pugs expressions - 11492 is the svn version
03:11 ivanfrey > let x = "hey" in x ++ " that's cool!"
03:11 lambdabot "hey that's cool!"
03:11 fglock oops - there is no installable Sub::Multi in cpan yet
03:11 audreyt yeah it's underscore
03:11 audreyt clkao: push a non-underscore one out maybe? or make fglock+me comaint too?
03:11 audreyt (or authorize me to do that :))
03:13 fglock I counted 22 dependencies installing v6.pm
03:14 audreyt there will be more
03:14 audreyt one day we'll depend on the whole CPAN
03:14 audreyt ...or maybe not. :)
03:15 ivanfrey fglock: how do I pass pugs expressions to evalbot_11492?
03:15 audreyt ?eval [+] 1..10
03:15 evalbot_11492 is now known as evalbot_11493
03:15 evalbot_11493 55
03:15 fglock ?eval 1 2
03:15 evalbot_11493 Error:  unexpected "2" expecting comment, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
03:16 fglock cgi-irc doesn't accept plus-sign :)
03:17 rashakil left perl6
03:18 rlb3 joined perl6
03:18 audreyt yeah, I think it's URL encoding
03:18 ivanfrey ?eval ('1' & "2") * (3.0 | "4abcd")
03:19 evalbot_11493 3.0
03:19 fglock still counting - 25...
03:19 audreyt try using the %2B
03:19 audreyt notation
03:19 audreyt type this:
03:19 audreyt ?eval 1 %2B 2
03:19 evalbot_11493 Error:  unexpected "B" expecting "_", fraction, exponent, term postfix, comment, operator, ">>+&<<", ">>+<<<", ">>+><<", ">>xx<<", ">>~&<<", ">>~<<<", ">>~><<", ">>%<<", ">>*<<", ">>/<<", ">>x<<", "\187+&\171", "\187+<\171", "\187+>\171", "\187xx\171", "\187~&\171", "\187~<\171", "\187~>\171", "\187%\171", "\187*\171", "\187/\171", "\187x\171", "+&", "+<", "+>", "xx", "~&", "~<", "~>", "%", "*", "/", "x", postfix conditional, postfix loop, postfix
03:19 audreyt and see if it works?
03:19 fglock 1%2B2
03:19 audreyt with space
03:19 fglock no :)
03:19 fglock 1 %2B 2
03:19 audreyt sigh
03:19 audreyt :)
03:19 audreyt (brb)
03:19 fglock 1 &plus; 2
03:21 ivanfrey ?eval ((2 .. 20) | ('a0' .. 'b9')) / (2 & 4) err 1 ...
03:21 evalbot_11493 4.75
03:25 TreyHarris ?eval ('1' & "2") * (3.0 | "4abcd")
03:25 evalbot_11493 3.0
03:25 TreyHarris what the heck?
03:27 TreyHarris I would have expected ((3.0 | 4.0) & (6.0 | 8.0))
03:28 fglock I think the result takes many lines, and evalbot only shows the first line
03:28 fglock ?eval 42 | 43
03:28 evalbot_11493 42
03:30 TreyHarris ?eval any(1, 2) == 2
03:30 evalbot_11493 Bool::False
03:30 TreyHarris hmm.  no, I think it's broken
03:31 weinig is now known as weinig|sleep
03:32 TreyHarris ?eval ?(all(1, 2, 1) < 3)
03:33 evalbot_11493 Bool::True
03:33 TreyHarris ?eval ?(all(1, 2, 17) < 3)
03:33 evalbot_11493 Bool::False
03:33 TreyHarris so maybe it's only printing the first component value of any conjunctional value
03:34 TreyHarris ?eval ?(any(1, 2) == 2)
03:34 evalbot_11493 Bool::True
03:34 TreyHarris yeah, that's what it's doing
03:35 TreyHarris ?eval ?(any(1, 3) == 2)
03:35 evalbot_11493 Bool::False
03:35 TreyHarris yup.
03:36 TreyHarris ?eval (any(1, 2) == 2).ref
03:36 evalbot_11493 ::Junction
03:37 pasteling "fglock" at 200.102.126.223 pasted "v6.pm dependencies" (41 lines, 705B) at http://sial.org/pbot/18371
03:42 fglock &
03:42 fglock left perl6
03:48 frederico joined perl6
04:04 diotalevi joined perl6
04:06 vsoni seen audreyt
04:06 jabbot vsoni: audreyt was seen 46 minutes 49 seconds ago
04:10 wesle1 joined perl6
04:12 arcady joined perl6
04:13 ivanfrey What is the ide used for pugs? vi?
04:27 buubot joined perl6
04:29 buubot joined perl6
04:45 lumi joined perl6
04:50 fglock joined perl6
04:55 jargonjustin joined perl6
04:56 fglock left perl6
05:16 mugwump ivanfrey: currently I think only vim has a syntax mode for perl6
05:17 * mugwump takes that back
05:18 mugwump Actually, Steffen Schwigon has also extended cperl-mode to deal with perl6
05:18 mugwump (for emacs)
05:30 nothingmuch good night
05:37 kane_ joined perl6
05:41 vsoni joined perl6
05:59 merlyn joined perl6
06:03 wolverian I.. forgot --prefix from my ghc compile
06:04 * wolverian cries
06:04 audreyt just configure again
06:05 audreyt the build should be faster
06:05 wolverian doesn't recompile the parts that didn't use the path or something?
06:06 audreyt yeah
06:06 wolverian thanks :)
06:09 wolverian seemed to skip stage1 altogether, yay
06:10 wolverian hm, no, it did do something there. I think. oh well, time to sleep :)
06:10 wolverian oh, done. nice
06:11 wolverian ouch
06:12 wolverian fails at /home/wolverian/opt/bin/ghc: line 5, looking for /usr/local/lib/ghc-6.5.20060712/ghc-6.5.20060712
06:12 wolverian I guess I'll do a make clean, then
06:13 audreyt oy.
06:28 vsoni joined perl6
06:42 mauke_ joined perl6
06:49 iblechbot joined perl6
07:02 mauke_ is now known as mauke
07:21 cognominal joined perl6
07:23 drrho joined perl6
07:47 xinming joined perl6
07:48 Steve_p joined perl6
08:23 alexe joined perl6
08:26 tcliou joined perl6
08:35 cognominal joined perl6
08:38 hugues23 joined perl6
08:40 buetow joined perl6
08:50 elmex joined perl6
09:04 revision17_ joined perl6
09:14 alexe left perl6
09:19 paultcochrane joined perl6
11:07 ludan joined perl6
11:20 MikeJS joined perl6
11:27 dolmen joined perl6
11:36 xinming joined perl6
11:55 xinming joined perl6
12:22 bpphillips joined perl6
12:29 nelhage joined perl6
12:41 iblechbot joined perl6
12:41 vel joined perl6
12:49 oozoo joined perl6
12:57 oozoo left perl6
13:02 oozoo joined perl6
13:02 oozoo left perl6
13:03 Jedai joined perl6
13:04 eve_ joined perl6
13:05 eve_ is now known as bridges_
13:05 bridges_ left perl6
13:20 frederico joined perl6
13:21 trampel joined perl6
13:24 oozoo_ joined perl6
13:25 oozoo_ left perl6
14:23 amnesiac joined perl6
14:34 mako132 joined perl6
14:38 svnbot6 r11494 | ajs++ | roundrobin description
14:39 penk joined perl6
14:39 vel joined perl6
14:48 cjeris joined perl6
14:55 fglock joined perl6
15:00 ajs Am I right in saying that C<@a Y @b Y @c> needs to invoke a special infix:Y(Iterator $a, Array @b) form that takes each tuple off of $a and adds an element from @b to it, or is there some magic that turns that into a quasi-listop?
15:03 ajs Well, I'll check it in and see who screams... ;)
15:04 svnbot6 r11495 | ajs++ | Added cat and the infix form of zip (Unicode and ASCII). For this, I had to arm-wave the mechanics of chained infix zips... I think my call is reasonable, but I would appreciate input
15:04 fglock ajs: Y is fixity='infix' and assoc='list', which makes it parse like ','
15:06 ajs The word fixity occurs only once in the specs... can you explain it to me?
15:06 ajs And for that matter, how DOES comma work?
15:06 fglock ($a Y $b) is infix position; (Y $a) is prefix; ($a Y) is postfix
15:07 fglock comma is a list composer
15:07 ajs gotcha, hence the infix:<Y>(...)
15:07 ajs But how does $a Y $b Y $c actually work, signature-wise if it only takes two arguments?
15:08 fglock infix:<Y>( @a, @b, @c, ... )
15:09 ajs Ah... ah... that's not a valid signature. Do you mean infix:<Y>( Container *arrays ), and if so... well, is that valid? I'm happy to change the spec, but I've never seen a slurpy listop before
15:09 ajs er slurpy infix that is
15:10 ajs that's  infix:<Y>( Container *@arrays )... lost the @
15:10 fglock I think it is 'sub zip (*@@arrays) { ... }'
15:11 dolmen joined perl6
15:11 ajs Yes, thank you! That's the magic cookie!
15:11 fglock S06 - 'Multidimensional argument list binding'
15:11 ajs I had missed the seciton on @@ which clearly states that that's how zip works.
15:12 ajs Re-writing Functions.pod section on zip now....
15:13 ajs Oh, that so drastically simplifies things!
15:16 svnbot6 r11496 | ajs++ | fglock++ - told me about *@@ parameters, and the ability to build an infix listop using it. zip is now correctly defined, and all Container functions are simplified
15:17 weinig|sleep is now known as weinig
15:28 svnbot6 r11497 | ajs++ | Spellcheck pass on Functions
15:30 luqui joined perl6
15:30 luqui left perl6
15:30 ajs Spellchecking Perl documentation is an interesting sport... it should be in the Olympics.
15:30 pasteling "kolibrie" at 66.239.158.2 pasted "questions about regex, token, rule" (19 lines, 487B) at http://sial.org/pbot/18377
15:31 ajs kolibrie: comments don't match anything ;-)
15:32 kolibrie ajs: :)
15:32 ajs Looks like token's "no backtracking" attribute is being scoped down into the sub-rule.
15:33 ajs Oh no, wait. that works fine because of the ?
15:34 ajs Yeah, that's reasonable. Why would you expect .*? to match more than zero characters when used from inside a token{}
15:34 svnbot6 r11498 | fglock++ | PCR - Pugs::Grammar::Precedence - implemented chain operators
15:34 svnbot6 r11498 | fglock++ | PCR - version is now 0.11
15:35 ajs fglock: sure, just change the parser to make yourself right! ;-)
15:35 kolibrie what is confusing (wrong?) is why it makes a difference whether .*? is specified explicitly or as a subrule
15:35 vel joined perl6
15:36 fglock ajs: that's what you get for writing your own compiler :)
15:37 kolibrie also confusing is why the token and rule match different things on a string with no spaces
15:37 ajs "rule schedule { .*? u }       # matches nothing" has to be a bug
15:38 fglock this matches whitespace followed by 'u'
15:38 svnbot6 r11499 | fglock++ | v6 - depends on PCR 0.11
15:38 svnbot6 r11499 | fglock++ | v6 - parses chain operators (no emitter code yet)
15:39 kolibrie fglock: see my nopaste
15:40 fglock kolibrie: I think token passes the :ratchet flag to regex, and this makes .*? to not backtrack, and then it matches nothing
15:41 fglock .*? matches '', '.', '..', '...' - the first match succeeds
15:42 kolibrie fglock: but why the difference between token and rule?
15:42 kolibrie token matches, rule doesn't
15:42 fglock token is faster - use it for better performance, but it can't backtrack
15:42 FurnaceBoy joined perl6
15:43 kolibrie I thought both rule and token do not backtrack
15:44 fglock yes - rule is the same as token - but spaces are significant - in the rule, '<junk> u' means '<junk><ws>u'
15:45 fglock 'aoeu' doesn't have a space before 'u'
15:45 kolibrie so 'token schedule { .*? u }' and 'rule schedule { .*? u }' should have the same match result
15:46 fglock clkao: my last change must have broken a hundred tests - still missing emitter code...
15:46 fglock kolibrie: right
15:46 fglock oops - no
15:47 fglock the token is compiled as /u/, and the rule is compiled as /\su/
15:48 kolibrie so the whitespace becomes manditory?
15:48 fglock tokens are meant for matching single words fast
15:49 fglock rules are meant for statements with many words - that's why whitespace is significant
15:49 fglock and 'regex' if for everything else :)
15:49 ajs ?! wait, ws is significant in rules? So all of my nifty documentation is wrong. Doh!
15:49 lambdabot Maybe you meant: . v
15:51 * kolibrie is trying to get the the bottom of why his hackathon yapc_schedule.pl does not seem to work, when he saw it work that night
15:51 fglock also, the whitespace semantics in rules is user-defined
15:52 kolibrie fglock: I was taking advantage of that in yapc_schedule.pl
15:52 fglock kolibrie: maybe the lib was fixed :)
15:53 fglock lunch &
15:54 kolibrie fglock: so that may explain the token/rule difference, but what about .*? vs <junk>?
15:54 fglock clkao: re chain ops - try parsing ' 1 < 2 <= 3'
15:55 svnbot6 r11500 | ajs++ | Some changes to grammars / regexes for various function docs: rules have significant whitespace, so not useful for things like pack and sprintf
15:57 fglock kolibrie: it depends on how :ratchet is passed on to subrules - S05 should hold an answer ...
15:57 swaroop joined perl6
15:57 fglock left perl6
15:57 * kolibrie will dig
15:59 ruoso joined perl6
16:00 pmichaud :ratchet is not passed to subrules
16:00 kolibrie pmichaud: good
16:01 kolibrie pmichaud: any ideas why the two 'token' lines in my nopaste match differently?
16:03 pmichaud token schedule { <junk> u }  should match 'u'
16:03 pmichaud token schedule { .*? u }   should match 'aoeu'
16:04 kolibrie why are they different?
16:04 pmichaud .*? is explicit eager backtracking
16:04 pmichaud <junk> has no backtracking
16:04 kolibrie <junk> is defined as .*?
16:04 pmichaud but it's a subrule
16:04 pmichaud so,   token schedule { <junk> u }     is the same as
16:05 pmichaud regex schedule { <junk>: u }
16:05 pmichaud (note the implicit ':' after <junk>)
16:05 pmichaud it's the same as if one had said    token schedule { .*?: u }
16:06 pmichaud make sense yet?
16:06 kolibrie no
16:06 pmichaud token implies :ratchet, which means no backtracking once something has succeeded
16:06 pmichaud so, in token schedule { <junk> u }  we first make a call to the junk regex
16:07 pmichaud that matches an empty string, because it's .*?
16:07 FurnaceBoy_ joined perl6
16:07 pmichaud so, <junk> has now succeeded, and we won't backtrack into it
16:07 pmichaud now we try to match a 'u'
16:07 pmichaud that fails (we find 'a'), so we increment the starting position by one and try again
16:08 pmichaud note that we don't go back into the 'junk' rule and try matching 'a' -- that subrule already succeeded
16:08 kolibrie why doesn't it work the same when we specify .*? explicitly?
16:08 pmichaud because .*? explicitly says to backtrack, even though this is a 'token'
16:08 pmichaud i.e.,   .*? overrides :ratchet
16:09 pmichaud just the same as   .*+ overrides :ratchet
16:10 kolibrie I hoped that I could replace any hardcoded text with a subrule
16:10 pmichaud (I should probably rephrase:  "*?" and "*+" override :ratchet)
16:11 pmichaud if you want backtracking there, you don't want to be using 'token'
16:11 kolibrie what I want, is for yapc_schedule.pl to work
16:11 pmichaud another possibility is     token { <junk>**{1}+ u }    which is ugly
16:12 kolibrie I want to be able to overwrite <ws> to be .*?
16:12 chris2 joined perl6
16:12 pmichaud I don't think there's any direct value to that
16:12 pmichaud because it will always match a null string in rules
16:12 kolibrie and then make a rule to glue a bunch of regexes together
16:13 kolibrie At the Chicago hackathon it worked
16:13 pmichaud I'd have to see the code again to know exactly what worked
16:14 pmichaud I just know that we don't backtrack into subrules when used inside of token/rule
16:14 merlyn joined perl6
16:15 kolibrie pmichaud: http://svn.openfoundry.org/pugs/examples/rules/yapc_schedule.pl
16:16 pmichaud why not just switch 'token' to be 'regex'?  That gets the backtracking you're looking for
16:16 pmichaud oh, wait
16:16 pmichaud hmmm
16:17 pmichaud personally, I think I would just do the whole thing with regex
16:18 kolibrie I would like to be able to define what I am interested in and ignore everything else
16:18 kolibrie this enables very easy data extraction
16:19 kolibrie or validation of content based on a grammar, yet able to ignore extra stuff
16:20 weinig is now known as weinig|away
16:21 pmichaud I just don't know that overriding <ws> as .*? is going to get there
16:21 pmichaud oh
16:21 pmichaud how about
16:21 kolibrie it worked on audreyt's laptop at Chicago
16:21 pmichaud instead of rule, use   regex {:w <title> [ <talk> ]+ }
16:22 kolibrie but now I can't get it work anywhere
16:22 pmichaud (which is what I think we did on Audrey's laptop at Chicago)
16:22 TimToady :w is now :sigspace
16:22 pmichaud right, but PGE still has :w
16:22 TimToady or :s
16:22 pmichaud (I don't think PGE has :sigspace/:s yet)
16:23 pmichaud ah, I'm wrong, PGE has :sigspace
16:23 kolibrie so the :sigspace needs to be inside the braces, not outside?
16:23 pmichaud and :s
16:24 pmichaud I don't know how pugs passes adverbs to regexes yet, so inside is the safe way to go
16:24 pmichaud TimToady: there's a pge ticket in parrot-porters about leading whitespace before internal adverbs -- any thoughts? (more)
16:25 pmichaud TimToady: example:   token {:i hello}   versus   token { :i hello }
16:25 TimToady wouldn't matter for a token.
16:25 TimToady you mean rule?
16:25 pmichaud okay, rule then :-)
16:25 pmichaud I'm just thinking syntax
16:26 TimToady will, the <?ws> after the :i is case insensitive.  :)
16:26 TimToady *well
16:26 pmichaud the question is whether the second example above is a syntax error or no
16:26 pmichaud or, for a slightly different example
16:26 TimToady why should it be?
16:26 pmichaud token { [:i hello] }    versus   token { [    :i hello ] }
16:27 TimToady as far as I'm concerned, [ foo :i bar ] is legal.
16:27 pmichaud no
16:27 pmichaud that ':' is a 'cut'
16:27 TimToady no, :i is a token.
16:27 TimToady you have to say : i to get cut
16:27 pmichaud (based on previous conversations)
16:28 TimToady brb &
16:28 pmichaud I thought we were doing (but hadn't documented yet)   [ foo <:i> bar ]
16:30 kolibrie pmichaud: changing to 'regex schedule { :s [ <talk> ]+ }' results in '*** Cannot parse PGE: <schedule>'
16:31 pmichaud kolibrie: the :s has to go immediately against the left brace
16:31 pmichaud (according to PGE -- currently working out the syntax with TimToady )
16:31 nova-alpha joined perl6
16:32 kolibrie pmichaud: well, no error, but still only matched one 'talk'
16:32 nova-alpha hi
16:32 pmichaud well, note that 'token' won't use the :ws rule
16:32 pmichaud sorry, the <?ws> rule
16:32 nothingmuch hi kolibrie
16:32 kolibrie audreyt: do you still have the actual file that worked in Chicago?
16:33 kolibrie nothingmuch: hi
16:33 * nothingmuch wunders if any(@Larry).pick is going to clarify the === woes we're having, in terms of stating the purpose of ===
16:33 nothingmuch i think there's much FUD around =:=, === and .id because they are ill understood, not on the technical level, but in terms of purpose
16:34 TimToady nothingmuch: yes, the basic problem is that there are multiple purposes happening here.
16:34 audreyt kolibrie: you mean the input?
16:34 kolibrie the grammar
16:35 nothingmuch TimToady: i'll take that as a "yes, soon", so thanks =)
16:35 TimToady === will be reserved only for immutably true comparison, while something like eqv will be introduced for 'are these things equivalent currently'.
16:35 nothingmuch okay
16:35 TimToady in addition, eqv (and cmp) will take an optional sig to say how to compare.
16:35 audreyt kolibrie: it is the same one as in examples/rule/
16:35 buetow joined perl6
16:35 TimToady so sort criterion unifies with sigs
16:36 nothingmuch so what's the benefit of =:= vs ===? why the distinction?
16:36 kolibrie audreyt: does it still work on your laptop, because I can't get it to work anywhere
16:36 nothingmuch immutably true comparison means that even if $x changes when compoared on this dimension they are the same?
16:36 audreyt isn't =:= basically === but with lvalue on both sides?
16:36 audreyt $x =:= $y   #   variable($x) === variable($y)
16:37 nothingmuch okay
16:37 nothingmuch is it useful?
16:37 nothingmuch enough to get such a pretty operator?
16:37 nothingmuch because === has a 'valueness' to it, that many people are confused about
16:37 nothingmuch if === was eqv and =:= was the current === that may resolve things
16:38 audreyt I tend to agree, but it's ergonomics, so I don't have strong feelings one way or another
16:38 TimToady I like === to be "mathematically pure" and eqv to be the "dirty" one.
16:38 szbalint joined perl6
16:38 nothingmuch oh... hmm...
16:38 * nothingmuch *thinks*
16:38 nothingmuch so if we go to the currency object example
16:39 nothingmuch === is the right thing to use?
16:39 nothingmuch even if they e.g. have different sources, or something?
16:39 kolibrie pmichaud: changing everything to a regex still only matches one 'talk', and I thought I had a bunch of different types of regex/token/rule in the original
16:39 TimToady mutable objects are never ===.  they can be eqv.
16:39 nothingmuch ah
16:40 szbalint Hello.
16:40 nothingmuch so === is essentially refaddr() assuming perfect constant folding
16:40 nothingmuch and =:= is on the container only?
16:41 TimToady yes
16:41 * nothingmuch tries to come up with a use case
16:42 pmichaud kolibrie: I can't speak too knowledgably about what was working at yapc -- I don't recall that level of detail.  I do know that if <ws> is defined as   { .*? },   then it won't consume anything when implicitly called from a rule
16:42 pmichaud i.e., it'll always match the empty string
16:42 nothingmuch haha: http://www.treehugger.com/files/2006/07/start_planning.php
16:43 kolibrie pmichaud: that does seem to be what is happening now
16:43 pmichaud and, of course, <?ws> isn't called at all from a token or regex unless :sigspace/:s is specified
16:44 nothingmuch TimToady: what is the plausibility of having immutable items that are not constants?
16:44 nothingmuch like like an immutable concatenation operator
16:44 nothingmuch for strings
16:44 pmichaud and I'm not sure that internal :sigspace/:s is implemented in PGE yet (although :words and :w is)
16:44 nothingmuch and immutable lists/tuples/pairs
16:44 nothingmuch (think haskell)
16:44 nothingmuch i don't think there is a good space to fit this on a language level
16:45 nothingmuch but if we have these i would be *very* happy (especially for objects)
16:45 nothingmuch since I have been using them in perl 5 and it's just not as fun
16:45 nothingmuch (very heavily for 4 of my last projects)
16:45 TimToady that is what the whole "you can pretend these objects are immutable if the ids are ===" is all about.
16:45 nothingmuch it also encourages COW safety
16:45 nothingmuch this is not about pretending though
16:46 TimToady from the implementation end it's a pretense.
16:46 TimToady from the language end, no
16:46 nothingmuch oh, i see
16:46 nothingmuch does the runtime get to consolidate these when it gets a chance?
16:47 audreyt consolidate?
16:47 nothingmuch that is, is it safe to let the === operator move two data objects to the same memory space once it finds them, oppertunistically?
16:47 TimToady I think having the same id is a strong promise of that, probably.
16:47 nothingmuch okay
16:47 * kolibrie feels his hackathon project trickling through his fingers and away
16:48 nothingmuch my $foo = "foo"; my $bar = "fo"; $bar .= "o"; # are the IDs the same?
16:48 nothingmuch i mean, on the semantic level
16:48 nothingmuch is $foo === $bar
16:48 nothingmuch and when either will change, is it the value that's changing or the container that's getting an entirely different value?
16:49 TimToady I think the valueness can also be defined by === directly without being mediated by .id
16:49 nothingmuch hmm
16:49 TimToady you can probably ask for the id of a string, but it would probably have to canonicalize it.
16:49 nothingmuch are you saying that since i can say my $x = $bar; $bar .= "o"; # $x unchanged here
16:49 nothingmuch then they are the same?
16:50 nothingmuch and it's not the value that's being changed?
16:50 nothingmuch because otherwise you can't just canonicallize to some bytestring encoded some way, or whatever, it needs to also close over the address space of the mutable region
16:50 TimToady $bar ends up with a different string value in it, presuming you meant ~=
16:51 nothingmuch yes, sorry... old habits die hard
16:51 vytautas joined perl6
16:51 nothingmuch so basically the immutabilitye is a deep structure only thing
16:51 TimToady just as if you say $x += 1 you get a different numeric value.
16:51 * nothingmuch will summarize to the mailing list
16:51 nothingmuch thank you
16:51 nothingmuch possible S03 patch pending
16:52 nothingmuch gotta solve Moose role meta object protocol issues first
16:52 TimToady patches welcome. I need to trot off to $job.
16:52 kolibrie audreyt: can you help me debug yapc_schedule.pl and get it working again?
16:52 nothingmuch audreyt: btw, you may want to sanity check our roadmap
16:52 nothingmuch have fun
16:55 audreyt roadmap? url?
16:55 audreyt kolibrie: if you convert it to a t/rules/ :)
16:55 nothingmuch not quite written yet
16:55 nothingmuch see #moose
16:55 * audreyt only sees files in t/ as bugs... :)
16:56 kolibrie audreyt: if it still works on your laptop, that is great, and I just need to figure out how to get it to work in other places
16:57 kolibrie audreyt: if it no longer works there, I have no idea how to get it to do what I want
16:58 audreyt let me check.
16:59 lollan joined perl6
17:00 pmichaud I suggest:   regex  speaker { \<small\> (.*?) \</small\> }
17:00 pmichaud or, eventually:
17:00 pmichaud regex  speaker { \<small\> <(  .*?   )>  \</small\> }
17:01 pmichaud (assuming that the speaker is what appears within a <small>...</small> sequence)
17:01 kolibrie pmichaud: perhaps, but those are little details that I can clean up
17:02 audreyt pmichaud:
17:02 audreyt t/compilers/pge/pge-hs.t
17:02 audreyt now fails again
17:02 pmichaud checking
17:02 audreyt that's the root cause
17:02 * kolibrie is glad it's not just him
17:02 pmichaud [pmichaud@orange trunk]$ prove t/compilers/pge/pge-hs.t
17:02 pmichaud t/compilers/pge/pge-hs....ok
17:02 pmichaud All tests successful.
17:02 pmichaud Files=1, Tests=1,  0 wallclock secs ( 0.10 cusr +  0.02 csys =  0.12 CPU)
17:02 pmichaud [pmichaud@orange trunk]$
17:03 pmichaud (r13279)
17:03 audreyt hm.
17:03 fglock joined perl6
17:04 audreyt weird, when I svn up it worke again too
17:05 audreyt ...and now it worksforme
17:05 audreyt but it did break on last night's parrot
17:05 pmichaud fair enough -- I haven't changed anything in pge :-)
17:06 audreyt I know, I've seen the log :)
17:06 audreyt and as long as it works I'd like not to triage :)
17:06 leo audreyt: the HLL related changes went into .pbc, rendering these possibly incompatible
17:06 kolibrie audreyt: so I should svn up and try again?
17:06 audreyt there's been a fair bit of reshuffling that has caused strange error messages lately
17:06 audreyt leo: gotcha
17:06 pmichaud ah yes, any existing .pbc's may need rebuilding
17:06 audreyt kolibrie: yes, svn up to a fresh parrot
17:06 * pmichaud does a complete rebuild every morning
17:06 audreyt kolibrie: this is my input set:
17:06 leo if in doubt, make realclean
17:07 audreyt ...seems it pays off to always be in doubt :)
17:07 audreyt http://perlcabal.org/~audreyt/tmp/monday
17:07 audreyt kolibrie: try your input set on this "monday"
17:07 audreyt and convert it to a t/rules/ ?
17:07 kolibrie audreyt: will do
17:07 audreyt danke
17:12 justatheory joined perl6
17:12 ajs audreyt: My mail about the S29/API breakup is away. If I'm misrepresenting your request in that, please feel free to comment.
17:12 audreyt sure. thanks!
17:12 audreyt ajs++
17:13 pmichaud ajs++
17:13 pmichaud (excellent work on S29)
17:14 ajs pmichaud: thanks
17:16 audreyt afk, bbiab
17:21 hexmode joined perl6
17:25 kolibrie audreyt: rebuilt my parrot on feather and ran 'pugs ~/pugs/examples/rules/yapc_schedule.pl monday' but got no match
17:26 kolibrie locally I get *** Cannot parse PGE: <schedule>
17:27 kolibrie feather pugs appears to be r11500, local pugs is r11248
17:28 kolibrie my feather parrot is r13279, local is the same
17:38 xinming joined perl6
17:39 andara joined perl6
17:41 cognominal what is the best way to get ghc on the macbook (intel macosx)?
17:43 svnbot6 r11501 | fglock++ | v6 - chained operators - (1 < $x <= 3 < $y)
17:43 svnbot6 r11501 | fglock++ | - doesn't short-circuit yet
17:48 ajs fglock ++ fglock ++ fglock !
17:52 Steve_p Ohhh!  Shiney!
17:53 nnunley Breaks t/08-test.t for me.
17:53 fglock nnunley: checking...
17:54 nnunley fglock: 'plan 1;' is being transformed into 'plan( [ \(1) ], {} );
17:55 fglock nnunley: that's Data::Bind way of passing parameters
17:55 nnunley Ahh.
17:55 nnunley Maybe I have a stale version of Test.pm
17:55 vel joined perl6
17:56 nothingmuch clkao: would you like to rsync the rest of the music?
17:56 * nnunley deletes Test.pmc
17:58 gosha joined perl6
17:58 gosha left perl6
17:59 szbalint_ joined perl6
18:01 weinig|away is now known as weinig
18:06 frederico joined perl6
18:08 szbalint_ is now known as szbalint
18:10 svnbot6 r11502 | fglock++ | v6 - 'undef'
18:15 fglock re Test.pm - it looks like an op-precedence error on '~~'
18:17 * ruoso still fighting his broken environment
18:24 fglock '$a,$b~~$c ' is being parsed '($a,$b)~~$c'
18:25 svnbot6 r11503 | ajs++ | Took AnyChar/Uni into account in various places, mostly to overhaul chr/ord.
18:27 Revision17 joined perl6
18:31 svnbot6 r11504 | ajs++ | Small typo fix in chr/ord
18:37 weinig is now known as weinig|bbl
18:39 fglock left perl6
18:44 ajs I'm concerned: There's a summary of a discussion (I don't know when or where it happeend) in the === thread between Larry, Audrey and nothingmuch, but it doesn't actually resolve the core problem, which is that @a~~@b is going to act in unpredictable, and almost certainly unexpected ways. Is it really just supposed to be the less obvious version of rand()?
18:45 nothingmuch no
18:45 nothingmuch that's not the core problem ;-)
18:45 nothingmuch it's why it's ~~
18:45 nothingmuch it's the underlying mechanism for given/when
18:46 nothingmuch and various other stuff
18:46 nothingmuch it's actually fairly easy to predict
18:46 nothingmuch and a joy to work with with simple patterns on the right side
18:46 nothingmuch which is exactly what it was designed for
18:47 nothingmuch ajs: have you tried using ~~?
18:47 ajs nothingmuch: There is absolutely no way to predict the behavior of @a~~@b unless you happen to know the contents of @a and @b. Trust me: this will be the single most commonly repreated FAQ in Perl 6: "I used @a~~@b, and my program locked up"
18:48 nothingmuch you need to know the @b
18:48 nothingmuch just the @b
18:48 ajs nothingmuch: YES!
18:48 nothingmuch and you damn well should know the @b
18:48 nothingmuch because it's not a value
18:48 nothingmuch it's a pattern
18:48 nothingmuch but that's OK
18:48 nothingmuch perl has always given you enough rope to hang yourself and your entire team with
18:49 nothingmuch Perl 6 just gives you more ;-)
18:49 audreyt it's also the same as in perl5.9.
18:51 kolibrie audreyt: any idea where I should start debugging feather and my local system to get yapc_schedule.pl to work?
18:52 audreyt kolibrie: realclean on the newest parrent
18:52 audreyt parrot
18:52 audreyt rebuild it and make sure no previous parrot install is in sight
18:52 audreyt and use the "monday" file on the url above
18:53 ajs nothingmuch: Just tell me that you don't expect everyone who's ever written CGI to write: given CGI.params { when @expected_params {...}} and I'll leave it alone... if you do expect that, then I'd suggest fixing ~~ so that run-time dispatch does something far less dynamic.
18:53 nothingmuch that's they're problem
18:53 ajs audreyt: Perl 5 doesn't push ~~ as the primary tool for most jobs
18:53 nothingmuch i want ~~ for the smart people
18:53 nothingmuch neither does Perl 6
18:53 kolibrie audreyt: okay
18:53 nothingmuch this is digressing into the "should we make it safe for the newbies" discussion
18:53 nothingmuch it's been done before
18:54 ajs nothingmuch: but you have ~~ and all its smarness! When do you possibly want to use all of that smartness recursively on some random list? I honestly cannot think of any case
18:54 nothingmuch and the decision by @Larry is pretty clear - "yes, it should be safe for the newbies, as long as it doesn't take anything away from the perlishness or the flexibility"
18:54 kolibrie audreyt: I didn't realclean before, so maybe that is the problem
18:54 nothingmuch i don't
18:54 nothingmuch i iwill not pass any random list on the right side
18:54 nothingmuch i will either pass it inline
18:54 nothingmuch as ~~ [ .... ]; at the very worst
18:54 nothingmuch or i will very carefully construct an expression item
18:54 nothingmuch and then say ~~ $x;
18:54 ajs again, an example. Just one
18:55 nothingmuch which will be my complex expression
18:55 nothingmuch i've used it before
18:55 nothingmuch you can look in the tests
18:55 nothingmuch and some of ext, prolly
18:55 nothingmuch others have used it more extensively
18:55 nothingmuch it's really saner than you think
18:55 ajs I'll look for a run-time dispatch in the test... sec
18:55 andara joined perl6
18:55 nothingmuch why do you call this a runtime dispatch?
18:55 nothingmuch it's just a subcall
18:56 ajs nothingmuch: Oh... I see. We're not talking about the same thing here.
18:56 nothingmuch $x ~~ -> $param { .... } is just like ( -> $param { ... } ).($x)
18:56 nothingmuch the "nice" thing is that the right side is polymorphic
18:56 nothingmuch if it's a rule, or a sub or a value or a junction or whatever, it all response to the same "does it match" api
18:56 ajs nothingmuch: please stop. Ask a question, let me answer
18:57 nothingmuch you may multitask =)
19:00 ajs Any $x ~~ Any $y is run-time dispatched per S03 (go read it). It has no defined behavior, and dispatches based on the contents of the variables. Given that, your statements about "I would know the content" make no sense. If you know what it is, then it's not an Any. If you don't know what it is, then ... well, then you don't. I see no value in this run-time dispatch, but I DO see a great deal of end-user PAIN in finding that Perl did something that it t
19:00 ajs hought was smart with (potentially) dangerous data
19:01 ajs @a~~@b is just a pathological case of this
19:01 lambdabot Unknown command, try @list
19:01 ajs thank you lamdabot ;)
19:02 nothingmuch ajs: i read s03, i wrote the test
19:02 ajs I could see this: a typed array (or list that can be coaxed into one at run-time) having such smart behavior
19:02 nothingmuch the left side is safe
19:02 nothingmuch the right side is dangerous
19:02 nothingmuch that's what it boils down
19:02 ajs Yes
19:03 nothingmuch that's not necessarily bad
19:03 ajs But not dangerous at compile-time... all decisions made at compile-time are safe (confusing, maybe, but safe)
19:03 nothingmuch why?
19:03 clkao nothingmuch: yes, music.
19:03 nothingmuch there is no difference between compile time and runtime, conceptually, for multi dispatch
19:03 nothingmuch except that you need to annotate/infer types
19:04 ruoso joined perl6
19:04 clkao did audreyt hack up somehting to export hiveminder task list?
19:04 ajs Why is compile-time safe? Because there is a well defined behavior for ~~ at compile-time. At run-time the behavior of ~~ cannot be known until it happens because $b could be any value. Here's the #1 example of how that will happen: sub foo($a,$b) { return $a ~~ $b }
19:05 nothingmuch i know i know
19:05 nothingmuch $b could be any value
19:05 nothingmuch that's the whole point
19:05 nothingmuch clkao: i dunno, maybe
19:05 FurnaceBoy joined perl6
19:05 clkao nothingmuch: are you home?
19:05 nothingmuch clkao: nope, at stevan's
19:06 nothingmuch ajs: i think you are overly concerned about this in theory
19:06 nothingmuch in practice it Just Works
19:06 nothingmuch and it's ok that $b can be anything
19:06 nothingmuch because 99% of the time it will be a constant literal
19:06 nothingmuch but the flexibility is there that you can do it with any value whatsoever when you need to do that
19:07 audreyt ajs: how does a [...] find its way into $b?
19:07 audreyt unless you are allowing arbitrary evalution of user code, the programmer has control over $b's values at runtime
19:07 audreyt I agree it's counterintuitive
19:07 audreyt but probably not dangerous
19:09 ajs audreyt: in the function I gave as an example above, the author of foo() has no idea what $b is, they are just "matching aginst it". You have to realize that this is exactly what PHP went through and had to back out over the course of 4 versions because of massive problems with data being "too smart" to be secure.
19:09 nothingmuch so writing aa foo function like that is bad style
19:09 audreyt ajs: ok. so your counterproposal would be... ?
19:09 nothingmuch but using ~~ in it's intended use cases is still valid
19:09 audreyt distribution with >>===<< instead of >>~~<< ?
19:09 nothingmuch and requires that degree of dynamisim
19:10 audreyt ajs: I still want "[1,2,3] ~~ [1,2,3]" to work
19:10 lumi joined perl6
19:11 ajs audreyt: As stated in p6l: runtime dispatch of Any~~Any or @~~@ goes to a slightly less powerful op that performs the appropriate hyperoperation or whatever smartly, but not DYNAMICALLY... that's the difference. Just don't execute any code or the like.
19:11 ajs That was my proposal.
19:12 ajs I called it =~=, so @~~@ became @>>=~=<<@ and Any~~Any became Any=~=Any
19:12 nothingmuch then it's not match
19:12 audreyt ajs: ok. I think I grok it, and I think it's a sane proposal
19:12 * ruoso having a hard time to understand ajs proposal...
19:12 ajs nothingmuch: Yes, it is. It's just not recursive, run-time match. At run-time only the top level is "smart" the rest is "bright" ;)
19:12 audreyt problem is, I think the current behaviour is sane as well :)
19:13 nothingmuch ajs: you do know that rules have embedded code too
19:13 nothingmuch and that ~~ is how you invoke rules, right?
19:13 nothingmuch it's uuseful for cases when you want to provide a function like 'filter that stuff by $x'
19:13 nothingmuch and then you let your calling code provide $x
19:13 nothingmuch it's not suitable for user input
19:13 ruoso specially when $b is *anything* which can happen to be a rule
19:13 nothingmuch (although it is relatively safe if you follow the code paths, even for that)
19:14 audreyt well, p5 doesn't have this problem
19:14 audreyt as you have to say use re eval
19:14 nothingmuch (because typically you don't deserialize code objects from a CGI param)
19:14 audreyt for embedded closures to run
19:14 ajs If I know that $foo is a rule, and I willfully invoke it, knowing that it has user data, then I bought my own farm. If I invoke $foo and it HAPPENS to run code... bad.
19:14 xinming joined perl6
19:14 ajs invoke shoudl be match above
19:15 FurnaceBoy_ joined perl6
19:15 ruoso ajs, but that's up to the programmer, istn't it?
19:15 ajs audreyt: Larry has already talked about the need to protect rules from user data, I think. That one's not so hard.
19:16 ajs ruoso: It should be up to the programmer, but it's not if the programmer doesn't know the type of the data, and the dispatch is based on the type.
19:16 audreyt ajs: so it boils down to, if $b has a constraint over it
19:16 audreyt my Regex $b
19:16 audreyt then you are fine
19:16 audreyt my Array of Regex $b
19:16 audreyt too
19:16 ajs Yed
19:16 ajs yes
19:17 ruoso looks to me more like how taint works on perl 5
19:17 nothingmuch ajs: anyway, please start a new thread on p6l
19:17 nothingmuch with:
19:17 nothingmuch a. why you think ~~ is wrong
19:17 nothingmuch b. what you think can fix it
19:17 nothingmuch in a clearer way
19:17 audreyt ajs: I think I secretly agrees with you that
19:17 audreyt my $x
19:17 audreyt shouldn't be
19:17 audreyt my Any $x
19:17 nothingmuch because you explained yourself better here than on the mailing list
19:17 nothingmuch and the === thread was different
19:17 audreyt but I don't think we get to get that semantics in p6 :)
19:18 ruoso not in a mandatory way...
19:18 ruoso but the programmer *can* do it
19:18 audreyt indeed
19:18 ruoso I think this problem is taintness-related
19:19 ajs ruoso: Only for security purposes
19:19 nothingmuch taintness was not yet adressed on p6 space
19:19 nothingmuch i raised it several times
19:19 ruoso ~~ should be restricted in a tainted execution
19:19 nothingmuch but was pretty much warnocked
19:19 ajs audreyt, nothingmuch: I will try to start a new thread that is more clear. You've both helped me to see where I was being vauge.
19:19 TimToady joined perl6
19:19 nothingmuch ajs: also, discuss with TimToady when he is available
19:20 nothingmuch he should be able to explain the rationale most clearly
19:20 nothingmuch since he is good at it
19:20 ajs Ok
19:20 nothingmuch and he is responsible for that mess ;-)
19:20 kolibrie audreyt: made realclean and rebuilt parrot on feather and locally.  I only see filenames with 'parrot' under /home or /usr/share/doc or /var/cache/apt.  verified yapc_schedule.pl does not have modifications.  feather still doesn't find a match on file monday, and local still gets PGE error
19:21 * kolibrie thinks that he must be overlooking something
19:21 ruoso nothingmuch, is there something written about taintness in p6 space?
19:21 nothingmuch ruoso: nope
19:21 nothingmuch i had an insane mmd based proposal
19:21 leo 21:16 < svnbotl> r13283 | leo++ | trunk:
19:21 perlbot What kind of idiot karmas himself?  Your kind of idiot!
19:21 leo 21:16 < svnbotl> : [TODO] Implement .loadlib pragma in IMCC - 4
19:21 leo 21:16 < svnbotl> : * add a note to PBC_COMPAT about such changes
19:21 leo 21:16 < svnbotl> : * invalidate .pbc by adding an entry for .loadlib, which I should
19:22 nothingmuch whereby the type system would use uniqueness types
19:22 leo 21:16 < svnbotl> :   have done already yesterday
19:22 leo 21:16 < svnbotl> : Please make realclean ...
19:22 leo 21:16 < svnbotl> : (again, sorry, but in hope to prevent such troubles in future)
19:22 clkao hmm, i think fglock broke test.pm compilation
19:22 nothingmuch to prove that items are not tainted
19:22 leo sorry for the longish paste
19:22 audreyt leo: aha. thanks.
19:22 ruoso nothingmuch, if I get it, it is indeed insane
19:22 nothingmuch and items that are tainted will infect others by invoking mmd methods
19:22 nothingmuch whenever the values interact (are sent to a single function together)
19:22 audreyt leo: so that's the core of my confusion yesterday
19:23 audreyt leo: thanks a lot for resolving it :)
19:23 leo yep
19:23 nothingmuch and then another level of mmd calls whenever a value is clearly derived from a tainted one
19:23 leo thanks for hinting me at the very problem
19:23 qu1j0t3 joined perl6
19:23 audreyt bbiab
19:24 ruoso nothingmuch, like... ~~ for untainted values would dispatch to something different than ~~ for tainted values...
19:24 ruoso is it?
19:25 TimToady we are not going to bifurcate the type system to implement taintedness...
19:25 nothingmuch ruoso: that'
19:25 nothingmuch s just for the tainting magic
19:25 nothingmuch then you would declare policies
19:25 nothingmuch that add fatal errors to the tainting magic handlers
19:25 nothingmuch the idea was to be able to also partition data
19:26 nothingmuch so that you could e.g. tag an item as belonging to some user
19:26 nothingmuch as a runtime role
19:26 nothingmuch and then that role would leak to any data that touches that item
19:26 nothingmuch and if data from two different users is combined that is an error
19:26 nothingmuch because it's supposedly private
19:26 TimToady we're modeling it as a role, but it really needs to be managed at a lower level in the vm to be efficient.
19:26 ruoso I'm with TimToady...
19:27 nothingmuch TimToady: will we get extensible forms of taintedness?
19:27 ruoso sandbox-like solutions seems more clear and efficient...
19:27 TimToady you can roll your own.  won't be in the standard, I think.
19:27 TimToady all the standard cares about is me/notme
19:28 TimToady and can be implemented with a single bit in the object
19:28 nothingmuch hmm
19:28 nothingmuch ideally i would like to be able to have high performance "infecting" too
19:28 nothingmuch even if it's higher overhead than just a bit
19:29 TimToady okay, implement high-performance mixins, but you'll still pay a larger memory penalty
19:30 justatheory joined perl6
19:30 nothingmuch just the thing that triggers "this is now also of role x because it touched something of role x"
19:30 nothingmuch role Foo {
19:30 nothingmuch   meta 'Meta::Role::Infectous';
19:30 nothingmuch }
19:32 TimToady on rule closures, it's not the same situation as P5, because P5 had string interpolation model.
19:33 TimToady we really only have to worry about it if <$tainted> is used.
19:34 TimToady just as with ~~, somebody has to ask for the closure to be compiled.
19:35 TimToady and nobody should be compiling a tainted closure
19:35 FurnaceBoy joined perl6
19:35 ruoso so... how this applies to foo($a,$b) { $a ~~ $b }, considering $b is a rule with a closure...
19:35 TimToady you had to compile that rule somewhere.
19:36 kolibrie does http://svn.openfoundry.org/pugs/examples/rules/yapc_schedule.pl work for anyone other than audreyt with input from http://perlcabal.org/~audreyt/tmp/monday
19:36 ruoso *sub foo($a,$b...
19:36 ruoso TimToady, I see...
19:36 ruoso as the user cannot directly input a rule object
19:37 TimToady there are no implicit evals anywhere.  <$tainted> is as close as you get, I think.
19:37 ruoso but $tainted must still be a rule object... shouldn'ti it?
19:37 TimToady and then only if $tainted is a string.
19:38 TimToady $tainted will be compiled as a rule object if it's a string.
19:38 ruoso oh.. I see..
19:38 TimToady but we can disallow that for tainted values easily without clobbering everything else.
19:38 ruoso sure...
19:38 TimToady unlike in P5 where / $tainted / could do basically anything.
19:39 TimToady the whole P5ish rx is a string idea was completely broken.
19:39 FurnaceBoy_ joined perl6
19:39 TimToady P6 regexen are just a minilanguage, compiled at compile time just like ordinary code.
19:41 TimToady even the s///ee is now fixed, since the first e comes from closure interpolation: s//{ eval ...}/
19:41 TimToady so it's easy to see the eval there.
19:41 TimToady but the first eval is not really an eval.
19:41 TimToady it's just compile-time code.
19:42 pmichaud kolibrie: I don't see how the yapc_schedule grammar can work w/o some big changes.  I know it "worked" at yapc hackathon, but looking at it now I don't see how
19:44 ruoso TimToady++
19:46 wolverian yay, ghc 6.5 built :) now I
19:46 wolverian just have to remember what I needed it for ..
19:46 kolibrie pmichaud: audreyt says it works right now on her laptop
19:46 cognominal joined perl6
19:50 lumi joined perl6
20:05 TreyHarris TimToady: I intuited that eqv is the stringish form of === (though it's not listed in S03), but what's leg?
20:06 nothingmuch neither === nor eqv have anything to do with strings or numbers
20:06 nothingmuch they are on natural typoes
20:07 TreyHarris ah.  well what's leg?
20:09 wolverian less or greater :)
20:09 wolverian (less equal greater? I have no idea)
20:11 nothingmuch where was 'leg' mentioned?
20:11 merlyn less than, equal, greater than? :)
20:12 nothingmuch oh, i see now
20:12 nothingmuch damn mail server
20:30 clkao what's the status of mad?
20:30 svnbot6 r11505 | Sage++ | The new module-based definition of the P5AST, to help clean up the code by modularizing translate.hs
20:33 bpphillips left perl6
20:33 svnbot6 r11506 | Sage++ | The new module-based yaml AST parser, to help clean up the code by modularizing translate.hs
20:33 svnbot6 r11507 | Sage++ | The new main file for translate, to help clean up the code by modularizing translate.hs. Links with ASTDefinition, ASTParser, and ASTUtil.
20:33 svnbot6 r11508 | Sage++ | The new main file for translate, to help clean up the code by modularizing translate.hs. Links with ASTDefinition, ASTParser, and ASTUtil. My personal copy.
20:36 svnbot6 r11509 | Sage++ | The new module for (more or less) general purpose utility functions, to help clean up the code by modularizing translate.hs.
20:36 svnbot6 r11510 | Sage++ | This file now depreciated, everything moved to modules. Use ASTTranslate and other module instead.
20:36 svnbot6 r11511 | Sage++ | This file now depreciated, everything moved to modules. Use ASTTranslate and other modules instead.
20:36 wolverian o.o
20:42 svnbot6 r11512 | Sage++ | Updating with info on the new modular setup.
20:56 cjeris ?eval [ [ 1, 2 ], 3 ] >>+<< [ 4, [ 5, 6 ] ]
20:56 evalbot_11493 is now known as evalbot_11512
20:56 evalbot_11512 (6.0, 5.0)
20:56 andara left perl6
20:59 cjeris hm, I don't understand.  S03 says this should be [[5, 6], [8, 9]]
21:07 clkao anyone familiar with yapp?
21:07 clkao there seems to be precedence issue
21:08 audreyt cjeris: >><< does not yet distribute, it's a bug
21:08 audreyt cjeris: check to see if we have a test yet
21:08 audreyt or write a test?
21:09 audreyt (do you have a commit bit?)
21:09 cjeris no test in operators/hyper.t as of 6.2.12.  I can't get HEAD to build on my windows box
21:09 cjeris no
21:09 audreyt ok. your win32?
21:09 audreyt er
21:09 audreyt ok. your email addr?
21:09 cjeris yup.  i have a paste with the error.
21:09 pasteling "cjeris" at 140.247.124.140 pasted "novice question: pugs build fails at pugs-fps-0.7 on Windows (no Cygwin)" (100 lines, 4.2K) at http://sial.org/pbot/18381
21:10 cjeris pm'd
21:10 audreyt cjeris: ok. can you confirm this workaround works:
21:10 audreyt look at gcc-lib inside your c:\ghc\
21:10 audreyt and copy it recursively into c:\src\pugs\
21:10 audreyt so that C:\src\pugs\gcc-lib\ld.exe would exist
21:11 audreyt commit bit sent. please add yourself to AUTHORS
21:11 cjeris ok, test coming up.  thank you!
21:11 audreyt thank _you_! :)
21:11 audreyt cjeris++
21:13 cjeris build still fails, revised output coming up:
21:14 pasteling "cjeris" at 140.247.124.140 pasted "build failure after cp -r C:/ghc/ghc-6.4.2/gcc-lib C:/src/pugs/gcc-lib" (37 lines, 1.7K) at http://sial.org/pbot/18382
21:17 clkao audreyt: did you hack up a hiveminder task export?
21:18 audreyt clkao: I hacked up new Jifty::DBI::Schema
21:18 clkao mmm
21:18 audreyt cjeris: ok, will look into it
21:18 clkao i need someone to help me with parse::yapp craziness
21:19 Yaakov Hello, audreyt.
21:20 audreyt hello.
21:20 DaGo joined perl6
21:20 Yaakov You aren't on any of my other channels, and I don't pay a lot of attention here, so I hadn't said hello in a while.
21:21 clkao audreyt: i forgot, was the plan to check if there's sig available to decide if we want to do data::base-style callconv?
21:21 clkao it's a bit annoying. did we come up with something clever?
21:21 pasteling "pmichaud" at 24.1.26.255 pasted "updated yapc_schedule.pl" (20 lines, 344B) at http://sial.org/pbot/18383
21:21 pmichaud kolibrie: that version of yapc_schedule seems to work for me
21:22 pmichaud (see paste)
21:23 audreyt clkao: no, not any more clever. extract typesafety.pm seems sanest
21:23 audreyt the sig-detecting part
21:23 clkao typesafety made my eyes hurts last night
21:23 clkao so in brief, how does it do compile time checking?
21:23 audreyt it uses peephole optimizer
21:23 audreyt to do on the fly optree rewriting
21:24 audreyt when a sub decl is made
21:24 audreyt it performs a "constant" folding over it
21:24 clkao hmm, but we can't do that in (current) emitter
21:24 audreyt we can use helper
21:24 clkao ie - deciding what callconv to do
21:27 ingy hola
21:31 theorbtwo joined perl6
21:32 larsen joined perl6
21:42 oozoo joined perl6
21:42 oozoo left perl6
21:49 nothingmuch w00t!
21:49 * nothingmuch has an exit row seat
21:51 obra :)
21:51 obra when do you fly?
21:53 weinig|bbl is now known as weinig
22:03 svnbot6 r11513 | clkao++ | Fix PCR Yapp precedence emit.
22:24 justathe1ry joined perl6
22:32 justathe1ry joined perl6
22:36 cmarcelo joined perl6
22:41 cjeris left perl6
22:41 cmarcelo audreyt: ping?
22:41 avar joined perl6
22:45 svnbot6 r11514 | cmarcelo++ | * Judy.Map et al: new freeze functions (used to test RBR, the bio software which
22:45 svnbot6 r11514 | cmarcelo++ | make heavy use on Maps). New function for update: alter2, uses a function from
22:45 svnbot6 r11514 | cmarcelo++ | Maybe old value to Maybe new value. Alter2 calls delete_ and insert_ as needed,
22:45 svnbot6 r11514 | cmarcelo++ | the basic update happens in lookup_ (which allows updates).
22:47 buetow joined perl6
22:48 svnbot6 r11515 | clkao++ | Ignore arg_bind when there's no arg at all.
22:51 svnbot6 r11516 | clkao++ | Don't emit empty callconv when there's no param.
22:51 svnbot6 r11516 | clkao++ | Support not().
22:52 Daveman joined perl6
22:52 Teratogen joined perl6
22:57 lollan joined perl6
22:58 audreyt cmarcelo: pong!
22:58 audreyt cmarcelo: sorry, we seem to be missing each other a lot
23:04 cmarcelo audreyt: hey! it was my fault, i was mostly absent because of university end of semester, but it's all finished now (even Physics) =)
23:05 cmarcelo do you have some minutes to "sync" now or is not a good time?
23:06 wolverian so, uh, what requires ghc 6.5? I completely forgot what I built it for ..
23:16 svnbot6 r11517 | clkao++ | $?FILE => __FILE__
23:16 svnbot6 r11518 | clkao++ | Simple (extra) interpolation inside double quoted strings.
23:16 audreyt cmarcelo: perhaps not now; can you write up something and mail me instead?
23:16 cmarcelo fine
23:25 vsoni audreyt: hi
23:25 audreyt vsoni: hi.
23:25 vsoni audreyt: Your exception patch is out....Chip should apply it soon
23:26 vsoni vsoni: provided it looks good
23:27 audreyt yay.
23:27 audreyt url?
23:28 vsoni http://rt.perl.org/rt3/Ticket/Display.html?id=39715
23:28 lambdabot Title: "#39715: [TODO] IMCC errors should throw Parrot exceptions"
23:29 vsoni audreyt: There are two new Parrot API functions Parrot_compile_string and Parrot_compile_file
23:30 vsoni audreyt: you can call those instead of imcc_compile
23:30 audreyt eggcellent!
23:30 audreyt once it's applied I'll test with Pugs.Embed.Parrot
23:30 clkao people love eggs these days, weird
23:30 audreyt and retire the horrible hack
23:30 clkao audreyt: 02/3-output almost passing
23:30 audreyt clkao: woot
23:31 justathe1ry is now known as justatheory
23:31 vsoni audreyt: That would make Pugs cleaner
23:32 audreyt not to mention far less segfaults.
23:32 audreyt the only showstopper is that parrot is not installable
23:32 audreyt if that's fixed, then we can take out the "please don't embed parrot" warning
23:33 vsoni audreyt: Yep....Now i need to start think about PIRC ---> Perrcy
23:33 vsoni :)
23:37 vsoni audreyt: What are good alternatives to YACC/lex  in C
23:38 wolverian Juerd, feather's vim has a serious bug (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=373696) can I update it, or could you do it?
23:38 lambdabot Title: "#373696 - vim: Default $VIMRUNTIME set incorrectly - Debian Bug report logs"
23:39 ivanfrey audreyt: Should I build parrot and then build pugs with PUGS_EMBED="perl5 parrot" and PARROT_PATH="path of my built parrot tree" ?
23:39 wolverian hm. actually, I get the same error, but the path seems to be correct. weird
23:40 wolverian oh, there's a local vim
23:40 audreyt vsoni: Lemon, surely?
23:40 audreyt ivanfrey: well yes, but emb parrot is currently flaky
23:40 svnbot6 r11519 | clkao++ | Workaround a case that a segfault case where a bound $a assigned to
23:40 svnbot6 r11519 | clkao++ | $tmp, which then gets into data::bind.  The incoming $tmp has
23:40 svnbot6 r11519 | clkao++ | SVt_PVMG, but no MAGIC attached.
23:40 wolverian which doesn't work either
23:41 audreyt vsoni: it's reentrant threadsafe
23:41 audreyt highly recommended
23:41 vsoni audreyt: is it free?
23:41 audreyt if you are stuck with C, that is
23:41 audreyt http://www.hwaci.com/sw/lemon/
23:41 lambdabot Title: "The LEMON Parser Generator"
23:41 audreyt vsoni: it is SQLite
23:41 audreyt public domain
23:41 audreyt as free as possible.
23:41 ivanfrey audreyt: leave emb parrot out for now, but continue building and running smoke tests?
23:42 audreyt ivanfrey: sure, that sounds doable
23:42 audreyt bbiab... &

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

Perl 6 | Reference Documentation | Rakudo