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 rodi on 29 September 2006.
TimToady gah. 00:04
pugs: Prelude.chr: bad argument
what argument? where? 00:05
the problem with Haskell is that it's a toy.
00:05 avar joined
TimToady a Really Big toy. 00:05
gah. 00:06
araujo hello here.
TimToady hello there.
araujo TimToady, you more likely are taking a negative number. 00:07
> chr (-1)
lambdabot Exception: Prelude.chr: bad argument
TimToady would be nice if it would say so.
araujo TimToady, they let us that funny part to figure out 00:08
TimToady it's almost as much fun as "no compatible subroutine found". 00:09
araujo hah
TimToady knowing what went wrong is pretty useless if you don't have sufficient information to fix it. 00:10
mauke still better than C, where (char)-1 has unpredictable results
TimToady at least you can usually run gdb on the coredump. :/ 00:11
I basically have no clue where in my program Prelude.chr is being called from... 00:12
araujo TimToady, how are you getting that result?
araujo takes a look
TimToady running my program. :)
basically I'm importing a bunch of yaml, so it's probably some kind of latin-1/utf8 confusion. 00:13
araujo indeed 00:15
mauke hmm, I wonder what a haskell coredump would look like
intertwined stacks all over the place ... 00:16
SamB it would look insane!
you would be lucky to get a backtrace!
00:20 lanny joined
lanny ?eval my @p = 1=>'a',2=>'b'; @p[0 00:22
00:22 evalbot_r13841 is now known as evalbot_r13843
evalbot_r13843 Error: Unexpected end of input expecting comment, operator or "]" 00:22
lanny ?eval my @p = 1=>'a',2=>'b'; @p[0]
evalbot_r13843 (1 => "a")
lanny ?eval my @p = (1=>'a'); @p[0]
evalbot_r13843 (1 => "a")
00:23 nekokak joined 00:48 SubStack joined 00:58 hikozaemon joined 00:59 justatheory joined 01:06 mauke joined
TimToady audreyt: I kinda like *[$head, *@tail] or some such. It has several nice properties. 01:14
obviously, it lets us quicksort(@array).
but it also frees up *$scalar for some other use. 01:15
such as "find the selector wherever and whatever it is."
Other syntaxes are possible though. 01:16
*@args [$headarg, *@tailargs] would presumably work on the principle that multiple matchers in a paramlet are ANDed. 01:17
multiple aliases are a bit strange, but suppose you want to process all the args, but guarantee there are at least two. 01:18
you could say *@args [$, $, *@] or some such. 01:19
another interesting thing with the *[...] notation is that **[...] presumably lets us bind multiple feeds as scalars:
lanny So the named empy list argument would be *@args [] ? 01:20
TimToady zip3 (**[$feed1, $feed2, $feed3])
lanny Inline with audreyt's syntax of earlier today?
TimToady I've been thinking of variations of that syntax all day.
*:(...) for instance
or *(...) 01:21
or |(...)
the last is perhaps the most accurate, but doesn't admit the ** possibility. 01:22
lanny Well if talking lists then [] does have a certain "Look! I'm a list!" to it.
TimToady which I really am fond of since there is currently no way to bind individual feeds to a scalar within the signature.
you'd have to do my ($feed1, $feed2, $feed3) := @@feeds currently 01:23
yes, but it relies crucially on the * in front to make a list from the rest of the args.
really, it makes a capture of the rest of the args. 01:24
so presumably you could say *[$invocant: $positional, :$named]
and that seems more like it ought to be *(...) 01:25
lanny How does that work with a sub that takes multiple array refs? sub foo ( @alpha [ $acar, *@acdr ], @beta [ $, $ *@] )
TimToady one could presumably do that. 'course, if you shift @alpha you're not necessarily changing the others... 01:26
lanny Agreed. @alpha is the first array argument and $acar and @acdr are just additional names for car(@alpha), cdr(@alpha) 01:27
TimToady not a problem in the functional world. :) 01:28
But I do wonder whether it's better to say *@args [$, $, *@] or *@args where +@args >= 2
I kinda like the picture, but then I like geometry better than algebra 01:29
lanny Currently that bumps into *@ as slurpy. That's why I asked about having two array refs in a signature and dropped the * from them.
TimToady anyway, it's not clear at all whether URI::Escape::unescape's multis will work as they currently are. depends on whether slurpiness is distance. 01:31
lanny sub foo ( @alpha [ $, *@ ], *@beta [ $, $ *@ ] ) might be read as taking any number of arguments into *@beta there when what I want a sig with 2x @'s
TimToady the @array [...] notation is indepenent of whether the * is there, I think.
well, maybe not. 01:32
hmm.
if you say Int *@array it's an Array of Int
I'm not sure we've said one way or the other what *@array where Foo should mean 01:33
arguably all of those things distribute 01:34
and only *@array is MyArray lets you refer to the whole object.
whoops, my wife is waiting outside to pick me up. better scoot. & 01:35
svnbot6 r13844 | lanny++ | * collapsed xx-uncategorized arity tests into t/builtins/arity.t 01:52
01:52 wilx joined, mako132_ joined
svnbot6 r13845 | lanny++ | * sub_arg_errors.t - :%s/eval_dies_ok/dies_ok eval()/ 02:04
02:08 drbean joined
svnbot6 r13846 | lanny++ | * caller.t - corrected a hard-coded line number that was failing a test 02:13
TreyHarris How would I call a method on self in void context? 02:14
lambdabot TreyHarris: You have 1 new message. '/msg lambdabot @messages' to read it.
TreyHarris @messages
lambdabot lanny said 11h 51m 58s ago: role Pregnancy; class Mammal does Pregnancy; class Platypus is Mammal hides Pregnancy; ... S12 doesn't make clear if you can hide roles though.
lanny self.method() wouldn't work? 02:16
TreyHarris $.meth would be scalar context and @.meth would be array context and %.meth would be hash context, right, regardless of the context of the call... 02:17
lanny: i don't know. i suppose so, but if $.meth is scalar context, self.meth feels scalar to me too... i guess i'm just not used to... oh wait... if $.meth were defined as item(self.meth), @.meth as list(self.meth), and so on, i think it would make sense to me then 02:18
then self.meth would be void
it's odd to me to think about the RHS of an expression setting context, but i guess that's what the explicit contextualizers all do... it just doesn't look very explicit in the case of $.meth :-) 02:19
02:22 x3m joined
x3m anyone uses hs-plugins in win? 02:23
araujo mmm.... 02:25
x3m, ask dons
x3m he dont use win 02:29
SamB x3m: perhaps he knows someone who does... 02:30
x3m already asked him though ;-)
dons has yet to reply
x3m SamB: not without mingw
we tried to install it before, seemed to work until the sopport of posix scewed it 02:31
svnbot6 r13847 | audreyt++ | * HsBridge.pm: Fix matching under safemode by preloading utf8.
02:35 drbean joined, wilx joined, theorbtwo joined, BooK_ joined, buu joined, dvorak joined, holoway joined, mako132 joined, stevan joined, statico joined, gaal joined, pmichaud_ joined, Juerd joined, webmind joined, leo_ joined, PerlJam joined, pmurias joined, audreyt joined, plural joined, wolverian joined, pjcj joined, orafu joined, tcliou joined, revdiablo joined, knewt joined, perlbot joined, rafl_ joined, hcchien joined, cj joined, kolibrie joined, meppl joined 02:39 scsibug joined
audreyt ?eval 1 ~~ /1/ 02:47
02:47 evalbot_r13843 is now known as evalbot_r13847
evalbot_r13847 Match.new( ok => Bool::True, from => 0, to => 1, str => "1", sub_pos => (), sub_named => {} ) 02:47
02:52 weinig is now known as weinig|zZz, weinig|zZz is now known as weinig 02:55 weinig is now known as weinig|zZz
lanny audreyt: Seems fromVal is turning an Array of a single Pair into the Array (.key, .value) but my Haskell isn't up to tracking the bug. 03:19
audreyt lanny: test case? 03:20
lambdabot audreyt: You have 4 new messages. '/msg lambdabot @messages' to read them.
audreyt lambdabot: @messages
lambdabot putter said 10h 34m 7s ago: "shared set of spec-based tests"++. second regex test deletion I've noticed lately, so was wondering if there was a pattern. none- great.
putter said 10h 23m 55s ago: re lots of failing&toxic tests unhelpful... yeah, no-one has yet done the next-gen test infrastructure wanted long ago. ...
putter said 10h 23m 29s ago: ...our test failure firewall is the test file. we directly modify test cases to protect the test file, and encode expectations. alternate backends, or here component of
backend, have different fragilities and expectations. they basically have to live with doing their own fragility workarounds, working around pugs' to see the tests, and ignoring expectations.
putter said 8h 1m 2s ago: Thoughts on the proposal to eliminate eval_ok eval_is eval_dies_ok and convert t/ to use ok(eval()) etc?
lanny t/xx-uncategorized/pair_in_array.t
is one demonstration
I'm finding it in map, grep, join, cat... things that use fromVal on the list past in 03:21
Which is why I think it's in fromVal
s/past/passed 03:22
ah. maybe readRef is the culprit with fromVal' doing the misdirect? 03:25
I don't see why that wouldn't turn the entire list of pairs into [k,v] though 03:26
audreyt I'll take a look but, I'm on very spotty wifi now, may not be able to join in the next few hours... 03:36
lanny audreyt: no rush. will give me even more time to try and tease it apart
03:45 buu joined 03:48 buubot joined
svnbot6 r13848 | audreyt++ | * Pugs.Eval: Support for interpolated arrays, hashes and pairs 04:08
r13848 | audreyt++ | in argument lists:
r13848 | audreyt++ | f(|@a);
r13848 | audreyt++ | f(|%h);
r13848 | audreyt++ | f(|$p);
r13848 | audreyt++ | Support for Capture and |<< coming soon...
r13849 | audreyt++ | * examples/algorithms/quicksort.pl: Use |@x as the calling convention
r13849 | audreyt++ | so it now works Correctly.
clkao what does |@a mean? 04:09
audreyt evaluate @a in rvalue item context; it's an array, so pretend it's a capture with only positional parts 04:10
and interpolate its elements as individual positional arguments
clkao ah
sosame for hash? and you can do |@a, |%h?
audreyt yup 04:11
bbiab, $job
clkao has the invocant vs position thing been resolved? 04:12
svnbot6 r13850 | clkao++ | Data::Capture. 04:29
clkao what's .arity for subs with multidimensional signature? 04:40
04:49 buetow joined
lanny clkoa: t/builtins/arity.t lists a thread on the subject. Don't know the resolution. 04:56
thread.gmane.org/gmane.comp.lang.pe...guage/4915 04:57
lambdabot Title: Gmane Loom, tinyurl.com/l72wh
05:05 ofer0 joined
svnbot6 r13851 | masak++ | added parsefail check for "1<2" 05:05
05:11 baest_ joined 05:14 BooK joined
lanny ?eval 1<2 05:25
05:25 evalbot_r13847 is now known as evalbot_r13851
evalbot_r13851 Bool::True 05:25
svnbot6 r13852 | lanny++ | [t/unspecced/sort.t] 05:26
r13852 | lanny++ | * bring up to date with S29
r13853 | lwall++ | removed silly use of multi dispatch. 05:29
TreyHarris lanny: See S06:2215. I would assume that .arity would work like .assuming in determining the multi variant 05:36
@seen putter 05:37
lambdabot I saw putter leaving #perl6 10h 11m 6s ago, and .
TreyHarris @seen agentzh 05:38
lambdabot I saw agentzh leaving #haskell and #perl6 14h 52m 18s ago, and .
05:40 ofer0 joined
clkao bwaahahahaa 05:43
svnbot6 r13854 | clkao++ | Refactor Data::Bind to support multidimensional bindings.
clkao summon new Data::Bind
is it christmas yet ? 05:44
TreyHarris it's certainly advent :)
clkao v6 generated function also needs to use data::bind for returns values 05:46
s/returns/returned
lanny TreyHarris: At a guess I'd say .arity will be most useful in low level programming. As such you won't really be able to know which signature you want to provide part of it (because if you knew it you would know most of the .arity). 05:56
I would also guess that other things for low level programming will make up the lack of visibility with .arity.
But in truth I was just answering clkao's question with the information I had seen a few minutes ago on his topic. 05:57
06:02 kastol joined
TimToady I have just discovered that ghc 6.4 is reading my 3M file one byte at a time...glad I didn't feed it the 37M file, considering the "little" file is going to take 400 CPU minutes to process... 06:03
clkao uhm. software 06:05
TreyHarris ?eval class Dog { submethod scratch () { say "scritch!" } }; class Pug is Dog { }; Pug.new.scratch 06:08
06:08 evalbot_r13851 is now known as evalbot_r13854
evalbot_r13854 OUTPUT[scritch! ] Bool::True 06:08
TreyHarris I don't understand submethods at all.
I thought I did, but I don't...
From reading L<S12/Submethods>, I would have thought one of two things might happen: an error at compile time for not reimplementing the submethod, or an error at runtime for calling an undefined method... but I guess I don't understand what submethods do 06:10
TimToady you're probably just getting bit by the overgenerous dispatcher. 06:11
the other day it was calling methods for me via classes that didn't even exist.
TreyHarris oh... t/oo/submethods.t doesn't have anything in it that wouldn't work if you s/submethod/method/g, AFAICT 06:12
so I thought I must have misunderstood what submethods do
TimToady whether a submethod is visible depends really on which dispatcher is calling it. 06:14
for the ordinary dispatcher, like you called, it should be an error
a BUILDALL dispatcher would see it and call it on behalf of the Dog class but not on behalf of the Pugs class. 06:15
TreyHarris can a role tell what class or role it was lexically composed into? as separate from the virtual class returned by self.WHAT? 06:20
I'm not sure what ::?CLASS means 06:21
since I thought ? indicated a compiler constant, but obviously ::?CLASS can't be constant at compile time inside a role....
TimToady given that role composition generally happens at compile time, I don't have much trouble with ::?CLASS being the instantiated lexical class. 06:23
TreyHarris in other words, if I had class Moose is xxx, and class Elk is Moose, i could if i really wanted to make xxx work differently in Moose versus Elk by looking at ::?CLASS versus self.WHAT? 06:24
TimToady 'course, that doesn't help you with whether ::?ROLE is the generic or the instantiated...
for a role within a role
though of course the outer role could put ::?ROLE somewhere where the inner role could see it, I presume 06:25
and most of the interesting things are delayed till class composition in any event. 06:26
TreyHarris so class Moose is xxx, class Elk is Moose is xxx, xxx::trait_auxiliary:is would be called twice?
svnbot6 r13855 | trey++ | [t/oo/submethods] 06:27
r13855 | trey++ | Smartlinking. I may be missing something,
r13855 | trey++ | but I think that these tests are testing
r13855 | trey++ | method overrides, not submethods....
TimToady looks like three times to me. 06:28
06:28 ronny joined
TimToady sorry, yes, twice 06:29
missed the xxx:: there
TreyHarris ok, that's fine. but >= 2. if the MOP of the implementation could...
right.
?eval class Dog { }; class Pug is Dog { }; my Pug $fido .= new; class Dog is also { method bark { say "Woof!" } }; $fido.bark 06:31
06:31 evalbot_r13854 is now known as evalbot_r13855
evalbot_r13855 OUTPUT[Woof! ] Bool::True 06:31
TreyHarris huh, was that just fixed? it doesn't work on my r13793... 06:32
oh. *laugh* the "is Dog" is crucial :)
@putter so I have a local branch with an almost-working eval_* macro; I was waiting until release to merge it. eval_* supplies better diagnostics than ok eval, etc., as it uses $!. maybe i should p6-c this? 06:34
lambdabot Unknown command, try @list
TimToady just when you'd like the dispatcher to read your mind, it doesn't...
TreyHarris @tell putter so I have a local branch with an almost-working eval_* macro; I was waiting until release to merge it. eval_* supplies better diagnostics than ok eval, etc., as it uses $!. maybe i should p6-c this?
lambdabot Consider it noted.
TimToady @tell audreyt when you get your messages from lambdabot you don't have to put lambdabot: on the front since lambdabot already looks for @. 06:36
lambdabot Consider it noted.
TreyHarris but if the bar of implementing macros is higher than the gains of eval diagnostics... i can see it either way.
TimToady I read that as evil diagnostics...
TreyHarris same difference... 06:37
nothingmuch morning 06:39
TreyHarris nothingmuch: hi :) 06:40
does .WHAT return a Str or a Class? 06:48
06:49 iblechbot joined
TimToady it returns a prototype 06:52
which you can think of as standing for the class.
but it's definitely an object, not a string (though it stringifies to the name) 06:53
06:53 ImustDIE joined
TimToady in general .WHAT.HOW === .HOW 06:54
though for a classless object system i suppose .WHAT could really be undef. 06:55
or point to its ancestor, or something.
06:55 ImustDIE joined
TreyHarris ok 06:56
TimToady well, it's another two hours till my program finishes, so I'd better not wait up for it. 06:57
zzz & 06:59
TreyHarris g'night :)
07:03 SCalimlim joined 07:14 elmex joined 07:20 zakharyas joined 07:36 bsb left 07:40 Su-Shee joined
Su-Shee morning. 07:41
masak Su-Shee: good morning
(ah, at least someone who has approximately the same day cycle as I do. pugs is so international a project, and "good morning" occurs during the whole day here) 07:42
Su-Shee well, it might happen that I feel like "uhoh, it's morning" in the afternoon, but now it really is morning here. ;) 07:43
masak Su-Shee: :) 07:44
Su-Shee: Germany, right?
Su-Shee Berlin, yes. 07:45
masak Su-Shee: Guten Tag from Uppsala, Schweden. We're in the same time zone. 07:47
Su-Shee not just we. :) let's greet everyone from paris or prague .. :) (i guess ;) 07:49
TreyHarris just as those of us on the west coast of north america are going to bed :)
masak Su-Shee: indeed. "Bon matin", "Dobr dan"
Su-Shee TreyHarris: I won't offer you breakfast, then. ;)
masak TreyHarris: that's the 24h working cycle of pugs
TreyHarris: sometimes I get up really early to listen to West Coast live radio shows :) 07:50
TreyHarris: they're 9pm over at your place, so I have to be awake at 6am... 07:51
TreyHarris: makes this whole sphere thing so much more palpable
Su-Shee I need T. 07:52
masak parses that sentence. suddenly not sure if "I" isn't also an abbreviation for something 07:54
08:10 penk joined
Su-Shee ah. much better. 08:10
08:19 mdiep_ joined
masak a lot of real-world things are naturally suited for one-based arrays 08:32
is there a well-known pattern to use in such a case? 08:33
such as "leave the [0] element empty" or "put it in an object and have the accessors always subtract 1 from the index"
using a hash feels wrong, because it loses the ordering, which can still be important 08:34
audreyt well, the canonical solution is :shape(1..*) 08:35
lambdabot audreyt: You have 1 new message. '/msg lambdabot @messages' to read it.
audreyt @messages 08:36
lambdabot TimToady said 1h 59m 57s ago: when you get your messages from lambdabot you don't have to put lambdabot: on the front since lambdabot already looks for @.
masak ?eval my @a = (1,2,3) :shape(1..*)
evalbot_r13855 Error: Unexpected ":" expecting comment, operator, ",", statement modifier, ";" or end of input
masak audreyt: not implemented? or am I using it wrong?
audreyt not implemented 08:37
probably not going to implement any time soon, either...
masak no problem 08:38
in light of that, what is the best solution?
audreyt use accessors to mandate the -1 feels correct 08:39
masak good.
I'm implementing Latin verbs in Perl 6, and the conjugations are 1-based
a more object-oriented approach in general is probably the way to go 08:40
audreyt mm are we seeing Perl6igata?
masak audreyt: not from me. I'm just learning Latin and enjoying myself :) 08:41
audreyt nice :)
audreyt meanwhile goes on triaging the 46 remaining failures...
masak audreyt++ # triaging 08:42
audreyt I think I need to implement @=DATA
once it's there my $job one-off scripting can switch entirely to pugs
masak cool 08:43
audreyt wonders if dconway's "real soon now" Documentation spec is going anywhere
Su-Shee "latin verbs in perl6"? ;)
masak Su-Shee: yes, creating a class hierarchy that conjugates Latin verbs :) 08:44
Su-Shee the last time I checked the idea of knowing an language was to have those things in your mind, but maybe I'm a bit old school ;) 08:45
or, even better: learn a language without conjugation. :) there are many non-flecting languages out there :))
masak Su-Shee: well, having it in my mind is of course the primary goal, but having to explain the rules to a computer helps in getting there
Su-Shee: I'm learning Chinese, too :) 08:46
08:46 kane-xs joined
Su-Shee masak: without perl6? ;) 08:48
masak Su-Shee: so far, yes ;)
Su-Shee: but that might change 08:49
Su-Shee Hm. I'm learning languages by watching movies and reading books. ;) 08:50
masak Su-Shee: yes. me too. and by talking to people.
Su-Shee my next favorite open source project: free language lessons and free vocabulary databases in good quality. 08:52
masak mmm. There's always wikibooks
en.wikibooks.org/
Su-Shee "oh, really?" ;) 08:53
iceland made icelandic open source - in a way. nice idea. it's used in scandinavian studies at the universities here. 08:55
TreyHarris what does that mean, making the language open source? 09:02
audreyt can I send patches to icelandic?
TreyHarris audreyt: that's what I was thinking
a natural language with good bound variables and list comprehensions would eliminate many ambiguities :) 09:03
audreyt well, ccshan has argued that the "wh-" forms in English are side effects introduced by delimited continuations... 09:04
("Linguistic side effects")
Su-Shee TreyHarris: mostly, it's a problem of language academies and dictionary compilations.
TreyHarris: And Iceland decided to put all grammar and vocabulary into the net without any terms of usage. 09:05
TreyHarris english has a badly broken bound variable. "would everyone please return to their seat"? is wrong due to number unless you admit singular-they. "would everyone please return to his seat" is incorrectly gendered unless you have an all-male audience...
Su-Shee TreyHarris: that's even worse in german due to three grammatical genders. 09:06
TreyHarris Su-Shee: as a linguist by training, I have to throw my hat in with audreyt and the individualist... the concept of language academies is rather alien to me. I think all languages are massively open-source in that sense already :) 09:08
s/individualist/individualists/
audreyt TreyHarris: Ch4 of ccshan's dissertation is "Evaluation order in natural languages"
and attempts to define a typed call-by-value evaluation order for English 09:09
it may be of interest to you :)
TreyHarris ah, interesting... is it online? i don't have interlending privileges at any academic libraries right now....
09:10 avarab joined
audreyt www.eecs.harvard.edu/~ccshan/disser...n/book.pdf is the full one 09:10
lambdabot tinyurl.com/ma8ng
audreyt various shortened versions and slides etc are available on gogole :)
google, even.
Su-Shee TreyHarris: of course language itself is "open source" - but compilations, lessons or vocabularies, texts and even some corpora aren't. 09:12
TreyHarris yes, but none of those =:= "icelandic". icelandic is merely an adjective that applies to them.
Su-Shee it was my shorthand for "iceland supports tools for its language differently but most countries." ;) 09:13
TreyHarris *nod* that makes more sense (though the notion that a nation would attempt to exert any propriety over a language is still alien to me) 09:15
Su-Shee and as long as school kids are sued because of self-made latin translations put onto a website...
TreyHarris: it's simply ridiciulous. there is a huge german - english - french - spanish database out there, used by everyone in germany. don't believe that the content is possible to download and use fōæ½xFCr you nice little vocabulary tool in any way.. 09:16
for. not fōæ½xFCr, of course. :) 09:17
TreyHarris b postpone AnalysisSeries::findSeries
i'm still getting used to having a very large screen. i'm not used to being able to see windows that aren't focused, so I'm constantly typing into windows that aren't because I think I have "focus follows eyes"... 09:18
svnbot6 r13856 | andara++ | Missing whitespace before infix '<' (e.g. 1<2 ) should result in a parse failure. 09:43
09:44 ruoso joined
svnbot6 r13857 | andara++ | Added \me to AUTHORS 09:49
10:13 marmic joined 10:16 BooK joined 10:18 jferrero joined 10:31 nothingmuch joined
svnbot6 r13858 | audreyt++ | * fp.pl: Use the (|@x) callconv like quicksort.pl to make things pass 10:50
10:50 bjoern_ joined
svnbot6 r13859 | audreyt++ | * Repairing fp.pl and reverse.pl with f(|@x); examples.t now passes. 10:59
bjoern_ fwiw, I tried installing Pugs:Compiler::Rule on my system and it failed quite miserably; I don't have the install logs anymore, but it seems I had YAML::Syck 0.60 installed and the package didn't like that. Installing the latest of that fixed it. Maybe there is a dependency problem... 11:21
(or sth like 0.60-pre 0.58, I don't remember exactly)
audreyt ok, I'll up the dep 11:25
bjoern_ ah, from the build logs "t/01-iterator_engine....Can't locate YAML/Syck.pm in @INC ...", then, after failing all the tests, re-installing YAML::Syck, "*** Pre-0.60 version of YAML.pm (0.58) detected." 11:28
11:29 kane-xs joined
svnbot6 r13860 | audreyt++ | * Add YAML::Syck 0.60 as recommended install. 11:38
r13861 | audreyt++ | * Pugs.Eval.Var: Refactor the arityMatch algorithm to use a 11:41
r13861 | audreyt++ | custom data type to improve conciseness.
r13862 | audreyt++ | * t/oo/type.t: rename to what.t and have it test WHAT. 11:47
11:54 mako132_ joined
svnbot6 r13863 | audreyt++ | * Disable the PIL2 backend; it's not for this release. :-) 11:57
r13864 | audreyt++ | * Add Martin Norb?\195?\164ck's Data.ByteString.UTF8 as the new UTF8.hs 12:00
r13864 | audreyt++ | so we can use Unicode characters in source code without thinking
r13864 | audreyt++ | about its UTF8 encoding -- i.e. (__"\187") is now perfectly okay.
r13864 | audreyt++ | * Also adjusted internals to distinguish clearly between Buf
r13864 | audreyt++ | and Str imports.
12:00 chris2 joined 12:06 Limbic_Region joined
svnbot6 r13865 | audreyt++ | * splatty_in_caller_position.t: unTODO, smartlink, etc. 12:18
12:20 weinig|zZz is now known as weinig 12:23 iblechbot joined
svnbot6 r13866 | audreyt++ | * fp.pm: Use f(|@x) again to fix callconv error. 12:27
Limbic_Region audreyt as of r13842 I was at 96.73% (last night) and I just svn'd up and will run a new smoke this morning 12:33
12:33 cognominal joined 12:34 stennie joined
audreyt okie 12:35
12:36 weinig is now known as weinig|away
svnbot6 r13867 | audreyt++ | * want.t: workaround the implicit-invocant issue by focing a 12:37
r13867 | audreyt++ | want() into list context.
r13868 | audreyt++ | * t/blocks/return_function.t: TODO for this release. 12:40
Limbic_Region audreyt - my build blew up, trying to get details now 12:47
C:\Gat\Pugs\third-party\installed\Haskell\Pugs-6.2.12\ghc-6.5/libHSPugs-6.2.12.a(Compile.o)(.text+0x7c7):ghc2056_0.hc: undefined .... 12:48
oh, there goes audreyt
audreyt hm? 12:50
my name is not anna...
svnbot6 r13869 | audreyt++ | * Remove FFI parts from UTF8.hs.
Limbic_Region I didn't say it was 12:51
[08:48] *** evalbot_r13855 [i=audreyt@feather.perl6.nl] has quit [Remote closed the connection]
so I am going to nopaste the blow up
audreyt ergo, I'm not a but, so a dropped bot is not me :)
s/but/bot/
Limbic_Region er uh, it isn't even 9AM yet - I can't be expected to read
audreyt Limbic_Region: try 13869 12:52
Limbic_Region trying
no clean necessary I hope? 12:53
audreyt not neccessary
Limbic_Region attempting build now
12:55 vel joined
pasteling "Limbic_Region" at 129.33.119.12 pasted "Build errors on Win32 as of r13869" (205 lines, 15.1K) at sial.org/pbot/20159 12:55
Limbic_Region still failing audreyt 12:56
12:57 smash joined
audreyt r13870 12:57
smash good afternoon 12:58
svnbot6 r13870 | audreyt++ | * Fix cabal file by adding UTF8. Thanks to Limbic_Region++ for noticing.
Limbic_Region salutations smash
s/noticing/whining that his build blew up with no idea what the cause might be/ 12:59
Limbic_Region kisses audreyt 13:00
is fixing the backends part of the release plan? 13:02
specifically JS - it appears b0rked 13:03
13:03 fglock joined
audreyt yes 13:03
JS will be fixed as part of releng 13:04
13:04 avar joined
audreyt but the 38 fails come first 13:04
Limbic_Region initiating nmake smoke now 13:05
ok - now I am off to work on my NP complete -> O(1) problem translation
audreyt that sounds fun
Limbic_Region yep - fewest number of words in a dictionary that contain all the letters <user input> 13:08
in general form it is NP complete
but once you pick a specific dictionary and limit the letters in user input to an alphabet - say a-z 13:09
you can perform a super polynomial precalculation to make subsequent questions O(1)
since with 26 letters, there are only 67 million questions that can be asked 13:10
audreyt nodnod.
audreyt is reminded of Rainbow Attack 13:11
Limbic_Region well - I am not sure if the approach I am taking has a name. I am not very educated (self or otherwise). I just like to have fun 13:12
Limbic_Region googles Rainbow Attack
audreyt Limbic_Region++ # fun > educated 13:13
Limbic_Region wow - lasecwww.epfl.ch/~oechslin/publicat...ypto03.pdf 13:16
lambdabot tinyurl.com/h9bag
Limbic_Region yep - what I am doing is very similar to rainbow attack 13:17
will have to mention that when I post
audreyt++
audreyt :) 13:19
svnbot6 r13871 | audreyt++ | * 023_Test_Builder_Test_Skip.t: Unbreak test due to missing semicolon 13:22
13:34 evalbot_r13871 joined, stennie left
fglock audreyt: are there any major annoyances in Rule that could be fixed before release? 13:34
audreyt fglock: no... I think it's working well 13:35
far better than I expected
fglock :)
clkao *yawn* 13:39
audreyt: want to quickly review t/multidimension in data::bind ?
audreyt no 13:41
not unless you commit it
:)
clkao it's committed 13:43
like 8 hours ago
audreyt I think you forgot svk add.
or svk push
clkao grr!
audreyt it happens to the clkaoest of us... 13:44
clkao winks
svnbot6 r13872 | clkao++ | forgot to add the multidimension tests. 13:47
clkao but hey, that was 7am ;) 13:48
audreyt looking at it
hmm! two slurpies separated by semicolon 13:49
# my sub foo(*@a; *@b) { }
fglock ?eval my $a = Whatever; $a.WHAT
audreyt certainly not specced
evalbot_r13871 Error: No compatible subroutine found: "&Whatever"
audreyt and conflicts with multi-dispatch long name separation 13:50
but I somehow like that better :)
audreyt ponders
Limbic_Region smoke complete 13:51
audreyt the second one is correct.
13:51 bjoern_ left 13:54 mako132_ joined
clkao audreyt: second one? 13:59
audreyt # my sub foo(*@@args) { } 14:00
that one 14:01
clkao ya. first one is different story. it's two single dimension slurpy 14:02
audreyt ya. not very sure it's useful
or how it might be used 14:03
clkao mmm. given it's easy to do (|@foo;|@bar) when calling 14:04
uhm, no, just (@foo; @bar) and no slurpy is the same with |@ and slurpy. right?
audreyt correct, though 14:05
(@foo, @bar)
is sufficient
and no multidim need to enter the picture
clkao right, too. 14:06
audreyt: is there good use for sub foo($a,:$b; $c, :$d) ? 14:08
clkao makes coffee and attempts to wake up
audreyt clkao: don't think so... :($a, $c, :$b, :$d) is almost always bettte 14:09
Juerd After the first named (:$foo), you can no longer use positionals, IIRC
audreyt right, it's called zones 14:10
Juerd positional+required, positional+optional, named
clkao audreyt: you can pass two captures in directly 14:12
svnbot6 r13873 | fglock++ | pX/v6 - added base 'node' class 14:23
ajs_work Sigh, and here I thought I was doing the right thing, and killing the "should libraries try to lobotomize my code" thread.... next time I have an idea, I'm going to write it on my toilet paper.
clkao audreyt: anymoose. so there's very limited actualy useful thing to use multidim? 14:25
audreyt it's just for zip(1,2,3;4,5,6) 14:28
I think
svnbot6 r13874 | masak++ | removing my own t/syntax/parsing/lt.t in order to be able to move 14:35
r13874 | masak++ | a better one with the same name from t/syntax/, created by andara++,
r13874 | masak++ | into t/syntax/parsing/
r13875 | masak++ | ...and moved t/syntax/lt.t to t/syntax/parsing/
r13876 | audreyt++ | * "Odd numbers of elements in hash" is now made fatal
14:35 iblechbot joined
svnbot6 r13876 | audreyt++ | (it was not even a warning) to help shake out incorrect 14:35
r13876 | audreyt++ | usages of things like 1<2>.
clkao audreyt: oh, where is cat and zip in prelude? i can't find them. 14:36
audreyt they are hardcoded in src/Pugs/Eval.hs
because pugs doesn't handle multidim yet
clkao ah!
svnbot6 r13877 | audreyt++ | * In evaluating invocants, (@x,@y).sort should still flatten 14:37
r13877 | audreyt++ | @x and @y, instead of treating them as two separate entities.
r13878 | fglock++ | pX/v6 - code cleanup
fglock ?eval ?'False' 14:43
14:43 evalbot_r13871 is now known as evalbot_r13874
evalbot_r13874 Bool::True 14:43
14:46 ofer0 joined
svnbot6 r13879 | audreyt++ | * Lots of cleanup in t/ to avoid incorrect use of hash dereferences. 14:49
r13880 | audreyt++ | * 023_Test_Builder_Test_Skip.t: Fix plan number.
audreyt magic number is down to 36 14:51
svnbot6 r13881 | audreyt++ | * smartmatch.t: adjust todoness.
x3m what is evalbot?
audreyt linear extrapolation says that's another 2~3 days...
x3m > 5+5
lambdabot 10
audreyt x3m: it's something that lets you type in a perl6 expression and seee its result
Limbic_Region ?eval say "hello"
audreyt ?eval 5+5
evalbot_r13874 OUTPUT[hello ] Bool::True
10
x3m ok
audreyt sleeps & 14:52
nothingmuch moooooooooooooo
Limbic_Region sleep well audreyt
nothingmuch sleep well
masak sleep well, audreyt 14:55
15:15 pmurias left 15:19 pmurias joined
pmurias clkao: ping 15:24
clkao pmurias: hi
pmurias hi
looked into Data::Capture 15:25
should I access to the invocant,positional, and named via ${},%{},@{}? 15:26
s/acces/code access/
eq. using overload? 15:27
sorry, so it's done already :(
pmurias is in sickness recovery mode now 15:28
clkao ;) 15:31
15:38 justatheory joined 15:59 vel joined 16:05 Psyche^ joined 16:06 pmurias left 16:07 nox_ghost joined
svnbot6 r13882 | andara++ | [t/syntax/parsing/lt.t] 16:13
r13882 | andara++ | Added pod with link to S03 for smoke.
16:20 cjeris joined 16:21 Psyche^ is now known as Patterner 16:23 putter joined
putter TreyHarris: ping? 16:27
fglock: so PCP6 is the new Perl6-Value/Container? 16:33
16:41 araujo joined
putter @seen TreyHarris 16:42
lambdabot TreyHarris is in #perl6. I last heard TreyHarris speak 7h 24m 29s ago.
16:42 fglock joined
fglock putter: PCP6 is the new pil-run, more or less 16:44
TreyHarris putter: pong
putter :) 16:45
so what does "almost working" mean?
fglock: ah, ok. have you seen nothingmuch's stuff? 16:46
TreyHarris putter: $?POSITION was off from what you'd get from ok eval. there were also about 200 test units that flipped... i didn't have a chance to investigate further, was planning on doing so this week 16:48
putter notes it would be easier to mechanical transformation of t/**.t if style was less diverse. considers adding more use examples to t/README. hmm... 16:49
TreyHarris but, if everyone would prefer that eval_* just go away, I suppose there's no point
putter the flips may well have been broken tests starting to work :) 16:50
TreyHarris yes, at least some of them were
but as i said, i didn't have time to investigate all of them
putter is it a big patch? could we "just do it" and fold it into releng (which I could look at now)? 16:54
fglock: v6, with it's own version of Test, isn't in danger of breaking before (immanent) release if it gets a macro, yes? 16:55
fglock putter: re nothingmuch's stuff - we seem to be working on different things, but I'm not sure :)
putter :)
fglock putter: would you paste the code? maybe I can implement it 16:56
nothingmuch MO is not yet ready for v6
when the time comes, after the haskell port things should be clearer
ETOOSWAMPED right now
i'll tty guys layer
TreyHarris it's not a big patch, but when i said it flipped 200 tests, i meant flipped from fail to succeed. several *thousand* changed their result but maintained their success or failure. so it's not the patch that's a big deal--it's its implications. for instance, the right thing to do thus far has been my $moose is context; eval_ok '$+moose...'. but: 16:57
?eval my $x is context = 42; say $+x;
16:57 evalbot_r13874 is now known as evalbot_r13882
evalbot_r13882 Error: Can't modify constant item: VUndef 16:57
putter re eval_ macro, macros still have the complexity issues audreyt mentioned, but if there is no short-term cost, we can later discard the macros as easily as the functions...
TreyHarris contextuals *only* work in a different context, unfortunately. so there's not even a form that works in both places in the *ordinary* case, let alone the general one... 16:58
putter TreyHarris: nopaste the patch?
TreyHarris so the cost is--write tests that assume the string is run where it sits lexically, or write the tests assuming the string is run somewhere else. the two are different and can't be mechanically translated in the general case...
putter: i'm on the wrong side of a firewall until i get back home tonight :( 16:59
putter oh, wait. your patch uses the "is context" idea? rather than being a simple string macro wrapper which can run tests unchanged?
TreyHarris i did a new checkout onto my laptop and forgot to sync...
fglock putter: is this to me? 'so what does "almost working" mean?' 17:00
putter fglock: sorry, no, TreyHarris - description of state of eval_ macros
TreyHarris putter: um... "unchanged"? if they wrote the string in a non-working way, assuming that it was eval'd at the point the string appeared, then yes, "unchanged". if on the other point they wrote a string that worked with the eval_* routines we actually had, i.e. using contextuals, then it does change it 17:01
putter finishes reading all of TH's lines... oohhh, i see... 17:02
TreyHarris the point is that many many many tests have been written using eval_*. some of them knew how eval_ worked and wrote the test for what eval_ was. some of them wrote based on what they thought eval_ should be. there's no way to write a single replacement that can reconcile both.
17:04 bernhard joined
putter So, "is context" breaks in an eval_ok->ok(eval()) transformation. is there a t/xx- test with your example? do you know of any other difficulties? 17:04
TreyHarris urm... i shouldn't say "no way". if we generated an AST and inspected it, it might be possible to see if it looks like it peeks outside its environment or not... but i don't think that's reasonable, and would *really* set the bar to Test.pm's implementation too high :)
putter goes to check how common "is context" is
TreyHarris putter: whoah, hang on... it's not very common, three dozen or so IIRC. *but* there's the matter of those thousand or so result-flipping tests. it suggests to me that contextuals were not the only way that people wrote eval strings that could only work inside Test.pm's lexical scope... 17:07
without the output of that smoke, i'm not sure how you'd go about finding those cases... sorry :( i will look. 17:08
now I must run.... &
fglock putter, nothingmuch: yes, I'm a bit uncomfortable with duplicated effort 17:13
nothingmuch returns due to highlight:
putter audreyt, TimToady: I note my Math::Basic hack is still in HEAD. there was talk of Math::Basic going away, no? or not?
nothingmuch MO was quick to implement, slow to think about
it's the sum of all of stevan's knowlege that went into moose
plus my inpujt
input
recreating it is simple now that the hard work is over 17:14
putter TreyHarris: hmm, macros may also affect pil2js, and precompilation (which Test sometimes is) has at least historically been a "you don't know if it works until you try it".... 17:17
?eval my $x is context = 42; eval('say $+x') 17:22
evalbot_r13882 OUTPUT[42 ] Bool::True
putter attempts one big easily-reversible eval_xx->xx(eval(()) patch. whioch would defer the macro issue to post-release. 17:25
TimToady unfortunately there's no syntax for telling a listop call to only use one argument like a unary. 17:26
and eval currently parses as a listop. 17:27
putter a "unarification" operator? ;) 17:28
there are only a few hundred cases, so no problem 17:30
17:35 buetow joined
putter or was your concern for something else? 17:43
17:46 kanru joined 17:51 weinig joined 17:52 ofer0 joined 17:54 beppu joined
gaal @tell audreyt new versions of Best.pm allow specifying minimum versions for requested modules, thanks to diotalevi++. is that relevant to the YAML::Syck recommendation? 17:54
lambdabot Consider it noted.
18:07 nox_ghost joined
svnbot6 r13883 | fglock++ | Pugs-Compiler-Rule - mangle_ident() - single ':' is encoded 18:11
18:14 smash joined 18:15 smash is now known as smash_
svnbot6 r13884 | fglock++ | pX/v6 - unicode method names 18:16
18:17 xinming joined 18:32 cjeris left 18:36 frederico joined
svnbot6 r13885 | putter++ | t/operators/precedence.t - fixed typo. 18:37
18:39 larsen joined
masak ?eval class A { has $.b; has $.c; sub BUILD($.b, $.c) {} } my $o = new A( "hello", ["wor", "ld"] ); 18:51
18:51 evalbot_r13882 is now known as evalbot_r13885
evalbot_r13885 Error: No compatible subroutine found: "&A::BUILD" 18:51
svnbot6 r13886 | putter++ | ext/re/t/basic.t - cleaned up redundant "eval_ok((eval ...)...).
masak anyone: what's wrong with the above constructor call? why doesn't it find &A::BUILD? 18:52
?eval class A { has $.b; sub BUILD($.b) {} } my $o = new A( "hello" ); 18:53
18:53 fglock joined
evalbot_r13885 pugs: out of memory (requested 1048576 bytes) 18:53
masak evalbot_r13885: sorry
seems to me that BUILD methods with more than one argument aren't implemented, or have regressed 18:58
masak looks in the tests for confirmation on this
kolibrie fglock: I'm going through my slides from a week and a half ago, trying to make example scripts 19:12
fglock: I'm having a problem when trying to match multiple times on a string
it only seems to ever match once 19:13
fglock kolibrie: with v6 or Pugs? v6 only implements a few constructs 19:16
svnbot6 r13887 | fglock++ | pX/v6 - rename PCP6 to Pugs-Emitter-Perl6-Perl5 19:17
kolibrie fglock: v6. It looks like this works: perl -e 'use v6-alpha' ' my $content = "abc"; while $content ~~ m:c/<alpha>/ { say $/ } ' 19:19
fglock: but this doesn't: perl -e 'use v6-alpha' ' my $content = "abc"; for $content ~~ m:g/<alpha>/ { say $/ } '
19:20 polettix joined
fglock kolibrie: not implemented - the place to write this is Pugs::Emitter::Perl6::Perl5 line 1292 19:22
kolibrie fglock: and weirder, when I put the 'while' snippet in a file, it finds no matches 19:23
fglock: on line 1292, what is not implemented? :g? 19:25
fglock kolibrie: this may be a bug - v6 stores the current pos in $/, but the specification says it should be stored in the string object 19:26
yes
kolibrie fglock: why would it work on the command-line and not in a file? the 'while' example 19:27
fglock kolibrie: maybe you have a $/ from a previous match, and :c is trying to reuse it - thus setting a wrong pos 19:28
19:28 SubStack joined
fglock this should be fixed in the new emitter 19:29
pasteling "kolibrie" at 66.239.158.2 pasted "fglock: while example in a file" (11 lines, 230B) at sial.org/pbot/20169 19:31
fglock hmm
one sec - I'll try a fix 19:33
kolibrie fglock: oh goody 19:34
I think that used to work, a week or so ago
fglock: I added my comments to the bottom of my while.pl and ran it again, and then it worked 19:36
fglock kolibrie: fixed 19:37
the internal rules in the rule compiler were leaving data in $/
kolibrie svk pulls 19:38
fglock the compiler cache made it work sometimes
svnbot6 r13888 | fglock++ | Pugs-Compiler-Rule - the rule compiler localizes $/
putter build fail: Generating precompiled Preludeopen: ext/Math-Basic/lib/Math/Basic.pm ext/Test/lib/Test.pm: No such file or directory at util/gen_prelude.pl line 131. ??? 19:40
svnbot6 r13889 | masak++ | [t/oo/attributes/instance.t] fixed typo
putter fixed
19:42 kastol joined
svnbot6 r13890 | putter++ | util/config-template.yml - fixed typo. 19:42
19:45 hexmode joined
fglock kolibrie: i'm implementing :g 19:46
kolibrie fglock: thank you
19:52 cjeris joined
kolibrie fglock: looking at my slide example, I'm still only getting one match unless I add a <!before> thing 19:56
pasteling "kolibrie" at 66.239.158.2 pasted "fglock: why won't this find multiple matches without the [ <!before <?presenter> > . ]*" (44 lines, 907B) at sial.org/pbot/20170
19:56 hexmode joined
masak ?eval class A { has $.b; method c() { return $.b } } my $o = new A( b => "hi" ); $o.c 19:57
19:57 evalbot_r13885 is now known as evalbot_r13890
evalbot_r13890 \undef 19:57
masak :(
not a ref to undef, that's just sad... 19:58
evalbot_r13890: can't you just say "hi" instead?
(here I go, talking to the bot again)
?eval class A { has $.b; method c() { return $.b } } my $o = new A( b => "hi" ); $o.b 19:59
evalbot_r13890 \undef 20:00
masak oh, so the problem is at an earlier level than methods...
?eval class A { has $.b; } my $o = new A( b => "hi" ); $o.b
evalbot_r13890 \undef
masak I see.
fglock kolibrie: yes, i think it's a bug 20:01
masak ?eval class A { has $.b; submethod BUILD( $.b ) {} } my $o = new A( b => "hi" ); $o.b
evalbot_r13890 Error: No compatible subroutine found: "&A::BUILD"
masak *sigh*
kolibrie fglock: is that as easily fixable as the last one? 20:03
Limbic_Region whoever last updated config-template.yml - is there a reason why the Test.pm was removed as a default? 20:04
fglock kolibrie: no, but I think it can be fixed together with :g
kolibrie fglock: okay
putter Limbic_Region: I last updated... checking... 20:11
Limbic_Region putter - actually I think it was a comment and I misread 20:12
putter ah, ok 20:13
svnbot6 r13891 | fglock++ | v6 - implemented :g as in ' @a = $content ~~ m:g/<alpha>/ ' 20:15
kolibrie fglock: /me pulls
fglock kolibrie: the last bug was not fixed 20:16
kolibrie fglock: one at a time :)
fglock kolibrie: the bug is that :c anchors at exactly the end of last match 20:17
kolibrie fglock: is that what it is supposed to do? or is it to be more lenient? 20:18
fglock kolibrie: no, it should not anchor
kolibrie fglock: ok
putter masak: as you encounter problems, you can drop test files in t/xx... 20:19
20:19 mdiep joined
masak putter: good idea. I will after I sleep a bit 20:21
zzz &
20:28 ruoso joined 20:30 polettix joined
TreyHarris putter: what is the purpose of your mondo-patch? to get the strings given to eval in the lexical scope and package of the test, correct? 20:33
putter: my concern is that there are tests that depend on the string *not* being in the same lexical scope and package. I convinced myself that the only way to do it is to methodically walk through each instance of /eval/ (either eval_TEST form or TEST eval form) and figure out what the right thing to do is. I didn't see a mechanistic way to make that determination, since a test's result is often semantic, not syntactic 20:37
putter: incidentally, I can't see a way, without using a routine in another file (like eval_is...) to make "my $x = 42; 'some_expression involving $x'" *not* work... maybe i'm missing something, but: 20:40
?eval my $x = 42; eval 'module TEST { say $x }'
20:40 evalbot_r13890 is now known as evalbot_r13891
evalbot_r13891 OUTPUT[42 ] Bool::True 20:40
TreyHarris I don't know how to get into some completely different scope... 20:41
inline, i mean.
20:46 avar joined 20:50 fglock joined
svnbot6 r13892 | fglock++ | v6, Pugs-Compiler-Rule - fixed :continue 20:50
fglock kolibrie: it should work without <!before...
coffee & 20:51
kolibrie fglock: /me pulls
kolibrie hugs fglock 20:56
20:57 Su-Shee left
putter TreyHarris: re intent of patch, yes. re concern, I've not seen many such. an particular examples come to mind? 21:00
re "incidentally", I don't understand... rephrase? 21:01
21:01 cjeris left
TreyHarris putter: no... i need to look at the smoke. i didn't upload it of course... tonight. i'll get back to you. 21:02
putter ?eval sub e($c){eval $c} {my $x = 42; e 'say $x'}
21:02 evalbot_r13891 is now known as evalbot_r13892
evalbot_r13892 undef 21:02
putter ?eval sub e($c){eval $c} {my $x is context = 42; e 'say $+x'} 21:03
evalbot_r13892 OUTPUT[42 ] Bool::True
kolibrie & 21:04
TreyHarris given "my $x = 42; my $string_to_be_evaled = 'something that uses $x'", can you see any way for $x to *not* have the value 42, by modifying only the string, and not the external code? i was thinking about how to do a normalizing mondo-patch to the tests that would not result in any changed results... so we'd at least be able to hack at Test.pm in isolation and only convert tests to it once we've verified that they're doing the right thing
putter got it 21:06
svnbot6 r13893 | fglock++ | v6/PCR - updated ChangeLog
21:08 jferrero joined
fglock how do you call a subrule without embedding it inside a m// like ' $content ~~ m:c/<talk>/ ' 21:09
s/subrule/rule/
[particle] it's a sub 21:10
putter just to make sure I fully understand (1) it would be nice to have test helper function(s) which provide eval in an unrelated and fresh lexical context, and perhaps an unrelated fresh package; (2) good conservative softeng practice would be to examine the tests to catch the few (about order 10, yes?) that assume eval_xx does this for them. 21:11
[particle] well, better, a method
putter TreyHarris: are those the two points?
21:11 silug joined
[particle] fglock: so perhaps like $/.talk($content) 21:12
fglock: or $/.talk :c ($content) ?? 21:13
putter regrets not having tested only the modified test files. two smokes, one cpu, and... lots of time passes. 21:14
ok, (2) isn't quite right. 21:15
TreyHarris right... that was the point i was making. but you had to try it for yourself. "trust, but verify" :) 21:16
losing the $! output in smokes is gonna hurt though.... 21:18
putter so my inclination is "a eval_elsewhere() could be useful, but I'd like to see repeated need before moving from nearby helper functions to something central", and "given the pugs aggressive development model, for order-10 breakages the right model is "just do it" and we'll fix it later". 21:19
re $!
fglock [particle]: I think it is a case of (Any ~~ Code), so ' $content ~~ talk ' might just work 21:20
putter ?eval sub f(){say $!} eval("g g g g"); f() 21:21
21:21 evalbot_r13892 is now known as evalbot_r13893
evalbot_r13893 OUTPUT[No compatible subroutine found: "&g" ] Bool::True 21:21
putter so $! is not unavailable, though choosing when to show it...
no? 21:22
TreyHarris to successfully change eval_dies_ok 'string' to ok ! eval, you need to change 'string' into 'string; 1' if string returns something that looks false and you're just checking for parseability.
putter re "inclination", no?
re dies
yes, patch doesn't touch dies. they all looked ok. 21:23
TreyHarris ok... so change proclaim to check $! maybe and if it exists display it on failure and todo cases?
putter sounds plausible... 21:24
putter goes to check spec on $!...
TreyHarris that's certainly an easier patch than my macro, and doesn't require an impl to jump the macro hurdle to run Test.pm...
fglock putter: i said 'PCP6 is the new pil-run' - s/pil-run/pugs/ 21:25
putter $! is indeed officially context'ual S02. 21:26
TreyHarris hmm... but if you have ok eval 'parse failure'; ok semantic_failure(); both tests will display the $! from the first...
putter yes :/ 21:27
21:27 SubStack joined
TreyHarris i do think the motivation behind having an eval_ok and an ok is valid... it was just a) incorrectly implemented, and b) poorly understood 21:27
"incorrectly" is too strong... it was implemented as well as it could be at the time
@localtime putter 21:28
or you could just tell me if lambdabot is being uncooperative :)
putter ?
TreyHarris what time zone are you in? 21:29
putter us east
TreyHarris lambdabot: @localtime TreyHarris
@arr
lambdabot Keelhaul the swabs!
Local time for TreyHarris is Wed Oct 4 14:29:22 2006
TreyHarris heh. that's weird.
putter re eval_ok, agreed it will be one day useful as a macro, and the issue is all current pragmatics. 21:30
TreyHarris i was asking because i'd like to work on this with you some more with my smoke in hand, so we can figure out what a) the right way to solve this is, and b) if the right way can be done without impacting audreyt's relenging, and c) if b is no, what we can do now versus next week... 21:31
but it will be almost midnight your time before i'm back home
fglock "Perl's Future" - as seen from 1997 www.byte.com/art/9704/sec9/art1.htm
lambdabot Title: BYTE.com
putter since the xx(eval) already outnumbered the eval_xx, and most of the eval_xx uses were broken, it seemed plausible to just normalize and simplify for now
hmm... 21:32
TreyHarris yes, but people were using the xx(eval) construct because contextuals didn't work until very recently 21:33
if you look, you'll see a mondo patch in may or june where somebody changed all the eval_*s to the other way because of that. and then agentzh came along in july and august and started changing them back to get the $! diagnostics... clearly we're flip-flopping here because the right way isn't easy/possible yet 21:34
putter even if that were true of all of them, converting all the existing eval_xx would still be a several-x improvement, no? 21:35
TreyHarris use an svn blame on t/, and after it completes an hour later ;) you'll see what i'm talking about...
putter "that were true" -> "because contextuals" 21:36
TreyHarris putter: i don't think so... because one failing test with a good diagnostic is more useful than making 10 spuriously failing tests pass... for test triaging anyway 21:37
21:38 amnesiac joined
putter so a key question is the current state of triage, and whether the patch affects it... 21:38
21:39 vel joined
TreyHarris it takes much longer to figure out why an "expected: 3, got: 4" test is failing than an "expected: 3, died with: 'no such ENV variable: "IN"'" 21:39
the latter tells you that somebody typoed $*IN as $+IN. the former you have to read the whole test and maaybe you'll notice the typo... 21:40
putter if not for release/triage, any thoughts on normalizing to xx(eval and doing something principled from there. perhaps having an eval_ok not called eval_ok so we don't come back here. 21:42
re principled xx(eval -> eval_xx flipping... perhaps reapply those patches once everything is normalized. though I'd like a name change first, just so misuse doesnt start building up again... 21:44
fglock putter, TreyHarris: what does the macro version would look like?
putter (there should have been "?"'s after the "doing something principled from there." and "once everything is normalized.";) 21:45
macro *eval_ok(Str $code...) { ... eval($code)... $!... } 21:46
err, macro eval_ok(...) is export {...}, not *eval_ok
macro eval_ok(Str $c,...) is export { "ok(eval($c),..." } would be the equivalent of the eval_xx->xx(eval transform. hmm, not sure how one handles globby signatures in string macros... 21:49
TreyHarris no... it can't be a string macro. that screws up $?POSITION, which is very very bad when you're triaging 21:51
and it can't be a closure macro, because that introduces a new caller stack. it has to be an AST macro
putter re $?POSITION, screws up how? 21:52
character position?
if you do foo(\n\n"arg") ? 21:53
s/you/the source file contains/
TreyHarris yes. the line and column numbers don't conform to where the test exists in the file on disk when you use a string macro
see... t/macros/caller.t to get a sense of what i'm talking about 21:54
putter hmm... "string macros are unacceptable because of $?POS" + "ast macros are unacceptable at least for now because of alternate implementation/backend differences" -> "cant use a macro", no? 21:55
unless the "ast" case was worked around by declaring eval_xx so important that all backends should special case it. 21:56
fglock shouldn't string macros localize POSITION?
TreyHarris ast macros are unacceptable? i missed that, who said that?
fglock: yes. the problem isn't when the eval string refers to $?POSITION, it's when the macro calls something that refers to $CALLER::?POSITION... 21:57
putter TreyHarris: that comes under audreyt's "very, very hard".
TreyHarris putter: ah. i read her as saying that AST-manipulating macros are hard. I thought that simply intercepting a macro call and running an AST would not be. but i'm not very smart when it comes to such things, i'm just now getting to the point where i can read stuff in src/pugs... 21:59
svnbot6 r13894 | fglock++ | mv Pugs-Emitter-Perl6-Perl5 to perl5/
putter I don't think anyone has tried doing an ast macros other than in pugs-hs. so not entirely clear how hard it will be. but not something which is likely to happen this week. 22:02
fglock but in eval_ok you are interested in the position inside eval, which should not be affected by the macro expansion 22:06
putter strawman proposal - normalize to xx(eval. now if release isn't impacted, afterward otherwise. create eval_elsewhere_ok identical to current eval_ok. and _is. eval_ok/is banned from t/. check log for principled xx(eval -> eval_xx flips, and apply them again (with new names). that get's us back to where we
are now, but without the confusion and known breakage. still perhaps leaves more principled flipping to be done. 22:07
thoughts?
TreyHarris i really think the resulting loss of $! diags is worse than the current spurious failures are... 22:08
putter err, how much -> eval_xx flipping was there...? 22:09
fglock putter: how about just fix it where it is failing, for now - unless you have a reason to rush
22:09 spoopithy joined
TreyHarris i totally agree that eval_outside is at best a nice-to-have and can probably be forgone entirely. in any case, eval_outside is already implemented, it's just incorrectly called eval_ok :) 22:09
but also, i think that "this parses" should be a different test than "this is true" 22:10
putter fglock: failing, as in test fail? (likely 0 cases - audreyt++) or failing, as in obviously broken (high order 100 cases, ie, most of them)?
lol (re just incorrectly called eval_ok) 22:11
fglock re parse: ok( Perl6.parse( $source ), ... )
putter :) 22:12
fglock better: ok( $source ~~ /<Perl6.parse>/ , ... )
TreyHarris sorry, i meant "evaluates", not just "parses". because "moose(:b<foo bar bat>)" parses regardless of whether a moose routine exists or moose takes a :$b, right? 22:13
putter hmm, two unfinished smokes, 2+ hours, time to go. sigh. perhaps late this evening, otherwise tomorrow. anyone want a nopasted diff?
TreyHarris diff of what?
putter: what hw/os are you on? 22:14
putter pre-test draft of mondo-patch
fglock later &
TreyHarris hmmm... how does the make smoke target work? could you check in a copy and not have it be run by make smoke? 22:15
22:15 fglock left
putter oops, i'm gone. will backlog & 22:16
22:27 Limbic_Region joined, stuuf joined
TimToady ?eval class A { has $.b; method c() { return $.b } } my $o = new A:( b => "hi" ); $o.c 22:27
22:27 evalbot_r13893 is now known as evalbot_r13894
evalbot_r13894 Error: Must only use named arguments to new() constructor Be sure to use bareword keys. 22:27
TimToady ?eval class A { has $.b; method c() { return $.b } } my $o = new A: b => "hi" ; $o.c 22:28
evalbot_r13894 \"hi"
TimToady ?eval class A { has $.b; method c() { return $.b } } my $o = A.new( b => "hi" ); $o.c
evalbot_r13894 \"hi"
TimToady ( b => "hi" ); $o.c 22:29
?eval class A { has $.b; method c() { return $.b } }; A(b => "hi")
evalbot_r13894 ::A
TimToady ?eval class A { has $.b; method c() { return $.b } }; A(b => "hi")<b> 22:30
evalbot_r13894 Error: Odd number of elements found where hash expected: VType (mkType "A")
TimToady ?eval class A { has $.b; method c() { return $.b } }; A(b => "hi").b
evalbot_r13894 Error: Can't modify constant item: VType (mkType "A")
TimToady makak: what's going on is that A( b => "hi" ) is being interpreted as a prototype, so you get no args passed to your A.new(). 22:31
I think we should probably disallow A( b=>"hi" ), an apparent coercion from a Pair to A, for that reason. 22:32
22:33 spoopithy is now known as spoop
TimToady anyway, the current Perl 5 syntax is not going to work there, and we should probably find a way to keep it from looking like it's working. 22:33
?eval A(b => "hi).perl 22:34
evalbot_r13894 Error: Unexpected end of input expecting block, "\\", variable name or "\""
TimToady ?eval class A { has $.b; method c() { return $.b } }; A(b => "hi).perl 22:35
evalbot_r13894 Error: Unexpected end of input expecting block, "\\", variable name or "\""
TimToady ?eval class A { has $.b; method c() { return $.b } }; A(b => "hi").perl 22:36
evalbot_r13894 "::A"
TimToady yeah, A() is just throwing away the pair.
22:43 polettix joined
TreyHarris ajs_work: sorry, was i too vociferous on p6-l? i was just trying to say 'we can all get along, whether you're a libertarian or an authoritarian'... 22:45
22:49 MacVince joined
TreyHarris i just don't want to see a replay of the first few years of CPAN. I spent a lot of time first sending diffs to authors so that their code would work under strict and warnings, and then cajoling them to see that making their code work under strict and warnings wasn't forcing people to use strict and warnings.... 22:54
Limbic_Region did someone break the build? 22:58
something about parrot.h being missing?
TreyHarris the situation's better with DBC, as I think that, given a "Acme::Moose" package, you could write a fully-functional "Acme::Moose::Contract" package that just set PRE, POST, and ENTER traits on routines, classes and roles, so you wouldn't even have to modify the original. I think. TimToady, any reason that shouldn't work just fine, except for being distressingly tightly-coupled to the implementation? (setting a fully-qualified package name as its ... 22:59
... dependency would keep that from hurting too much...)
Limbic_Region: what rev are you building?
22:59 weinig joined 23:02 SubStack_ joined
TimToady TreyHarris: I have assumed that all PRE/POST processing happens from within a .wrap somewhere, and since .wrap can be applied after the fact to any call, it enables any kind of after-marked AOP or DBC you like. 23:03
*after-market
TreyHarris TimToady: ok, good, that's what I thought. in DBC you need an "old" mechanism in POSTs to refer to the state at PRE-time. Is ENTER sufficient? I.e., method incr { $.value++; POST { $.value == ENTER { $.value } } }? 23:05
er... ENTER { $.value - 1 }.... 23:06
Limbic_Region TreyHarris - I did a realclean and an svn up - but it was something very recent 23:08
TimToady that is not what ENTER is for 23:11
23:11 SubStack_ is now known as SubStack 23:12 weinig is now known as weinig|bbl
TimToady the point about .wrap is that it is a single hidden caller frame that encompasses both PRE and POST, so it's a reasonably spot to keep track of "old". 23:12
TreyHarris ah, ok. but you have to roll that yourself? 23:13
TimToady what is the type of "old"?
is it a snapshot of the old object? 23:14
(whatever that means...)
or is it just a convenent spot to hold values from PRE to POST, like a hash? 23:15
*convenient
TreyHarris well, in Eiffel, it's a keyword. old(EXPR) is typed to whatever EXPR is typed to. it takes an arbitrary expression. so you could have "node('cur') = old(node('prev'))"... that sounds like ENTER to me
23:16 BooK_ joined
TimToady PRE and POST are conceptually outside the body 23:16
ENTER/LEAVE are conceptually inside.
The return value of ENTER goes to the inside code. 23:17
and an ENTER inside a POST block would mean "when the POST was entered".
TreyHarris ah... then what old is is the wrap's ENTER 23:18
TimToady in eiffel does the pre have to take an action to "save" state for post's old? 23:20
TreyHarris no, it happens automatically. you don't even have to have a require to use old in an ensure 23:21
TimToady maybe instead of PRE and POST we should just have a WRAP and let it use call(). 23:22
or maybe we can provide some mechanism for oldness to get hoisted into the .wrap implicitly. 23:23
but somehow by the time .wrap's call() happens we have to know what POST wants to compare to. 23:24
TreyHarris then you can't and your POSTs and or your PREs, can you? at least, not automatically
TimToady that would make it problematic, yes.
declare the POST inside the lexical scope of the PRE maybe? 23:26
and then it can be closurely
TreyHarris hmm. yes, then you'd have to explicitly assign to lexicals for each old 23:27
TimToady there has to be some way for post to pass thunks to pre to evaluate 23:28
TreyHarris well, and at least by default, if you wrap a sub three times, you need to run its posts in reverse order from the rest of the code in the wraps... maybe that happens already though 23:30
because a PRE is only supposed to relax restrictions on the calling args, and the POST is only supposed to tighten restrictions on the output...
TimToady well, one can calculate that with cumulative booleans. 23:31
and those presumably live in the dispatcher space
TreyHarris so long as all POSTs run after any bare code in the wrap, yes.
because otherwise you could make your return pass the postcondition, and then munge it so it doesn't anymore before returning 23:32
23:32 Aankhen`` joined
Limbic_Region TreyHarris - realclean fixed the problem so no worries 23:33
TreyHarris TimToady: sorry, nevermind, it's a trait block so you're not going to be able to run any code after it anyway... 23:34
23:35 nox_ghost is now known as ofer0 23:47 KingDiamond joined 23:48 weinig|bbl is now known as weinig
svnbot6 r13895 | audreyt++ | * Makefile.PL: The gen_prelude target needs an extra --make 23:54
r13895 | audreyt++ | to work with GHC -head.
23:59 mauke joined