pugscode.org/ | nopaste: sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, elf: etc.) (or perl6: for all) | irclog: irc.pugscode.org/
Set by Tene on 29 July 2008.
ruoso @tell pmurias, although I now understand what TimToady said about "if two packages want to share a global variable, they need a third package that doesn't change version so often". This means that the global name of the package includes the version and author, as I first suspected... package Foo {...} creates a lexical bind to the package that is stored as *Foo:ver<x.u>:auth<foo> 00:01
lambdabot Consider it noted.
ruoso @tell pmurias, but this obviously only happen when the module is actually versioned (I think)... which means that global unique resources might be stored in a non-versioned package (although it does make sense to use the versioning even so) 00:02
lambdabot Consider it noted.
00:05 cjfields left
ruoso @tell pmurias, but I think a different type of package in which the 'use' actually binds to a clone is indeed usefull and provides a more concurrency-friendly environment... we just need a keyword for it ;) 00:08
lambdabot Consider it noted.
00:14 Aisling joined 00:17 hercynium_ joined
ruoso it actually doesn't need to be a type of package... just a trait of a package.. 00:17
std: my module Foo is export { sub bar {...} } 00:31
p6eval std 22358: OUTPUT[parsed␤]
ruoso std: my module Foo is export, closed { sub bar {...} } 00:32
p6eval std 22358: OUTPUT[parse failure␤]
ruoso std: my module Foo is export is closed { sub bar {...} }
p6eval std 22358: OUTPUT[parsed␤]
ruoso std: my module Foo is export is closed is cloned { sub bar {...} } 00:33
p6eval std 22358: OUTPUT[parsed␤]
ruoso heh.... I think that three traits could express the concept pmurias wants... better find a keyword :) 00:34
00:45 Alias_ joined 00:46 jferrero left 00:53 eternaleye joined 01:03 araujo joined 01:14 Jedai left 01:16 hercynium_ left 01:18 Jedai joined 01:32 ruoso left 01:44 l_a_m_p joined 02:12 Ontolog joined
Ontolog hi 02:12
02:26 wknight8111 left 02:29 dduncan joined 02:32 meppuru joined
mncharity @tell pmurias Sorry I'm late. Short-form is there were pugs backends years ago, passing >50% of t/. Everything since, p5 rx engines, redsix, mp6, kp6, winter_jig, elf, others, is all because pil doesn't have oo. There've been workarounds, and attempts to hack it in. Maybe you can manage. Or motivate audrey. But... with STD.pm and elf at this point, I'm not sure the payoff is there anymore.[...] 02:34
lambdabot Consider it noted.
mncharity @tell pmurias [...] Easy enough to add alternate IR's. IRx1 was optimized for low project risk, not beauty. Easy enough to generate a pil-ish IRx2 off of it. That's the plan anyway. Added a note to perl.net.au/wiki/Elf about that yesterday(?). Anyway, questions welcome. Having attempted pil workarounds, I'd also be happy to discuss them if you really want to go that route. 02:38
lambdabot Consider it noted.
02:40 Torment joined 02:48 meppl left 02:59 Jedai left
pugs_svn r22359 | putter++ | [elf] Moved backend-specific code out of Parser.pm. 03:04
mncharity 40k spams in one day. sigh. 'night all. 03:05
03:11 mncharity joined
mncharity @tell pmurias re using elf vs pugs as a frontend: [...] but if pugs is working for you for now, great. If it isn't easy to switch over later, then elf isn't what it's supposed to be. Not having current users does have the upside of allowing focus on the bootstrap. I'd just suggest hesitancy about burning too much time attempting pil workarounds. 03:15
lambdabot Consider it noted.
03:15 mncharity left
Ontolog what is the difference between Rakudo's grammar and actions.pm and STD.pm? 05:15
if they accomplish the same thing, parsing Perl 6, why are they both being developed independently? After all, Rakudo's grammer and actions are a subset of Perl 6 05:17
dduncan its about coming to the goal from different directions 05:20
STD.pm represents a goal state, when bootstrapping exists that you can write a Perl 6 parser in itself, and writing it also helps test corner cases in the Perl 6 design 05:21
Rakudo's grammar is something that already works right now for what subset of Perl 6 it supports, doesn't itself depend on Perl 6, and is working up to supporting STD.pm 05:22
I haven't heard of actions.pm before
[particle] rakudo's grammar is src/parser/grammar.pg 05:24
it's rakudo's approximation of STD.pm
after rakudo has longest-token matching and protoregex support, it will be converted to run STD.pm directly 05:25
src/parser/actions.pm turns the pars tree (output of matching STD.pm grammar) into the abstract syntax tree
*parse
dduncan how long do you figure that longest-token match etc support will take? 05:27
eg how soon do you figure Rakudo will be running STD.pm? 05:28
[particle] ltm and protoregexes should take ~2mo 05:29
05:29 justatheory joined
[particle] std shortly after, within a month 05:29
05:30 xinming joined
Ontolog 3 months? 05:33
啊哟
since we got that big donation to the perl foundation, shouldn't things be going faster now? 05:36
are we able to hire full-time people?
05:36 ahmadz_ left
dduncan 3 months sounds fine to me ... once that's done I'll start trying to use Rakudo for some serious work 05:42
[particle] 3 months is how long we expect it to take, with funding 05:45
yes, we expect rakudo to be ready for "serious work" by end of this year
05:48 Psyche^ joined
Ontolog i want to do "serious work".. which part can I hack on to get it closer to the "serious work" phase? 05:56
[particle] well, there are three main drivers for rakudo development 05:57
1) languages/perl6/ROADMAP - this is what we need to do to get to the finish line, roughly in order and roughly broken down by hours 05:58
2) build an application that exercises rakudo - November developers have had a lot of input as to what gets done to meet their needs 05:59
3) convert tests to spectests and fudge them for rakudo - this lets us know what's broken, and we can look for things that can be easily added to make rakudo pass more spectests 06:00
Ontolog i know there are lots of things in different areas, i'm asking specifically to get to the bootstrapping goal
06:01 Patterner left, Psyche^ is now known as Patterner
[particle] bootstrapping isn't a near-term rakudo goal 06:01
functionality is.
if you mean writing more of rakudo in perl 6, like the runtime library, then we need namespace exporting implemented 06:02
just like it's specified in S04 (i think)
Ontolog which parts of rakudo are already written in perl6? 06:03
[particle] the parser, and ast converter
the builtins are written largely in pir
Ontolog that's the grammar.pg and actions.pm right?
[particle] yep
Ontolog i see 06:04
thanks for your answers
[particle] np
06:08 justatheory left
xinming Ontolog: IIRC, the bootstrap won't happen until we have a stable Grammar engine. 06:13
Ontolog the grammar engine is unstable? 06:14
xinming No implementation.
06:14 justatheory joined
xinming Most of implementation in my understanding, Is kinda like Pugs rewrite within other language. :-D 06:15
well, might be wrong.
Ontolog well the grammar engine is actually part of Parrot itself 06:16
and I think it's pretty stable, as it has been worked on since the beginning of Parrot (afaik)
06:17 meppuru left
[particle] not since the beginning of parrot, but for a long time, and it's stabe 06:17
*stable
but, that's where protoregex and ltm changes will be
the api shouldn't change (much)
but the internals will be seriously reworked 06:18
xinming I might be wrong, perl6's original plan is write a mini-perl with grammar engine support, and compile perl6 source to parrot byte code. If grammar engine is stable, Why people won't work directly on writing that /mini-perl/? 06:21
Or, after the plan is changed, Perl 6 tries to support multiple dynamic language as virtual machine? 06:23
06:27 sri_work joined 06:30 zamolxes left 06:39 pmurias joined 06:45 ashizawa joined 06:55 Bzek joined 06:56 dalek left 06:57 dalek joined
rafl do you know of any p5 parsers for perl6(ish?) signatures other than Perl6::Signature? 07:02
also i wonder how well the current implementations handle them 07:07
07:08 Bzek left, Guest70230 left, yves left
moritz_ STD.pm parses them very well (but does nothing else with them) 07:08
pugs and rakudo both parse basic positional, named, slurpy and default arguments and type constraints 07:09
don't know of any perl 5 implementations, though
07:10 hcchien joined 07:11 kanru2 joined 07:15 ashizawa left 07:17 ashizawa joined
rafl i can't find where parameter unpacking is handled. is that done yet? if so, where exactly is the relevant code? 07:18
moritz_ in which implementation? 07:19
rafl STD.pm
moritz_ STD.pm does *only* parsing 07:20
rafl that's what i'm after
moritz_ wait a sec...
pmurias perl STD5_dump_match <<< ':($a,$b)' 07:21
lambdabot pmurias: You have 3 new messages. '/msg lambdabot @messages' to read them.
07:22 iblechbot joined
moritz_ rafl: take a look at 'token signature' 07:23
pmurias @tell ruoso is closed is not a thing i'm arguing should be the default, if some has his own lexical copy of a module he can change it all he wants, it's just that if he wants to change my copy he should explicitly state that
lambdabot Consider it noted.
07:31 rakudo_svn joined, Bzek joined, Guest70230 joined, kane_ joined, yves joined, charsbar joined, gbacon joined, pasteling joined
rafl moritz_: did so already. seen nothing that looked like parameter unpacking to me. <?before <[ \< \( \[ \{ ]> > in token param_var might be part of array and hash unpacking, but i don't see how that works in detail or how unpacking single list arguments is done. 07:32
moritz_ rafl: what do you mean by "unpacking"? 07:33
moritz_ is confused about that term 07:34
rafl: would a parse tree from STD.pm be some help to you?
rafl perlcabal.org/syn/S06.html#Unpackin...parameters 07:35
i guess it would
lambdabot Title: S06
pasteling "moritz_" at 89.13.241.113 pasted "parse tree for rafl" (96 lines, 2.1K) at sial.org/pbot/32334 07:37
07:37 ashizawa left
moritz_ rafl: in that parse tree, every line that does not end with a : represents a literal 07:37
in the terminal it's colored and a bit nicer to read 07:38
07:40 ashizawa joined, cosimo joined
rafl $gimme5 =~ s{/usr/local/bin/}{/usr/bin/env }; # kthx 07:44
pmurias there is also ugly yaml output if you want it 07:47
rafl seems like unpacking array and hash parameters isn't parsed yet 07:57
moritz_ write a test, and probably TimToady will take care of it 08:04
rafl will do after getting some sleep. guess i still have a commit bit. 08:05
any objections to the above substitution in gimme5 and try5?
moritz_ it will break 'make' on Debian stable 08:06
rafl why is that? 08:07
moritz_ because /usr/bin/env perl will usually invoke the system perl, which is 5.8.8 and thus too old 08:08
if you make it an explicit perl5.10.0 that might work
rafl i'm fairly sure that latest stable doesn't have a 5.10 installed into /usr/local/bin by default, so it's broken anyway
moritz_ rafl: not by default, but it can easily be added 08:09
rafl just like PATH can be easily modified.
moritz_ rafl: whereas changing $PATH to point to a user perl is a much larger change, IMHO
rafl anyway, bedtime.
rafl &
08:16 elmex joined, elmex left 08:17 elmex joined, elmex left, elmex joined 08:21 mj41 joined 08:30 xinming_ joined 08:33 clintongormley joined, clintongormley left 08:40 xinming left 08:45 Alias_ left 09:00 barney joined 09:19 zamolxes joined 09:21 ting joined 09:30 wknight8111 joined
moritz_ smop: "test".print 09:39
p6eval smop: OUTPUT[unknown method "print" at idconst_message line 71 file /home/evalenv/pugs/v6/smop/src/idconst.c␤]
09:52 ruoso joined
pmurias ruoso: hi 09:53
ruoso hi pmurias...
lambdabot ruoso: You have 1 new message. '/msg lambdabot @messages' to read it.
ruoso pmurias, but do you agree with my reasoning on how the default works?
ruoso have to run... 09:54
pmurias if you mean packages yes
ruoso cool...
ruoso later &
pmurias but i wait for TimToady to change his mind
10:01 dduncan left 10:18 l_a_m_p left 10:30 wknight8111 left 10:33 ruoso left 10:35 Ontolog left 10:41 zamolxes left 11:00 wknight8111 joined 11:09 iblechbot left 11:14 kanru2 left 11:15 barney left 11:23 zamolxes joined 11:27 araujo left 11:30 araujo joined, araujo left, araujo joined 12:20 pmurias left 12:23 abra joined 12:26 sirhc joined, novaalpha joined
novaalpha what is the name of "official" perl6 implementation? 12:26
rakudo? pugs? something else ?
novaalpha is a bit confused 12:27
12:27 smg joined
moritz_ there's not one official implementation 12:27
in the end everything that passes the test suite may call itself "Perl 6"
novaalpha this is .. interesting. 12:28
to say the least.
moritz_ this is very usual
just like ther's not one C compiler
novaalpha you mean there is something else than gcc ?
moritz_ popular examples where it is handled like this are C, C++, Java, Fortran, Lisp
novaalpha you're kidding, right? 12:29
:>
moritz_ is not a kid... oh, wait ;)
novaalpha ko
ok
i got it
thx
12:47 kanru joined 12:55 pmurias joined 12:58 ahmadz joined 13:03 DJ-DONGDOT joined, pjcj left 13:10 zostay joined, masak joined 13:11 DJ-DONGDOT2 joined 13:20 Lorn joined 13:22 novaalpha left 13:24 DJ-DONGDOT left 13:26 azawawi joined 13:27 DJ-DONGDOT2 left 13:28 ahmadz left 13:31 Ontolog joined 13:32 ashizawa left 13:34 DJ-DONGDOT joined 13:37 iblechbot joined
pugs_svn r22360 | putter++ | [elfish/on_sbcl] Variables fleshed out. More prelude. 13:37
r22360 | putter++ | Almost ready to run elf's Parser.pm.
13:39 eternaleye left 13:40 DJ-DONGDOT left, eternaleye joined 14:02 mncharity joined
mncharity pmurias: re PIL backends, you might be able to use ideas or even code from: svn.pugscode.org/pugs/perl5/PIL2JS/ svn.pugscode.org/pugs/misc/old_pugs...d/PIL-Run/ svn.pugscode.org/pugs/misc/old_pugs...leftovers/ . 14:04
lambdabot Title: Revision 22360: /perl5/PIL2JS 14:05
14:05 jhorwitz joined
rakudo_svn r31409 | pmichaud++ | [rakudo]: spectest-progress.csv update: 179 files, 3815 passing tests 14:05
mncharity and it looks like it has indeed been 3 years since pugs got stuck. 2005-10 p5 backend development ceased. 14:06
so it had to have been before then. though for a while it looked like pil would be fixed "rsn". 14:07
for context, PIL2JS was up around 80%(?) t/ passing. basically as much as PIL permitted. PIL-RUN was down around 50%. 14:08
cheers. &
14:08 mncharity left 14:12 donaldh joined 14:26 eternaleye left 14:30 abra left 14:31 pmurias left 14:37 clintongormley joined 14:41 Torment left 14:50 jferrero joined 14:51 kanru left 15:08 clintongormley left 15:12 Exodist joined 15:26 pjcj joined, TJCRI joined 15:27 donaldh left, donaldh joined 15:50 masak left 15:52 zamolxes left 15:53 justatheory left 15:54 justatheory joined
pugs_svn r22361 | moritz++ | [t] move list_quote_whitespace.t to spec/, some fudge tweaking 15:57
16:05 gbacon left
pugs_svn r22362 | moritz++ | [t/spec] fudged listquote-whitespace.t for rakudo 16:06
rakudo_svn r31414 | moritz++ | [rakudo] added list quoting test to spectest_regression 16:11
16:12 gbacon joined 16:14 eternaleye joined
pugs_svn r22363 | moritz++ | [t] merged single_quoted_strings.t into quoting.t 16:15
16:21 mach joined
pugs_svn r22364 | moritz++ | [t] merged syntax/numbers/misc.t iinto radix.t, deleted duplicate tests 16:25
mach When is Perl6 going to be released? 16:31
moritz_ when it's done 16:34
16:34 pmurias joined
moritz_ or "as soon as possible" 16:35
or "by christmas"
pick whatever you like ;)
16:36 neel_ joined 16:37 eternaleye left
mach moritz_: that was said in 1999. 16:37
moritz_ mach: and it's still true ;)
mach moritz_: christmas of what year? 16:38
moritz_ but contrary to 1999 we know have a mostly-complete spec, a mostly-complete parser, parrot-0.7.1, pugs
mach: dunno. Not this.
mach now* 16:41
well, i'll take your word for it.
pmurias mach: by release you mean the 6.0.0 stable one
16:45 [particle]1 joined
mach pmurias: hopefully. 16:54
16:54 donaldh left
pmurias mach: most of the implementations had some releases by now 16:55
[particle]1 mach: you can help us. donate your time, or your money. 16:57
pmurias i don't think people would be interested in switching to Perl 6 unless it was substantially better then Perl 5 so cutting corners and declaring it done prematurly isn't an option
16:57 jferrero left
mach [particle]1: i'm not very good with sharing my money. 16:58
[particle]1 then what you give is what you get ;) 17:00
17:01 [particle]1 is now known as [particle] 17:02 abra joined 17:03 Jedai joined 17:10 zamolxes joined
Khisanth suspects even 6.0.0 will not meet the 'substantially better than Perl 5' criteria 17:13
moritz_ Khisanth: depends on what you're looking at 17:14
Khisanth: for parsing stuff with grammars it'll certainly be miles better 17:15
pmurias NULL-- # it's pointless as sql still thinks it's NULL 17:23
17:27 mach left 17:46 mach joined 18:05 Bzek left 18:15 ruoso joined
pmurias ruoso: rehi 18:15
18:17 zostay left
pmurias ruoso: i came to the conclusion that whether the starting package is * or some sort of a lexical one, and if the module is cloned or globally shared should be "use" semantics 18:18
ruoso bbiab & 18:24
hi pmurias 18:29
azawawi hi 18:30
pmurias azawawi: hi
azawawi pmurias: how r u?
ruoso pmurias, that's a very sane way of looking at it...
moritz_ azawawi: are you trying to bring run.pugscode.org back to life? 18:31
pmurias azawawi: fine, finished ajaxy stuff for today will hack on smop now
moritz_ if not I'll remove the links to it 18:32
azawawi moritz_: why not? ;-)
18:33 meppl joined
azawawi moritz_: im fixing POD errors at the moment in docs/Perl6/Spec 18:33
moritz_ not a bad idea either
pmurias azawawi: what was your involment in run.pugscode.org?
azawawi moritz_: then i will do smart links
pmurias: finished the new ajax UI for it... and added tutorial+examples section. 18:34
pugs_svn r22365 | azawawi++ | fix POD warnings in Spec/Concurrency.pod
pmurias ruoso: our next objective for smop is bootstraping the oo metamodel? 18:37
i think we could do it by using a RI.new(MESSAGE=>sub(...) {...},REFERENCE=>sub(...) {},RELEASE=>sub(...) {}) to create a responder interface for the first metaclass 18:43
ruoso pmurias, there's already the PurePrototypeHow 18:45
pmurias, that can be used together with p6opaque
our major milestone is to finish writing src-s1p/P6Meta.pm and compiling it down 18:46
then having it "use"d in the prelude scope
pmurias so it's possible to create a class using only method calls now? 18:49
seen test 28, it's always nice that more stuff is implemented than expected ;) 18:52
18:56 wknight8111 left
ruoso :) 19:02
pmurias @tell mncharity thanks for the pointers pil1 has methods and class declarations, it seems to lack subclasses (haven't look how hard it would be to hack them in) 19:05
lambdabot Consider it noted.
pmurias ruoso: pugs seems to lack anonymous methods 19:08
ruoso do we need it for something in the short-term?> 19:09
pugs_svn r22366 | azawawi++ | Fixed pod warnings/errors in Spec/IO.pod 19:11
r22367 | azawawi++ | Fix pod warnings in Spec/Functions.pod 19:17
19:20 masak joined 19:36 abra left
pmurias ruoso: we can have methods created with method foo {} 19:37
ruoso pmurias, I'm not sure I see what you mean... 19:38
pmurias on the syntactic layer we can use method foo {} and have it desugar into $?CLASS.HOW().add_method("foo",method {...}) 19:39
smop: sub {$OUT.print("hello\n")}.() 19:42
p6eval smop: OUTPUT[no variable $*OUT in the current scope␤]
pmurias smop: sub {$*OUT.print("hello\n")}.()
p6eval smop: OUTPUT[no variable $*OUT in the current scope␤]
19:42 neel_ left, neel_ joined
pmurias moritz_: the pugs in the evalbot seems to be older than the smop 19:43
ruoso pmurias, that might be related to the static linking... 19:48
pmurias how? it work in my local copy 19:49
* works
ruoso I mean... the rebuilding process might not be rebuilding everything...
pmurias ruoso: how doe $foo<key> := 123 work?
* does
ruoso $foo.postcircumfix:{ }("key").STORE(123) 19:50
pmurias hmm 19:51
masak wow, that notation really has explanatory power! 19:55
but shouldn't it be postcircumfix:<{ }> ?
pmurias yes 19:57
it is postcircumfix:{ } internally because <> is used for quoting special chars here
masak ah. 19:59
pmurias ruoso: what i don't like is that $foo.postcircumfix:<{ }>($key) and $foo{$key} are not equivalent
ruoso smop: my %a; %a{1}; 20:00
p6eval smop: OUTPUT[unknown method "postcircumfix:{}" at smop_s1p_scalar_message line 81 file /home/evalenv/pugs/v6/smop/src/smop_s1p_scalar.c␤]
ruoso pmurias, are not? 20:02
pmurias, why? 20:03
pmurias $foo{$key} does an extra FETCH if used as an lvalue 20:06
& 20:12
ruoso hm? 20:14
as an rvalue you mean...
oh... wait...
you mean $foo{$key} = 123?
ruoso is confused now... 20:15
I know all this was already sorted out... It's just blurred on my mind now...
masak pmurias: you mean there's an unnecessary FETCH when $foo{key} is assigned to? won't the parser detect that it's an lvalue? 20:21
ruoso masak, the question is about the difference between ':=' and '=' 20:22
masak ah.
but don't both these have lvalue context?
20:27 jferrero joined, mach left
ruoso the question is that '$foo<abc> := 123' sets 123 as the container itself, while '$foo<abc> = 123' store the value inside the container... 20:29
otoh, that seems to contradict other lvalue uses...
like 'method foo is rw {...}'
$obj.foo = 123
this last line should be equivalent to
$obj.foo.STORE(123);
masak ruoso: I've always seen := as defaulting to = when the rvalue is a literal 20:30
ruoso masak, it doesn't.... i.e:
pugs: my $a := 1; $a = 2;
p6eval pugs: OUTPUT[*** Can't modify constant item: VInt 1␤ at /tmp/5TL3sB6wMr line 1, column 13-19␤]
masak ruoso: ah.
I stand corrected :) 20:31
20:31 sri_work left 20:32 wknight8111 joined, donaldh joined
ruoso $a := 123 is easy... 20:34
hmmm...
actually... it's the same case
I always thought on a double-boxing for variables...
'$a := 123' woud be '___scope___<$a>.STORE(123)', while '$a = 123' would be '___scope___<$a>.FETCH.STORE(123)' 20:35
pugs: my $a; sub foo is rw { $a }; foo() = 123; say $a; 20:47
p6eval pugs: OUTPUT[123␤]
ruoso maybe that means that every assignment implies the context *first*
and '$obj.foo = 3' is compiled to '$obj.foo.FETCH.STORE(3)' while 'say $obj.foo' is compiled to 'say($obj.foo.FETCH.FETCH)
maybe because $obj.foo = 3 implies item context...
while $obj.foo = (1,2,3) implies list context...
that way '$obj.foo = (1,2,3)' would be compiled to '$obj.foo.List.STORE(1,2,3)'
ruoso still confused...
20:52 donaldh left 20:53 zamolxes left
pmurias ruoso: don't *2* FETCH'es for a .foo seem like too much 21:02
?
btw $a := 123 is :($a).BIND(\(123)) 21:03
21:03 jhorwitz left 21:05 eternaleye joined 21:06 justatheory left
pmurias maybe we have 3 contexts item,item's container,item's container container 21:07
21:16 justatheory joined
masak pmurias: oh my! what's the last one needed for? 21:17
pmurias masak: binding 21:18
masak chews on that answer
pmurias imagine what happens when you do $obj.foo := $bar
masak yes... something in $obj called 'foo' will now be bound to $bar 21:21
hm, something called '!foo', rather 21:22
is that something a container?
pmurias it's likely a pointer but we should expose it as a container
masak mm 21:23
so you're saying that because $bar is also a container, 21:24
we get a container (!foo) of a container ($bar) of an item
that sounds like faulty reasoning to me. what's to prevent the bindings from continuing from there? isn't it better to have both !foo and $bar point to the same item, and just be done with it? no containers of containers. 21:25
pmurias stating something in more general terms doesn't solve the issue 21:36
just making them point to the same thing doesn't work think about a := b;a := c;a = 3; 21:38
b is not changed at all as := doesn't work at all
masak pmurias: I fail to see your point. b is not changed, because you've made the container denoted 'a' point to the contents of 'c' 21:42
I don't see how my world view fails to handle that case.
pmurias fixing bug& 21:43
masak talking to pmurias and ruoso often makes me feel one step behind in the reasoning :) still, I hope to learn a thing or two. keep up the good work, guys. 21:45
moritz_ masak: same here. I attribute that to fact that they have spent much more time thinking about meta object programming then we ;) 21:49
masak most likely.
come to think of it, I had the same feeling of left-behind-in-the-dust-ness when stevan frequented this channel
I guess there's something about metamodels that makes people seem really smart :P 21:50
moritz_ does smartmatch usually force boolean context? 21:52
if not, these tests are wrong: 21:53
ok ($str ~~ any <foo bar baz>);
21:53 ruoso left
masak moritz_: that looks right to me 21:54
moritz_ because it will autothread on the smart match, return a junction of three booleans...
masak ah.
moritz_ and continues to autothread through ok()
and thus calls ok() three times
masak that feels wrong, somehow :)
basically, I expect _any_ boolean evaluation to evaluate to either True or False 21:55
but I also see how ok() is different from if
moritz_ the question is, is ~~ a boolean evaluation?
at least when matching regexes it returns a match object 21:56
all other smart matches seem fairly boolean to me 21:57
masak aye
and even match objects boolify if needed
pmurias moritz_: Some contexts, such as boolean contexts, have special rules for dealing
with junctions.
moritz_ pmurias: I know that boolean context collapses them
it's like a measurement in quantum mechanics ;) 21:58
pmurias and i would guess ok forces bools context
masak pmurias: explicitly?
(as in 'sub ok( Bool $test )')
moritz_ I guess that won't work 21:59
pmurias context aren't very clearly defined
* contexts
moritz_ that would still autothread on junctions
masak mm
moritz_ what one could do is 'sub ok( Object $test) '
and then calling ?$test or !$test 22:00
masak write and kvetch on p6l! :)
moritz_ feels like he's over-strainling p6l these days anyway
masak no such thing :) 22:01
if p6l gets too overstrained, we'll simply have to invite more people that can respond to your questions 22:02
moritz_ more people don't mean better decisions
masak no, I know
moritz_ "9 women can't make a baby in one month"
masak but it means better coverage, and possibly more total time for discussion 22:03
seems to me people often block on not having enough time in the Perl 6 world
(except for TSa, who seems to have a lot of time)
moritz_ masak: many beginners have enough time, but not enough understanding to seriously participate in the language design 22:04
pmurias does he hack on anything?
moritz_ (I fear I'm one of them)
not that I know of
masak pmurias: no, but he knows a thing or two about type theory
moritz_ which might explain why he has so much time ;)
masak moritz_: because his programs run correctly on the first go? :) 22:05
moritz_ masak: no, because he's not hacking on Perl 6
masak ah.
moritz_ ;)
masak no, I meant that I get the feeling that many people block on not having enough time for tinkering with Perl 6 22:06
I know a handful who are doing it full-time: Larry, pmichaud... 22:07
moritz_ masak: Larry is not doing it full time
masak ok, so pmichaud then.
pmichaud I'm not full time either -- at least, I wasn't until a week or so ago :-)
I had non-perl full-time employment through the end of August. 22:08
moritz_ which leaves... none?
masak pmichaud: good. that proves my point even more.
Perl 6 is not something people do full-time right now
(ooooh, I look forward to my first full-time Perl 6 employment) 22:09
pmichaud Well, the Ian Hague grants should help with that a bit. I know they help a bunch in my case.
Starting next week I should be 75% time on Perl 6.
moritz_ (Ian Hague)++
pmichaud (possibly a bit more -- my 25% time job actually takes a bit less than 25% of my time, at least in the past)
masak actually, in such a situation (where people have to juggle their time) answering emails might actually get in the way of hacking. no wonder things get warnocked at times 22:10
the productive people might want to avoid email to remain productive
22:12 PZt joined
pugs_svn r22368 | moritz++ | [t] merged syntax/lf_in_list.t into listquote.t 22:13
moritz_ Donald Knuth is famous for not using email
pmichaud I liked Larry Lessig's declaration of "declaring email bankruptcy" 22:14
22:14 neel_ left
pmichaud i.e., when the mail backlog gets too full, simply declare bankruptcy and get absolution from having to respond to your credi..., er, senders :-) 22:14
pmichaud wonders if he can get a $700B bailout to help deal with over-leveraged email accounts. 22:15
moritz_ heh 22:16
I'd backlog for half of that ;)
masak is a B the same as a gigabuck?
moritz_ b = billion = giga, yes 22:17
pmurias masak: "point to the same item" what do you mean by that it can be interpreted as either assignment or !foo and $bar being the places where the container are stored and would imply containers knowing where they are stored
masak pmurias: Eliza, is that you? :) 22:18
sorry, reading again.
pmurias: nope. I really don't understand that. sorry.
moritz_ std: 1< 2 22:19
p6eval std 22368: OUTPUT[parse failure␤]
pmurias i should use the comma more ;)
masak pmurias: yes, please
moritz_ rakudo: say 1< 3
p6eval rakudo 31421: OUTPUT[1␤]
moritz_ shakes his head about Perl 6 weirdnesses 22:20
how will we ever be able to read that language?
masak moritz_: just use whitespace between things that don't go together. "duh". :) 22:21
moritz_ masak: "duh" is a very good summary, yes
this is getting pyhonesque dimensions
masak we crossed that line ages ago
pmurias masak: what do you mean by "have !foo and $bar point to the same item"
?
rakudo: say 1 < 3 22:22
p6eval rakudo 31421: OUTPUT[1␤]
masak pmurias: I'm thinking of it the way I'm thinking about references in Java. Dog fido = new Dog(); Dog spot = fido; // one object, two "containers" pointing to it 22:23
pugs_svn r22369 | moritz++ | [t] merge syntax/force_context.t into spec/S03-operators/context-forcers.t 22:25
pmurias fido = Dog();spot = fido; #the python example is much clearer 22:26
masak pmurias: fair enough.
I don't do much python, but I can read it without a problem
pmurias but that's only assignment
masak yes, but it works like a kind of binding, because of the references 22:27
pmurias it's possible to imagine a := in Java
22:27 Lorn_ joined
masak sure, but that's not my point 22:28
my point is that you already have the semantics of := in Java because of the way assignment works on variables containing objects
it doesn't clone the object, it just makes the other variable point to the same object
that's binding to me.
22:28 iblechbot left
pmurias assignment works the same in Perl 6 22:29
masak oh, ok
pmurias my $fido = Dog.new;my $spot = $fido;
masak I think this whole discussion shows that I have a very weak understanding of what binding really does in Perl 6
pugs_svn r22370 | moritz++ | [t/spec] fudged context-forcers.t for rakudo
moritz_ I think that binding aliases containers 22:30
$a := $b # whatever you do to $a also happens to $b, and vice versa
it's what references are in C++ 22:31
easy to understand. Assignment is the tricky part ;)
pmurias references in C++ are syntax sugar around pointer
*pointers
masak moritz_: ok, if that's true, then I understand pmurias' earlier point about $a, $b and $c 22:32
moritz_ pmurias: syntactic sugar that allows no way of un-aliasing
pmurias yes 22:33
moritz_ is that the same in perl 6? or can we break binding?
("can we escape bondage?") 22:34
pmurias is confused
btw it's possible to do binding with perl5 with Data::Bind
moritz_ I tried to not raise confusing topics yet ;) 22:35
pmurias what do you mean by un-aliasing?
moritz_ pmurias: when I do $a := $b, everything that happens to $a also happens to $b. Is there a way to break that connection later on? 22:36
masak 1. $a := $b; 2. ??? 3. $a !=:= $b
moritz_ masak: =:= is a comparison op, so $a !=:= $b is the same as !($a =:= $b) 22:37
pmurias 1. $a := $b; 2. $a := $c
masak moritz_: yes. that's what I intended
moritz_ pmurias: but if you do $a := $b; $a := $c, aren't then all three $a, $b and $c bound together? 22:38
pmurias no
masak pmurias: I thought you just said that all three will be the same in that case
22:38 Jedai left
moritz_ masak: ah, I thought you wanted to answer, not to illustrate the question 22:38
pmurias: is that specced? and tested?
masak I want both :)
pmurias masak: re "just said" where 22:39
moritz_ rakudo: my ($a, $b, $c); $a := $b; $a := $c; $b = 3; say $a
p6eval rakudo 31421: OUTPUT[␤]
moritz_ rakudo agrees with pmurias, and leaves me puzzled behind 22:40
22:40 Lorn left
moritz_ perl6: my ($a, $b, $c); $a := $b; $a := $c; $b = 3; say $a 22:40
p6eval pugs, rakudo 31421: OUTPUT[␤]
..elf 22370: OUTPUT[syntax error at (eval 117) line 5, near "$a :"␤syntax error at (eval 117) line 6, near "$a :"␤ at ./elf_f line 3861␤]
pmurias kp6: my ($a, $b, $c); $a := $b; $a := $c; $b = 3; say $a
masak pmurias: at 23:38 you said <pmurias> just making them point to the same thing doesn't work think about a := b;a := c;a = 3;
p6eval kp6 22370: OUTPUT[no method 'APPLY' in Class 'Undef'␤ at compiled/perl5-kp6-mp6/lib/KindaPerl6/Runtime/Perl5/MOP.pm line 345␤ ]
moritz_ but why doesn't rakudo warn about an uninitialized value?
eternaleye But what if you want to unbind it totally - you don't want it bound to something new, you want it back to being a normal variable?
moritz_ eternaleye: you can create an anonymous lexical to qhich you bind it 22:41
eternaleye: $a := do { my $x }
eternaleye Ah
pmurias $a := Scalar.new;
22:41 Jedai joined
pmurias although moritz_'s way is more specced 22:43
masak ok, I'm confused again. so moritz' description "whatever you do to $a also happens to $b, and vice versa" is not entirely correct, because you can make $a point to $c with $a := $c, which doesn't affect $b at all 22:45
moritz_: maybe you meant "whatever you do (until the next rebinding of $a)"
22:46 TJCRI left, armagad joined
moritz_ masak: it seems that I have to updated my understanding of binding like this, yes 22:47
uhm, could it be that "slurpy" used to be "splatty"? 22:48
masak thinks so
it rings faraway bells 22:49
moritz_ uhm
now I examined a file which I svn rm'ed before
it was still on my disk, but not in the repo 22:50
moritz_ runs rm -rf t/; svn up
hope that won't happen again
pugs: say (-> { 1; }).WHAT 22:53
p6eval pugs: OUTPUT[Block␤]
moritz_ pugs: say Block ~~ Sub
p6eval pugs: OUTPUT[␤]
masak moritz_: I can attest to that. a Block ain't a Sub
moritz_ then why does t/blocks/code_blocks_as_sub_args.t pass in pugs?
that seems like black magic (and wrong too) 22:54
masak aye
moritz_ masak: I know it shouldn't
masak you can return from a Sub, but not from a Block
moritz_ aye
masak I found that out the hard way :)
moritz_ this whole test file seems so wrong
masak delete it!
moritz_ so tempting 22:55
must.
resist.
masak you can do it locally, at least
moritz_ :/
eternaleye perl6: Sub ~~ Block # Either Pugs or Rakudo seems to be wrong 22:57
p6eval elf 22370: RESULT[undef␤]
..rakudo 31421: RESULT[1]
..pugs: RESULT[Bool::False]
22:58 armagad left
moritz_ you can't leave a sub with leave() 22:58
so rakudo is wrong
which isn't surprising, since it uses only one type internally for all code objects
masak why can't you leave a sub with leave()? 22:59
moritz_ subs, regexes, blocks - all of parrot type 'Block'
masak: because it's resevered for Blocks, I think
masak: but I'm not sure, my S06 study is a bit outdate
masak moritz_: does that mean that neither of Sub and Block is a subtype of the other? 23:00
moritz_ masak: yes (if true)
masak then, what are they both subtypes of? Code?
moritz_ masak: both are of type Code
masak oki
pugs_svn r22371 | moritz++ | [t] (kinda) fix code_blocks_as_sub_args.t 23:02
[particle] Routine iirc 23:03
masak even clearer 23:04
is Routine what distinguishes Block and Sub from e.g. Regex?
moritz_ probably 23:05
23:05 Exodist left
masak opens up S06 23:06
which means I get to read it in two weeks :) 23:07
moritz_ ;)
masak well, g'night all
moritz_ unless you declare browser tab bankruptcy ;)
good night masak & rest ;) 23:08
masak moritz_: never!
23:08 masak left 23:13 pmurias left
moritz_ rakudo: say :2<2> 23:16
p6eval rakudo 31422: OUTPUT[2␤]
pugs_svn r22372 | moritz++ | [t/spec] fudged radix.t for rakudo
23:28 Lorn_ left 23:58 jferrero left