pugscode.org/ | nopaste: sial.org/pbot/perl6 | ?eval [~] <m oo se> | We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/
Set by diakopter on 11 July 2007.
pugs_svn r19582 | lwall++ | [fudge] fudging everything that needs fudging 01:00
meppuru good night 01:45
pugs_svn r19583 | lwall++ | [fudgeall] depugsify and delinuxify 02:26
pugs_svn r19584 | particle++ | [fudgeall] delinuxify 03:31
r19585 | particle++ | [fudge] prettify usage 03:32
pugs_svn r19586 | lwall++ | [t/spec] Some missing colons 04:00
[particle] TimToady: does skip require a block? 04:14
nm, i'm working on it 04:18
pugs_svn r19587 | particle++ | [fudgeall] windows doesn't seem to want globbing help 04:26
r19588 | particle++ | [t/spec] add skip markers for rakudo 04:36
alester Adriano's articles indexed here: www.perlfoundation.org/perl6/index....roarticles 04:38
lambdabot Title: Perl 6 microarticles / Perl 6, tinyurl.com/2t5546
ingy hi [particle] 05:04
[particle] hey ingy
ingy did that meeting ever end? :)
[particle] no, i'm still waiting to do my talk :) 05:05
ingy haha
the 40 minute talks were... well
a little long for a 10 minute talk
[particle] yeah, i think next time we need a gong 05:06
ingy [particle]: did you ever notice that pugs is an anagram of spug? 05:07
[particle] haha, no
ingy P.U.G.S. Perl Users Group, Seattle
I just noticed it myself 05:08
maybe we'll have to start SHUG 05:09
[particle] SHRUGS 05:10
beppu Just out of curiosity, where has audreyt been?
[particle] curiosity killed the cat
ingy I keep her in a jar.
[particle] told ya.
beppu Let her post a blog entry once in a while.
ingy she's been begging me to switch her into a par. 05:11
can't stand that java.
[particle] har 05:12
beppu Are you trying to kill her?
[particle] audrey kept reality in her system tray for a long time, and when she restored it, it consumed all cycles and memory 05:13
ingy She's draws a good crowd in my museum of programming curiosities
Don't worry. I feed her bits and bytes. 05:14
Reality bytes. 05:15
beppu Reality is a funny thing. 05:16
ingy [particle]: we should hang out and hack sometime
[particle] ingy: that'd be cool 05:17
ingy I think after Feb 3rd would be good 05:18
[particle] that's better for me too
i leave for dc in the morning
ingy :)
Auzon pugs: my @test = 1 .. 10; say "sorted!" if [<] @test; 05:20
exp_evalbot OUTPUT[sorted!␤]
Auzon pugs: my @test = 1 .. 10, 6; say "sorted!" if [<] @test;
exp_evalbot RESULT[undef]
pugs_svn r19589 | particle++ | [fudgeall] ignore previously fudged output files 05:55
TimToady [particle]: skip does not require a block 06:20
[particle] figured that out, thanks 06:20
ingy hi Tim
TimToady and you can leave out the 1 on the "1 skip"
ingy or do you prefer Mr Toady? 06:21
TimToady if you say 3 skip a block only counts as 1
I prefer "hey you!"
[particle] aha
Auzon Hue?
ingy hi hey you
Auzon :P
TimToady hey me
allbery_b "yo"? 06:22
TimToady a statement counts as starting at a line with "is" et al, and terminating with a line with ; (and optional comment)
pugs_svn r19590 | particle++ | [t/spec] skip some unicode tests for rakudo until we can guarantee folks have icu installed 06:23
TimToady I finally got my pugs smokes working again by skipping the tests that spat out malformed utf-8
we probably need another verb in fudge like "inline" so we can just insert code to call "skip_rest" and such 06:24
allbery_b pugs still losing for me. I'm not sure if it's the darcs ghc or the new cabal, but the package.conf-mangling wrapper for ghc that pugs uses is failing to find any installed packages (like, say, bse) 06:25
er, base
TimToady I made fudged files end with exit(1) so they come out "dubious" despite passing :)
what version of ghc? 06:26
(I use svn so can't help with darcs)
allbery_b 6.9-* from darcs
TimToady yow
allbery_b (the equivalent of cvs/svn HEAD)
TimToady still at 6.6.1 meself 06:27
[particle] TimToady: rakudo is working with fudge now, so it's full steam ahead
TimToady [particle]++
allbery_b guess I'll try to find a 6.6.1 package for ppc then
(have 6.6.0 and recent 6.9s) 06:28
TimToady It's actually quite fun to watch rakudo following in pugs footsteps wrt testing and development
it's a concrete example of the good kind of cross-fertilization
and a sign that we can use our differences as a strength rather than a weakness 06:29
anyhoo, thanks for helping with fudge 06:30
zzz & 06:31
[particle] t\spec\S29-str\ucfirst.rakudo 06:36
Non-zero exit status: 1
lovely of you to create fudge in the first place. all i had to do was complain properly, and there it was!
TimToady you either want to drop the 2 or the block there 06:38
the block only counts as 1 skip 06:39
[particle] i'll fix that up
just good to know it's running the .rakudo files now :)
and giving exit(1)
TimToady probably still need a way to say the following should be multiplied by N for loops and such 06:40
maybe I should force the count on a block to be interpreted that way 06:41
but I still think it's an attribute of the block, not the skip command
[particle] as long as fudge handles the preprocessing, it's all good
TimToady since it's shared by all platforms
[particle] i suppose fudge could look ahead and generate the block count 06:42
TimToady maybe a #?all: scale 5
or some such
I'll think about it overnight.
[particle] i'm sure you'll come up with something. you always do. 06:43
TimToady meanwhile, it really doesn't matter so much if the count gets off
[particle] not for us yet, anyway. i just want to be able to get the files parsing properly
TimToady well, didn't get a nap today, so really need to thunk... 06:44
zzz really &
[particle] enjoy
pugs_svn r19591 | particle++ | [t/spec] fix some incorrect test markers for rakudo 06:58
[particle] TimToady: skip throws off the line count without a block: 07:08
#?rakudo: 2 skip "unicode"
skip(1,"unicode"); # { is(uc("ß"), "SS", "uc() of non-ascii chars may result in two chars");
# }
that extra # } is trouble. probably don't even need # { and # } for single lines 07:09
bed &
pugs_svn r19592 | putter++ | [kp6] Emit/Ruby.pm: a minor bit of transliterating 07:11
pugs_svn r19593 | particle++ | [t/spec] rakudo markers 07:32
fglock @tell obra re test prioritization, this looks interesting mapstext.unl.edu/public/prioritization/ 12:06
lambdabot Consider it noted.
lichtkind i have problems witz the perl 6 wiki 12:14
fglock how about adding severity/criticality to at least some of the tests? 12:44
integral hmm, this month's MSDN magazine has an article on writing compilers from .NET (the hard way with manually written lexers and parsers :-) 12:52
meppl search.cpan.org/~audreyt/ 14:13
lambdabot Title: &#9787; &#21776;&#40179; &#9786; - search.cpan.org
meppl beautiful picture there
lambdabot, nice try 14:14
pugs_svn r19594 | ruoso++ | [smop] adding a new test before starting to implement the interpreter logic 15:25
ruoso fgl 15:28
oops
pugs_svn r19595 | particle++ | [t/spec] rakudo skip markers 15:56
ruoso I've realised that delaying the gc implementation to the oo system hidden behind the responder interface brought me an unexpected important feature... I can have immortal values that are not subject to gc at all.. 16:00
the constant identifiers are some of them...
TimToady hmm, does that work for native types, I wonder... 16:02
ruoso TimToady, in theory, it can 16:04
because native types cannot have their representation changed 16:05
so we can just assume to know how they are
wolverian www.theonion.com/content/news/earth...ck_to_2147 quite OT, but funny, and I was led here via charles stross's blog, who has a section for perl on his site, so it's not quite completely OT, right..
lambdabot Title: Earthquake Sets Japan Back To 2147 | The Onion - America's Finest News Source, tinyurl.com/yt4egq
ruoso TimToady, you think having some constant ints pre-defined would have any impact? 16:09
like.. everytime you use a 1, you can use the constant 1 value?
TimToady well, you need to have a representation of the bits somewhere, and there's little point in duplicating if you don't have a machine code that inlines and forces indirection 16:10
instead
and as long as you keep your readonlyness straight, it works 16:11
ruoso interesting the fact that when I was putting the tags for smop in ohloh and it listed squeak as a related project... 16:12
TimToady, ints are readonly by definition
there's simply no way of "legally" changing its values
TimToady well, it was easy enough to change them in Fortran 16:13
ruoso I mean, the pointer is there, the structure is known, but the API doesn't expose it... 16:14
I mean, not even the typedef is exposed to the public api
it's all design by contract
It's almost void* everywhere... it's SMOP__Object* everywhere... 16:17
hmmm... 16:21
ohloh really thinks smop is related to smalltalk... the two top related-by-tag projects to smop are squeak and smalltalk yx... 16:22
netix Hi, I know it must be a borring question but, do you know any date about perl 6 release ? On Internet I saw "alpha in the begin of 2007 and maybe a release at next christmas" 16:45
TimToady the Internet is a big place 16:47
icwiener :) 16:48
TimToady it's possible that there are universes in which Perl 6 is done already, and maybe the Internet leaks between universes. 16:50
netix TimToady> like ONE with jet lee ? :)
TimToady sorry, he's rocket lee in that universe 16:51
it's a strange quirk of english that jets aren't rockets, but rockets use jet propulsion 16:52
netix TimToady> anyways, any idea of a period for release ? 16:53
TimToady we'll release as soon as we get up to about 40,000 passing regression tests.
so you'd better get busy :) 16:54
netix lol... thanks for help 16:55
pugs_svn r19596 | ruoso++ | [smop] smop_interpreter.c. The instance that holds the current continuation. Some code done, but now I need to define the capture api 16:56
ruoso TimToady, I know that the capture object is supposed to be used with prefix $, @ and % to get each value, but this seems a little too much overhead for the low-level... 16:59
do you think methods for getting explicitly the named and positional arguments should be part of the spec of the capture object? 17:00
TimToady to the first approximation, a capture is just a list of generators 17:01
some of which are marked as invocant or named, but to begin with they could just live in a list
and the methods could comb them out of the list on demand 17:02
stevan_ this might be of interested to you p6 folks, we just added rudementary support for attribute "traits" in Moose
code2.0beta.co.uk/moose/svn/Moose/t...e_traits.t
lambdabot tinyurl.com/26s276
stevan_ basically it applys a set of roles to an anon-subclass of the attribute metaobject 17:03
which should allow us to immitate some of the crazier p6 bits
ruoso TimToady, I'm not yet dealing with the high-level capture object... I'll use design-by-contract to implement a native capture type that is compatible with the high-level capture, but that can be implemented simpler than the high-level capture object 17:05
the only requirement is that both implements the same API
[particle] farewell &
ruoso TimToady, for instance, the low-level Capture won't require the values to be inside containers for it to fetch 17:08
as it will make avaiable a method for returning the actual value, instead of a container with the value
TimToady well, $ @ % & are essentially just methods too 17:10
ruoso yeah.. i know...
but they return containers
and that's an overhead I'd like to avoid
as I don't even have the containers yet in the low-level
TimToady I don't see why they have to return containers 17:11
ruoso I mean, I need a capture object to be able to initialize the Scalar prototype, for instance
TimToady they're just context
ruoso doesn't $ returns a Scalar?
TimToady no, it returns an item
and @ returns a list, not an Array 17:12
ruoso isn't item a kind of a simpler container?
like something I call FETCH?
TimToady sure, but 1.STORE fails 17:13
ruoso one way or another 17:14
it is a container...
TimToady only in the sense that everything is an object
ruoso exactly
TimToady and all objects are containers
ruoso hm?
int has a method FETCH? 17:15
that returns itself?
TimToady presumably FETCH would be a noop on a nonScalar item 17:16
ruoso ok... let me see if I got it straight...
TimToady you only need a Scalar when you have an lvalue, not an rvalue
$foo = 42 requires a Scalar on the left 17:17
if you say $foo := 42 then $foo isn't in fact a Scalar anymore
and $foo = 1 will fail after the binding
ruoso so Scalar is not really a class, it's more like a role 17:18
or even, an interface 17:19
an API actually
TimToady just like Array or Hash, but not needing a subscript
ruoso ok... I need to figure out how that impacts in the capture... 17:22
in the lowlevel, I have methods like
smop_new_capture_for_some_method(SMOP__Object invocant, SMOP__Object thefirstpositional, SMOP__Object thenamedfoo) 17:23
this would create a capture equivalent to
($invocant: $thefirstpositional, :foo($thenamedfoo))
TimToady that's for creating an unbound call? 17:24
ruoso That's what will be put as the parameter to the SMOP_DISPATCH(interpreter, responder, capture) call 17:25
sorry
SMOP_DISPATCH(interpreter, responder, identifier, capture)
that's the deepest low-level thing
TimToady seems reasonable; the syntax is designed so that you can sort out the inf/pos/named at compile time
ruoso Ok... but which method identifiers should I use to fetch the values from the capture object? 17:26
$ would return the invocant
(I'm not doing any bindings in the low-level...
@ would return a list to which I could ask for an item 17:27
TimToady .item .list .hash are the corresponding context methods
ruoso ok...
TimToady (and .slice is a variant of .list)
ruoso the question is... wouldn't it be nice to have a .named(identifier) and a .positional(index) methods? 17:28
to avoid the eventual proxy object?
TimToady well, sure, low-level binding needs to do whatever will be efficient 17:30
ruoso the thing is that I won't even bind in the low-level
all parameters are rw
TimToady and even when binding to *@_ and *%_, those proxies are only the *remaining* args
so shouldn't be confused with @($capture) or %($capture) 17:31
TimToady you do probably need to be careful that you have a way of preventing eventual assignment to a formal parameter that isn't declared "rw", even if the actual argument is "rw" 17:33
but it's just something to be bear in mind
ruoso ok.. but I'm working in deep low-level here.. so in fact they're not really rw... I just don't copy them... 17:34
TimToady that's fine; is how all computers really work anyway... 17:35
well, most of them
there have been computers with fine-grained ro/rw attriubutes 17:36
ruoso but this problem will probably be solved when I implement the Signature
and then I can bind the capture to the signature and that's all
TimToady sounds like you're on the right track 17:37
certainly you want the mechanism to be fast when it can be proven that a formal parameter cannot be written to 17:38
no point in protecting it if there's no threat
if protecting it implies overhead
ruoso ok.. so for the lowest-level calls, I will use .invocant(), .positional(index) and .named(identifier) to fetch the items of the capture 17:39
and I'll have to use a trick to be able to not use a capture to fetch the item from a capture 17:41
which is to pass the value itself as the capture to those methods 17:42
instead of another capture
like...
.invocant(|1) 17:43
.positional(|1)
i mean
but in fact it's something mor
my $a = SMOP__CAPTURE__OPCAPTURE__postional_new($capture, 1); $capture.positional(|$a); 17:44
where $capture.positional would refuse any other object type 17:45
so it probably should be named as something else... 17:48
TimToady have you thought about optimizing multiple dispatch yet? 17:51
ruoso only that one way to do it is to check for known responder interfaces
TimToady, is there any reason for Capture and Signature not being native? 17:55
I mean... it makes things so harder 17:56
TimToady depends on what you mean by native
ruoso by not being possible to change its representation 17:57
TimToady certainly captures and signatures are at the top level just values
it's only by indirection that you get generators or containers
ruoso If I could count on knowing for sure the C structure of a capture (like I can with int) 17:58
it would be much easier
TimToady Signature and Capture are listed as immutable in S02 17:59
ruoso but this doesn't mean that any thing can say true to .does(Capture)
TimToady well, sometimes you have to box values 18:00
ruoso I mean.. I can consider to be illegal for anything else to say true on .does(int)
TimToady and most value types are punning with an identically named role
well, in a sense there is no int type 18:01
the type of int is Int
TimToady but with restrictions on storage 18:01
ruoso I mean... 18:02
I can count on every int to have *my* responder interface
but I can't count on every Int to have the same responder interface
I can have a perl5 and a parrot value claiming to be Int 18:03
TimToady yes, Int is a role that can be mixed into make other RIs
but we can restrict Capture/Signature, or call 'em capture/signature, if we need to 18:04
ruoso pleeeeeeeeeeeease
ruoso having the possibility of a foreign object to pass parameters is overkill, imho 18:04
i mean, using a sv* as a capture... 18:05
for instance
TimToady you don't have to convince me--I want dispatch to be fast
ruoso so, can I consider the capture and the signature to be "native" in the same sense as "int"? 18:06
TimToady the lowercase ones 18:07
we still might like a Capture role that can mix
ruoso Ok
TimToady for instance, into Match objects
but then you just have to unbox to capture
if you use it that way
ruoso seems perfect. 18:08
and I think that for smop, the capture in SMOP_DISPATCH will always be the lowercase one... the language must unbox it before passing it to the method... 18:09
this way I don't have to unbox everytime...
or at least check if it needs to be unboxed 18:10
wolverian ruoso++ # I don't understand any of this but it is fascinating
ruoso heh
I'm still in the beach trying to pull my boot straps to get out of the water...
TimToady maybe the original boxed Capture goes through the invocant if you don't have one.
maybe not
TimToady bbl & 18:11
ruoso TimToady, that's the reason for the .^native(type) method, that I've declared in SMOP... 18:13
ruoso it actually shouldn't be called ^native, because that seems to be a method for the metaclass... 18:14
maybe it can be delegated to the metaclass if the responder doesn't intercept it 18:15
but the expected is that the responder interface intercepts it
pugs_svn r19597 | ruoso++ | [smop] Now we have the native capture type. This simplifies a *LOT* everything, as I can count on knowing the C structure of the capture in every call. TimToady++ 18:32
lichtkind TimToady: are your shure that the reduction syntax [\ ] is optimal? 18:52
ruoso for the record: www.perlfoundation.org/perl6/index....t_sequence documents what will happen in the smop_init() call. 18:56
lambdabot Title: SMOP Boot Sequence / Perl 6
TimToady lichtkind: optimal in which dimension or set of dimensions? 18:59
(it's primarily optmized for the visual dimensionh) 19:00
lichtkind TimToady: honestly the syntax is ugly
TimToady it's an unusual thing to want to do
lichtkind i know weird things should look weird
TimToady and the triangle part of it is kinda pretty 19:01
lichtkind triangle ?
TimToady yes, the left vertical and the backslash suggest a triangle 19:02
[\,] 1..10
1
1,2
1,2,3
1,2,3,4
1,2,3,4,5
almost the same slope even 19:03
ruoso brb &
lichtkind TimToady: triangle numbers i see , i recently know them; since we boost the perl ratings in project euler a bit
TimToady: its about mathematic problems 19:04
TimToady: and during this tasks i many times wished to have perl 6 today
TimToady well, you and me both :)
lichtkind :) 19:05
TimToady: so this won't change ? 19:08
TimToady not likely unless somebody comes up with something spectacularly better 19:09
lichtkind TimToady: im really tempted 19:12
wolverian hmm. building a nested set of sets of sets ... Set(Set(), Set(1, 2, Set(3, 4, ...))) is okay, I suppose, but I'm wondering if there's a less pythonic way. 20:48
this isn't very relevant, really, since I don't foresee myself doing this in perl6. using maxima for now.. :) 20:49
though I don't like maxima's lack of nice operators
Set.new_recursively(@@(...)) 20:50
%%() almost makes sense here :p 20:51
wolverian as a side note, you can't put a set object inside another set in python 21:01
hm, ah, you can't put _mutable_ sets inside other sets 21:02
that makes sense :) 21:03
meppl good night 23:35