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.
00:00 kulp left 00:15 Aisling left 00:17 Aisling joined 00:21 mncharity joined 00:23 ashleyb joined 00:27 pochi left 00:46 wknight8111 joined 00:58 wolverian left 00:59 PerlJam left 01:01 dalek left, pmichaud left 01:02 Juerd left, eternaleye_ left 01:16 pugs_svnbot joined, dalek joined, Juerd joined
Juerd Blown fuse 01:17
I shouldn't have mentioned the high uptime earlier today 01:18
wknight8111 as soon as you say something like that, Murphy comes down from space to rub his law in your face 01:19
Juerd Wish he'd done that sooner than 3 am 01:20
01:24 justatheory left
mncharity lol 01:31
01:36 hercynium_ joined 01:39 kanru left
pugs_svn r22466 | putter++ | [elfish/on_sbcl] More box cleanup. Better Hash design. Added reordering of emitted CL code so a sub can be used above its decl. Var mangling improved. Misc. 01:45
pugs_svnbot r22466 | putter++ | [elfish/on_sbcl] More box cleanup. Better Hash design. Added reordering of emitted CL code so a sub can be used above its decl. Var mangling improved. Misc. 01:46
01:48 penk joined 01:49 eternaleye_ joined
pugs_svn r22467 | putter++ | [elf_h] IRx1_FromAST now uses the Match x.hash accessor, instead of p5-ish x{'hash'}. 01:54
r22467 | putter++ | The resulting performance hit has not yet been measured. If it's a problem, we'll revert, and add a kludge postcircumfix:<{ }> method to Match for on_sbcl..
r22467 | putter++ | More "missing last required arg" fixes.
pugs_svnbot r22467 | putter++ | [elf_h] IRx1_FromAST now uses the Match x.hash accessor, instead of p5-ish x{'hash'}.
r22467 | putter++ | The resulting performance hit has not yet been measured. If it's a problem, we'll revert, and add a kludge postcircumfix:<{ }> method to Match for on_sbcl..
r22467 | putter++ | More "missing last required arg" fixes.
mncharity nibbling away at it.
01:56 mncharity left 02:13 alester joined 02:14 meppl left 02:18 Ontolog left 02:23 jhorwitz left 02:24 ashleyb left 02:29 wknight8111 left 02:33 Ontolog joined 02:40 alanhaggai_ joined 02:44 justatheory joined 02:55 alanhaggai left 03:02 elmex_ joined 03:06 elmex left, elmex_ is now known as elmex 03:22 sail0r joined 03:23 hercynium_ left, kanru joined 03:27 pugs_svnbot left 03:29 alanhaggai__ joined 03:30 justatheory left, sail0r left
diakopter killed pugs_svnbot 03:32
permanently.
03:33 drbean left 03:45 alanhaggai_ left 03:55 kanru left 03:57 kanru joined 04:05 sri_work left 04:13 Bzek joined 04:45 meppl joined 04:57 alanhaggai__ left 05:07 drbean joined 05:16 Awatto joined 05:17 Psyche^ joined 05:20 meppl left 05:31 Patterner left, Psyche^ is now known as Patterner 05:32 PerlJam joined 05:45 alester left, pugs_svn left 05:46 pugs_svn joined 05:54 azawawi joined
moritz_ diakopter++ # permantly killing stuff ;) 06:02
06:09 japhb joined 06:21 Ehtyar left 06:27 eternaleye_ left
pugs_svn r22468 | azawawi++ | [t/spec] Fudged S10-packages/import.t for rakudo 06:29
06:36 ashizawa joined 07:01 smtms left 07:02 drbean_ joined, broquaint left
pugs_svn r22469 | azawawi++ | [t/spec] Moved LoadCounter.pm to t/spec/packages since it is needed by 07:02
r22469 | azawawi++ | S10-packages/require_and_use.t
07:02 smg left 07:04 smg joined, rafl left 07:05 rafl joined 07:07 drbean__ joined, smtms joined 07:13 drbean___ joined 07:14 drbean left 07:20 drbean_ left
pugs_svn r22470 | azawawi++ | [t/spec] Fudged S12-methods/indirect_notation.t for rakudo 07:22
07:26 drbean__ left 07:31 drbean___ left 07:34 drbean___ joined 07:40 drbean joined, icwiener joined, iblechbot joined 07:45 drbean_ joined 07:50 zamolxes left 07:51 drbean__ joined, drbean___ left
pugs_svn r22471 | azawawi++ | [t/spec] Fudged S29-context/eval.t for rakudo 07:53
07:56 drbean___ joined 07:59 drbean left 08:04 drbean_ left 08:06 cosimo joined 08:07 drbean_ joined 08:09 drbean__ left 08:12 drbean__ joined 08:14 drbean___ left 08:26 drbean_ left 09:00 zamolxes joined 09:12 drbean joined 09:29 drbean__ left
azawawi @seen bacek 09:30
lambdabot I haven't seen bacek.
moritz_ lambdabot-- 09:31
azawawi moritz_: hi
moritz_ hi 09:32
azawawi i've been looking at recent P6 RTs
and im thinking of taking this one for a starter rt.perl.org/rt3/Ticket/Display.html?id=59476
lambdabot Title: #59476: [TODO] Refactor Str.capitalize.
moritz_ I think Str.chop is easier as a start 09:33
but .capitalize should work out as well
azawawi perl6.exe on windows for parrot 0.7.1 is broken 09:34
moritz_ msvc, or cygwin?
azawawi the one from sourceforge.net/project/showfiles.p..._id=211372 09:35
moritz_ you should tell fperrad in #parrot (when he's present) 09:36
azawawi will do...
basically it has a fixed library path to his own dev env
moritz_ I think rurban is working on fixing stuff like that in his pdd30_install branch 09:37
azawawi win32 parrot/perl6 releases are always bad 09:38
moritz_ time to change that!
azawawi ;-) 09:39
moritz_ anyway, re Str.capitalize, patches welcome!
azawawi starts working on Str.* patches
09:57 krunen joined 09:58 zamolxes left 10:07 Awatto left 10:15 iblechbot left 10:29 smtms left 10:39 zamolxes joined 10:51 iblechbot joined
azawawi moritz_: rt.perl.org/rt3/Ticket/Display.html?id=59480 done... 10:57
lambdabot Title: #59480: [TODO] Refactor Str.chop
moritz_ runs the tests 10:59
rakudo_svn r31541 | moritz++ | [rakudo] simplified Str.chop. Patch by azawawi++ 11:05
11:08 alanhaggai joined
azawawi moritz_: thx 11:08
moritz_ thank *you*
azawawi is now busy with RT #59476 11:09
11:25 masak joined 11:42 alanhaggai left 12:12 icwiener left 12:14 icwiener joined 12:15 ashizawa left 12:30 azawawi left 12:31 tomyan joined 12:35 zamolxes left 12:43 penk left 12:54 Lorn joined 13:02 Bzek left 13:04 sri_work joined 13:11 wolverian joined 13:13 debianLIVE joined 13:15 cookys joined 13:18 pmichaud joined
moritz_ perl6: my $x; say $x.defined 13:35
p6eval pugs: OUTPUT[ā¤]
..rakudo 31543: OUTPUT[set_attr_str() not implemented in class 'Undef'ā¤current instr.: 'parrot;Failure;!exception' pc 8482 (src/gen_builtins.pir:5344)ā¤]
..elf 22471: OUTPUT[Can't call method "defined" on an undefined value at (eval 117) line 4.ā¤ at ./elf_f line 3861ā¤]
masak elf--, rakudo-- # that's just stupid :) 13:38
moritz_ indeed ;)
masak pugs++ # accordingly
moritz_ actually defined($x) works in rakudo
masak that's a start
moritz_ perl6: my $x; say defined($x) 13:39
p6eval elf 22471, pugs: OUTPUT[ā¤]
..rakudo 31543: OUTPUT[0ā¤]
diakopter [OT] amazon ec2 adds windows VMs... \o/ 13:47
rakudo_svn r31544 | moritz++ | [rakudo] Convert some 'new Failure' instances to '!FAIL', as per RT #58646 13:48
r31544 | moritz++ | Patch courtesy by ronaldxs++
13:49 azawawi joined
rakudo_svn r31545 | moritz++ | [rakudo] add a file to spectest_regression, and restore alphabetical order 13:51
moritz_ rakudo: use Test; plan 1; my Int $x; isa_ok($x, Int); 13:56
p6eval rakudo 31545: OUTPUT[Can't find ./Test in @INCā¤current instr.: 'die' pc 12739 (src/gen_builtins.pir:7935)ā¤]
pmichaud perl6: say undef.isa(Int);
p6eval elf 22471, pugs: OUTPUT[ā¤]
..rakudo 31545: OUTPUT[0ā¤]
pmichaud perl6: my $x = undef; say $x.isa(Int); 13:57
p6eval elf 22471, pugs: OUTPUT[ā¤]
..rakudo 31545: OUTPUT[0ā¤]
moritz_ since Bool is an Enum of int, the 0 stringification seems correct to me
masak aye 14:00
moritz_ wonders if there's a test for that 14:01
masak probably not.
pugs_svn r22472 | moritz++ | [t/spec] tests for stringifying True and False (and add smartlink) 14:04
masak moritz_++
14:05 alester joined 14:08 ashleyb joined 14:12 barney joined 14:17 alanhaggai joined
diakopter karma moritz_ 14:17
@karma moritz_ 14:18
lambdabot moritz_ has a karma of 7
diakopter @karma moritz
lambdabot moritz has a karma of 175
moritz_ perlbot: karma moritz_
perlbot Karma for moritz_: 79
moritz_ perlbot: karma moritz
perlbot Karma for moritz: 1289
moritz_ I think lambdabot has stopped counting at some point
diakopter while 1 { lambdabot-- } 14:19
moritz_ integer overflow
erm, underflow ;) 14:20
masak no, overflow. 14:21
the sign doesn't matter
underflow is for floating-point numbers
Tene Juerd: tab-completion causes scary errors about missing fds on feather3
masak uh oh. 14:22
Tene Hmm. There's no Bot::BasicBot on feather3 anymore
Tene installs. 14:23
some locale issues too
It's very difficult for me to type without trying to tab-complete. 14:27
did someone need a polyglotbot in #perl6de?
moritz_ #perl6de is dead, to the best of my knowledge 14:28
masak long live #perl6de!
moritz_ I hung out there for about 4 months (together with bloonix and a few others), but we didn't really discuss anything 14:29
now I answer the occasional Perl 6 questions in #perlde instead, everybody is happy and I have less open irssi windows ;) 14:30
14:41 debianLIVE left 14:44 TJCRI joined 14:45 abra joined
rakudo_svn r31547 | tene++ | [pct] 14:54
r31547 | tene++ | * Generate an exception handler for CONTROL_LOOP_NEXT exceptions in for loops
r31547 | tene++ | [perl6]
r31547 | tene++ | * Add a 'next' sub to throw CONTROL_LOOP_NEXT exceptions
r31547 | tene++ | [cardinal]
r31547 | tene++ | * Add a 'next' sub to throw CONTROL_LOOP_NEXT exceptions
masak Tene++ 14:58
15:01 z80ASM joined
z80ASM hi Larry ;) 15:02
timtowtdi
15:04 masak left 15:05 kanru left 15:06 kanru joined
z80ASM TimToady 15:09
pugs_svn r22473 | moritz++ | [t/spec] simplified next.t a bit to use initialized variables; fudged for 15:10
r22473 | moritz++ | rakduo.
15:11 Bzek joined 15:12 z80ASM left 15:15 z80ASM joined 15:33 ashleyb left 15:34 abra left
rakudo_svn r31548 | moritz++ | [rakudo] add tests for next to spectest_regression, Tene++ 15:36
15:37 smtms joined 15:41 smg left 15:43 z80ASM left 15:49 tomyan left 15:53 justatheory joined, Bzek left 15:58 gbacon left 16:01 armagad joined, gbacon joined 16:22 Exodist joined
rakudo_svn r31549 | pmichaud++ | [rakudo]: spectest-progress.csv update: 194 files, 4381 passing, 7 failing 16:22
16:35 eternaleye_ joined 16:38 masak joined
Juerd 16:21 < Tene> Juerd: tab-completion causes scary errors about missing fds on feather3 16:42
Tene: Can't reproduce that myself. Paste please 16:43
moritz_ Juerd: if you have some tuits... the links at www.parrotvm.org/svn/parrot/revision?rev=30851 return only empty pages 16:44
Juerd No tuits whatsoever
Sorry
azawawi Juerd: Please type 'perl', space and then tab on feather3 16:46
Juerd Oh, feather3
It's there clearly in Tene's message but I didn't see it
No problem for me 16:47
azawawi Juerd: I think it happened after i safe-upgraded to unstable
moritz_ maybe just a broken /etc/bash_completion ?
Juerd azawawi: Are you using an old screen session?
Oh, I get it after loading /etc/bash_completion
Apparently that's not in root's .bashrc 16:48
I'd say the bash_completion is broken indeed.
It shouldn't go looking for things that aren't there :)
moritz_ rm /etc/bash_completion; aptitude reinstall bash
Juerd Go ahead; gotta go
azawawi will do it
moritz_ doesn't have acccess to feather3
azawawi moritz_: it works now... thx 16:51
moritz_ np 16:53
speckbot r14583 | larry++ | Describe how assignment metaoperators initialize undefined lvalues. 16:56
Tene I figured it was something like that. 16:57
masak Tene: I've been trying to break the new 'next' feature, but no luck. :) Tene++
moritz_ masak: just use a while or loop statement 16:58
masak rakudo: for { next } { say "O RLY?"; $_(); say "YES RLY!" } # even this works!
p6eval rakudo 31550: OUTPUT[O RLY?ā¤]
masak moritz_: oh, didn't try that :/
moritz_ masak: it seems to work only on for atm
masak rakudo: while * { next }
p6eval rakudo 31550: OUTPUT[No exception handler and no messageā¤current instr.: 'next' pc 12684 (src/gen_builtins.pir:7904)ā¤]
masak hm. yes. 16:59
Tene: why is that?
moritz_ I think it's the block generating code 17:00
masak TimToady++ # notional "reduction" to an accumulator variable
pmichaud the while loop doesn't implement next yet. 17:01
I could probably do that after lunch. Also get while $x -> $a { say $a; } to work.
moritz_ pmichaud: you mean on PAST level?
pmichaud moritz_: correct -- the code that PAST::Op 'while' nodes generates doesn't handle CONTROL_LOOP_NEXT exceptions yet. 17:02
moritz_ is the plan to change PCT, or to simply add a :handles_excpetion<CONTROL_LOOP_NEXT> or something along these lines? 17:03
17:03 armagad left
pmichaud change PCT so that all of the loops understand the control exceptions. 17:03
moritz_ ok
pmichaud afk, lunch. 17:04
rhr TimToady: s/autovivificatoin/autovivification/ in spec update 17:05
[particle] rakudo: map { .say; .next } 1..3; 17:07
p6eval rakudo 31550: OUTPUT[Statement not terminated properly at line 1, near "1..3;"ā¤ā¤current instr.: 'parrot;PGE::Util;die' pc 119 (runtime/parrot/library/PGE/Util.pir:82)ā¤]
[particle] rakudo: map { .say; .next }, 1..3;
p6eval rakudo 31550: OUTPUT[1ā¤Method 'next' not found for invocant of class 'Int'ā¤current instr.: '_block15' pc 157 (EVAL_13:58)ā¤]
[particle] rakudo: map { .say; next }, 1..3; 17:08
p6eval rakudo 31550: OUTPUT[1ā¤No exception handler and no messageā¤current instr.: 'next' pc 12684 (src/gen_builtins.pir:7904)ā¤]
masak should &next work inside a map? 17:09
moritz_ don't think so
masak it doesn't in Perl 5
ha! so for loops and maps aren't synonymous!
moritz_ unless map() catches that exception 17:10
dunno
[particle] map is for
moritz_ so what should it return when next() is called? no item?
masak [particle]: except that for doesn't return a value and map doesn't care for &next 17:11
17:11 smg joined
moritz_ rakudo: until 0 { say "yes"; next; }; 17:11
p6eval rakudo 31550: OUTPUT[yesā¤No exception handler and no messageā¤current instr.: 'next' pc 12684 (src/gen_builtins.pir:7904)ā¤]
17:12 viklund joined
speckbot r14584 | larry++ | typo from Bob Rogers++ 17:18
TimToady oh, rhr++ too :) 17:19
17:21 kanru left
TimToady masak: for is specced to return a value just like map 17:21
masak TimToady: but not to catch &next calls? 17:22
17:22 ryanc left
TimToady why shouldn't map catch next calls? 17:23
it's just a control exception
17:23 ryanc joined 17:25 eternaleye_ left 17:26 kst` left, ashleyb joined, kst` joined
masak TimToady: I didn't find anything about it in the specs. and Perl 5 doesn't catch next 17:26
17:41 ruoso joined
ruoso TimToady, er... my $foo; $foo *= 5; say $foo; does it print "5" or I did misunderstood the latest change in the spec? 17:43
moritz_ ruoso: it does. The infix:<*> operator knows its neutral element 17:44
that's also specced $somewhere
ruoso that's wildly unexpected... I should say...
masak ruoso: aye, it prints 5
I like it.
and I don't think it's more unexpected than 0 17:45
moritz_ ruoso: not at all. Otherwise [*] wouldn't work properly with an empty list
ruoso doesn't really see how that's related... 17:47
moritz_ wait, the synopsis says "If you apply an assignment operator to a *protoobject*" 17:50
masak aye
moritz_ so perhaps it only works for my Num $foo; $foo *= 5;
masak but the new change also talks about uninitiated hash slots
that should be about the same as non-typed undefined variables, methinks 17:51
moritz_ presumably my $x; fills $x with some kind of Object or Scalar proto object
masak there is no Object object, but yes, presumably 17:52
TimToady the Object object is what you used to think of as "undef" :) 17:54
masak TimToady: ah.
I sit corrected.
moritz_ so does my $x; $x *= 5; yield 5?
TimToady yes
moritz_ without type declaration on $x
good
masak exhales
moritz_ writes tests 17:55
masak moritz_++
ruoso while my $x; $x += 5; still yelds 5
moritz_ yes
masak except that you can't write like that :) 17:56
TimToady and ++ is semantically defined as +=
+= 1
except for all the .succ and .pred stuff, which doesn't assume 1
moritz_ "except where it's not" 17:57
ruoso I presume this is valid for plain "my %a; say %a<abc> + 1;" 17:58
pugs_svn r22474 | moritz++ | [t/spec] tests for autovivification with assignment meta operators
moritz_ maybe assignment-metaops.t would have been the better test name 17:59
s/test/file/
not sure
TimToady ruoso: I think that's a warning
ruoso so this is just for the (something)= operators 18:00
TimToady yes
18:00 barney left
masak makes sense. 18:01
ruoso so it's the operator that checks for 'defined' and use the "neutral" value otherwise
but "undef" still knows how to morph itself into other objects, to support array and hash autovivification... 18:02
'my $foo; $foo<abc> = 3;' turns $foo into a hash 18:03
TimToady an outer container returns an autovivifiable protoobject in that case
a bare undef can't morph in-place, of course
ruoso alright... that specific kind of undefs can morph...
like my %a; %a<a><b><c><d> 18:04
TimToady but in general we need not tag rvalues with where they came from
if it's known that %a<a><b><c><d> is in rvalue contexxt it can just propagate a non-autoviv undef 18:05
which is likely cheaper to generate
ruoso right... as an optimization...
18:07 meppl joined
TimToady but maybe delete could pessimize that and trace an element back to its container 18:07
18:08 icwiener left
ruoso one thing I'm still not really sure.. is what triggers autovivification... for hashes and arrays, the spec says the binding process triggers it... 18:08
but what about other objects? 18:09
in S12 it seems to imply otherwise...
(binding and storing, of course)
TimToady if you bind something to a writeable location, you have to ask the argument to make itself writeable 18:11
and either it's intrinsically writeable already
or it is a prototype with a closure
and the closure does the autoviv
I don't see why that restricts it to hashes and arrays
except insofar as those are the basic types that already provide such protoobjects 18:12
well, and scalars, in some circumstance
s
$a<b><c> can autoviv $a
18:13 rindolf joined
ruoso TimToady, in S12:2070 it shows an example where a method call autovivifies the object 18:13
TimToady indeed 18:15
which seems to demonstrate that invocants are rw 18:16
ruoso hmm... that's getting even worse ;)
TimToady self = new Dog; :) 18:17
ruoso TimToady, the problem is not replacing the invocant...
moritz_ not Dog.new?
masak you can _replace_ self?
ruoso because the protoobject is something in the middle between the type Dog and a defined Dog
it's like a Dog soul ready to reincarnate... 18:18
;)
TimToady well, maybe only if you explicitly declare the invocant rw
masak rakudo: class A { method x { self = 2 } }; my $a = A.new; $a.x; say $a
p6eval rakudo 31553: OUTPUT[2ā¤]
masak yuck.
moritz_ scary.
TimToady but the $dog.wag autoviv could be handled by the dispatcher outside of the method, perhaps
ruoso TimToady, right... that's the point... 18:19
moritz_ rakudo: class A { method x { self = 2 } }; my $a = A.new; $a.x; say $a; say $a.WHAT
p6eval rakudo 31553: OUTPUT[2ā¤Intā¤]
ruoso TimToady, Dog{ .name => 'Fido' } is something supported even without 'rw invocant'
masak IMHO, declaring all arguments readonly but the invocant rw is a big mistake...
ruoso all the initialization of the object presumes that
the different stages 18:20
TimToady the object can be rw without the invocant parameter being rw
ruoso in p6opaque, it's like an object that was CREATEd but still not BUILD(t)
TimToady our rw-ness is not deep
well, just make it all work 18:21
ruoso the problem is not with the autovivificatoin process at all
TimToady waves his hands around vaguely
ruoso because it's just a matter of calling BUILD
the problem is knowing *when* to do it
18:21 abra joined
TimToady the invocant of a constructor isn't the object to be built 18:22
so I don't see a big problem
ruoso for instance... .exists is a method
why calling .exists doesn't autovivify it?
while calling $foo.wag() does 18:23
ruoso . o O ( does it have to do with that magical "bvalue context" thingy? ) 18:24
ruoso . o O ( 'bvalue' methods doesn't autovivify... .postcircumfix<{}> usually is a 'bvalue' method... ) 18:25
ruoso . o O ( it really looks sane )
moritz_ don't look for sanity when you want to implement Perl 6 ;) 18:26
ruoso moritz_, believe it or not, I do have a coherent model for implementing Perl 6 in my head ;) ;) ;)
TimToady the question is to what extent the compiler has to know about bvalue methods
azawawi finishes RT #59476 (rt.perl.org/rt3/Ticket/Display.html?id=59476) 18:27
lambdabot Title: RT Error
ruoso TimToady, autovivification is something runtime should be aware... not the compiler...
(except for marking explicit cases where it should not autovivify)
TimToady s/compiler/optimizer/
ruoso well... 'bvalue context' degreades to 'rvalue' or 'lvalue' too easily 18:28
TimToady if you assume the default of rvalues always returning something with a backref to the container, then the optimizer can be conservative
azawawi moritz_: 'Refactor Str.capitalize' is finished; could u please apply the patch?
moritz_ azawawi: I have to get some supper, then I can take a look 18:29
ruoso TimToady, at this point I'm assuming the non-optimized version always is 'bvalue' (i.e. backref to the container)
TimToady I can see situations where you might want to pass everything you can as bvalues so that you can get a better error message
azawawi moritz_: thx
ruoso TimToady, except on places it isn't at all (like methods not marked as rw) 18:30
TimToady "bvalue by default" might be one of those pessimizations that turns out to support a disruptive technology
on the other hand, it could easily blow up your performance
ruoso trust people that knows how to optimize things...
ruoso doesn't 18:31
TimToady there's a sense in which parrot is already bvaluish with PMCs
ruoso thinks he knows how to leave room for that people to work, tho
but very few methods need to be 'bvalue'
.exists, .postcircumfix<{}>, .postcircumfix<[]> 18:32
not many more...
18:32 zamolxes joined
TimToady and we can probably notice them by lexically scoped declaration somehow 18:32
ruoso you mean, 'is bvalue'?
TimToady $self is ref maybe? 18:33
ruoso but it's not $self, but the return value of a method
TimToady .exists is worried about $self, unlike .{} 18:34
ruoso in .postcircumfix<{}>, it's the return of the method that is bvalue, not the invocant...
TimToady but .{} also wants bvalue for the invocant 18:35
ruoso in a sense, it does...
masak what's a bvalue?
ruoso and that's what makes it non-autovivication-trigger?
TimToady and I think "is ref" may provide the clue
rather, lazy autoviv trigger
just give me a ref to the object and let me decide whether to autoviv 18:36
ruoso masak, it's something not yet in spec... but it basically means, 'bind context'
TimToady, oh... that was not the path I was taking...
masak oy, "not yet in spec" :) I'm dizzy enough from the things already in the spec...
ruoso TimToady, I was thinking the dispatcher would decide to autovivify...
TimToady, and it would not autovivify in 'bvalue' methods 18:37
TimToady and I think a 'bvalue' method is maybe determined by the invocant's declaration 18:38
where the unmarked case is the undeclared form
ruoso right... although I still argue "$self is ref" is not really the thing... 18:39
because the autovivification won't CREATE another object,
it will just BUILD the current protoobject 18:40
18:40 abra left
ruoso using the WHENCE 18:40
TimToady, take a look at src-s1p/Object.pm inside smop repo...
an autovivifiable object would be an object where only of "new" would be executed...
TimToady right, it's notionally already a constructed object, only without actually 18:41
(or we couldn't use it to define role values) 18:42
ruoso s/only of "new"/only half of "new"/
I always thought that was the meaning for the splitting of CREATE and BUILD 18:43
18:44 Lorn left
TimToady well, one of the meanings, perhaps, though CREATE and BUILD were not envisioned as a laziness mechanism 18:44
ruoso heh... they are now ;) 18:45
TimToady so you're saying that Foo{ a => 42 } is basically doing CREATE in the Foo role 18:47
and it's the BUILD on that which would fail if the role is not instantiable
ruoso yep 18:48
TimToady makes some kind of sense
ruoso actually BUILDALL...
but it doesn't really matter 18:49
TimToady so a role's repr could be "can't", whereas a class's repr would be P6opaque
and a punned role/class could just use a role that can do P6opaque, really
or maybe that's oversimple 18:50
ruoso parsing....
ruoso E_TOO_MANY_4LETER_WORDS
TimToady probably worth generating the punned class from the role in any case
18:50 eternaleye_ joined
ruoso the protoobject repr has no direct relation with its instances repr... that's for sure... 18:51
so Foo{ a => 42 } probably creates a p6opaque anyway
TimToady but it need not commit to a representation, since it's just holding initializers 18:52
ruoso I'd argue the syntatic construct allows the runtime to choose some repr
(since there's no syntax to defining the repr of an autovivifiable object) 18:53
TimToady but there's an api with a closure to call that returns something of a specific type 18:54
ruoso which is used as the candidate in BUILDALL
18:55 hercynium_ joined
TimToady maybe, maybe not 18:55
ruoso wait... 18:56
TimToady maybe we only feed it to BUILD for its arguments
ruoso that's it...
TimToady and we don't care
ruoso see src-s1p/P6Meta.pm
method bless
BUILDALL accepts several protoobjects as positional arguments... that protoobjects should be used to initialize the object in each BUILD call 18:57
S12:650 18:58
TimToady yes, but there's no requirement that the protoobject have the representation of the object we're BUILDing 18:59
though in some cases it would be convenient
ruoso like when autovififying a hash entry
19:00 meppl left, Ontolog left, ting left, jfredett left, clkao left, [particle] left, hcchien left, allbery_b left, zamolxes left, ruoso left, gbacon left, Patterner left, Juerd left, literal left, spinclad left, nnunley left, szbalint left, Guest16015 left, idemal left, araujo left, beppu left, ewilhelm left, obra left, sunnavy left, simcop2387 left, rindolf left, Torment left, Southen left, cxreg left, xinming left, jiing_ left, avar left 19:01 mncharity joined
TimToady then calling the closure has to have the side effect of installing the key in the hash, as well as returning the arguments for the new object 19:01
mncharity hi all
moritz_ hi
mncharity I've just now updated perl.net.au/wiki/Elf .
lambdabot Title: Elf - PerlNet
mncharity TimToady: apropos the Wed weekly meeting, I note I/elf would appreciate community assistance on (1) modifying or forking the src/perl6 parser to tag its Match nodes with the name of the rule which generated them; and 19:03
(2) exercising STD.pm, either using (a) STD_blue with the current untagged parses, (b) STD_blue on new tagged parses from 1, or (c) rakudo. Basically, 19:04
19:05 ruoso_ joined
mncharity a grammar/parser can't really be declared working until something is actually emitting from it - parse output is generally too hard to validate otherwise. 19:05
19:05 zamolxes joined, rindolf joined, meppl joined, ruoso joined, gbacon joined, Patterner joined, Ontolog joined, Juerd joined, Torment joined, literal joined, ting joined, clkao joined, hcchien joined, allbery_b joined, jfredett joined, [particle] joined, xinming joined, Southen joined, araujo joined, avar joined, simcop2387 joined, jiing_ joined, sunnavy joined, cxreg joined, obra joined, Guest16015 joined, ewilhelm joined, idemal joined, spinclad joined, nnunley joined, szbalint joined, beppu joined
mncharity Ideal, from elf standpoint, would be for someone to get 19:05
drats. ill timed partition.
19:06 ruoso left, ruoso joined, ruoso left
mncharity eh, both logs have it. anyway, 19:06
ruoso_ TimToady, yes... that's what I had thought
TimToady I have a version of STD that does implicit {*} on method exit 19:07
breaks macro defs though, so haven't checked it in yet 19:08
mncharity If the mechanism of shaking down STD is a tagged STD_blue which elf can self-compile on, that would be shiny.
TimToady so we could attach reduction actions soon now
mncharity oooo, nifty
TimToady my goal is to rewrite gimme5 in STD plus actions
pmichaud TimToady: does the recent change to S03 mean that my $x; $x %= 3; would cause $x to have the value 3?
TimToady and then we can presumably translate a large subset of p6 to p5
ruoso_ pmichaud, the question you should ask is "which is the neutral value for the % operator" 19:09
TimToady pmichaud: yes, though of course that's fairly nonsensical
mncharity hmm... /me ponders...
pmichaud ruoso_: S03 currently says the operator itself is dropped and it becomes simple assignment.
19:09 ruoso_ is now known as ruoso
TimToady I thought about calling prefix:<[op]> for the neutral value, but decided this was likely more basic 19:09
and the reduction ops are likely defined in terms of op= 19:10
pmichaud TimToady: and my $x; $x -= 3; would cause $x to have 3 also?
mncharity before pondering, the last bit of info was the tagging, etc, is something which, at my current level of effort, won't be needed for a couple of weeks. back to pondering...
TimToady ooh, that's a good one
pmichaud (it's okay if the answers are 'yes', I'm just verifying)
TimToady hmm
ruoso my guess would be -3
pmichaud also $x--
ruoso since the "neutral value" for sum and subtract is 0 19:11
pmichaud ruoso: again, I'm just reading from the latest spec. :-)
I'm not advocating -- just confirming.
moritz_ pmichaud: are you thinking that $x op= $y should just take $y if $x is undef?
ruoso pmichaud, the thing is the "neutral" value... which is in the latest spce
TimToady well, for a while I had it calling prefix:<[op]>()
pmichaud moritz_: I'm simply saying what the latest spec says.
TimToady maybe I'll go back to that 19:12
masak pmichaud: I agree with moritz_. I, too, read it as -3
pmichaud r14583 says: +If you apply an assignment operator to a protoobject, it is assumed that
TimToady it bothered me that the nullary reduce loses type info, though
pmichaud +you are implementing some kind of notional "reduction" to an accumulator
+assignment is done instead.
+variable. To that end, the base operator is dropped and a simple
TimToady so maybe if there is a defined nullary reduce, we use that, otherwise assign
pmichaud based on this reading of the spec, $x -= 3 would result in $x being 3.
TimToady that seems like a misfeature 19:13
pmichaud I agree that it would be confusing.
masak indeed
ruoso oh... where did the "neutral" value thing came from?
pmichaud in many ways I kinda prefer it when undef defaults to zero.
TimToady on the other hand, [-] 3,4,5 gives the same semantics
pmichaud my reasoning being that I don't have to memorize a list of operators to know what their default reduction is.
moritz_ pmichaud: that's not a general solution, because it doesn't work for strings and other types 19:14
masak there's a lot of DWIM in default reductions
pmichaud okay, defaults to empty string for string context, empty list for list context
ruoso one could argue that coercing undef to number is an error...
pmichaud i.e., roughly the same as p5 semantics.
TimToady and then you have to special case the non-warnings like p5
which I don't like
pmichaud I don't mind if += doesn't generate a warning. 19:15
it seems reasonable to assume that assigning to an undefined value doesn't cause a warning.
even if it's an "operator assignment"
ruoso I think it's confusing... 19:16
TimToady sure but *= won't work if undef returns 0
ruoso since most people read $a += $b as $a = $a + $b
pmichaud it depends on what we mean by "work" :-)
yes, that's a good point
my $a *= 5; becomes more like $a = [*] 5; instead of $a = $a * 5;
TimToady or $a = ([*]()) * 5 19:17
pmichaud in some sense it's "easier" (although that may just be "traditional") that undef values are zero, empty string, false, or empty list depending on context (and not on operator) 19:18
moritz_ pmichaud: but that works only as long as you can't define new operators
19:18 kane_ left
[particle] so is $a = 5 something like $a = [] 5 ? 19:18
TimToady :P 19:19
[particle] :)
because ::= is trouble then
pmichaud if someone wants %hash<key> *= 5; to work, I'd write it as %hash<key> = [*] 5;
er,
fap
if someone wants %hash<key> *= 5; to work, I'd write it as %hash<key> = [*] %hash<key>, 5;
which I admit is icky.
moritz_ can you reduce that to %hash<key> [*]= 5? # *me ducks* 19:20
TimToady and probably won't work either
mncharity TimToady: any thoughts on how much calendar time until there's a running/working action-refactored STD?
TimToady yes, "too much" :) 19:21
19:21 betterworld joined
mncharity :) :/ 19:21
pmichaud anyway, I'll leave it to others to hash out -- I just thought the current spec looked weird in the cases of %= and -= and the like.
TimToady the action refactoring is not difficult
I already have a _REDUCE method
it just has to call somehting
mncharity *groan* 19:22
TimToady and my latest change merely makes _MATCHIFY call _REDUCE with an appropriate tag
mncharity re "leave it to others to hash"
TimToady but as I say, that broke my user-define operator installer 19:23
and everyone wants their factorials...
it might even be a trivial fix, just haven't had time 19:24
[particle] i don't want the world, i just want your half.
mncharity re time, understood.
pmichaud I hate to propose another global, but perhaps a %*REDUCE hash keyed by operator that says what the reduction value will be?
%*REDUCE<*> = 1 19:25
%*REDUCE<+> = 0
TimToady why are you reinventing what is already specced in "Reduction operators"? 19:26
[particle] hee
pmichaud sorry, hadn't read that section yet :-|
[particle] ESPECTOOBIG 19:27
TimToady just call prefix:<[*]>()
pmichaud right.
got it.
note to self: read the whole section before saying anything. :-)
2nd note to self: also a good idea to do an 'ack' on the whole synopsis directory, in case it's further described in another synopsis. 19:28
TimToady I think maybe what we call is just prefix:<[op]>($x) where $x is the rvalue in question
[particle] need a google search box on spec.pugscode.org
pmichaud [particle]: eh, I just keep an up-to-date copy of svn.perl.org/perl6/doc/trunk and ack that. :-) 19:29
[particle] sure, i have a copy, too
but i like fancy html
TimToady cottage cheese and kimchee, yum 19:31
moritz_ would like to have a tool that only searches in C<...> and code blocks
if you search for builtins that are also common english words, it's really painful to do it the normal way 19:32
mncharity background is STD_red limitations (really old STD.pm and then some) are getting annoying. but given the absence of minons, I'd like the next parser version to be the one which gets bootstrapped on, rather than another temporary one.
19:32 eternaleye_ left
[particle] moritz: like a Pod::Strip plugin for ack? 19:33
moritz_ [particle]: something along these lines
alester Mind you, we DO have plugins, Mortiz
If you were the first one to write one, I'd give you a dollar. 19:34
moritz_ alester: that's great (and expected ;)
mncharity which suggests elf should do "fill in the gaps", ie, a p6 version of the elfish/rx_on_re regex engine (for the CL backend). And place bootstrap on project hold pending refactoring. But... that invites calendar time to slide by.
alester Basically, you write a Perl/Pod handler that iterates over the file, and only hands back those lines of the file that aren't pod
or ARE pod
mncharity sigh.
alester your choice.
moritz_ alester: sounds possible, with Pod::Simple 19:35
moritz_ adds that to his TODO list
[particle] Pod::Strip is a Pod::Simple subclass
it's a little more complicated if you also want to search C<...>
moritz_ [particle]: I don't want to strip Pod, I want to evaluate only the embedded code examples in POD 19:36
mncharity TimToady: ok, ignore old elf wish list. Current elf wish list is, I believe, "help TimToady with STD refactoring".
[particle] but not too much more
19:36 justatheory left
mncharity though I suspect I may want a copy of your unchecked in gimme. 19:36
[particle] moritz_: sorry, of course, for some reason i had .t files in my head, not .pod files
mncharity elf doesn't use factorial. ;)
and at this point, elf is entirely focused on bootstrap rather than t/. and STD.pm doesn't use factorial either. 19:37
TimToady but the test suite that I test STD with uses factorial in several places 19:38
anyway, I'll go ahead and check in the change even with the brokenness in macros
mncharity doesn't have to stop the current one. feel free to drop it on the side. misc/elfish/foo? 19:39
*stomp
and needn't drop it right now.
that was more a "might ask you for it in a week or two" comment.
pugs_svn r22475 | lwall++ | [STD] add implicit {*} hook at end of rules 19:40
mncharity but whatever. :)
TimToady anyway, a grammar can now just override Cursor::_REDUCE to call actions by name 19:41
mncharity big picture is simply that looking ahead at the tasks between now and elf bootstrap, some of them seemed like "there's no reason someone from the community couldn't be working on this, rather than me, so when I get there, it's already done". and the Wed meeting seemed a context to bring it up. 19:42
re _REDUCE, hmm... maybe I'll reshuffle task order... 19:43
thanks
TimToady though if _REDUCE is going to add result objects, it needs to add it to $self "en passant" 19:44
19:45 masak left
TimToady probably to {''}, since that's what ->item() pulls out 19:45
mncharity I'd simply like the Match nodes to end up with a $m<rule> = "name_of_the_rule_which_made_me" field. 19:46
so I don't have to guess, based on what their parent Match called them.
rindolf Hi all. 19:47
run.pugscode.org/ does not work.
speckbot r14585 | larry++ | Revision to accumulator semantics so that -= dwims 19:54
[particle] does the ::EXPORT inner module always exist, or only if something is export? 19:55
19:56 zamolxes left
mncharity I'm off. So Match tagging is back to being a community request. I hope to have elf self-compiling on the new common-lisp backend over the next week or so. Given a tagged parse tree, I'd probably then exercise STD by attempting to get elf to self-compile on it. And then elf to compile and run STD itself. 19:59
thanks for all the fish. &
19:59 mncharity left 20:03 mncharity joined
mncharity s/community request/request to the community/ ;) 20:03
20:03 mncharity left, viklund left 20:05 rindolf left
pugs_svn r22476 | moritz++ | [t] move topic.t to spec/, small HOWTO updates 20:06
moritz_ I forgot the result of our last discussion on junctions... 20:09
should (1 | 2 | 3).values return a list, or a junction?
PerlJam why would that return a junction? 20:14
my $j = 1 | 2 | 3; $j.values; should be the same
moritz_ I think that pmichaud that .values autothreads on its invocant just like all other methods 20:15
*mentioned
20:20 ruoso left
moritz_ rakudo: say "abc".substr(1,-1) 20:22
p6eval rakudo 31554: OUTPUT[bā¤]
azawawi pugs: say $?OS;
p6eval pugs: OUTPUT[linuxā¤]
azawawi rakudo: say $?OS;
p6eval rakudo 31554: OUTPUT[Scope not found for PAST::Var '$OS'ā¤current instr.: 'parrot;PCT::HLLCompiler;panic' pc 156 (src/PCT/HLLCompiler.pir:103)ā¤]
azawawi moritz_: i tried to define set_hll_global for OS in globals.pir but i cant get perl6 to understand the differance between $?OS and $*OS 20:24
20:25 adrian__ joined
moritz_ azawawi: don't know what to do there 20:25
20:26 eternaleye_ joined 20:27 zamolxes joined
pugs_svn r22477 | moritz++ | [t] move noncap.t to spec/, added deprecation comment to junction_functions.t 20:30
20:33 elmex left
azawawi moritz_: do we need to implement p5chop and p5chomp? 20:34
moritz_ azawawi: yes, but they are less trivial than it might look like, because strings are immutable in Perl 6 20:35
azawawi reminds moritz_ about RT #59476
moritz_ azawawi: I'm appliying that as we talk
rakudo_svn r31557 | moritz++ | [rakudo] refactored Str.capitalize to use find_cclass. 20:36
r31557 | moritz++ | Patch courtesy by azawawi++
azawawi moritz_++
20:37 Chillance joined 20:38 adrian__ left
pugs_svn r22478 | moritz++ | [t] move pod_in_multi_line_exprs.t to spec and $fn ~~ s/_/-/g 20:38
20:38 justatheory joined
azawawi moritz_: i noticed that a couple of tests in S26-str can be unfudged... did we lately apply any patches to unicode support? 20:39
moritz_: namely uc.t, lc.t, lcfirst.t, and capitalize.t 20:40
moritz_ azawawi: these tests only pass if parrot is built/linked with `libicu'
azawawi: so on those systems without icu these tests fail, which is why they are fudged 20:41
(and which is why tools/autofunfudge.pl ignores all fudges with "unicode" in the comments)
azawawi nice
moritz_ would prefer it if rakudo died with "Perl 6 needs Unicode" if it runs on parrot wihtout icu 20:42
azawawi searches for an interesting RT
[particle] would prefer if rakudo worked without icu 20:43
moritz_ [particle]: I think if there are "non-Unicode Perl 6 compiler" out there, then people will start recommeding to not use Unicode in their Perl 6 programs to keep them portable 20:44
[particle]: then we get an anti-Unicode Best Practice fanatism 20:45
[particle]: Perl 6 without Unicode is just as unthinkable to me as Perl without regexes
azawawi thinks unicode support is a must. 20:46
[particle] parrot will implement unicode without icu someday
i didn't say "without unicode"
[particle] wants native parrot unicode support today
moritz_ why reimplement icu functionality in parrot? 20:47
TimToady icu doesn't implement NFG
moritz_ ok, point taken
azawawi NFG? ;-)
TimToady </wink> 20:48
Normalization Form Grapheme
pugs_svn r22479 | moritz++ | [t] remove xx-uncategorized/short_circuiting.t. Tested in much greater detail
r22479 | moritz++ | in spec/S03-operators/short-circuit.t
[particle] there are platforms where icu won't compile and parrot will run
TimToady as soon as you implement NFG all your strings become arrays of integers, which is easy to deal with 20:49
pmichaud there's a plan to re-implement string support in Parrot, and at that point they're completely revisiting the unicode support issues 20:50
azawawi any resources on NFG?
pmichaud even today "without icu" doesn't mean "without unicode" :-)
TimToady the PDD that simon wrote 20:51
pmichaud svn.perl.org/parrot/trunk/docs/pdds...trings.pod
moritz_ azawawi: it has been discussed on #parrot, so you could check the logs
azawawi moritz_: thx
TimToady you certainly won't find anything on it from the unicode folks though 20:52
unless they've noticed us more than we thing they have
*think 20:53
20:54 hercynium left 20:55 mofino left
rakudo_svn r31558 | moritz++ | [rakudo] add two more small files to spectest_regression 21:18
21:31 iblechbot left 21:42 wknight8111 joined 21:44 TJCRI left
pugs_svn r22480 | particle++ | [t] add test file and module for export testing 21:46
moritz_ [particle]: that test needs a bit tweaking 21:48
[particle]: is() compares with string semantics...
[particle] what did i do wrong?
ah, right
moritz_ (at least at the moment)
[particle] i need =:=
moritz_ or ===
[particle] ok( &Foo::foo =:= &Foo::EXPORT::ALL::foo, ... 21:49
look good?
moritz_ yes
also note that the implementations don't chdir to spec/S*/ before exeucting the tests
so it won't find Foo.pm
[particle] ah, hrm 21:50
so maybe i'll put the module inline
moritz_ there's also packages/
[particle] does rakudo know about that? 21:51
moritz_ it knows about t::spec::packages::Foo if there's a Foo.pm ;)
std: use t::spec::S11-modules::Foo; 21:52
p6eval std 22480: OUTPUT[parsedā¤]
moritz_ (hyphens-in-identifiers)++ 21:53
[particle] indeed!
moritz_ I'm not yet 100% sure what's the best cross-platform and spec conformant way of making modules findable 21:54
[particle] how about i create t::spec::packages::S11-modules-Foo 21:58
moritz_ would like ::spec::packages::S11-modules::Foo better
[particle] that's fine, too 21:59
moritz_ that's easier to autocomplete with the tab key ;)
22:00 meteorjay joined
pugs_svn r22481 | particle++ | [t] move a test module to t/spec/packages subdir to set a (better?) de-facto standard 22:03
22:07 eternaleye_ left
moritz_ [particle]++ # test suite hacking 22:08
[particle] finally! and moritz++ for keeping me honest
moritz_ rakudo: my ($x, $y); say $x =:= $y
p6eval rakudo 31558: OUTPUT[Could not find non-existent sub infix:=:=ā¤current instr.: '_block11' pc 126 (EVAL_16:49)ā¤]
[particle] yeah, well, first i have t\spec\S11-modules\export....Can't find ./t/spec/S11 in @INC 22:09
to deal with
moritz_ parsing problem 22:10
[particle] likely the -
22:10 justatheory left
moritz_ aye 22:11
[particle] i guess rakudo needs its own <ident> 22:12
moritz_ aye
[particle] actually, it needs <apostrophe> and <identifier>. adding... 22:19
meppl good night 22:23
22:25 alester left
pmichaud [particle]: you shouldn't need to make it a separate Foo.pm 22:26
[particle] pmichaud: i'm trying to get the example in the synopsis to work
anyway, rakudo needs to support <apostrophe> so i'm doing that now
i guess i don't have to test importing to test exporting, so i can export from the current namespace 22:27
22:27 meppl left
[particle] rakudo: say $?MODULE 22:28
p6eval rakudo 31560: OUTPUT[Scope not found for PAST::Var '$MODULE'ā¤current instr.: 'parrot;PCT::HLLCompiler;panic' pc 156 (src/PCT/HLLCompiler.pir:103)ā¤]
[particle] rakudo: say $?CLASS
p6eval rakudo 31560: OUTPUT[Scope not found for PAST::Var '$CLASS'ā¤current instr.: 'parrot;PCT::HLLCompiler;panic' pc 156 (src/PCT/HLLCompiler.pir:103)ā¤]
[particle] rakudo: say $?PACKAGE
p6eval rakudo 31560: OUTPUT[Scope not found for PAST::Var '$PACKAGE'ā¤current instr.: 'parrot;PCT::HLLCompiler;panic' pc 156 (src/PCT/HLLCompiler.pir:103)ā¤]
[particle] i'm getting two bonus tests in spectest_regression 22:29
Passed TODO Stat Wstat TODOs Pass List of Passed
-------------------------------------------------------------------------------
t\spec\S05-transliteration\trans.rakudo 2 1 16
t\spec\S06-signature\named-parameters.rak 4 1 2
Files=198, Tests=6256, 465 wallclock secs ( 0.00 cusr + 0.00 csys = 0.00 CPU)
what's the name of the current namespace? is it 'main'? 22:31
will &foo === &::EXPORT::ALL::foo work?
(once i implement exporting, of course)
22:38 justatheory joined 22:39 hercynium_ left 22:42 hercynium_ joined 22:45 [particle]1 joined 22:49 [particle] left 22:50 justatheory left 23:02 [particle]1 is now known as [particle]
rakudo_svn r31561 | particle++ | [rakudo] add apostrophe and identifier tokens to grammar; not using them yet 23:04
23:22 kanru joined
Tene TimToady: you have a minute to talk about block labels? 23:45
TimToady sure 23:46
Tene Is a block label just a lexical identifier for the block itself? 23:47
Or is it a separate object, or is it an object at all?
Can I call "FOO: { say FOO.WHAT() }", and if so, what does it print?
TimToady A label is defined as a pseudo-type, more or less
23:48 hercynium_ left
TimToady so I suspect .WHAT just returns FOO 23:49
Tene What about FOO.perl()? 23:50
TimToady well, that also probably just returns FOO
Tene Can I assign FOO to a variable? $x = FOO? 23:51
TimToady a label's value is really its name, and the fact that it's visible from the current scope
yes, but if you use it in a different scope, it may have a different interpretation
on the other hand, perhaps it's more than that
and any use of a label resolves to a particular lexical scope before the assignment 23:52
in which case it's probably some other kind of object
Tene It's NOT an identifier for the block itself, though, right?
TimToady I think it's primarily a name and an identity 23:53
and the actual structures are found by scanning for structures that have the same identity 23:54
generally outward in the dynamic scope
so FOO: { FOO: { FOO.leave }} creates two labels with the same name but different identities, and the inner one passes its identity for the scan of which block to leave 23:55
so they would differ in .WHICH but not in .WHAT 23:56
23:56 Exodist left
TimToady it may be that it should return "Label" for .WHAT 23:56
but it's the fact that it's declared outside a particular scope that allows it to be used as a bareword 23:57
and that is the sense in which it's like a type
a goto might have to be special cased for a following label though 23:58
or written goto "FOO" maybe.
anyway, FOO.leave is allowed only because FOO is predeclared 23:59
otherwise it'd be an illegal bareword
23:59 Limbic_Region joined
TimToady and it parses as a type, basically 23:59