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
|