Check your feather email | spec.pugscode.org | paste: sial.org/pbot/perl6 | pugs.blogs.com | www.treehugger.com/files/th_images/paradigm.jpg [set by audreyt on 2006-08-29 05:26:57 -0700] Set by Akwa|user on 14 September 2006. |
|||
TreyHarris | though i don't think you have power "over" someone quite so literally, but i can't remember that construction in latin | 00:00 | |
anyway. | |||
TreyHarris & | |||
00:07
Qiang joined,
putter joined
|
|||
putter backlogs... | 00:07 | ||
lambdabot | putter: You have 1 new message. '/msg lambdabot @messages' to read it. | ||
00:08
weinig joined
|
|||
putter | re markstos r13524 colabti.de/irclogger/irclogger_log/...sel=20#l40 , err, are those really the definitions of eval_ok and die_ok? I wouldn't have thought so... | 00:09 | |
lambdabot | Title: #perl6 2006-09-21,Thu, tinyurl.com/oypar | ||
TreyHarris | putter: no, but did you look at the diff? i think the actual diff is ok | 00:10 | |
i had the same reaction to the log | |||
though... | 00:11 | ||
putter | ah, no, I haven't seen the diff. thanks :) | 00:12 | |
TreyHarris | @tell markstos when you use the Test::eval_* functions, note that the string's scope is inside of the Test::eval_* you called. I'm trying to fix that with a macro (hopefully immediately after the .13 release?). But until then, use 'my $foo is context' and then '$+foo' in your eval string... | 00:13 | |
lambdabot | Consider it noted. | ||
putter | re parsing p6 without p6, | ||
I think it a qualitative question... some p6 can be parsed by emacs, now. | 00:14 | ||
at the other end of a continuum, | |||
TreyHarris | putter: yes, but i'm really fighting emacs every day | 00:15 | |
putter | there is no way editors are going to be able to deal well with string macros and dynamic parser grammar changes. | ||
TreyHarris | i still find it more useful to leave cperl-mode turned on than off, but just barely. | ||
putter | (no way without a p6 backend helper, of course) | ||
TreyHarris | putter: string macros, granted, but AST macros, even parsed ones... it can do it if it *uses* Perl to generate an AST it then uses to highlight | ||
oh. yes. | |||
putter | so the question is what style of code people will be writing. | ||
SamB | isn't that dangerous? | 00:16 | |
actually all this reminds me of CL | |||
TreyHarris | oops, nevermind... you said "parsing p6 without p6" and I immediately read that as "parsing p6 outside of p6". yes, of course... i just want to be sure that perl can be called in a non-dangerous way to parse and generate a syntax tree that an editor can use | 00:17 | |
putter | I am dsl-oriented, and find perl syntax less than pleasant, so will perhaps use such (macros, parser mods) more often than some others. | ||
re cperl... | |||
SamB | in CL there are three different ways you can process a file... | ||
TreyHarris | SamB: is what dangerous? | ||
SamB | TreyHarris: running macros just to highlight something in your editor | 00:18 | |
putter | have you tried the other perl-mode? I've found it nicer for p6 than cperl. | ||
SamB | at least, I think it is three ways... | ||
one is compiling | |||
one is loading | |||
SamB forgets the other one... | |||
TreyHarris | putter: oh... i didn't think the other perl mode knew anything about perl 6. | 00:19 | |
SamB: brb | 00:20 | ||
putter | SamB: eval | ||
SamB | I guess so | ||
putter | www.cs.queensu.ca/software_docs/gnu...l_257.html | ||
lambdabot | Title: ANSI and GNU Common Lisp Document - eval-when, tinyurl.com/ghhar | ||
TreyHarris | SamB: macros should be like BEGIN blocks, as nondestructive as is possible. people run perl -cw all the time, and actual code in BEGIN that causes problems when you do that is evil and should be stamped out. same for code in macros | 00:21 | |
SamB | it seems fairly complicated to figure out when to have your defmacros and such run | ||
TreyHarris will brb really now | |||
SamB | TreyHarris: I'm thinking like malicious code | ||
TreyHarris | SamB: i would assume the editor would run perl in safe mode | ||
SamB | TreyHarris: safe mode? | ||
TreyHarris | really really... i have to run, back in 10 ;-) | ||
00:21
markstos joined
|
|||
putter | TreyHarris: the other perl mode doesn't :) but since it is a much more... low key, less ambitious mode, it ends up being unobtrusive. | 00:22 | |
SamB | at least read macros are fairly rare in CL... | ||
putter | (something putter has always regretted :) | 00:23 | |
in a similar vein, and tying back to a conversation a few days ago, | 00:24 | ||
currently there is the following, the editor edits a source file, the compiler knows line numbers and talks back to the editor (eg compile errors), the runtime knows line numbers and also talks back to the editor/ide (eg runtime errors), and the program has access to line number info. | 00:26 | ||
The only missing part of that picture is that programs do not usually talk with editors. Perhaps they should. Especially if the editor can present nice alternate/suplemental views of code. | 00:27 | ||
00:28
lownoma925 joined
|
|||
putter | Oh, doc strings, especially when they can be modified at runtime, and accessed via an ide, are a similar thing. | 00:28 | |
markstos | TreyHarris: Thanks for the eval/is context tip. | ||
SamB | hmm | ||
markstos | I would an example script in pugs that has as() in it, but that breaks now. Was as() renamed to something else ? | 00:29 | |
putter | fmt | ||
markstos | s/would/found/ | ||
putter | .as is now .fmt | ||
stevan | putter! | ||
putter | (i think, so I heard go by on the channel) | 00:30 | |
stevan! :) | |||
markstos | putter: I confirmed that works. Thanks. | ||
TimToady | thought I fixed all those a day or two ago. | ||
stevan | putter: I am planning on attending the Boston.pm meeting,... but not the Harvard one | ||
SamB | Boston.pm? | ||
stevan | putter: I assume I will see you there? | ||
putter | stevan: :) :( | ||
;) | |||
obra | stevan: you're coming to town? | ||
SamB had no idea boston was so pathetic that you could implement it in a single module | 00:31 | ||
stevan | obra: yes sir | ||
obra: for the Damian talk next monday | |||
putter | stevan: most likely. sure, if you're likely to be there. | ||
obra | stevan: maybe food or coffee or something? | ||
stevan | obra: defintely | ||
obra | cool! | ||
00:31
frederico joined
|
|||
stevan | :) | 00:31 | |
obra | oh. I have a new toy. | 00:32 | |
"extract method" for perl5 | |||
svnbot6 | r13549 | markstos++ | spiral_numbers.pl -> s/as(/fmt(/ | ||
putter | mmm, foood | ||
obra | it writes out a method or function call, a sub wrapper and a subroutine signature | ||
without PPI or B | |||
stevan | obra: yes, I saw Pier's blog post, but didnt look closely yet | ||
obra | :) | ||
it's EEVIL | |||
putter | how? | ||
stevan | :) | ||
obra | hang on a sec for lighting talk url | 00:33 | |
putter | ruby has evil.rb (with things like .become, and multiple inheritance). maybe we need a Perl6::Evil:: to go with Acme? | ||
stevan | putter: Perl 6 *is* evil | 00:34 | |
by its very nature | |||
thats why we all love it soo much | |||
obra | perl _5_ is evil | ||
TimToady | perl 6 is wicked cool | ||
SamB | the Evil Mangler is written in perl 5 | 00:35 | |
obra | TimToady: indeed it is. Perl 6 excites me a lot. And I'm more psyched than ever about it | ||
SamB | actually I was disappointed by how un-evil the Evil Mangler seems to be... | ||
obra | putter: if you have a mozilla based browser: fsck.com/~jesse/refactoring/extract...e.2006.xul | 00:36 | |
lambdabot | tinyurl.com/ghwca | ||
SamB | anyone looked at the evil mangler? | ||
obra | SamB: url? | 00:37 | |
SamB calculates it | |||
putter | then again, I've never been entirely comfortable using "evil" in this context. just because you happily tend to not need the word much in every day life doesn't mean it lacks a well defined meaning... I wouldn't be a great fan of using genocide, rape, or ethnic cleansing as redefined words either... ah well, I'm a great fan of language evolution, so should just deal :) | ||
SamB | darcs.haskell.org/ghc/driver/mangler | 00:38 | |
lambdabot | Title: Index of /ghc/driver/mangler | ||
putter | obra: looking... | ||
SamB | putter: nobody else wants to use those words for software either, afaik! | ||
cleansing, maybe! but not ethnic. | 00:39 | ||
putter | "Scares me" lol | ||
SamB | because software has no ethnicity | ||
putter | Oh, very cute. :) | 00:41 | |
lownoma925 | any perl windows clients? | ||
TreyHarris | SamB: safe mode is how evalbot runs for instance. certain operations (touching the filesystem or network, for instance) are disallowed entirely. you'd want your editor to run perl that way, i think. possibly with a global ignore-and-continue attached to the SafeException or whatever it's called... | ||
obra | putter: and it works :) which pleased me greatly | ||
putter | SamB: :) | ||
SamB | TreyHarris: oh, point | ||
putter | err, the lol and cute were re obra. ;) | ||
TreyHarris | putter: I've found Object#instance_eval quite useful in ruby. I'm still cogitating on whether we need it in Perl 6 or not | 00:42 | |
markstos | obra: I read the slides, but I still didn't really "get" what the technique as good for. The example didn't grab me. | 00:43 | |
putter | obra: putting on my encourage collegiality hat, was a dig at ruby really necessary? ruby doesn't need to, because, like, it actually engineered that part nicely... | ||
obra | markstos: are you familiar with the 'extract method' refactoring pattern? | ||
markstos | No. That might be the problem... | ||
SamB | putter: your what hat? | 00:44 | |
obra | putter: from talking to piers, who is lately a ruby person, apparently this is actually _hard_ in ruby | ||
and it got people to giggle. even the ruby hackers. | |||
it was all about getting people to giggle | |||
markstos: "take some part of a method and pull it out into its own method" | |||
markstos | Got it. | ||
obra | the hard part is traditionally figuring out the method signature. "what vars does the code use?" | ||
SamB | hmm, aren't they supposed to be Peril Sensitive? | 00:45 | |
obra | SamB: depends who you ask. | ||
This was a "Sick Perl" talk | |||
SamB | is perl available with feelies? | 00:46 | |
putter | SamB: encourage collegiality - eg, the perl and python folks would benefit from talking nicely about the common needs of their very similar languages, rather than silly sniping at each other all the time. fortunately its gotten much better in recent years. | 00:47 | |
obra | putter: think of it as good-natured ribbing. | 00:48 | |
they were telling me that they've been taking bets on whether p6 or ruby 2.0 comes out first | |||
Their money is apparently all on Perl 6 | |||
putter | obra: re hard, err, no... oh, but I have a working Ripper. so easy in 2.0, less so in current release. though even there... one sec | 00:49 | |
www.zenspider.com/ZSS/Products/ParseTree/ | |||
lambdabot | Title: ParseTree, tinyurl.com/oz9nd | ||
putter | that sufficient? | 00:50 | |
TreyHarris | obra: i lost the referent there. who was "they" who were betting on Perl 6? | ||
obra | " * Only works on methods in classes/modules, not arbitrary code. | ||
putter: that implies that no, it's not | |||
SamB | obra: how will anyone get any money for winning if noone bets on Ruby 2.0 | 00:51 | |
obra | but. I was only talking about that one technique. as ruby has no 'strict' | ||
putter | obra: re giggles, :) | ||
obra | SamB: I don't believe anyone cares about winning money | ||
TreyHarris: Ruby hackers | |||
markstos | I'm trying to install v6.pm plus dependencies into a local (non-system) directory, and I can't figure out a good/easy way to do that. | ||
The Module::Install docs seem to focus on how to build a Makefile.PL, rather than how to use one. | |||
SamB | can we still snipe at ruby people for having such goofy closures? | 00:52 | |
obra | markstos: "perl Makefile.PL" | ||
SamB | or maybe at ruby anyway? | ||
markstos | obra: huh? perl Makefile.PL just starts the process of attempting to install in system-wide directories. | ||
putter | re only class/modules, though that of course is not a large restriction in ruby :). though it does have some other unfortunate aspects - it deals with ast rather than source, which is often a very one-way lossy transformation (src->ast that is). | 00:53 | |
obra | ah. sorry. it supports PREFIX like MakeMaker | ||
putter | s/it does/parsetree does/ | ||
TreyHarris | markstos: perl Makefile.PL PREFIX=~/lib/perl or whatever | ||
markstos | TreyHarris: Thanks. | ||
obra | but if you're up for writing more docs, markstos, I'll happily commit them for you | ||
putter | SamB: 2.0 has a real lambda. | 00:54 | |
SamB | how about perl hackers? can I snipe at perl hackers? | ||
TreyHarris | does 2.0 have a strict? that bit me so many times.... | ||
SamB is a python-er hacker | |||
SamB is a Haskellite now though | 00:55 | ||
putter | TreyHarris: don't know, sorry | ||
TreyHarris | ok, time to go for real this time, only an hour after i said i would.... & | 00:56 | |
putter | re collegiality, besides, once Language::*::OnPerl6 starts getting populated, ruby/perl/tcl/php etc programmers will *be* p6 programmers :) | ||
TreyHarris: bye | 00:57 | ||
obra: re ruby source transformation - so the real answer is ruby 2.0 will have a working Ripper module, which will do whitespace preserving source->ast which can be losslessly unparsed back to source. | 00:58 | ||
SamB | putter: I notice the absense of Python on that list | ||
putter | one advantage of having a language which is "parse completely before execute" | ||
python too, definitely. | 00:59 | ||
obra | putter: I hear 5.10 will get you roughly that too | ||
putter | actually, the second one, "perl", should have been "python", but "p" misindexed. | ||
re 5.10, refactorable perl? oh my. | 01:00 | ||
the ability to take cpan modules whose authors were on acid, err, who have... rich creative personal styles, and boil them down to some standard perl? | 01:02 | ||
obra | putter: MAD_PROPS will get you a sane AST you can munge | ||
lwall++ # Mad props | |||
putter wonders if p6 will need a "standard p6" definition, to avoid businesses... and villagers, from being scared of by peoples unicode macro parser-mod games. | 01:03 | ||
obra: but can you get losslessly back to source? | |||
theorbtwo | putter: Yes. | 01:04 | |
obra | putter: I defer to TimToady | ||
theorbtwo | I'm less then sure he's still awake. | ||
Er, s/awake/with us/, since I suppose he's not in anything close to this TZ (GMT). | 01:06 | ||
putter | obra: re when 2.0 comes out, curious, I hadn't heard it was an issue. ruby vcs head is fairly usable, and is draft 2.0, so I think of my self a usually using 2.0. (forced to it by the need for real lambda) | ||
TreyHarris: instance_eval++ | 01:07 | ||
re 2.0, also, until it comes out, I can retain hope that the "objects can't be nil, so you simply can't create real proxy objects" bug will be fixed. | 01:08 | ||
stevan | obra: extract_method++ | 01:12 | |
so very cool :) | |||
obra | stevan: next challenge: rename_variable | 01:13 | |
and rename_subroutine | |||
oh god. | |||
I think I know how to do a credible rename_subroutine, assuming proper test coverage. | 01:14 | ||
putter | lol | ||
obra | UNIVERSAL::AUTOLOAD + Carp to find calls. | 01:15 | |
putter | fglock, etal: rules don't backtrack anymore?!? or r13533 was just a quick workaround? | ||
stevan slowly backs away from obra | |||
although it would probably work ;) | |||
obra | stevan: I'm feeling very machiavellian about refactoring | ||
The Ends Justify the Hacks | |||
stevan | The Ends Jiftify the Hacks :) | 01:16 | |
obra | I think I really want B::Deparse or MADPROPS here. | ||
theorbtwo | You can do quite a bit with iterating over the opcode tree and asking via B what function is really going to be called. | ||
That'll help for renaming functions, but not methods, obviously. | |||
stevan | theorbtwo: how does it handle methods though? | ||
theorbtwo | Heh. | 01:17 | |
putter | "assuming proper test coverage" sounds sort of like the head of Boeing saying their lobbying wasn't problematic because of the... wisdom and judgment of our congressional representatives. everyone was too polite to ask why an engineer was building on counterfacturals ;) | ||
stevan | obra: the only problem with UNIVERSAL::AUTOLOAD is if there is another AUTOLOAD in the class hierarchy | ||
that could get hairy | 01:18 | ||
obra | mm. | ||
stevan | however,.. doing a swap might work | ||
my $old = \&foo; | |||
obra | *nod* a swap does feel cleaner. | ||
stevan | *foo = sub { print 'rappin'; $old->(@_) } | ||
*bar = $old; | |||
obra | I'd been starting to go there, but I got distracted by the evil | ||
nah. you don't want a pure swap | |||
you want to die instead of wrap | |||
and trap the errors ala this code | 01:19 | ||
stevan | true | ||
stevan smells a hackathon coming on monday night :) | |||
obra | oo. | 01:20 | |
ok. sleep time for me. i'm still in the uk | |||
stevan | cheerio then,.. I am off to watch a movie myself | 01:21 | |
obra | enjoy | ||
. o O {We might be albe to use ACK} | 01:22 | ||
01:22
Aankhen`` joined
|
|||
theorbtwo | ACK? | 01:23 | |
putter wonders why folks are so enthused by non-backtracking. LR(1) is so rarely what one wants. | |||
obra | ACK == petdance's too | 01:24 | |
tool | |||
SamB | dunno! | ||
SamB likes happy fairly well | |||
01:25
rodi joined
01:27
frederico joined
|
|||
markstos | Has collapse() been renamed to something ? | 01:41 | |
01:44
kanru joined
01:55
weinig is now known as weinig|exhausted
02:02
mjk joined
|
|||
svnbot6 | r13550 | fglock++ | Pugs-Compiler-Rule - more detailed quantifier parsing; | 02:09 | |
r13550 | fglock++ | added '**{range}' quantifier (needs emitter support) | |||
02:21
kanru2 joined
02:30
mako132_ joined
02:33
mako132_ joined
02:49
avarab joined
02:58
mdiep joined
03:01
avarab_ joined
03:03
cognominal joined
03:04
evalbot_r13548 is now known as evalbot_r13550
|
|||
TreyHarris | what is collapse()? | 03:07 | |
03:09
fglock joined
03:11
weinig|exhausted is now known as weinig|zZz
03:16
fglock joined
03:17
azr|elious joined
03:20
TreyHarris joined
|
|||
fglock | putter: re non-backtracking - plain 'regex' backtracks; 'token' and 'rule' are mostly used to write parsers, and only backtrack where they are told to | 03:28 | |
03:29
bsb joined
|
|||
ingy | hola good folk | 03:29 | |
anyone know a module that can easily trace my subroutine calls | |||
possibly with input and output values | 03:30 | ||
possibly indented by level | |||
I'm looking for such a module most excellent | 03:31 | ||
fglock | Devel::Trace almost does that - you would need to supress non-calls | 03:34 | |
03:35
Qiang_ joined
|
|||
audreyt | Devel::SimpleTrace too | 03:35 | |
fglock | 'trace subroutine' in search cpan has quite a few modules - all new to me | 03:36 | |
"Debug::Trace instruments subroutines to provide tracing information upon every call and return" | 03:37 | ||
ingy: are you translating pyyaml to perl5? | 03:39 | ||
ingy | fglock: yeah | 03:41 | |
fglock | I looked at the code - it is quite big - I wonder if writing a python translator reusing the v6.pm infrastructure would be too difficult | 03:42 | |
ingy | fglock: I thought of that but I'm not sure it's a good way to go | 03:43 | |
I've been doing all the porting by hand and while it is pretty one to one there are somethings that might be hard to detect | 03:44 | ||
TreyHarris | ?eval Test::is(3, 3, 'yes') | ||
evalbot_r13550 | Error: No compatible subroutine found: "&Test::is" | ||
ingy | I could be wrong | ||
Debug::Trace rquires me to name the subs I want to trace | |||
ick | |||
I want to say "trace all the subs in modules beginning 'YAML::'" | 03:45 | ||
fglock | it would be interesting if you could document some of these problems - I'd like to give it a try | ||
mugwump | I have most of the YAML spec as perl5 regex somewhere, been meaning to translate it to rules | 03:46 | |
doing the CFG nesting and item productions were a bit insane and didn't get finished | |||
ingy | fglock: my idea was port it first, then use that as a test result to try to translate to | ||
TreyHarris | hi, audreyt! been busy with $job? | 03:47 | |
ingy | but mostly I am trying not to get sidetracked by temptations like this | ||
:P | |||
hi mugwump | 03:49 | ||
03:49
Yappo joined
|
|||
mugwump | howsit, ingy ? | 03:49 | |
ingy | I saw naked lunch last night | ||
mugwump | excellent | ||
ingy | audreyt: Devel::SimpleTrace looks not what I want | ||
WHY HASN'T THIS BEEN WRITTEN???!!! | 03:50 | ||
mugwump | perl -d with trace on? | ||
ingy | yeah it was a cool movie | ||
audreyt | Devel::STrace? | 03:51 | |
ingy | I want a nice indented log of sub calls | ||
fglock | ingy: agreed - I was implementing eval(:lang<yaml>) today, and I was wondering about :lang<python> and such | ||
ingy | devel::strace has binary output I think | ||
audreyt | oh. indented | 03:52 | |
Devel::TraceSubs has that | |||
Devel::TraceCalls has limiting-concern API | |||
TreyHarris | ?eval sub moose (Bool $red) { say "{$red ?? 'red' !! 'black'}" } ; moose(undef) | ||
evalbot_r13550 | OUTPUT[black ] Bool::True | ||
TreyHarris | ?eval sub moose (Bool $red) { say "{$red ?? 'red' !! 'black'}" } ; &moose.call(\(undef)) | 03:53 | |
evalbot_r13550 | pugs: src/Pugs/Val.hs:(97,4)-(98,39): Non-exhaustive patterns in function asBit | ||
TreyHarris | what's that last errmsg mean? | ||
ingy | Devel::TraceSubs! | ||
my faith in the community is restored | |||
I was about to have a coniption | |||
audreyt | TreyHarris: a sec | ||
what is this coniption thing? | 03:54 | ||
TreyHarris | conniption, a fit of rage or hysterics | ||
ingy | fglock: svn.yaml.com/repo/trunk/PlYaml/lib/...Scanner.pm | ||
lambdabot | tinyurl.com/j27gb | ||
ingy | fglock: as you can see I am porting with all the original Python inline | 03:55 | |
fglock: so that is basically my porting notes | |||
I'll also make secial notes for the weird cases. | |||
for the most part Python is very translatable | 03:56 | ||
but again, I don't want to get into this fun experimenting until my work is done | |||
fglock | ingy: that helps a lot - thanks! | ||
ingy | fglock: I am using a special YAML::Base to ease the OO pain. (ala Spiffy but not using Spiffy) | 03:57 | |
03:57
christopher joined
|
|||
ingy | basically just exporting 'field' everywhere and doing a %INC trick to make -base work with inline classes | 03:58 | |
03:59
justatheory joined
|
|||
ingy | python seems to use classes and objects a lot more than a perl hacker would | 03:59 | |
I assume objects are much lighter weight in Python | |||
pyyaml's only pitfall (IMHO) is the typical Python thing of importing whole big classes into other big classes | 04:00 | ||
so there is a Parser and a Scanner, but instead of making a Scanner object for the Parser to talk to, Parser just imports all of Scanner into it | 04:01 | ||
which makes it hard to figure out which parts are from where | 04:02 | ||
I mean the whole idea of having abstractions is to keep things separated | |||
maybe I'm just a grumpy old fart | |||
fglock | mm - maybe importing is related to making method dispatch lighter weight | 04:05 | |
ingy | fglock: it does have that effect, yes... | 04:07 | |
$parser->scanner->next_token | |||
becomes $parser->next_token | |||
audreyt | TreyHarris: try r13551 | 04:09 | |
svnbot6 | r13551 | audreyt++ | * Handle asBit for VUndef and VNative cases. | ||
TreyHarris | audreyt: thanks... do i want to know why that meant you couldn't use undef in captures? | 04:10 | |
audreyt | you can | ||
it's just the ~undef coerce wasn't written | |||
someone as being too lazy | |||
probably me. | |||
TreyHarris | ?eval my $capt = \(1,2,3); [,] $capt | 04:11 | |
audreyt | I mean ?undef. | ||
evalbot_r13550 | (CaptSub {c_feeds = [MkFeed {f_positionals = [VPure (IFinite 1),VPure (IFinite 2),VPure (IFinite 3)], f_nameds = {}}]},) | ||
TreyHarris nods | |||
hmmm... how do I get 1,2,3 back out of $capt? | |||
fglock | audreyt: btw, i implemented Match.yaml today | 04:12 | |
audreyt: we could agree on Match internals to make translation easier | 04:13 | ||
ingy | fglock: what's that? | ||
audreyt | fglock: oooh nice | ||
fglock: then I can make use of the Capture field too | |||
$$/ that is | |||
fglock | ingy: Match == object returned by Rules | 04:14 | |
audreyt | I'd be happy to use whatever you come up with but, I need to run now, already late for $job :) | ||
bbl | |||
fglock | audreyt: ok | ||
TreyHarris | fglock: do you have any idea how i can get 1,2,3 back out of $capt? given that | doesn't exist yet? | 04:16 | |
ingy | [particle]: pin | ||
g | |||
seen [particle] | 04:17 | ||
jabbot | ingy: [particle] was seen 7 hours 35 minutes 48 seconds ago | ||
fglock | TreyHarris: looking | ||
?eval my $capt = \(1,2,3); $capt[1] | 04:21 | ||
evalbot_r13550 | \undef | ||
fglock | mm - it doesn't behave like Match | 04:22 | |
TreyHarris | yeah... i was trying to write a test for the now-implemented .call, but i can't figure out how to actually pass the capture .call requires | 04:23 | |
audreyt | it should, it just doesn't yet. | ||
TreyHarris | oh, ok. | 04:24 | |
audreyt | ?eval sub f (Bool $x) { say ($x ?? 1 !! 2) }; &f.call(\(undef)) | ||
evalbot_r13550 | pugs: src/Pugs/Val.hs:(97,4)-(98,39): Non-exhaustive patterns in function asBit | ||
audreyt | ?eval sub f (Bool $x) { say ($x ?? 1 !! 2) }; &f.call(\(1)) | ||
evalbot_r13550 | OUTPUT[1 ] Bool::True | ||
fglock | ?eval my $capt = \(1,2,3); $capt -> @a { say @a } # bind to a signature | 04:25 | |
evalbot_r13550 | Error: Unexpected "->" expecting comment, operator, statement modifier, ";" or end of input | ||
TreyHarris | sure, but i meant as a non-literal capture | ||
audreyt | ?eval my $c = \(1); sub f (Bool $x) { say ($x ?? 1 !! 2) }; &f.call($c) | ||
evalbot_r13550 | pugs: don't know how to toVV': VRef <Scalar:0xb79a9f04> | ||
audreyt | hm. that's pretty broken. | 04:26 | |
sorry, really gotta run. bbiab :) | |||
fglock | gotta sleep :) | 04:27 | |
TreyHarris | fglock: sweet dreams! | ||
phew, i'm just glad it's actually broken and it wasn't just me being stupid :-) | |||
fglock | & | ||
04:27
fglock left
04:34
simcop2387 joined
04:35
evalbot_r13550 is now known as evalbot_r13551,
putter joined
|
|||
putter | oh, fribble. just missed fglock. :( | 04:35 | |
TreyHarris | ?eval my $c = \(1); sub f (Bool $x) { say ($x ?? 1 !! 2) }; &f.call($c) | 04:36 | |
evalbot_r13551 | pugs: don't know how to toVV': VRef <Scalar:0xb7aa9f04> | ||
TreyHarris | ?eval my $c = \(1); sub f (Bool $x) { say ($x ?? 1 !! 2) }; &f.call(\(undef)) | ||
evalbot_r13551 | OUTPUT[2 ] Bool::True | ||
TreyHarris | ?eval my $c = \(1); sub f (Bool $x) { say ($x ?? 1 !! 2) }; &f.call(\1) | ||
evalbot_r13551 | pugs: don't know how to toVV': VRef <Scalar::Const:0xb7b426f8> | ||
TreyHarris | ?eval my $c = \(1); sub f (Bool $x) { say ($x ?? 1 !! 2) }; &f.call(\(1)) | ||
evalbot_r13551 | OUTPUT[1 ] Bool::True | 04:37 | |
TreyHarris | ?eval my $c = \(1); sub f (Bool $x) { say ($x ?? 1 !! 2) }; &f.call(\$c) | ||
evalbot_r13551 | pugs: don't know how to toVV': VRef <Scalar::Const:0xb7acb498> | ||
TreyHarris | ?eval my $c = \(1); sub f (Bool $x) { say ($x ?? 1 !! 2) }; &f.call(\($c)) | ||
evalbot_r13551 | pugs: don't know how to toVV': VRef <Scalar:0xb79a9a90> | ||
putter | fglock, audreyt: a while back in t/rules there was a p6 transliteration of p5's re_tests (which still exists in munged form at t/rules/perl5_\d.t). My very fuzzy recollection is I did one, and then someone else did a better one, or cleaned it up, or some such. It's not there now. Any idea what happened to it? | 04:38 | |
svnbot6 | r13552 | audreyt++ | * in .call, both the cv and the capt are rvalue | ||
putter | Did it get deleted in one of the "oh, we can just move all this stuff to parrot and not worry about it" things? | 04:39 | |
Ah well. I'll look for it tomorrow. I just started looking at the PCR runtime. I wanted to do a time trial against re_tests to get a feel for its performance. | 04:42 | ||
Perhaps it got t_disabled at some point when PGE was choking on it, and disappeared from there? | |||
I'll look later. Just thought someone might remember. Tnx. | 04:44 | ||
g'night & | |||
TreyHarris | ?eval 1 | 04:46 | |
04:46
evalbot_r13551 is now known as evalbot_r13552
|
|||
evalbot_r13552 | 1 | 04:46 | |
TreyHarris | ?eval my $c = \(1); sub f (Bool $x) { say ($x ?? 1 !! 2) }; &f.call($c) | ||
evalbot_r13552 | OUTPUT[1 ] Bool::True | ||
TreyHarris | ?eval my $c = \(undef); sub f (Bool $x) { say ($x ?? 1 !! 2) }; &f.call($c) | ||
evalbot_r13552 | OUTPUT[2 ] Bool::True | ||
TreyHarris | audreyt++ | 04:48 | |
05:12
iblechbot joined
|
|||
christopher | The tests for v6 Test.pm are very confusing, as documentation. | 05:12 | |
For some of them, failure is the _desired effect_ | |||
and this is indicated by a :todo mark. | |||
05:14
BooK__ joined
|
|||
christopher | something like Test::Warn is needed to check that fails happen correctly... | 05:17 | |
05:24
dj_goku_ joined,
BooK__ joined,
iblechbot joined,
simcop2387 joined,
justatheory joined,
christopher joined,
Yappo joined,
Qiang_ joined,
bsb joined,
TreyHarris joined,
azr|elious joined,
cognominal joined,
avarab_ joined,
mdiep joined,
kanru2 joined,
mjk joined,
Aankhen`` joined,
weinig|zZz joined,
awwaiid joined,
SubStack joined,
buubot joined,
mako132 joined,
araujo joined,
Patterner joined,
mauke joined,
crem joined,
zeriod joined,
kane-xs_ joined,
masak joined,
ayrnieu joined,
scw joined,
f0rth joined,
plural joined,
xerox joined,
ajs_ joined,
idiotmax joined,
ruz joined,
lisppaste3 joined,
stevan joined,
webmind joined,
gugod joined,
baest joined,
mtve joined,
ofer0 joined,
Eidolos joined,
nothingmuch joined,
wilx joined,
jdv79 joined,
theorbtwo joined,
glasser joined,
lampus joined,
miyagawa_ joined,
thepler joined,
lumi joined,
TimToady joined,
cookys joined,
szabgab joined,
amv joined,
norageek joined,
[particle] joined,
Khisanth joined,
c6rbon joined,
gaal joined,
revdiablo joined,
PerlJam joined,
pjcj joined,
xinming_ joined,
evalbot_r13552 joined,
buu joined,
autark joined,
xern joined,
frankg joined,
mollmerx joined,
LCamel joined,
dvorak joined,
spoop joined,
rafl joined,
Teratogen joined,
perlbot joined,
prism joined,
drbean joined,
rafl_ joined,
spinclad joined,
nine joined,
hcchien joined,
cj joined,
kolibrie joined,
orafu joined,
statico joined,
jabbot joined,
Southen joined,
meppl joined,
gantrixx joined,
kalven joined,
svnbot6 joined,
Grrrr joined,
ajs_home joined,
nnunley joined,
takanori_ joined,
nperez joined,
ingy joined,
qmole joined,
Maddingue joined,
kcwu joined,
pmurias joined,
broquaint joined,
clkao joined,
obra joined,
wolverian joined,
audreyt joined,
jiing joined,
cmarcelo joined,
rgs joined,
leo joined,
chip joined,
pmichaud joined,
Juerd joined,
Shabble joined,
dj_goku_ is now known as dj_goku,
silug joined
|
|||
TreyHarris | typically, the person implementing a new test will run it to be sure it fails (assuming it documents an unimplemented feature or a bug), and if it's for a feature, then :todo<feature> it. :todo<bug> is occassionally used when a bug requires large-scale changes to fix it, but it's much less common--ordinarily actual bugs are left un-todo'd | 05:25 | |
a new failing test is a sign to the compiler implementers that something went wrong with their work and they need to look at the test. so we don't do that for tests that won't work until something new is implemented. | 05:26 | ||
does all that make sense? | |||
christopher | TreyHarris: take a look at the lives_ok and dies_ok tests | ||
in ext/Test/t/1-basic.t | |||
you can't simply put "ok ! dies_ok", because the dies_ok counts as a test too | 05:27 | ||
and you can't put lives_ok, to test "not dies_ok" | |||
because you want to test the dies_ok function | 05:28 | ||
05:28
Yappo joined,
lambdabot joined
|
|||
TreyHarris | christopher: i don't see what you're talking about. what revision of ext/Test/t/1-basic.t are you looking at? | 05:29 | |
christopher | r13552 | 05:30 | |
TreyHarris | how odd. I don't see "ok ! dies_ok" anywhere in that file | ||
christopher | no, it's not there | ||
but look for example at line 23 | |||
that test is intended to test that 2+2 == 5 doesn't satisfy ok, I think | 05:31 | ||
(! dies_ok was just a reference to what I think you were suggesting I change these too) | 05:32 | ||
TreyHarris | oh, i see | 05:33 | |
how would you check that ok does not return ok when its argument is false? | 05:34 | ||
christopher | In my local copy, I tried adding a "invert_tests" variable, that gets checked right before Test::Proclaim | 05:35 | |
and you could set this locally in a block, if you wanted to do these kinds of tests | |||
TreyHarris | that would not be valid. you can't change code you're testing in your unit test | ||
you need to have a failing test, and be sure it fails | |||
:todo does that | |||
christopher | It's $Test::invert_tests | 05:36 | |
This isn't really a problem for testing any module but Test.pm itself, I think. | |||
TreyHarris | an "unexpectedly suceeding" would be something audreyt and so on would notice right away--in Test.pm, that would indicate a "failure" as well | ||
christopher | I would revise Test.pm so that "ok" and "not ok" are switched when $Test::invert_tests is set | 05:37 | |
so that 1-basic.t should produce entirely OK if it entirely works | |||
TreyHarris | that is not valid. if Test.pm fails, then we're in big trouble. it's very important that its tests exercise every function in a way no different from how it's used. and one of the things we must exercise it a failing test. if you switch it so every test succeeds, then we haven't exercised that code. | 05:38 | |
christopher | TreyHarris: Test.pm isn't being exercised by its unit tests _now_. | 05:39 | |
After the "invert" switch, you'd at least be able to test that tests that are supposed to fail, do fail. | |||
Right now, 1-basic.t does not document when dies_ok is supposed to fail. | 05:40 | ||
Right now, 1-basic.t does not document when any test is supposed to fail, because such tests are marked :todo. | |||
The results of 1-basic.t have to be interpreted differently from those of any other test in the p6 system that I'm aware of. | 05:41 | ||
(currently, that is) | |||
TreyHarris | i'm sorry, I guess I'm just confused. right now, ok(2+2==5) fails. it's marked :todo so that the test *harness* accepts that failure as success. if ok(2+2 == 5), then it would unexpectedly succeed, and the harness would warn about that. | ||
christopher | The different interpretation is right there: "it's marked :todo so that the test *harness* accepts that failure as success." | 05:42 | |
Usually, ":todo" means that "passing would be correct behavior, but we haven't implemented correct behavior yet." | 05:43 | ||
TreyHarris | the way you're describing your invert toggle, it sounds like Test::proclaim would never receive a :cond(Bool::False). is that correct? | ||
christopher | No, the toggle would just apply C<not> to $cond. | ||
I don't think the toggle's the right solution, really, but possibly an incremental improvement. | 05:44 | ||
Really, I think each of the tests in 1-basic.t should be in a block, and stderr grepped for "ok", "not ok", or any other messages of interest. | 05:46 | ||
Hence the Test::Warn suggestion. | |||
TreyHarris | i think the *right* solution if you're really unhappy with this overloading of :todo, and changing it to :todo<notReallyJustTesting> or putting big fat comments wouldn't make you happy either, is to create a test file not ending in .t, and then create a .t that runs the test file and scrapes its returns | ||
christopher | That would work. I'm happy with :todo<notReallyJustTesting> too. | 05:47 | |
(I think. I'm not sure how the :todo mechanism was intended to be tested.) | |||
TreyHarris | a Test::Warn-like solution is a bit fragile in pugs... you've probably noticed how often messages change :-) | 05:48 | |
christopher | Regexes would make it less fragile, but that would increase the barrier to an implementation being able to 'use Test'. | 05:49 | |
05:51
agentzh joined
05:57
agentzh joined,
lambdabot joined,
Yappo joined,
dj_goku joined,
BooK__ joined,
iblechbot joined,
simcop2387 joined,
justatheory joined,
christopher joined,
Qiang_ joined,
bsb joined,
TreyHarris joined,
azr|elious joined,
cognominal joined,
avarab_ joined,
mdiep joined,
kanru2 joined,
mjk joined,
Aankhen`` joined,
weinig|zZz joined,
awwaiid joined,
SubStack joined,
buubot joined,
mako132 joined,
araujo joined,
Patterner joined,
mauke joined,
crem joined,
zeriod joined,
kane-xs_ joined,
masak joined,
ayrnieu joined,
scw joined,
f0rth joined,
plural joined,
xerox joined,
ajs_ joined,
idiotmax joined,
ruz joined,
lisppaste3 joined,
stevan joined,
webmind joined,
gugod joined,
baest joined,
mtve joined,
ofer0 joined,
Eidolos joined,
nothingmuch joined,
wilx joined,
jdv79 joined,
theorbtwo joined,
glasser joined,
lampus joined,
miyagawa_ joined,
thepler joined,
lumi joined,
TimToady joined,
cookys joined,
szabgab joined,
amv joined,
norageek joined,
[particle] joined,
Khisanth joined,
c6rbon joined,
gaal joined,
revdiablo joined,
PerlJam joined,
pjcj joined,
xinming_ joined,
evalbot_r13552 joined,
buu joined,
autark joined,
xern joined,
frankg joined,
mollmerx joined,
LCamel joined,
dvorak joined,
spoop joined,
rafl joined,
Teratogen joined,
perlbot joined,
prism joined,
drbean joined,
rafl_ joined,
spinclad joined,
nine joined,
hcchien joined,
cj joined,
kolibrie joined,
orafu joined,
statico joined,
jabbot joined,
Southen joined,
meppl joined,
gantrixx joined,
kalven joined,
svnbot6 joined,
Grrrr joined,
ajs_home joined,
nnunley joined,
takanori_ joined,
nperez joined,
ingy joined,
qmole joined,
Maddingue joined,
kcwu joined,
pmurias joined,
broquaint joined,
clkao joined,
obra joined,
wolverian joined,
audreyt joined,
jiing joined,
cmarcelo joined,
rgs joined,
leo joined,
chip joined,
pmichaud joined,
Juerd joined,
Shabble joined
|
|||
agentzh | *cough* | 05:59 | |
christopher | TreyHarris: Thanks for the clarification. I'll just add a comment to 1-basic.t instead of changing anything. | ||
TreyHarris | christopher: sure, sorry to have been a bit patronizing, i didn't recognize you by nick | 06:01 | |
svnbot6 | r13553 | malon++ | ext/Test/t/1-basic.t - describe the strange use of ':todo' in this file | 06:02 | |
christopher | TreyHarris: np | ||
agentzh | cron on feather says: "info: 453 smartlinks found and 50 broken." :) | 06:09 | |
06:12
b00t joined
|
|||
TreyHarris | agentzh: larry made a lot of changes in introducing | | 06:15 | |
06:16
agentzh joined
|
|||
agentzh | TreyHarris: yes, i've seen that in my mailbox. :) | 06:17 | |
| is much more concise than the ugly [,] :) | 06:18 | ||
TreyHarris | yes :-) | 06:23 | |
hah, is jonathan lang on here? | 06:24 | ||
i was writing more or less exactly his question about first capture being invocant or first positional | 06:27 | ||
that's just insane-crazy. i used the migration assistant to move my files from my old (panther OS X 10.3) iMac to my new (tiger 10.4) mac mini. it moved my sshd settings and public/private keys! | 06:29 | ||
TreyHarris does the happy dance | |||
TimToady | t/xx-uncategorized/rule_recursive.t is looping. stopped it after 15 minutes of CPU | 06:39 | |
Eidolos | You need to give infinite loops at least an hour to finish up. | 06:40 | |
06:42
kanru2 is now known as kanru
06:45
dj_goku joined,
simcop2387 joined,
f0rth joined,
ajs_ joined,
idiotmax joined,
webmind joined,
wilx joined,
jdv79 joined,
lampus joined,
lumi joined,
TimToady joined,
[particle] joined,
evalbot_r13552 joined,
dvorak joined,
perlbot joined,
rafl_ joined,
hcchien joined,
cj joined,
kolibrie joined,
meppl joined,
gantrixx joined,
nperez joined
07:18
marmic joined
07:29
simcop2387 left
07:34
zakharyas joined
07:51
kane-xs joined
07:52
drrho joined
08:00
weinig joined
08:07
Gothmog__ joined
08:11
[MaKuBeX] joined
|
|||
[MaKuBeX] | Visit www.omgema.lt itōæ½xFFs good . Have a nice day! | 08:12 | |
lambdabot | Title: .: OMgema :. | ||
08:12
[MaKuBeX] left
08:20
gerard joined
|
|||
gerard | hi | 08:29 | |
08:44
penk joined
08:48
[mago] joined,
ludan joined
|
|||
ludan | hola | 08:48 | |
09:20
gerard is now known as mezelf
09:27
chris2 joined
09:30
b00t joined
09:33
polettix joined
09:48
GeJ joined
09:50
ruoso joined
09:55
sri_ joined
10:09
elmex joined
10:14
mdiep_ joined
10:17
chris2 joined
10:19
buetow joined
10:23
mschmidt joined
10:35
silug joined
10:44
amv joined
11:41
markstos joined
12:10
xinming joined
12:11
Limbic_Region joined
12:19
Fuzie joined
12:30
lanny joined
|
|||
lanny | @seen gaal | 12:31 | |
lambdabot | gaal is in #perl6 and #haskell. I don't know when gaal last spoke. | ||
lanny | @seen audreyt | ||
lambdabot | audreyt is in #perl6, #ghc and #haskell. I don't know when audreyt last spoke. | ||
Limbic_Region | lanny - you also know about the irc logs right? | ||
lanny | Read em first before I log on. | 12:32 | |
audreyt | greetings. | ||
Limbic_Region | ;-) | ||
lanny | Just skimmed em today though. Can often catch those two in local morning. | ||
audreyt | I'm massively enjoying www.perl.com/lpt/a/983 :) | ||
lambdabot | Title: Perl.com: The State of the Onion 10 | ||
lanny | Hi, audreyt. Was wondering if you can give some direction on putting things in the prelude. My simple examples don't seem to work. | 12:33 | |
Limbic_Region | audreyt - the cygwin ghc you linked for me is source only (not bin dist) - which doesn't help since I need an existing ghc to build | ||
audreyt | also, alloced $job-free time from Sunday on to Wednesday morning, to finally get releng done | ||
Limbic_Region | and as of yet, no response from cvs-ghc dev list | ||
Limbic_Region is going to whine a little louder today | |||
woot | 12:34 | ||
audreyt++ | |||
audreyt | lanny: nopaste the diff? | ||
Limbic_Region | audreyt - you may be mildly interested in parenscript.org/ | ||
lambdabot | Title: ParenScript | 12:35 | |
lanny | Let me dig it up. | ||
audreyt | Limbic_Region: yeah, but Scheme2Js is more complete | ||
(and easier imho to work with) | |||
lanny | ## srand and rand | 12:36 | |
Nope. How does one paste into the #perl6? cut-n-paste on this mac doesn't seem to do it | |||
audreyt | nopaste :) | 12:37 | |
TreyHarris | perlbot: paste | ||
perlbot | Paste your code to sial.org/pbot/perl or erxz.com/pb and #perl will be able to view it. | ||
lambdabot | Title: sial.org Pastebot - pasteling | ||
pasteling | "lanny" at 206.109.40.208 pasted "simple prelude entries" (13 lines, 175B) at sial.org/pbot/19877 | 12:38 | |
lanny | magic. | ||
TreyHarris | bleh. setup the new computer and was very eager to see how fast compile and smoke took... but getting "Setup: cannot satisfy dependency mtl-any" again. i followed the instructions that worked for me the first time downloading extra-libs and using runhaskell to buld and install mtl and network... | ||
audreyt | lanny: "is builtin" | 12:39 | |
lanny | aha. | ||
audreyt | otherwise they became Prelude::rand etc. | ||
"is builtin" is shorthand of "exporting into global automagically" | |||
lanny | Ok. I got the impression from the docs and pi() that that was for variables. | ||
Thanks! | |||
audreyt | np :) | 12:40 | |
now unfortunately I need to crash off again... been running Jifty tutorial for cow orkers two days straight now | |||
be back in ~12 hours :) | |||
TreyHarris | Limbic_Region: you helped me with this last time, and i just copied the procedure you gave me... but it didn't work this time. i am running a newer ghc. any clue what might be wrong? | 12:41 | |
TreyHarris waves goodbye to audreyt | |||
audreyt | TreyHarris: is this win32? did you get the latest bindist, or are you using the known-working 0819? | ||
TreyHarris | audreyt: os x, i'm using the binary 0915 build | 12:42 | |
on intel | |||
clkao | audreyt: do they grok it alright? | ||
audreyt | clkao: sure, they are quite happy and we've alllocced two more tutorial sessions | 12:43 | |
TreyHarris: oh... I don't know much about the 0915 build | |||
TreyHarris | audreyt: well, i'll just use your build if it's still sufficient for pugs | 12:44 | |
audreyt | sure! | 12:45 | |
TreyHarris | cheers! | ||
Limbic_Region | TreyHarris - sorry, was AFK | 12:50 | |
you are using the ghc 6.6 bin build I built? | |||
I am not having any problems with it in 2 different environments | 12:51 | ||
what exactly is the problem? | |||
oh nevermind | |||
I see you aren't using my build - os x | |||
my guess is third-party | |||
but without a specific error - no clue | |||
ah, scroll back | 12:52 | ||
audreyt | @tell fglock ./pugs -e "'x' ~~ /<null>+/" loops | ||
lambdabot | Consider it noted. | ||
Limbic_Region | yes, I can help with the mtl-any issue | ||
audreyt | @tell fglock this is making rule_recursive hang -- I've disabled it for now but please fix :) | ||
Limbic_Region | audreyt - TreyHarris just needs the cabal instructions for installing a package | ||
lambdabot | Consider it noted. | ||
Limbic_Region | from extra-libs | 12:53 | |
audreyt | Limbic_Region: 14:41 < TreyHarris> Limbic_Region: you helped me with this last time, and i just copied the procedure you gave me... but it didn't work this time. i am running a newer ghc. any clue what might be wrong? | ||
Limbic_Region | paste.lisp.org/display/25124 | ||
oh, if those instructions aren't working - I am clueless than | 12:54 | ||
TreyHarris | sorry, i was in another window | 12:56 | |
ye, those instructions didn't work | |||
svnbot6 | r13554 | audreyt++ | * rule_recursive.t: temporarily skip infinite looping tests | ||
TreyHarris | but i'm just building a different known-good build now | 12:57 | |
Limbic_Region | TreyHarris - didn't work in that mtl was not installed | ||
or didn't work in that pugs still b1tched? | |||
TreyHarris | i see it installed. pugs still complained | ||
Limbic_Region | (getting it done)++ | ||
TreyHarris | i should sleep now though... | ||
TreyHarris & | |||
Limbic_Region | TTFN | 12:59 | |
svnbot6 | r13555 | polettix++ | Cosmetic changes, added a note in the initial comments. | 13:12 | |
13:13
mschmidt left
13:14
discordja joined
13:15
discordja joined
13:19
fglock joined
|
|||
fglock | audreyt: ping | 13:20 | |
lambdabot | fglock: You have 2 new messages. '/msg lambdabot @messages' to read them. | ||
fglock | audreyt: matching forever in '<null>+' is not a bug :) | 13:21 | |
13:25
cjeris joined
13:26
crem_ joined
13:28
dakkar joined
|
|||
fglock | audreyt: perl5 perlre says "the following match after a zero-length match is prohibited to have a length of zero" - does this apply to p6 regex? | 13:29 | |
13:36
avarab_ is now known as avar
|
|||
kolibrie | fglock: good morning! | 13:40 | |
fglock | kolibrie: hi! | ||
kolibrie | fglock: thanks for the yaml support | ||
fglock | kolibrie: np :) | 13:41 | |
kolibrie | is there a way for me to extract just the pieces I want from the $match and put those in YAML/XML/some other format? | ||
[particle] | fglock: i think the perl5 perlre statement can safely apply to perl6regex... it'll make the implementor's job *a lot* easier :) | 13:42 | |
fglock | [particle]: ok | ||
kolibrie: you can get to the return object with $$/ - $$/.yaml would give you the dump for the return object | 13:43 | ||
kolibrie | fglock: the dump of the whole return object. I'd like to be able to generate a structure with just the name of the token with its captured value (not the whole object) | 13:45 | |
but I also want something flexible enough so that I can change my mind about what I want in my structure | 13:46 | ||
so I think I want a real emitter, but am not sure the best way to go about writing one | |||
[particle] | kolibrie: like $/<token> ?? | 13:47 | |
fglock | kolibrie: try this: perl -e 'use v6-alpha' - ' my $content = "xyz abc"; $content ~~ / $<name> := (<alpha>+) { return { alpha => "$<name>" } } /; say $$/.yaml ' | 13:49 | |
13:51
mezelf left
|
|||
kolibrie | fglock: yes, that's the idea | 13:52 | |
13:52
rlb3 joined
|
|||
audreyt | fglock: you read it wrong I think | 13:52 | |
"Is prohibited" means "the match fails" | |||
not "it loops". | |||
i.e. perl -e '1 =~ /()+/' terminates | 13:53 | ||
because on the second time it fails | |||
and so () matched only once | |||
fglock | audreyt: yes, i got it - i'm fixing it now | ||
audreyt | cool. fwiw PGE loops here too. | 13:54 | |
13:54
jferrero joined
|
|||
kolibrie | fglock: is the name of the token available in the match object, so I do not have to hard-code the key name? | 13:55 | |
Limbic_Region | out of curiosity - what do rules do in the situation of the following p5 regex s/(\d)\s+(\d)/$1$2/g; # with a $str of '2 3 4' | ||
audreyt | ?eval $_ = '2 3 4'; s:g/(\d)\s+(\d)/$0$1/ | 13:56 | |
13:56
evalbot_r13552 is now known as evalbot_r13555
|
|||
evalbot_r13555 | Error in rule: unknown parameter 'g' at /home/audreyt/pugs/perl5/Pugs-Compiler-Rule/lib/Pugs/Compiler/Regex.pm line 61. Error in rule: unknown parameter 'g' at /home/audreyt/pugs/perl5/Pugs-Compiler-Rule/lib/Pugs/Compiler/Regex.pm line 61. 1 | 13:56 | |
fglock | kolibrie: it is, but <alpha>+ creates an array called $<alpha> - you need a way to transform this array back into a string | 13:57 | |
audreyt | ?eval $_ = '2 3 4'; s/(\d)\s+(\d)/$0$1/; $_ | ||
evalbot_r13555 | \"23 4" | ||
audreyt | hm. fixing :g now | ||
Limbic_Region | ok - so it doesn't change behavior :-( | ||
is there some magic that tells it to become '234' | 13:58 | ||
fglock | audreyt: is this correct? "<alpha>+ creates an array called $<alpha>" | ||
audreyt | :overlap | ||
fglock: correct. | |||
[particle] | there is no magic in regexes, contrary to popular belief :) | ||
audreyt | Limbic_Region: :overlap | ||
Limbic_Region | woot | ||
fglock | i find this behaviour strange - it would be better if it created a Match with positionals | 13:59 | |
13:59
vel joined
|
|||
kolibrie | fglock: on my talk (feather.perl6.nl/~kolibrie/extraction.xul), slide 19 has the grammar that outputs slide 20. I want to update the grammar so that it outputs slide 22 | 13:59 | |
lambdabot | tinyurl.com/ggcvc | ||
audreyt | fglock: I actually agree | ||
I don't know what was TimToady et al's motivation for this | |||
maybe it makes it easier to tell a quantified match with a nonquantified? | 14:00 | ||
fglock | i find it makes the result more difficult to use | 14:01 | |
audreyt | and I agree. | ||
[particle] | am i wrong in thinking pge does that? | ||
audreyt | PGE does create Array according to spec. | ||
as does PCR, but fglock is finding the spec weird | 14:02 | ||
and it seems weird to me too | |||
[particle] | but you get numbered positionals for free | ||
$/<alpha>[0] | 14:03 | ||
audreyt | you get that too with $<alpha> set fo Match. | ||
the thing you don't get with Array is | |||
$<alpha>.from | |||
$<alpha>.to | |||
and that troubles me a bit. | |||
you have to say | |||
$<alpha>[0].from | |||
$<alpha>[-1].to | |||
and that only works because it was <alpha>+ | |||
if it was <alpha>* it gets more hairy. | 14:04 | ||
fglock | kolibrie: you need to process the matches with map() or something, in order to get the data structures | ||
audreyt | so thing is, why is it an Array, not a Match with only positional parts? | ||
14:04
iblechbot joined
|
|||
audreyt | TimToady, pmichaud: ideas? | 14:04 | |
fglock | you can't also use ~$<alpha> | 14:05 | |
audreyt | which would stringify incorrectly, right. | ||
all in all I find it weird design, but it may be I've missed something prodounf | 14:06 | ||
profound, even. | |||
fglock: perhaps p6l it? | |||
[particle] | yeah, p6l's a great idea | ||
fglock | given the language evolution, this behaviour might have been specified before they knew what match objects would look like | 14:07 | |
[particle] | fglock: are you using pge's p6regex tests? | ||
fglock | [particle]: yes, but i'm implementing features in no particular order | 14:08 | |
[particle] | just wondering if you were sharing the tests... since we designed them for sharability | ||
audreyt | [particle]: t/p6regex/regex_tests | 14:09 | |
fglock | audreyt: re p6l - please do :) | ||
[particle] | ah, we've split that out into many files now | ||
t/compilers/pge/p6regex/rx_* | |||
much easier to maintain | |||
[particle] updates his pugs wc | 14:10 | ||
audreyt | fglock: hm I see the motivation. | 14:12 | |
fglock: the motivation is | |||
/<alpha> foo <alpha>/ | |||
see, now $<alpha> cannot be a Match | |||
as its range is not contiguous | |||
do you agree in that case an Array is warranted? | 14:13 | ||
[particle] | unless it's a multi-dimensional Match (but i think that's *ugly*) | ||
fglock | I really should have been writing my thesis project, but -Ofun is below zero | ||
audreyt | how can it be multidimentional? | ||
what does it mean in this context, that is | |||
[particle] | nth dimension is nth appearance in the match | ||
fglock | audreyt: but it still works, you still have $/<alpha>[0] and all | 14:14 | |
audreyt | fglock: but what will $<alpha>.from say? | ||
and how would it stringify? | |||
fglock | it will look wrong in this particular case, but it is still useful for everything else | 14:15 | |
audreyt | er, what I means is | ||
have /<alpha> foo <alpha>/ still set $<alpha> to Array | |||
but have /<alpha>+/ set it to Match | |||
the Array is warranted because naively treating it as a Match will yield surprising results | |||
fglock | how about /<alpha> <alpha>+/ | 14:16 | |
audreyt | in which case $<alpha> is still array | ||
[0] is the first Match | |||
and [1] is the Match that then has multiple positionals | |||
makes sense? | |||
fglock | yes | 14:17 | |
same with /<alpha>+ <alpha>+/ | 14:18 | ||
hmm - how about / [ x <alpha>+ ] / - this will not stringify correctly either | 14:19 | ||
i mean - how about / [ x <alpha> ]+ / - but it looks ok this way | |||
clkao | fglock: i was to ask you something the other day | 14:20 | |
oh, the overlod thing is fixed. did ite hlp ? | |||
fglock | clkao: yes | ||
clkao: there is a still a problem, but I need to write a test case | |||
clkao | what about it? | 14:21 | |
i am not entirely sure the readonly flag is right | |||
fglock | I'm not sure if it is Data::Bind fault | ||
clkao | the overload mechanism is totally crazy | ||
fglock | one sec | ||
audreyt | fglock: sent. | 14:22 | |
fglock | clkao: t/xx-uncategorized/rule_recursive.t was ok in the first tests, and then it returned to the wrong behaviour; but I can't run it right now (fixing other things) | 14:23 | |
audreyt: thanks! | 14:24 | ||
audreyt | np :) | ||
fglock | audreyt: <null>+ is fixed | 14:39 | |
svnbot6 | r13556 | fglock++ | Pugs-Compiler-Rule - Regex runtime detects infinite loop in <null>+ and fails | ||
audreyt | fglock: eggcellent | ||
fglock | ratchet would still fail - need to implement there too | 14:40 | |
svnbot6 | r13557 | audreyt++ | * HsBridge: Hide warnings for now. | ||
audreyt | fglock: try this | 14:41 | |
regex r { <null> | x <r> }; "x" ~~/<r>/ | |||
I mean | |||
fglock | audreyt: it should be documented that <null><null> fails | ||
audreyt | regex r { <null> | x <r> }; "x" ~~ /<r>$/ | ||
it still loops | 14:42 | ||
fglock | looking | ||
audreyt | er, null><null> should work | ||
it's just <null>+ should match only once | |||
and <null>* too | |||
compare /()()/ in p5 | |||
fglock | right | 14:44 | |
[particle] | no quantifiers (other than ?) allowed on zero-width assertions/rules... is that the proper wording? | 14:45 | |
s/rules/matches/ | |||
ajs_ | Well, I'm getting ready to be beaten with a stick, but here comes my highly speculative checkin. | 14:48 | |
svnbot6 | r13558 | ajs++ | First pass at macro API document as discussed with TimToady on IRC yesterday. This verison is really just a starting point for discussion. | 14:49 | |
audreyt | [particle]: no... quantifiers are fine it's just always match once | ||
14:49
ajs_ is now known as ajs_work
|
|||
fglock | audreyt: re "regex r { <null> | x <r> }; "x" ~~ /<r>$/" - I get a rule engine internal error; it is passing wrong parameters somewhere | 14:54 | |
audreyt | I get a loop, weird. | 14:56 | |
if you delete the skip in rule_recursive.t and run with pugs, that's what I get | |||
svnbot6 | r13559 | ajs++ | postcircumfix can take "is parsed" if quote-like operators can... of course, this brings up the question of how balanced operators affect the parsing of program text inside them, but we have said it can happen somehow... or are quote-like operators a hairy special case? | 14:57 | |
kolibrie | fglock: I finally have a script that mimics my slide example, but for some reason <( )> isn't changing the output. Which module is that in (I may have to reinstall)? | 14:59 | |
clkao | fglock: rule_recurse. the 2 tests are different. if you change the 2nd test from "x" to "" it works. | 15:00 | |
fglock | kolibrie: <( )> is defined in Pugs-Compiler-Rule | 15:02 | |
kolibrie | fglock: ok | 15:03 | |
Limbic_Region | smoke time IMO is very reasonable now even on a weak box fwiw | 15:06 | |
fglock | clkao: I'll get back to debugging after lunch | ||
Limbic_Region | I am on 30 minutes on the weakest machine I smoke on | ||
15:08
DaGo joined
|
|||
TimToady | blah | 15:10 | |
EMUSTWAITFORCOFFEETOBREW | |||
ajs_work | heh | ||
SIGPAUSE | 15:11 | ||
Limbic_Region | . o O ( brain clicks on when coffee pot clicks off ) | 15:12 | |
audreyt gaal Juerd or anyone else with sudo/root on feather - can I get #ghc added to the list of allowed channels purty please | 15:17 | ||
kolibrie | fglock: it still seems not to work for me, though both t/04-rule.t and t/09-ratchet.t pass all tests | 15:18 | |
pasteling | "kolibrie" at 66.239.158.2 pasted "fglock: script that seems to ignore <( )>" (43 lines, 932B) at sial.org/pbot/19883 | ||
ingy | morning... | 15:23 | |
15:25
xinming joined
|
|||
Limbic_Region | salutations | 15:25 | |
xinming - do you have anything to do with the free X server for windows called xming? | |||
15:28
mollmerx joined
15:31
snowstalker joined
15:32
justatheory joined
15:35
lanny joined,
prefiks joined
|
|||
fglock | kolibrie: you can't use <(...)> and { return ... } at the same time, because they are trying to do the same thing | 15:41 | |
also, 'rule talk { <presenter> }' doesn't care about the object returned by <presenter> - it just makes the capture and sets .from and .to | 15:42 | ||
lunch & | 15:43 | ||
kolibrie | fglock: taking out the one or the other doesn't change anything for me, it always returns the whole match | 15:49 | |
TimToady | goto 5:30 | 15:51 | |
xinming | Limbic_Region: >_< | 15:56 | |
Limbic_Region: It's just a name with name which is like mine. >_< I did nothing on xming... >_< | 15:57 | ||
lanny | Hmm. If I create a module in ext/*, compile and see it in blib6/lib/*, write a script which use()'s it, and ./pugs -Iblib6/lib myscript; Is there something I've missed so that I don't get error 'Can't locate *'? | 16:01 | |
kolibrie | fglock: I just retested all the code snippets from the channel that you've provided over the last day, and they all work. So that is baffling to me | 16:02 | |
16:03
mauke_ joined,
weinig joined
16:04
Psyche^ joined
16:13
Psyche^ is now known as Patterner
16:18
mauke_ is now known as mauke
16:19
bernhard joined
16:20
fglock joined
|
|||
pasteling | "fglock" at 200.17.89.34 pasted ""got: beth"" (42 lines, 935B) at sial.org/pbot/19885 | 16:24 | |
16:24
evalbot_r13555 is now known as evalbot_r13559,
mozzz joined
|
|||
fglock | kolibrie: you must propagate the return object through the match chain | 16:25 | |
16:26
prefiks left
|
|||
Juerd | lsb end | 16:31 | |
That had to be /sb end | |||
kolibrie | fglock: so I need to add a return block to the other rule? or what do you mean? | 16:33 | |
fglock: oh, I just noticed your paste | 16:35 | ||
fglock | kolibrie: anyway, this only captures a single name | 16:39 | |
kolibrie | fglock: that's why .+? is nice | 16:40 | |
is there a variable that contains the name of the rule we are in? | |||
rule talk { { return $something }}; # where $something contains 'talk' | 16:41 | ||
16:42
discordja joined
|
|||
fglock | kolibrie: &?ROUTINE.name might work | 16:42 | |
kolibrie | fglock: will try later - must prepare for trip now | ||
fglock | kolibrie: I think m:g// works in pugs | 16:43 | |
kolibrie | fglock: will try that too | ||
fglock | &?ROUTINE.name returns '&main::__ANON__' in v6.pm | 16:44 | |
kolibrie | not so useful | ||
[particle] | fglock: i don't think that's currently specced in S05, but i've been requesting it as well | ||
kolibrie | TimToady: audreyt: others: please scrutinize my slides and post comments :) | 16:45 | |
& | |||
TimToady | slide 3 is a syntax error | 16:47 | |
s:g/5/6; needs a final / | 16:49 | ||
ofer0 | heya TimToady ! | ||
TimToady | howdy | 16:50 | |
ć·ć£ćÆć¼ćć¾ććļ¼ | 16:52 | ||
16:53
aufrank joined
17:01
snowstalker_ joined
17:06
zeriod joined
|
|||
pasteling | "fglock" at 200.17.89.34 pasted "brian & Beth" (37 lines, 826B) at sial.org/pbot/19887 | 17:31 | |
svnbot6 | r13560 | fglock++ | v6 - m:c defaults to non-overlapping | ||
17:31
buetow joined
|
|||
fglock | kolibrie: this version works - sial.org/pbot/19887 (please update v6.pm to r13560) - it does no backtracking and it is very fast | 17:33 | |
lambdabot | Title: Paste #19887 from "fglock" at 200.17.89.34 | ||
17:34
rodi joined,
evalbot_r13559 is now known as evalbot_r13560
|
|||
fglock | kolibrie: it uses lookahead instead of backtracking | 17:35 | |
hmm - the algorithm in sial.org/pbot/19887 may actually work for implementing .*? inside Token | 17:42 | ||
lambdabot | Title: Paste #19887 from "fglock" at 200.17.89.34 | ||
17:44
fglock left
|
|||
TimToady | audreyt: why does slurping a 37M file require 400M stack space? | 17:52 | |
(I have this *big* yaml file...) | |||
obra | *laugh* | 17:53 | |
PerlJam | TimToady: it's okay because in the future, disk, CPU and RAM will all be cheap and abundant enough that you won't have to worry about it :) | 17:54 | |
TimToady | seems like, of all languages, Haskell oughta be able to just mmap the file in as an immutable string and run with it... | 17:56 | |
[particle] | (perl5) how do i get the number of times $a=~m/a/g matches? | 17:57 | |
PerlJam | [particle]: $count =()= $str =~ m/.../g; | ||
TimToady | $num = () = ... | ||
PerlJam | use the goatse operator | 17:58 | |
TimToady | I wasn't gonna say it... | ||
[particle] | ah, right! thanks. | ||
=()= | |||
cjeris | ok, if that's the goatse operator, what's the unicode spelling? | 18:03 | |
wilx | lol | 18:05 | |
18:07
ruoso joined
|
|||
PerlJam | perl5 tends to shy away from unicode operators. | 18:07 | |
Limbic_Region | I tend to avoid the goatse and type that as ($count) = $str =~ m//; | 18:18 | |
PerlJam | But that does the wrong thing. | 18:19 | |
you'd have to do @array = $str =~ m/.../g; then $count = @array | 18:20 | ||
[particle] | $count = @{[ $str =~ m/.../g ]} should work too | 18:21 | |
in fact, that's probably what i really wanted, since i was trying to evaluate in an expression if $count < 2 ... | 18:22 | ||
but, an extra lexical won't hurt that code | 18:23 | ||
18:25
weinig is now known as weinig|bbl
18:27
pmurias_ joined
18:31
Limbic_Region joined
|
|||
Limbic_Region | PerlJam - CGI:IRC disconnected. I realized my mistake nearly as soon as I hit return | 18:31 | |
PerlJam | [particle]: I don't think perl has an optimization for the @{[...]} version. (i.e., it probably still copies the array and takes a reference to the copy) | 18:32 | |
[particle] | pj: sure, but you can use it in an expression | 18:33 | |
18:35
foo\ joined
|
|||
[particle] | ...without parens for disambiguation. i guess it's no difference, really just style. | 18:35 | |
PerlJam | well ... perl's motto is true ;) | 18:36 | |
[particle] | print 'multi' if 1 < ($a =()= 'ababa' =~ m/b/g) # multi | ||
print 'multi' if 1 < @{[ 'ababa' =~ m/b/g ]} # multi | |||
18:37
glasser left,
discordja joined
|
|||
rodi | ?eval grammar Foo { rule bar { baz } }; "baz" ~~ /<Foo.bar>/; # should this work? | 18:43 | |
evalbot_r13560 | *** Cannot parse regex: <Foo.bar> *** Error: Match.new( ok => Bool::False, from => 0, to => 0, str => "", sub_pos => (), sub_named => {} ) | ||
rodi | ?eval grammar Foo { rule bar { baz } }; "baz" ~~ /<bar>/; # should this work? | ||
evalbot_r13560 | *** Cannot parse regex: <bar> *** Error: Match.new( ok => Bool::False, from => 0, to => 0, str => "", sub_pos => (), sub_named => {} ) | ||
rodi | Interesting. The latter actually works on my Pugs, same rev. | 18:44 | |
Err... by works, I mean it matches. | 18:45 | ||
PerlJam | I wouldn't have expected that one to work in any case. | 18:46 | |
18:46
beppu_ joined
|
|||
rodi | which one? neither? | 18:46 | |
PerlJam | the latter | ||
How does pugs know to use Foo.bar rather than Main.bar or Blah.bar or some other bar? | |||
rodi | I agree- I was surprised that it worked (for me on r13560) and the other did not. That seemed backward to me. | 18:47 | |
But I'm clearly doing something weird... | |||
18:48
xdg joined
18:49
weinig|bbl is now known as weinig
|
|||
rodi | ?eval grammar A { rule b { c } }; "c" ~~ /<b>/ | 18:52 | |
evalbot_r13560 | *** Cannot parse regex: <b> *** Error: Match.new( ok => Bool::False, from => 0, to => 0, str => "", sub_pos => (), sub_named => {} ) | 18:53 | |
rodi | ?eval rule b { c }; "c" ~~ /<b>/ | ||
evalbot_r13560 | *** Cannot parse regex: <b> *** Error: Match.new( ok => Bool::False, from => 0, to => 0, str => "", sub_pos => (), sub_named => {} ) | ||
18:53
idiotmax joined
|
|||
rodi | ?eval "c" ~~ /c/ | 19:02 | |
evalbot_r13560 | Match.new( ok => Bool::True, from => 0, to => 1, str => "c", sub_pos => (), sub_named => {} ) | 19:03 | |
19:18
mdiep joined
19:31
buetow joined
19:48
fglock joined
|
|||
svnbot6 | r13561 | lanny++ | [ext/Math-Random-Kiss] | 19:48 | |
r13561 | lanny++ | - simple fast PRNG (Marsaglia) | |||
r13561 | lanny++ | - has a working srand() but is *slow* (in pugs) so no Prelude for it | |||
r13561 | lanny++ | [t/unspecced/sort.t] | |||
r13561 | lanny++ | - minor cleanup | |||
fglock | I'm installing Perl6::Rules | 19:58 | |
TimToady | planning to harvest the corpse? | 19:59 | |
fglock | maybe - I wonder if it could complement PCR in some way - maybe each one does 30% of the job, so there is only 40% left to do :) | 20:01 | |
20:05
fglock joined
20:07
fglock joined
|
|||
fglock | is there a report on the status/problems of Perl6::Rules ? | 20:08 | |
TimToady | fglock: I think that's an excellent idea. | ||
the manpage has caveats at the end, I believe | |||
fglock | it would probably have to be tested against many versions of perl5 to be sure which parts can be reused | 20:09 | |
TimToady | if I recall, one of the reasons it was abandoned was because of just such bitrot. | 20:10 | |
but perhaps the less adventurous parts of it are stable. | 20:11 | ||
certainly to the extent that we can stay in P5's regex engine and not call P5 subs, we'll be a lot faster. | 20:12 | ||
on the other hand, working around re's closure bugs may entail extra calls, so it might not be a win in some cases. | 20:13 | ||
another approach might be Perl6::Rules with a replacement re engine. | 20:14 | ||
fglock | the cpan testers report it actually not so bad - maybe we can just choose P6:Rules/PCR based on which nodes we get in the syntax tree | ||
TimToady: PCRE ? | 20:15 | ||
TimToady | dunno, I've never played much with pcre | ||
having pre | |||
:) | |||
I think a lot of the current overhead is just handshaking between pugs and PCR though. | 20:16 | ||
20:16
_bernhard joined
|
|||
TimToady | when I run a pugs program with lots of very simple regexes, it slows way down from :P5 | 20:16 | |
about 60x | |||
let me paste the program | |||
fglock | we could compare the pugs times with v6.pm | 20:17 | |
pasteling | "TimToady" at 71.139.13.50 pasted "program that slows 60x under PCR" (19 lines, 387B) at sial.org/pbot/19889 | 20:18 | |
TimToady | the one :P5 in there is because it doesn't split right on big characters. | ||
but if I change all the other regexen to :P5 it runs about 60 times faster | |||
this is on my radicals dictionary, which you can find a copy of at wall.org/~larry/krads | 20:19 | ||
fglock | i wonder if pugs is calling pcr's :P5 or pcre's | 20:20 | |
TimToady | dunno offhand | ||
pasteling | "TimToady" at 71.139.13.50 pasted "faster version with :P5" (19 lines, 405B) at sial.org/pbot/19890 | 20:25 | |
fglock | everything in that snippet can be translated to :p5 - actually, only Regex declarations are special, because they may be backtracked into | ||
TimToady | that's what I was saying to audreyt the other day. A lot of this stuff could be directly translated to p5 | ||
and it would obviously run a lot faster under the current setup. | 20:26 | ||
fglock | this is actually very easy to implement - I started with the difficult part | 20:27 | |
TimToady | I suspect the bridge might actually be the slow part right now... | ||
at least for trivial regexes | 20:28 | ||
fglock | but that's fixable - we can compile to :p5, and :p5 regexes are fast | ||
so trivial regexes are not a problem | 20:29 | ||
20:29
baest joined
|
|||
TimToady | well, yes, almost the entire approach of regex optimization in P5 is to avoid running the regex engine whenever possible. :) | 20:29 | |
but it would be nice if the bridge were fast too. | |||
on the other hand, given the whole thing is kind of a bootstrap anyway... | 20:30 | ||
the translation to :p5 is probably more useful. | |||
fglock | yes - pcr compiles <'xxx'> to ' substr() eq ... ' - it can continue doing that | ||
TimToady | and will enable a lot more to get accomplished in the medium range | 20:31 | |
so I think a hybrid approach is very workable | 20:32 | ||
svnbot6 | r13562 | fglock++ | Pugs-Compiler-Rule - added Pugs::Emitter::Rule::Perl5::Regex | 20:34 | |
kolibrie | TimToady: thank you for your eyes on that s:g/5/6/ error | 20:35 | |
fglock: thank you for that paste | |||
will play with it more when I get to Pittsburgh | |||
TimToady | ?eval 'å otori'.split(/\s+/) | 20:36 | |
20:36
evalbot_r13560 is now known as evalbot_r13561
|
|||
evalbot_r13561 | ("Ć„ o", "ori") | 20:36 | |
fglock | kolibrie: I wrote a version that does yaml, but it didn't compile right under v6.pm | ||
TimToady | should have said | ||
("å o", "ori") | |||
well, no, it should have said | 20:37 | ||
("å", "otori") | |||
anyway, that's why I had to keep the :P5 on the split in my program | |||
?eval "å".say | 20:38 | ||
evalbot_r13561 | OUTPUT[å ] Bool::True | ||
TimToady | ?eval 'å otori'.split(/\s+/) | 20:39 | |
evalbot_r13561 | ("Ć„ o", "ori") | ||
clkao | ?eval "\x{2668}" | ||
blah | |||
evalbot_r13561 | "\\x2668" | ||
TimToady | yow | 20:40 | |
that really messed up my terminal for a bit | |||
clkao | you messed up mine as well | ||
kolibrie leaves before his terminal blows up & | |||
TimToady | ?eval ("å", "otori").say | ||
evalbot_r13561 | OUTPUT[åotori ] Bool::True | ||
TimToady | I wonder if evalbot is splitting the å on "whitespace" somehow. | 20:41 | |
clkao | i have a dejavu. did you mention this a few days ago? | ||
TimToady | doesn't happen in my own pugs. I get the (wrong) ("å o", "ori") | ||
instead. | 20:42 | ||
fglock | the Perl5::Regex emitter will just have silly things like ' sub dot { "." } ' | ||
TimToady | yes. | ||
fglock: assuming /s | |||
fglock | TimToady: yes, /s is added by Pugs::Compiler::RegexPerl5, which already works (it makes the p5->pcr internal bridge) | 20:46 | |
TimToady | any idea where the unicode mixup is? | 20:47 | |
fglock | pcr uses plain '\s' - it must be somewhere between p5 and haskell | 20:48 | |
20:49
beppu_ joined
|
|||
fglock | ok, I've implemented some nodes - let's add some tests | 20:49 | |
20:57
ofer0 joined
|
|||
svnbot6 | r13563 | fglock++ | Pugs-Compiler-Rule - added tests to p5-regex emitter (not ready yet) | 20:57 | |
fglock | should it compile <ws> to \s+ ? probably not... | ||
TimToady | looks to me like a mixup in counting characters vs bytes | ||
character positions should really be independent of representation | 20:58 | ||
<ws> does a lot more than \s+, and can be overridden... | 20:59 | ||
fglock | yes, so no :p5 for it | ||
TimToady | the nice thing about this kind of optimization is that you can just give up if you're not sure. | 21:00 | |
fglock | TimToady: Pugs-Compiler-Rule$ perl -Ilib t/12-plain_regex.t | 21:05 | |
it works | |||
svnbot6 | r13564 | fglock++ | Pugs-Compiler-Rule - Perl5::Regex emitter passes tests | ||
fglock | it is now possible to port things from Perl6::Rule, and see what breaks | 21:06 | |
TimToady | fglock++ | 21:13 | |
svnbot6 | r13565 | fglock++ | Pugs-Compiler-Rule - Perl5::Regex - captures, dot | ||
r13566 | fglock++ | Pugs-Compiler-Rule - Perl5::Regex - alternation | 21:16 | ||
obra | [B[B [B[BMIT should be very compat | 21:19 | |
[B[A | |||
21:19
jesse___ joined
|
|||
svnbot6 | r13567 | fglock++ | Pugs-Compiler-Rule - Perl5::Regex - non-capturing group | 21:20 | |
obra | fglock: have you considered getting PCR to emit the same AST as Perl5 MAD_PROPS? | 21:21 | |
fglock | obra: sorry, I don't know it - link? | 21:22 | |
but PCR is rule-specific | |||
do you mean v6.pm ? | 21:23 | ||
obra | I did | ||
mad props is larry's "perl5 to lossless AST" enhancement. it's what sage was using to translate p5 to p6 | |||
fglock | v6.pm AST is a plain match tree, very close to the actual syntax - it sure can be transformed into something more useful | 21:25 | |
svnbot6 | r13568 | fglock++ | Pugs-Compiler-Rule - Perl5::Regex - \s, \S, etc | ||
fglock | TimToady: it seems to be almost useful already | 21:27 | |
21:29
evalbot_r13561 is now known as evalbot_r13567
21:32
cjeris left
|
|||
svnbot6 | r13569 | fglock++ | Pugs-Compiler-Rule - Perl5::Regex - <before ...>, <!before ...> | 21:32 | |
r13570 | fglock++ | Pugs-Compiler-Rule - Perl5::Regex - <after ...>, <!after ...> | 21:35 | ||
r13571 | markstos++ | [t/unspecced/sort.t] | 21:38 | ||
r13571 | markstos++ | add comment to file asking for further clarification of the file itself. | |||
r13571 | markstos++ | It includes an implementation of a spec'ed feature, yet exists in | |||
r13571 | markstos++ | the "unspecced" directory of the test suite... | |||
fglock | perl5 /$/s is perl6 /$$/ ? | ||
Juerd | Perl 5's /s doesn't change $ in any way. | 21:41 | |
Perl 5's /s only changes . | |||
fglock | Juerd: thanks | 21:45 | |
svnbot6 | r13572 | fglock++ | Pugs-Compiler-Rule - Perl5::Regex - ^ $ <null> | 21:48 | |
fglock | obra: is there a page about MAD_PROPS ? | ||
21:49
Limbic_Region joined
|
|||
obra looks for timtoady | 21:49 | ||
TimToady hides | 21:50 | ||
I think MAD is far to P5 specific to serve for P6 | 21:51 | ||
*too | |||
perl5 /^$/m is perl6 /^^$$/ | |||
obra | TimToady: even for the output of the p6->p5 translator? | 21:52 | |
fglock | @tell audreyt Pugs-Compiler-Rule$ perl -Ilib t/12-plain_regex.t -- compile Regex to :p5 or die; creates normal Match objects | ||
lambdabot | Consider it noted. | ||
obra | (Given that larry wrote it and I'm just pointy hair around these parts, listen to him and not to me) | ||
fglock | obra: :) | ||
TimToady: I'm considering using something like [^|<after \n>] for ^^, so I can mix ^ and ^^ in the same sentence | 21:53 | ||
TimToady | alternately, just throw /m in there and use \A and \z for ^ and $ | 21:54 | |
I think that'd be a lot faster and simpler. | |||
21:55
ofer0 joined
|
|||
fglock | plain :P5 uses /s by default, right? | 21:56 | |
TimToady | I wouldn't think so. | ||
21:56
Odin-LAP joined
|
|||
TimToady | ?eval "\n" ~~ m:P5/./ | 21:57 | |
21:57
evalbot_r13567 is now known as evalbot_r13572
|
|||
evalbot_r13572 | Match.new( ok => Bool::False, from => 0, to => 0, str => "", sub_pos => (), sub_named => {} ) | 21:57 | |
TimToady | no, it doesn't | ||
fglock | ok | ||
TimToady | ?eval "\n" ~~ m:P5/(?s)./ | 21:58 | |
evalbot_r13572 | Match.new( ok => Bool::True, from => 0, to => 1, str => "\n", sub_pos => (), sub_named => {} ) | ||
TimToady | that's how you turn /s on under :P5 | ||
fglock | given that a Regex compiles ok to :p5, you can call pcre instead of pcr/pge, if pcre is faster | 22:01 | |
audreyt: ^^^ | 22:02 | ||
TimToady | or have a mode where you call all three and vote on the results. :) | 22:03 | |
fglock | yup | ||
TimToady | ?eval "a\nb" ~~ /^a$$.^^b$/ | ||
evalbot_r13572 | Match.new( ok => Bool::True, from => 0, to => 3, str => "a\nb", sub_pos => (), sub_named => {} ) | 22:04 | |
TimToady | ?eval "a\nb" ~~ m:P5/(?smx) \A a $ . ^ b \z/ | ||
evalbot_r13572 | Match.new( ok => Bool::True, from => 0, to => 3, str => "a\nb", sub_pos => (), sub_named => {} ) | ||
TimToady | ?eval "a\nb" ~~ /^ a $$ . ^^ b $/ | 22:05 | |
evalbot_r13572 | Match.new( ok => Bool::True, from => 0, to => 3, str => "a\nb", sub_pos => (), sub_named => {} ) | ||
TimToady | same thing. | ||
?eval "a\nb" ~~ m:P5/(?smx) \A a $ . ^ b \Z/ | |||
evalbot_r13572 | Match.new( ok => Bool::True, from => 0, to => 3, str => "a\nb", sub_pos => (), sub_named => {} ) | 22:06 | |
TimToady | ?eval "a\nb\n" ~~ m:P5/(?smx) \A a $ . ^ b \Z/ | ||
evalbot_r13572 | Match.new( ok => Bool::True, from => 0, to => 3, str => "a\nb", sub_pos => (), sub_named => {} ) | ||
TimToady | ?eval "a\nb\n" ~~ m:P5/(?smx) \A a $ . ^ b \z/ | ||
evalbot_r13572 | Match.new( ok => Bool::False, from => 0, to => 0, str => "", sub_pos => (), sub_named => {} ) | ||
TimToady | yes, $ turns into \z rather than \Z | ||
fglock | TimToady: added to TODO - i gotta go :( | 22:08 | |
thanks! | |||
TimToady | \n turns into (?:\n\r?|\r\n?) or some such | ||
you're welcome | |||
22:09
fglock left
|
|||
svnbot6 | r13573 | fglock++ | Pugs-Compiler-Rule - Perl5/Regex TODO list | 22:09 | |
22:15
putter joined
|
|||
putter | "If there's a particular problem that Perl is trying to solve, it's the basic fact that all programming languages suck." Onion '06. Oh yeah. | 22:16 | |
fglock: ping? | 22:17 | ||
22:24
mako132_ joined
|
|||
TreyHarris | markstos: re your last commit, lanny discussed this on the channel at the time... there was no obvious place to put the pure-perl sort. putting it in prelude would be premature until it actually worked well. it came down to creating a new place for it, or just put it into unspecced. so that's where it went. | 22:29 | |
oh... wait, he's not here... that's odd, i didn't see his /part or /quit message | |||
@tell markstos re your commit r13571, lanny discussed this on the channel at the time... there was no obvious place to put the pure-perl sort. putting it in prelude would be premature until it actually worked well. it came down to creating a new place for it, or just put it into unspecced. so that's where it went. | 22:30 | ||
lambdabot | Consider it noted. | ||
putter notes there seems to be a lot of confusion about Test. haven't looked at it. perhaps needs cleanup? | 22:31 | ||
TreyHarris | putter: how so? | ||
putter | a number of curious misunderstandings about what the Test methods mean have been mentioned recently, by multiple people. | 22:32 | |
TreyHarris | i've noticed this too, but i've taken it as misunderstandings about the subtleties of unit testing and how a test harness should work rather than a bad test api. the docs could bear improvement though. | 22:33 | |
and i am planning on merging my Test::eval_* as macros change as soon as this release goes out, which will make the vagaries of the eval tests somewhat less vague... | 22:34 | ||
putter | right. sorry, I was unclear. doc perhaps needs cleanup. | ||
though, on reflection, dies_ok() is perhaps an unfortunate name, as unlike the other ok's, a true return value is very much not expected. | 22:35 | ||
TreyHarris | oh? i read the subs as, "is/does this <whatever>?" so ok(): "is this ok?" is():"is this?" eval_ok(): "does this eval ok?" dies_ok(): "does this die ok?" | 22:37 | |
putter | or 'is' compares two values, 'ok' checks for true... | 22:38 | |
TreyHarris | putter: well, in that case you'd have to have the right definition in your head for dies_ok and the name doesn't really matter that much. i don't get the mapping that results in dies_ok being reversed from everything else, though. but i know there must be such a gestalt, since several folks have said the same... | 22:40 | |
22:44
buubot joined
|
|||
svnbot6 | r13574 | putter++ | backtrack_api.pl - a bit of progress. Almost ready for PCR. | 22:44 | |
putter | dinner & | ||
23:01
discordja joined
|
|||
ingy | hola | 23:11 | |
23:11
fglock joined
|
|||
obra | hey ingysan | 23:12 | |
23:12
beppu_ joined
|
|||
fglock | ola | 23:12 | |
putter: we are quite out of sync | |||
23:13
mjk joined
|
|||
ingy | obra! | 23:13 | |
obra: where is cl these days? | 23:14 | ||
and where are you? | |||
fglock | putter: re backtrack_api.pl - it will be nice | ||
ingy: I started the python parser - but nothing worth of showing yet | |||
ingy | fglock: cool :) | 23:15 | |
obra | ingy: Flat 16, #12 Leinster Terrace, London W2 | ||
ingy | is that home? | ||
obra | for cl | ||
for me, no. I'm visiting | |||
ingy | ok | ||
obra | where are you? | 23:16 | |
ingy | oh... Seattle | 23:18 | |
23:18
bcorn joined
|
|||
ingy | Living on capitol hill with hvc | 23:19 | |
she's working at amazon | |||
we have a big old house | |||
totally awesome | |||
obra | nice | ||
ingy | I don't see her much though. | 23:20 | |
TreyHarris | ingy: oh, i didn't realize you were here in seattle. do you know if there's an active seattle.pm? the seattleperl.org says the next meeting will be may 16th, so i'm guessing no... | ||
ingy | just in passing mostly | ||
TreyHarris: oh, yeah there's SPUG | 23:21 | ||
very active | |||
chromatic spoke last Tuesday | |||
TreyHarris | oh. what's their website? seattleperl.org says "SPUG", so i thought that was the one | 23:22 | |
ingy | are you a Seattle noob or something | ||
? | |||
yeah, that website is out of date I guess | 23:23 | ||
TreyHarris | ingy: 3-year newbie :-) but when i first got here the spug meetings were rarely convenient, so i only came a few times. i was a regular at newyork.pm before | ||
ingy | get on the mailing list | ||
where do you live? | |||
23:23
fglock left
|
|||
TreyHarris | downtown. spug used to meet in the u-district. since i don't drive, that meant allowing an hour to get there by bus, and the meetings were at 6:30, and the corporate culture at $job did not look kindly upon people walking out the door at 5:30 ;-) | 23:24 | |
obra | oh, trey, Nathan says hi. | 23:25 | |
TreyHarris | obra: nathan says hi to you! | ||
nothingmuch makes carpet noises | |||
23:26
beppu_ joined
|
|||
TreyHarris | nothingmuch: what noise does a carpet make? | 23:27 | |
nothingmuch | i don't know, it's a quote | ||
ingy | what's the way to make vim open the file whose path is under your cursor???? | ||
23:28
weinig is now known as weinig|bbl
|
|||
nothingmuch | freesound.iua.upf.edu/tagsViewSingl...id=2434_68 | 23:29 | |
lambdabot | tinyurl.com/q3vk7 | ||
TreyHarris | ingy: drag over the path, type 'vim' into a new shell, and then click the middle button? ;-) | ||
nothingmuch | i think he means inside of vim itself | ||
gvim, that is | |||
TreyHarris | nothingmuch: i know, i was just being an ass ;-) | 23:30 | |
nothingmuch | TreyHarris: the quote is from a sketch by some israeli band | 23:31 | |
he.wikipedia.org/wiki/×”×פ××Ø×_פ××× | |||
lambdabot | he.wikipedia.org/wiki/×”×פ××Ø×_פ××× | ||
TreyHarris | nothingmuch: ah. l'shanah tovah, by the way | ||
nothingmuch | thank you lambdabot | ||
bah | 23:32 | ||
jewish holidays stink ;-) | |||
TreyHarris | lol | ||
nothingmuch prefers christmas at grandma's | |||
TreyHarris | no cholent for you? | ||
nothingmuch | i mean seriously, wtf is up with eating fish head? | ||
hell no ;- | |||
TreyHarris giggles | |||
nothingmuch | no gefilte fish either | ||
TreyHarris | gefilte pork-chop? | 23:33 | |
Patterner | *BZZT* no halal | ||
nothingmuch | i think that would still be awful | ||
the gefilte part ruins everything | |||
TreyHarris | mmm.. yeah | ||
nothingmuch | european jewish cuisine has this tendancy to be able extract just the nastiness out of the ingredients ;-) | ||
TreyHarris | lol. i'm quite fond of the occassional kreplach or brisket. but hold the gefilte fish, or the tongue... | 23:35 | |
23:35
mako132_ joined
|
|||
TreyHarris | ingy: thanks, i subscribed. i'll try to make it next time. i wonder if audrey's made contact with anybody in spug, she's swinging up here next month. her flight doesn't arrive until thursday evening, though, so there may not be time for anything | 23:37 | |
beppu_ | ingy: gf | 23:39 | |
that's how you open a file that your cursor is over in vim. | |||
TreyHarris | beppu_: oh, i thought you were greeting ingy with the traditional salutary, "girlfriend!" | 23:41 | |
beppu_ | ;) | ||
TreyHarris | would sub looks_like_number ($x) { +$x eqv $x } work as a reimplementation of looks_like_number? or would you have to say (+$x).Whatever eqv $x.Whatever to avoid the type correspondence check? or am i missing another wrinkle? | 23:46 | |
(neither work in current pugs, so i may very will be missing something) | 23:48 | ||
audreyt | +$x eq $x | 23:52 | |
lambdabot | audreyt: You have 1 new message. '/msg lambdabot @messages' to read it. | ||
audreyt | is more like it | ||
lambdabot: @messaes | |||
lambdabot | fglock said 2h 25s ago: Pugs-Compiler-Rule$ perl -Ilib t/12-plain_regex.t -- compile Regex to :p5 or die; creates normal Match objects | ||
nothingmuch | hiya audreyt | ||
is it already saturday morning? | |||
audreyt | heya nothingmuch | ||
ingy | hi audreyt! | ||
audreyt | it is, and I have to run to $job, and once I'm back we can hack on MI a bit | 23:53 | |
nothingmuch | okay | ||
i need to sleep | |||
so it should be in sync | |||
audreyt | I have all day tomorrow until wednesday | ||
nothingmuch | ah | ||
TreyHarris | audreyt: ah, good point, thanks | ||
nothingmuch | sunday is slightly swamped, monday might also be | ||
audreyt | have you done the polishing? | ||
nothingmuch | but after that I should have a bit of spare time | ||
nope, i've been sitting and thinking of other stuff | |||
but it's a 30 minute fix | |||
2-3 smallish refactorings | |||
audreyt | oh ok. then perhaps find that 30 minutes once you wake up | ||
nothingmuch | *nod* | 23:54 | |
audreyt | and we'll go from there | ||
if you're not online I'll do releng stuff | |||
ingy | beppu_: thanks!! | ||
nothingmuch | *nodnod* | ||
morning is reserved for you | |||
or at least MO | |||
then I go hiking with Neama | |||
beppu_ | ingy: you're welcome. | ||
nothingmuch | and in the evening I belong to Ann | ||
feck! | 23:55 | ||
drink and arse too, for good measure | |||
nothingmuch wants tehre to be a portable font acquisition type thingy to make Imager::Font easier to use | |||
e.g. it searches in the "normal" places for each platform | 23:56 | ||
and can also accept additional include path | |||
and lets you find fonts by charecaristics and name | |||
hmm | 23:58 | ||
\search.cpan.org/~rpagitsch/Win32-Fo...01/Info.pm | |||
that's a nice begining | |||
lambdabot | Title: Win32::Fonts::Info - Perl extension for get a list of installed fontfamilies on ..., tinyurl.com/j5w8n | ||
nothingmuch | if i could have that (or a subset of that) on OSX and *x that'd be nice |