svn switch --relocate svn.openfoundry.org/pugs svn.pugscode.org/pugs/ | run.pugscode.org | spec.pugscode.org | paste: sial.org/pbot/perl6 | pugs.blogs.com
Set by avar on 16 November 2006.
00:49 pnu joined, gaal joined, cj joined, tewk joined, shachaf joined, TimToady joined, GeJ joined, nanonyme joined, qmole joined, [particle] joined 00:50 kcwu joined, wilx joined, lambdabot joined 01:12 weinig joined 01:46 ozo joined 02:42 dmq joined 02:43 weinig is now known as weinig|zZzZ 02:51 Schwern joined 03:06 pbuetow joined 03:11 dduncan joined, bjoern_ joined
bjoern_ Hi. Say you call a|b a "choice" and ab a "sequence". What would you call a||b and a&&b where a||b = a?b|b?a and a&&b = ab|ba? 03:12
dduncan did you mean to say: and a&b a "sequence" 03:15
? 03:16
or (a,b) ... that's a sequence
bjoern_ Not really. This isn't a Perl question and the syntax does not really matter. I'm just looking for good names.
dduncan just a minute ... 03:17
bjoern_ ab is "first a, then b"
a|b is "either a or b"
a&&b is "a and b in any order"
a||b is "a, or b, or both in any order"
dduncan I see ... what is the wider context? 03:18
bjoern_ You could say XML element names for a schema language 03:19
so you'd <choice><a/><b/></choice> for example
I was thinking along the lines of "inclusion", "conjunction", ... but haven't been able to come up with something good 03:20
hmm a&&b is "any permutation of all values" and a||b is "any permutation of some values" ... 03:27
03:28 diakopter joined
bjoern_ any other channel on freenode where people might have an idea? 03:29
dduncan hard to say ... but still, you've given me more to work with 03:32
I certainly face times I want to come up with names too, and have gotten help here on a couple occasoins 03:33
occasions
I suggest using an online thesaurus to ideas 03:34
put in words that you think mean similarly to what you want, and see other things that may look good
it may not be the best, but thesaurus.reference.com/ is what I usually try for this purpose 03:35
lambdabot Title: Thesaurus.com
04:10 Teratogen joined
Teratogen will Perl 6 still have a text preprocessor a la Perl 5's perl -P ? 04:10
text preprocessors are nice =) 04:11
dduncan that matter is orthogonal to the language itself, so would depend on specific implementations 04:12
and there is no single Perl 6 implementation 04:13
Teratogen is it orthogonal to Perl 5, or is it a moot point?
dduncan there is only 1 Perl 5 implementation
Teratogen perl -P will always try to invoke a C preprocessor, even if one isn't there
dduncan all this said, v6.pm, one Perl 6 implementation, is over Perl 5
so things that work with Perl 5 should work with it as reasonable 04:14
or maybe I misunderstood your question
are you talking about source filtering?
or a dynamic text editor?
Teratogen no 04:15
a simple text preprocessor
bjoern_ (/me in #math) "permutation" isn't too bad because you could say, to produce a valid text
[a | b] - make a <choice> among these: a, b, c, ...
[a , b] - use this <sequence>: a, b, c, ...
[a && b] - make a <permutation> of these: a, b, c, ...
[a || b] - make a <permutation> of a subset of these: a, b, c, ...
Teratogen a la Perl 5's perl -P
bjoern_ (#math wasn't too helpful yet though, neither were the thesauri)
Teratogen I know Perl 6 will have a sophisticated built in preprocessor
at the "code level"
not at the "text level"
dduncan it has macros 04:16
you mean like that?
Teratogen right
exactly
macros are one thing
a text preprocessor is something else
something simpler
but still very useful
there should be a "perl6 -P"
dduncan macros can take either an AST or the text source code as input
in Perl 6
Teratogen aah
dduncan so you have that flexability
Teratogen cool
=D
dduncan afaik
one moment ... 04:17
have a look at Synopsis 6 ... dev.perl.org/perl6/doc/design/syn/S06.html
lambdabot Title: Synopsis 6: Subroutines - perl6:
bjoern_ combine-some / combine-all are two words unfortunately 04:19
dduncan there's a snippit at the top, but mainly scroll down about 80% to the "Macros" section
avar when you can take ast you have the power of lisp macros 04:22
bjoern_ I think I am going with <conjunction> for a&&b and <combination> for a||b then
dduncan bjoern_ , depending on the nature of things, you could have something that sort of works now, and change it later if something better comes up ... even easier if you design your schema to declare a version string, so that user programs can adapt to changes 04:28
after it goes in production 04:29
04:50 LeeD joined 04:58 Aankhen`` joined 05:06 miyagawa joined 05:37 nipra joined 05:38 araujo joined 05:45 luqui joined 05:56 ofer0 joined 06:14 BooK_ joined 06:41 kanru joined
Teratogen congratulations, tag- 06:51
06:59 f0rth joined 07:00 lambdabot joined 07:14 Aankh|Clone joined 07:16 lambdabot joined 07:20 Aankh|Clone is now known as Aankhen`` 07:25 Aankh|Clone joined 07:33 Southen_ joined 07:47 cognominal joined 07:59 devogon joined 08:13 marmic joined 08:21 iblechbot joined 08:22 Schwern joined 08:53 spo0nman joined, lambdabot joined 08:54 lambdabot joined 08:56 makk384 joined 09:08 lambdabot joined 09:18 lambdabot joined 09:40 makk384 left 09:42 elmex joined 09:58 Aankh|Clone is now known as Aankhen``
svnbot6 r14977 | fglock++ | mp6 - fixed variables predeclaration in bind 10:23
10:43 fglock joined, buetow joined
svnbot6 r14978 | fglock++ | mp6-mo - initial commit 10:59
r14978 | fglock++ | - classes (::CompUnit) are implemented as a macro.
r14978 | fglock++ | The macro expands to a module (::Module), which calls MO.
r14978 | fglock++ | - implemented methods, accessors, class variables
11:08 ruoso joined, Khisanth joined
fglock nothingmuch: is '->new' created automatically by MO? otherwise, is '->create_instance' the right way to implement it? 11:23
11:24 Debolaz2 joined, cdfh_ joined, BooK joined, Debolaz2 joined 11:28 bjoern_ joined, Debolaz2 is now known as Debolaz
baest /win 1 11:38
sorry :) 11:39
11:45 webmind joined 11:52 chris2 joined
nothingmuch fglock: i have drawn that up but haven't implemented yet 12:00
i'm not 100% sure how I will do it, but the constructor protocol is going to consist of:
low level constructors, generated by the meta class as private methods
high level constructors inherited from a base class which in turn gets them from some roles so that you can easily make a different base class 12:01
see: nothingmuch.woobling.org/constructi...zation.pdf
lambdabot tinyurl.com/y3o94b
nothingmuch the problem with this is that it makes sense for class style stuff 12:02
but it doesn't match what TimToady wanted for prototype OO
svnbot6 r14979 | fglock++ | mp6-mo - implemented "new" method
nothingmuch which while implementable is going to be difficult in perl 5 land 12:03
fglock I've got: Can't locate object method "create_instance" via package "MO::Run::Responder::Invocant" at cp.pl line 130. 12:05
nothingmuch that's because invocant doesn't have that method, it's a moose method
you need to set the native runtime in MO::Run::Aux to get "normal" oo
where the object type is a blessed ref, not a boxed type 12:06
BEGIN { $MO::Run::Aux::MO_NATIVE_RUNTIME = 1 }
somewhere before use MO::Run::Aux
Debolaz en.wikipedia.org/w/index.php?title=...d=97634795
lambdabot tinyurl.com/yzchr9
nothingmuch or you could use MO::Run::Aux::method_call( $obj, "method" ) instead of $obj->method to have it working under both types 12:07
fglock can I use method_call() everywhere? 12:09
nothingmuch yes
it's slow, but it means it'll run with either boxed invocant or native perl 5 always
if it could be a macro that's what it would have been ;-)
fglock ok, I can make it macro later 12:10
nothingmuch MO's own generated code uses these "macros" and will eventually use a proper AST to treat it as a macro
fglock I'll paste what I have so far, one sec... 12:11
nothingmuch MO::Run::Aux dictates everything, in a sense... it provides boxing and unboxing routines, as well as method calls, etc... it bridges the meta model with the runtime
and it has two modes 12:12
if you want to use $foo->method type method calls you must use it under the native mode
and then it can also generate .pmcs sanely
bbiab 12:13
12:15 ofer1 joined
fglock paste.lisp.org/display/33941 12:15
paste.lisp.org/display/33942
I've got the same error message with MO_NATIVE_RUNTIME = 1 12:21
method_call() works - thanks! 12:24
nothingmuch are you sure you did it early enough? 12:28
fglock: that looks good 12:30
some comments:
do { [] }; # what's this?
$__class_box->create_instance( @{$List__} ); - you can call it on #self
$self, sorry 12:31
but either way MO::Run::Aux::method_call( $self, "create_instance", @{ $list__ } ) is prolly safer
also, create_instance will soon change to need to accept field meta objects instead of key/value pairs
and only 'new' will accept them
so I will let you know when to phase 'new' out
the issue with $__clas__box vs. $self is that new cannot be inherited that way 12:32
looks sweet =) 12:33
fglock++
anymoose, i'm going to excercise
fglock: oh, one request... Keep the small bits of emitted stuff pluggable 12:35
since MO::Compile::Class::MI is not necessarily the right metaclass, and Method::Simple is not necessarily the right metrhod metaclass it should be easy to change them later if we decide to tailor ones that better suite your needs 12:36
12:37 agentzh joined
fglock ok 12:38
agentzh hmm, it's fun to see there's various encodings used by the people here: utf-8, gb2312, big5, latin1, and etc, etc, etc. :)
fglock nothingmuch: I'm confused with p6 'submethod BUILD' - how is it used? 12:42
12:57 ruoso joined 13:03 dduncan left
fglock nothingmuch: now I'm getting 'Can't locate object method "responder_interface" via package "MO::P5::Registry" 13:05
svnbot6 r14980 | fglock++ | mp6-mo - method calls now use 'method_call()' instead of '->'
fglock nothingmuch: re 'do { [] }' - it's an empty ::Bind, it was generated because the function has no params. It could be removed by the emitter. 13:11
nothingmuch fglock: BUILDALL aggregates all of the BUILD submethods and calls them in order 13:21
fglock: can you paste the line that made that error
fglock I'm fixing it - I'm moving the internal/native MO calls into the runtime 13:22
here: MO::Run::Aux::method_call( MO::Run::Aux::registry(), q(register_class), 'x', $__base ) 13:24
I think MO::Run::Aux::registry() is not a valid object? 13:25
re BUILD: should I implement it somehow?
13:29 bonesss joined
nothingmuch oh 13:33
no need to do that
MO::Run::Aux::registry is a p5 object, not a MO object
only use the method_call pseudomacro for values that are returned by MO::Run::Aux's boxing routines
fglock ok - it's fixed now
13:39 asz joined
agentzh 􏿽xD0􏿽xC2􏿽xC4􏿽xEA􏿽xBA􏿽xC3 13:47
13:49 elmex joined 13:52 kanru joined, thepler joined
svnbot6 r14981 | fglock++ | mp6-mo - 'new' works 13:53
14:00 weinig|zZzZ is now known as weinig 14:01 zev joined
svnbot6 r14982 | fglock++ | mp6-mo - added example 14:03
14:04 [particle] joined 14:24 mako132 joined 14:25 mako132 joined
fglock nothingmuch: can you give me an example of how to add a new method to 'instance_methods' and recalculate 14:29
bbiab
14:38 nipra joined
svnbot6 r14983 | agentz++ | [get-irc-logs.pl] 14:52
r14983 | agentz++ | - always refresh the last day's log.
14:52 Jedai joined 14:53 kanru joined 15:11 fglock joined
fglock nothingmuch: $__base->instance_methods->add( MO::Compile::Method::Simple->new(...) ) seems to work. Is this correct? 15:19
nothingmuch si 15:22
i was going to say that but you left ;-)
however, at this point you need to reinstall the new responder interface
the registry is not yet smart enough to do this, it should have a 'regenerate' method of some sort 15:23
i'm avoiding this for now because I haven't decided yet if I want some sort of declarative dependency based regeneration
which would be cooler
and safer
but more work
fglock is this the responder interface? $__class_box = Main::box_class($__base)
nothingmuch that's not enough 15:24
box_class has two modes of operation:
under the native mode it'll look inside the registry for the metaclass's registered package
and return that
so that $__class_box is just a package string
under the non native runtime it will get $__base->class_interface and return an invocant with $__base and that responder interface as a boxed value 15:25
fglock I'm avoiding native mode so far
nothingmuch if you're using the registry use the native mode
otherwise it makes no sense 15:26
(you can't sanely use packages & the registry but avoid perl's own OO dispatch) 15:27
fglock can I make a sub ::MyClass that returns a $class
nothingmuch ?
fglock so that I call ::MyClass()->new(...) 15:28
nothingmuch why?
fglock and I don't use the registry
I mean call_method( ::MyClass(), 'new', ... )
nothingmuch then code calling from p5-space into p6-on-p5-space will have to do weird stuff
what for?
fglock no problem, as long as I get the p6 stuff right 15:29
nothingmuch i still don't understand why you want to use the fully virtualized runtime
it's much slower and very demanding on memory
fglock I'd like to move as much as possible into p6-land 15:30
nothingmuch well, yes... you can simply make up your own registry thing that maps symbolic names to meta class instances
fglock which would make it easier to emit to non-perl backends
nothingmuch i don't see what difference it makes right now... in a sense you need some mapping between a package name and it's corresponding metaclass instance 15:31
bidi
and you want to ideally make your calls on the most suitable one leaving it opaque to the emitter how exactly the runtime dispatches this
as long as it does it right 15:32
in p5 the most natural way to map it is packages and subs in stashes
as long as you use a set of macros (or pseudomacros) as provided by MO::Run::Aux and adhere to some simple registration protocol (the p5 registry might be too simplified.. i rushed it), then it should be 100% portable
15:33 ruz joined
nothingmuch and you shouldn't need to care that the registry is in fact flattenning the metaobjects into packages 15:33
and that method_call is really a perl 5 arrow operator
my $boxed_type = MO::Run::Aux::box_class($metaclass_instance);
$boxed_type is totally opaque
in p5 land it maps to a class string since that's what native to it
fglock so I should only use method_call() in 'new' ? 15:34
nothingmuch why?
it's a macro for a method call
a portability macro to ensure that you don't have to care if it's the native runtime or the fully virtualized one, which do method calls completely different from eachother 15:35
fglock ok, so let's go back to registry regenerate 15:38
I can use MO::Compile::Class::MI->new() when I see a class declaration for the first time 15:39
nothingmuch yes
fglock but it can be declared again, with extra methods
nothingmuch there is a very very important distinction though 15:40
nevermind
i thought you meant something else
you can simply alter the collections
and then recalculate the responder interface by fetching a new one: $class->instance_interface
etc
and then emitting that
look in Registry's emit_all_classes 15:41
this can be refactored to emit_class 15:42
so that you can forcibly emit a class, even if it was emitted beforfe
you call ->add and then reemit 15:44
the problem is that you have to reemit all the derived classes as well
which is why I want a hook system 15:45
fglock can I just use emit_all_classes() for now? I'll only call it once for each new class 15:46
nothingmuch no, that's lazy
it'll skip classes it already did without checking if they were modified
15:47 Belaf joined
nothingmuch why do you need to support modifying classes so early? 15:47
fglock because mp6 adds methods to classes in several different files 15:50
I could fix that, but I'd like to add support for it, instead
nothingmuch you can wait with emit_all_classes
and simply do that after everything is modified 15:51
if you don't mind so much do it at INIT time
fglock it's not so early - mp6-mo should support all of p6 object system 15:53
mp6-mo is a runtime for p6
nothingmuch it should, yes
but why right now
there is a lot of effort involved
and partial support is better than nothing 15:54
fglock we've got partial support in v6.pm, but mp6 is supposed to fix that 15:56
nothingmuch that's not what I'm saying
i'm saying that adding this functionality to MO is difficult... it's not in there right now 15:57
fglock maybe I could help? 15:58
nothingmuch the question is: do you want to hack weird MO internals or do you want to let this slide for now and get back to it when it's ready for you ;-) 15:59
fglock I'm a bit impatient, you know :) 16:00
nothingmuch it's opensource... you're welcome to try yourself 16:01
16:01 stef_ joined
nothingmuch but the "real" solution is a considerable amount of work IMO 16:01
16:02 ashleyb joined
fglock ok, I'll work around it 16:04
16:10 stef__ joined 16:14 pbuetow joined 16:24 Arathorn joined
fglock nothingmuch: unnamed classes are not supported? I'm making a for-later list 16:27
are roles ok?
nothingmuch uh?
fglock my $c = class { ... } 16:28
nothingmuch you can simply use a metaclass object... if you want to use the native runtime generate an anon class for it
otherwise there is no need to name a class at all, ever
fglock ok
nothingmuch all the meta objects are natively anonymous
fglock how do you get the metaclass? $obj->WHAT, etc? 16:29
nothingmuch through the type box
unbox the responder interface out of it using MO::Run::Aux and then ask that what it's class is 16:30
fglock can you give an example? given an object $obj ...
nothingmuch i forgot to commit it... 16:31
loook at MO::Run::Aux::unbox_value
something like that but unbox_responderinterface
unbox_ri 16:32
darcs pull
wait, not yet 16:33
now
webmind happy new year! 16:36
16:36 webmind left 16:38 weinig_ joined 16:42 nipra_ joined 16:43 diakopter joined 16:45 agentzh joined
agentzh curve for #perl6 message count in 2005: perlcabal.org/agent/irc-2005.gif 16:46
and the curve for the year 2006: perlcabal.org/agent/irc-2006.gif 16:47
diakopter agentzh: should have no broken smartlinks now
agentzh diakopter: wow!
diakopter (I only fixed 2 - the last 2)
agentzh diakopter++
maybe i should plot the smartlink count curve too. :)
diakopter I was thinking about adding "Unfiled" smartlinks to the top of all the test files that have no smartlinks yet - so they show up as "bugs" 16:48
16:48 _bernhard joined
agentzh bugs? 16:48
diakopter unlinked test files
"broken" smartlinks
agentzh ah, okay.
diakopter there are a few hundred that are not linked 16:49
agentzh what will such links look like?
i mean, where should these links be linked to?
diakopter hopefully, nowhere valid, so they show up as broken by smartlinks.pl --check 16:50
so, anywhere invalid?
agentzh i think it's sufficient to add a few lines of code to smartlinks.pl 16:51
diakopter oh, to count/list the test files without smartlinks.
agentzh and possibly add an option to tell it to say something about .t files without any links.
right
diakopter on another topic - a friend of mine and I were considering finishing the "refactoring" of the test suite - do we need some kind of authorization to begin doing that? 16:52
agentzh refactoring? what kind of refactoring? 16:53
diakopter reorganizing, relabeling
removing duplicates
agentzh i think that's fine. :)
if you're really doing something big, feel free to ask here. :) 16:54
diakopter but if no one answers like the past few weeks....
agentzh oh well
diakopter :)
agentzh i think it's always fine to fire a mail to p6c. 16:55
if there's no one awake here. ;-)
any contribution to the test suite will be greatly appreciated. 16:56
diakopter I'm confused as to how widipedia can call pugs a "slow perl6 implementation" - I mean, are there any faster ones? perhaps the language is just slow :-P
agentzh just as audreyt like to say, "when doubt, commit!" 16:57
pugs is only a prototype.
and it's not optimized for speed afaik.
it's mostly optimized for correctness.
pugs's historical mission is just to verify the language design, 16:58
diakopter right, but to call it a slow implementation means there must be a faster implementation
agentzh and give us a sane test suite.
indeed!
diakopter and not just an imagined/future one
agentzh perl6 on parrot is supposed to be the fastest. 16:59
no, it's also underway.
the parrot folks are working on that.
including pmichaud and particle.
diakopter is there a polite way to say "I know" on IRC?
svnbot6 r14984 | fglock++ | mp6-mo - remove old AST/ and Perl5MO/ dirs
agentzh iirc, the parrot implementation for perl6 has already passed a good portion of the sanity test. 17:00
*tests
the pugs test suite may be the most valuable componment in the pugs repos. 17:01
17:02 iblechbot joined
agentzh end of day for me & 17:05
17:05 agentzh left 17:20 nipra_ is now known as nipra 17:25 ozo joined, weinig joined 17:58 riffraff joined
riffraff hi 17:58
18:00 masak joined 18:14 BooK_ joined 18:15 larsen_ joined 18:16 ludan joined
svnbot6 r14985 | fglock++ | mp6-mo - native mode MO works (fixed in MP6/Perl5/Runtime.pm) 18:24
r14986 | gabriele++ | solved problem 28, could use an update if/when sort(SingleArgumentClosure) works 18:27
18:32 justatheory joined 18:40 ludan joined 18:41 larsen__ joined
riffraff does perl6 _impose_ tail call optimization like scheme or is it an implementation detail? 18:42
18:44 fglock joined
svnbot6 r14987 | fglock++ | mp6-mo - no longer requires add_method() for bootstrapping 18:45
TimToady riffraff: p6 imposes it. 18:49
riffraff wonderful thanks 18:50
18:57 upd joined 19:01 mdiep joined
mdiep Juerd: you about? 19:03
pasteling "riffraff" at 83.187.201.251 pasted "gcd with euclid's algorithm, (problem 32/99)" (27 lines, 770B) at sial.org/pbot/22088 19:04
riffraff someone could please take a look at my paste and comment it, whenever it feels like? I don't know if it makes sense to use a ternary operator or an explicit if/else instead of a two lines body, or to just remove the last return. I need coding guidelines :/ 19:06
mh.. one "it" should be "he", of course 19:08
masak riffraff: I liked "it" :) I thought you were making a gender-grammatical point
btw, the two-line body reads fine if you ask me
feels a bit like Haskell's pattern matching when written that way 19:09
riffraff masak, you're also right, but it was just showing my language roots, in italian I wouldn't use he/she/it at all, and in my mind everything becomes "it" :) 19:10
masak riffraff: a lot of thought has been made on this subject 19:11
en.wikipedia.org/wiki/Gender-neutral_pronoun
by me, you make a very fair point in writing "it", not only showing your language roots 19:12
(not saying I would necessary do the same, though. ususally I just rework the sentence until the pronoun disappears)
19:12 fglock joined
masak & 19:12
riffraff interesting, I understand the general point of gender neutral pronouns, but never thought much about it, thanks for the pointer 19:14
19:17 kanru joined
svnbot6 r14988 | fglock++ | mp6-mo - change all p5 method calls to 'native' 19:21
fglock now attempting to bootstrap mp6-mo ... 19:26
diakopter awakes at the word bootstrap 19:27
kolibrie me crosses fingers
19:28 weinig is now known as weinig|bbl 19:29 nipra joined
Juerd mdiep: Am now 19:36
svnbot6 r14989 | gabriele++ | implemented euclidean algorithm for gcd, tests passing
mdiep Juerd: what do I need to do to get a feather account these days?
Juerd mdiep: Send me an email with the request 19:37
mdiep: Include real name and preferred username
mdiep email? 19:38
Juerd E-mail \E-mail\, email \email\, e-mail \e-mail\([=e]"m[^a]l`),
n.
electronic mail; a digitally encoded message sent from one
computer to another through an electronic communications
medium, especially by means of a computer network.
:)
mdiep :-p
your email?
Juerd Preferrably over SMTP
No, your mail, to my mailbox :) 19:39
mdiep "what is your email address?"
Juerd [email@hidden.address]
mdiep thanks :-p
19:40 b_jonas joined
awwaiid I like the comments in that paste re: needing to be multi to allow for other commutative rings 19:42
fglock re mp6-mo: no bootstrap yet - it took several minutes to compile a small program, and didn't finish :( 19:47
kolibrie bummer
riffraff awwaiid, thank you, I hardly remeber practical use cases of commutative rings except that in a coding theory course I took, but I like the idea of being open to enhancements :) 19:48
19:54 statico joined 19:58 ilogger2 joined 19:59 [particle] joined 20:08 ingy joined
Alias_ hmm 20:18
weird
why would CPAN, when running as root, write to my user's .cpan directory
I won't be able to clear that cache except as root either 20:19
wilx Because of some env variables that have not been cleared when su'd? 20:22
20:26 polettix joined
kolibrie Alias_: the culprit is CPAN::Config, which hard-codes that kind of stuff 20:29
20:35 ilogger2 joined 20:40 rindolf joined
rindolf Hi all. 20:40
diakopter hi 20:41
Alias_ oh, also wrong channel :)
The weird thing is though, if I just require CPAN::Config, it gets the right one 20:42
if I use CPAN, it internall does CPAN::HandleConfig->load and gets the WRONG one