Pugs t-shirts www.cafepress.com/pugscode | Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net
Set by stevan on 15 August 2005.
putter notes in the interest of full disclosure that he's been avoiding getting a cpan id since, well, their inception, so it's unlikely to occur rsn. :/ 00:01
theorbtwo Putter: Why avoid it? 00:05
putter the authorship/responsibility model is, I won't say broken, how about incompatible with some patterns of use. there is no mechanism to create something, and then say "here, this exists, maintain it collectively if you wish, but I, the original author am completely out of it". 00:10
wilx Hmm... 00:16
True.
XML::RSS could use that model. 00:17
The original author hasn't touched it for quite some time even though it has many reported bugs. And there is no way how to push users' fixes into it, so everybody is left to maintain his/her own local version. 00:19
putter yes. and I have patched versions of long broken cpan modules on my web site, but they are on the web site rather than cpan for exactly the same reason that the original has been long broken. 00:20
perhaps if there were a concept of collective authors, a committee owning some package, so abandoned packages could be taken over by the committee, with say a policy of "if you send a working patch, we will get to it before too many months have passed". 00:24
wilx Yeah.
putter good night all & 00:36
f0rth__ t[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[6~[ 00:50
svnbot6 r6318 | fglock++ | * perl5/ Value - added boxed type: List 03:25
r6318 | fglock++ | (lazy, non-lazy, infinite); tests
fglock_ It would be nice to have a minimal Perl6->Perl5 compiler in order to run perl6-Test::More 03:30
autrijus oooh 04:11
svnbot6 r6319 | Stevan++ | Perl6::MetaModel 2.0 -
r6319 | Stevan++ | * chaos.pl is largely complete now, it is all the
r6319 | Stevan++ | basic elements needed to construct the meta-model
r6319 | Stevan++ | * gnosis.pl is also largely complete from here we
r6319 | Stevan++ | can construct the $::Class as an instance of itself
r6319 | Stevan++ | * many tests written as well, +90% coverage on all
autrijus shiny new rt.openfoundry.org is online
svnbot6 r6319 | Stevan++ | aspects of the code which are currently utilized
autrijus gugod++
svnbot6 r6319 | Stevan++ | (some things are not used by the model)
autrijus tcliou++ 04:12
LCamel++
obra 'evening
autrijus obra: hi 04:13
obra How's it going? 04:14
autrijus just woke up
Aankhen`` Heh. 04:37
nothingmuch got to the P::V thread before I did. 04:38
QtPlatypus Has anyone seen cog.cognitivity.com/perl6/ it seems full of inaccurate infomation. 06:06
svnbot6 r6320 | Stevan++ | Perl6::MetaModel 2.0 - 06:18
r6320 | Stevan++ | * metamorph is done except for attributes
r6320 | Stevan++ | - many new tests for this code
r6320 | Stevan++ | * added the original version of the mini-meta-model
r6320 | Stevan++ | that this code was based upon, mostly it is just
r6320 | Stevan++ | here as reference
Khisanth QtPlatypus: well the copyright is 2002 06:34
svnbot6 r6321 | putter++ | Gets PIL-Run again able to 'say 3', now with -CPerl5.
putter fglock_: ping? 06:48
nothingmuch morning 06:50
xinming lol. here is at noon. :-) 06:52
nothingmuch: good afternoon maybe. ;-)
nothingmuch xinming: somewhere it's morning, so i usually say "morning", i like that word best
sometimes i may say "evening", and almost never "good localtime" 06:53
but i'm well aware that my time zone is a minority
putter nothingmuch: morning. here too almost - soo time to sleep. woobling smoke ran :), but p6 t/rules still all red :(
nothingmuch also, since most hackers' sleep cycles are completely screwed up, it doesn't really matter what you say
putter: i'll look into it when I get back from work, or around my lunch hour or something
putter np. thanks. 06:54
good second-moon-rising.
nothingmuch putter: sleep well!
xinming Ok, Now, Would anyone help me finish the job I haven't done yesterday? 07:00
putter thanks. :)
xinming I didn't write a test for pugs.
I wish to finish it. As at least, I learnt svn a bit. ;-)
?eval bool::true < 1 07:05
evalbot6 bool::false
xinming ?eval bool::true > 1
evalbot6 bool::false
xinming ?eval bool::false > 1
evalbot6 bool::false
xinming ?eval bool::true > 1
evalbot6 bool::false
xinming ?eval bool::false > 1
evalbot6 bool::false
xinming ?eval true( 100 ) > 1
evalbot6 bool::false
xinming ?eval true( 100 ) == 1
evalbot6 bool::true
xinming ?eval true( 100 ) < 5 07:06
evalbot6 bool::true
xinming ?eval bool::true < 5
evalbot6 bool::true
putter btw, there is a p6 article on slashdot.
xinming ?eval 3 < 1 < 5
evalbot6 bool::false
xinming putter: please give me the url 07:07
?eval bool::true < 5
evalbot6 bool::true
xinming ?eval bool::false < 5
evalbot6 bool::true
putter books.slashdot.org/article.pl?sid=0...&tid=6 07:08
fglock_: re"It would be nice to have a minimal Perl6->Perl5 compiler in order to run perl6-Test::More", perl5/PIL-Run is now attempting to use Perl6-Value. :) command line in perl5/PIL-Run/TODO. cheers. 07:10
svnbot6 r6322 | putter++ | Beginning of PIL-Run migration to Perl6-Value and Perl6-MetaModel. So it's broken again. 'say 3' on crude_repl.pl (the full command is in TODO) currently fails with Value/MetaModel errors. 07:11
putter fglock_++ for saying "it would be nice to have" :) 07:12
end of day for me.
good night all & 07:13
xinming: oh, sorry, missed your request. copy an existing test .t file, replace the description and body with your new test(s), adjust the test count. ./pugs -Iblib6/lib t/mumble.t will run your new test. svn add t/mumble.t; ./util/add-svn-props.sh t/mumble.t; svn diff; svn ci -m"your log entry" 07:19
oh, you may still have to run make test , just until the first tests start running, for ./pugs -Iblib6/lib t/mumble.t to work. 07:20
questions? 07:21
xinming putter: hm, thanks, no questions, But just something to do for now. ;-)
putter ok. svn co svn.openfoundry.org/pugs/ if you dont already have it of course. 07:22
good night.
08:41 kgftr|ko1obi is now known as kgftr|konobi
xinming anyone here in debian? 10:35
10:58 Aankh|Clone is now known as Aankhen``
autrijus rehi :) 11:10
xinming: tried haskell-unsafe yet?
xinming autrijus: hmm, to be honest, I tried. Yesterday, I tried to install ghc6 in debian and upgrade my system into unstable. and the problem is out. It still said it's version GHC 6.2.x.y.z... 11:13
autrijus: So, I try to compile my self. using the version 6.4.1.{time} 11:14
and it said, can't find the openal lib... ouch...
hmm, but now, i installed the ghc6.4. might work for now. thanks for your attention. ;-)
autrijus cool :)
xinming by the way, how much ram did you get for your computer? 11:17
autrijus: 512M or 1G?
autrijus xinming: 768m 11:20
xinming maybe that's just enough for compiling haskell. 11:21
I got 512M ram, But still swaping heavily.
autrijus nod 11:24
xinming by the way, How to remove the pugs I ever installed from CPAN? 11:33
go supper. bbl 11:37
11:41 oussama is now known as foxmjay 11:42 wilx` is now known as wilx
xinming ?eval class T { my $.a = 1; }; my T $o .= new; $o.a(); 11:49
evalbot6 Error: No compatible subroutine found: "&a"
xinming ?eval class T { has $.a; }; my T $o .= new; $o.a();
evalbot6 \undef
xinming hmm, the accessor function should be generated... wether declared by my or has 11:50
by the way, when might the hyper operator supported be added? 11:53
nothingmuch needs a cloaking device
i've worked for around 2 hours today, including context switches
the rest was also work
but the "please come help" variety 11:54
or "Can you explain this to me", or "*knock* *knock* [on window] - please open the door, the intercom isn't working"
xinming iblechbot: seen iblechbot 11:58
jabbot xinming: I havn't seen iblechbot, xinming
xinming iblechbot: seen iblech
jabbot xinming: iblech was seen 12 hours 28 minutes 11 seconds ago
xinming jabbot: seen xinming 11:59
jabbot xinming: xinming was seen 19 seconds ago
xinming anyone here free? 13:00
need some help.
theorbtwo xinming: In general, don't bother asking to ask -- just ask. 13:01
xinming theorbtwo: Could you please guide me step by step to write a test? 13:07
kolibrie xinming: a whole test file, or a single test within a file? 13:08
xinming someone "putter" ever taught me. But not so clear, as I didn't do write the test that time, No ghc and pugs installed. hm, Now I will to try
whole test file
#!/usr/bin/pugs 13:09
use v6;
use Test;
plan 1;
I know these are the lines for "header" :-)
kolibrie start by finding another test file, and copy it, then delete out all the stuff at the bottom
theorbtwo Right. Now, what is it you are trying to test?
xinming theorbtwo: Yeap.
class T 13:11
{
method a
{
'test a';
}
}
my T $o .= new;
$o.a();
a $o:;
a $o;
these are the contents for the test.
hmm, which one ever fixed.
But, the test file hadn't been written 13:12
kolibrie so then you need to decide which values need to be the same and test with 'is'
theorbtwo OK, put that all in the text file, after the "plan 1" line. 13:13
kolibrie is($actual, $expected, $description);
xinming theorbtwo: I've down that.
kolibrie: hold on please.
theorbtwo Now, put an ok("Still alive after new"); after that my T $o .= new;
Change those calls to a to read is($o.a(), 'test a', 'dot call'), etc. 13:14
It's is(<thing being tested>, <what it should return>, <name of test>).
Then fix the plan line to give the right number of tests -- four, by my count.
xinming !/usr/bin/pugs 13:18
use v6;
use Test;
plan 4;
class T
{
method a
{
'test';
}
}
my T $o .= new;
ok( "Still alive after new" );
is( $o.a(), 'test', "The original method call form" );
is( a $o:, 'test', "The indirect object notation call with arguments" );
is( (a $o), 'test', "The indirect object notation call without arguments" );
then, This is the right form, thanks. ;-)
fglock putter: ping timed out :) 13:19
kolibrie xinming: now you should be able to run the test: ./pugs testfile.t 13:20
xinming kolibrie: yeap 13:21
kolibrie xinming: you may also want to add notes as to where the syntax is documented 13:22
theorbtwo Looks good to me too.
(I'd add some newlines.)
kolibrie see t/operators/binding.t for an example
and t/README
13:37 wilx` is now known as wilx
xinming so, anyone here would check my "homework" if I did right? 13:46
;-)
svnbot6 r6323 | yiyihu++ | Add test for class method indirect notation.
fglock re bool::true and bool::false - A12 says they are subtypes of Int - should stringify to 1 and 0 then? 13:47
xinming fglock: I think they are. 13:48
autrijus er no 13:49
they are subtypes of bit
not Int.
and they, like, perl5, stringify to '1' and '' respectively -- at least for this week
fglock oops - bit, sorry 13:50
which means they are unboxed 13:51
autrijus aye.
theorbtwo wonders... 13:53
The only time I stringify true and false is when doing quick and dirty debugging prints.
Is that true of other people too?
fglock if I pointed a Ref to a Scalar, the Ref would point to the cell or to the Scalar? (what happens if the Scalar is rebind)
kolibrie xinming: in the kwid, the link should be L<S12/"Method"> # explanation here 13:54
fglock theorbtwo: I wished false stringified to 0
theorbtwo So do I.
fglock so I could see it while debugging 13:55
kolibrie xinming: or at least not have double angle brackets (<)
theorbtwo Nothing showing up tends to be confusing, and gives an undef-in-concat warning.
fglock theorbtwo: false is an empty string - not undef (I believe) 13:56
kolibrie xinming: or maybe I'm just confused
xinming kolibrie: hmm, I read the t/README And follow the example ;-) 13:57
fglock ?eval my $x=5; my $y=\$x; my $z=4; $x:=$z; say $x; say $y; 13:58
evalbot6 4 5 bool::true
kolibrie xinming: I see the example you followed - never saw that syntax before three minutes ago
xinming kolibrie: :-)
fglock so Ref refers to the cell? or \$x was dereferenced? 13:59
theorbtwo ?eval my $x=5; my $y=\$x; my $z=4; $x:=$z; [$x, $y]; 14:00
evalbot6 [4, 5]
autrijus fglock: Ref refers to the container.
fglock: the current semantic, namely deref even in scalar context, is wrong.
s/semantic/pugs implementation/
theorbtwo Oh, autrijus: 14:01
?eval 1 ~~ bool::true
evalbot6 bool::true
theorbtwo ?eval 3 ~~ bool::true
evalbot6 bool::false
theorbtwo Bug or feature?
svnbot6 r6324 | autrijus++ | * make the use of ::SELF and ::CLASS explicit in Perl6::Value to 14:02
r6324 | autrijus++ | pass use strict.
fglock "bit" has bool context (maybe)
thanks autrijus 14:05
xinming ?eval (1, 4, 66) >>+<< (1,2,3)
evalbot6 (2, 6, 69)
xinming ?eval (1, 4, 66) >>-<< 1;
evalbot6 (0, 3, 65)
autrijus woot, I repaired crude_repl! 14:20
theorbtwo: I think it's feature 14:21
theorbtwo: since both end stringify
theorbtwo: but smartmatch against an enum is iirc not specced. I may be wrong
dada ?eval ?3 ~~ bool::true 14:24
evalbot6 bool::true
dada ?eval ~bool::true 14:25
evalbot6 '1'
svnbot6 r6325 | autrijus++ | * crude_repl: `say 1+1` works properly. 14:28
autrijus actually, "say((say 1+1) + (say 1+1))" works too 14:29
fill in some of pugs/perl5/PIL-Run/lib/PIL/Run/PrimP5.pm
and we'll have an exciting perl6-compiled-to-perl5 runtime
fglock cool 14:30
autrijus fglock++ stevan++ putter++ # did all the hard work :D 14:31
fglock "substr" is a Str method, or a primitive, or both (boxed/unboxed versions of the same thing)? 14:32
autrijus substr is a multisub that can take str or Str. 14:34
svnbot6 r6326 | fglock++ | * perl5/ Value - bool::true is unboxed, stringifies as "bit"
fglock so I don't have to implement it in the Sub class
Sub => Str 14:35
autrijus no, you don't
the idea of multis is exactly that we can add method-like things outside classes
and hopefully escaping the OO hell
fglock how about map, grep? if I can remove these things from Value.pm, then it's done :) 14:36
xinming class C1 { has $.a; has $:b; }; my C1 $o .= new; is( $o.a(), undef, "testing the value for public accessor declared by has" );
hmm, how should I write the test for test the "non exist accessor" $o.b() ?
autrijus fglock: map and grep are multis too
xinming: fails_ok
xinming autrijus: by the way, It seems that if I use perldoc Test 14:37
I can get the Test module correctly.
autrijus xinming: that's perl5 Test :)
xinming the document are wrong totally.
autrijus not the p6 one
xinming autrijus: I knew that. 14:38
autrijus yeah, we need perldoc6 ;)
or p6doc
xinming No compatible subroutine found: "&fails_ok" 14:39
autrijus er, dies_ok
xinming .... 14:40
fglock so the only real problem in Value.pm is to clean up the "Ref auto-deref" hack 14:41
which needs AUTOLOAD I think 14:42
xinming if the feature hasn't been finished yet, How can I write the test for it? 14:47
hmm, I mean the feature hasn't been supported.
just like
?eval class C1 { has $.a = 1;}; 14:48
evalbot6 Error: unexpected "=" expecting trait, "handles", ";" or "}"
autrijus ponders visiting .jp to work with sasada-san 14:49
xinming is hungry for the answer ~~~ 14:51
autrijus oh
sorry
?eval eval 'class C1 { has $.a = 1;};'
evalbot6 undef
autrijus ?eval eval 'class C1 { has $.a = 1;}; 1'
evalbot6 undef
autrijus and then you can test ok()
see t/README 14:52
xinming I've read it, But the problem is.
after the eval_ok, I can't get the class name 14:53
autrijus so put that in eval too
xinming oh,ok, I understand 14:54
autrijus hm, I can't find a copy of YARV 0.3.0. sigh 14:57
svnbot6 r6327 | fglock++ | * perl5/ 'List' clean up - removed 'multisub' methods 15:06
xinming ?eval class C { my $.a; }; $.a = 1; 15:08
evalbot6 Error: Undeclared variable: "$?SELF"
xinming oops
?eval class C { my $.a; }; my C $o .=new ; $o.a();
evalbot6 Error: No compatible subroutine found: "&a"
autrijus xinming: yes, another todo bug 15:09
xinming I am still considering. If I need to write several classes for testing the attribute or a big class. :-) 15:10
Now, The attribute.t is almost done.
autrijus xinming++
xinming but a bit ugly maybe. :-)
I will.
svnbot6 r6325 | autrijus++ | * crude_repl: `say 1+1` works properly. 15:18
r6326 | fglock++ | * perl5/ Value - bool::true is unboxed, stringifies as "bit"
r6327 | fglock++ | * perl5/ 'List' clean up - removed 'multisub' methods
r6328 | yiyihu++ | Attribute test added. But for now, Just test the auto generated accessor. 15:23
r6329 | fglock++ | * perl5/ Value - updated TODO, docs, tests
xinming by the way, is there any editor now can highlight perl 6 syntax? :-) 15:27
theorbtwo There's a vi syntax file in scripts, IIRC.
xinming It's a pain to use emacs without syntax highlighting.
theorbtwo Yeah, my perl syntax hilighting got broken somehow, and it's a big PITA.
autrijus ?eval my $a = $a / 2 * BEGIN { $a = 10 }; 15:31
evalbot6 pugs: *** Undeclared variable: "$a" at <eval> line 1, column 26-34
autrijus hm, broken.
?eval my $a; $a = $a / 2 * BEGIN { $a = 10 }; 15:32
evalbot6 \50
autrijus good.
xinming autrijus: can the test file use if or for such blocks? 15:35
autrijus sure
xinming autrijus: Ok,then, I will shorten my test file. I just thought, We have to use the minimal grammer in perl. 15:36
autrijus no, it's okay to use other features :) 15:37
leo_ autrijus: thanks for your comments on p6i 16:02
autrijus hey leo :)
leo_ hey autrijus
autrijus sorry, the $a was out of scope in my example 16:03
but the basic idea is the same as with p5
?eval say { my $a; $a /= 2; BEGIN { $a = 10 }; $a }
evalbot6 <SubBlock(<anon>)> bool::true
leo_ I thought so :-)
autrijus ?eval say do { my $a; $a /= 2; BEGIN { $a = 10 }; $a }
evalbot6 Error: Undeclared variable: "$a"
autrijus heh
?eval my $a; $a /= 2; BEGIN { $a = 10 }; say $a
evalbot6 5 bool::true
autrijus better.
leo_ yep 16:04
autrijus the main thing I'm trying to ask is how BEGIN can remember its lexical context
my $a { my $b; BEGIN { $a = { say $b++ } } };
leo_ hmm 16:05
svnbot6 r6330 | iblech++ | * Usual svn props.
r6330 | iblech++ | * PIL2JS: JSAN integration.
r6330 | iblech++ | "use jsan:Number.Roman <to_roman>; say to_roman 42" works.
r6330 | iblech++ | * PIL2JS.js: .arity works on functions returned by native JS functions now.
r6330 | iblech++ | * Prelude::JS::JSAN: Added comments and
r6330 | iblech++ | &PIL2JS::Internals::use_jsan_module_noimp.
r6330 | iblech++ | * See the updated README for info about how the integration works and a small
r6330 | iblech++ | usage example.
Aankhen`` O_O 16:06
autrijus iblech++
leo_: currently the compiler is maintaining a runtime environment itself too 16:07
in pugs
which is distinct from the target runtime
so you may cross-compile to, say, PIR, but the compiler itself is running in perl5 16:08
leo_ bbl - feeding dogs 16:11
autrijus now I need to make "use perl5:DBI" work in crude repl :)
xinming ?eval class X { has $:x; method init_x { $:x = 100 }; method get_x { $:x };}; X.new.get_x; 16:19
evalbot6 \undef
xinming ?eval class X { has $:x; method init_x { $:x = 100 }; method get_x { .init_x(); $:x };}; X.new.get_x; 16:20
evalbot6 \100
fglock moves attention to crude_repl.pl - will try lazy lists 16:28
leo_ autrijus: the question is probably how dynamic the lexical context is
fglock thinks %h=1..Inf should be a lazy hash 16:31
autrijus fglock: I can't think of many uses of a lazy hash. 16:32
a lazy hash is called a function.
leo_: if it helps, every 'my' declaration can only occur once in a closure 16:33
with the same name, that is
and they are hoisted to the top
but still, BEGIN need to remember that. 16:34
leo_ so it seems that the scheme I've described in the mail should work
fglock TODO: find uses for lazy hash 16:35
autrijus fglock: a lazy hash is really what a function is... :)
theorbtwo Well, a unary function. 16:36
autrijus er, a hash can be shaped with multikey
fglock so why not? you can use a lazy hash wherever you use a function 16:37
autrijus fglock: well, a lazy hash is the & sigil
and a strict hash is the % sigil
theorbtwo G'point, autrijus, forgot about that. 16:38
fglock where "tie" is going to be implemented? (Value/Scalar.pm ?) 16:40
I mean Container/Scalar.pm
hi stevan
stevan hey fglock
fglock stevan: is it possible to AUTOLOAD methods in MetaModel 1 ? 16:41
stevan fglock: not right now
but I think it could be made to do so
fglock maybe using Perl5 AUTOLOAD, and then creating methods using the metamodel 16:42
I'm trying to find out how to dispatch method calls from Ref to the referred object 16:43
stevan fglock: I think if WALKMETH were to check for an 'AUTOLOAD' method
spinclad seem to me a lazy hash would be a memoized function 16:44
stevan and to always use that by default
this would produce the desired result
fglock stevan: do you mind if I try to implement a basic AUTOLOAD? 16:46
stevan fglock: I am testing something right now
fglock cool 16:47
stevan however, always feel free to hack into the metamodel
my code is your code :)
fglock :)
stevan fglock: I am going to try to make the Metamodel 2.0 be mostly backwards compatible 16:48
however, it will have proper class object, so that will be one big change
16:49 Maddingue__ is now known as Maddingue
fglock crude_repl.pl 'say 1' - got "Odd number of elements in hash assignment at ../Perl6-MetaModel/lib/Perl6/Object.pm line 36" 16:55
autrijus fglock: hm, weird I fixed that 16:59
svnbot6 r6331 | putter++ | hack.pod: Added editing advice: perl6.vim, and perl-mode works better than cperl-mode. 17:00
fglock I'll do an update
works - thanks! 17:01
autrijus fglock: tie is a scalar method yes.
fglock autrijus: it stores an object ref in the container, and then dispatch fetch, store, etc to it? 17:02
autrijus yes. 17:03
(it's rather in the cell level)
because you only get that with a "is Tieable" cell 17:04
and you can rebind tieableness away
again look at the picture :)
svnbot6 r6332 | autrijus++ | * shut off uninitialized warnings in numifying values 17:06
fglock (looking at the picture) the Scalar id is a cell thing - I must correct this 17:09
each Array/Hash element have it's own cell? which means I can do ' $a[10] := $x ' 17:10
autrijus yup 17:12
each Array element is essentially its own scalar container.
that's specced quite clearly 17:13
ooh, new exists($a) semantics. (testing whether a container is currently bound to a cell) 17:15
svnbot6 r6333 | putter++ | PIL-Run minor fixes. 17:20
r6333 | putter++ | crude_repl.pl: debug and return values now print correctly.
r6333 | putter++ | TODO: updated invocation example. autrijus++
r6333 | putter++ | PrimP5.pm: minor refactoring. 17:21
r6334 | putter++ | PIL-Run/TODO: Update, removing obsolete items.
putter hi folks.
Aankhen`` Hiya.
fglock hi putter
cells are tieable by default?
and mutable 17:22
stevan fglock: do you need AUTOLOAD for class methods? or just instance methods?
fglock stevan: only instance methods
stevan fglock: good, because it is problematic for class methods 17:23
xinming ?eval my $classref = class { has $.x; has $.y; }; 17:24
evalbot6 Error: No compatible subroutine found: "&class"
xinming :-S
hmm, will this be allowed in perl 6? 17:25
autrijus fglock: no, nontieable by default
fglock: and mutable by default
the immutable cells are typically constructed via
promotion from values
my $x := 3;
fglock values have cells? what if I tied an Array - does it have a base cell that will be tied? sorry for the confusion 17:28
svnbot6 r6335 | putter++ | Delete obsolete throwaway perl5/PIL-Run/lib/PIL/Run/Type/Num.pm and Str.pm.
xinming ?eval (has) 17:31
evalbot6 Error: No compatible subroutine found: "&has"
xinming ?eval qw(has)
evalbot6 'has'
xinming ?eval (my) 17:32
evalbot6 Error: No compatible subroutine found: "&my"
xinming ?eval (my $a)
evalbot6 Error: Undeclared variable: "$a"
autrijus fglock: an array cell holds pointers to a number of scalar containers 17:37
fglock: and optionally a tied object.
iblech: 'sub foo' hoisting is OK'ed by larry 17:46
stevan fglock: r6337 has full AUTOLOAD support
autrijus it's looking better and better :)
svnbot6 r6336 | putter++ | ApiX.pm: p6_to_X no longer take or return multiple values. 'say 1 + 2' now works.
r6337 | Stevan++ | Perl6::MetaModel 1.0 -
r6337 | Stevan++ | * AUTOLOAD implemented for fglock++
r6337 | Stevan++ | - added test file for this
stevan fglock: it works, for the most part, like perl 5 AUTOLOAD
except you have to call AUTOLOAD($self) to get the method label 17:47
autrijus that means we can do away with the need for native runtime supprot for strange foo like
(?$a = 3) := foo()
which is strange foo indeed
fglock thanks stevan!
stevan fglock: no problem :)
fglock: see the t/14_AUTOLOAD.t file for examples 17:49
stevan goes back to $work
fglock team work++ 17:50
xinming autrijus: is for allowed in eval_ok? 17:52
svnbot6 r6338 | fglock++ | * perl5/ Scalar - cell .id, half-baked tie interface
r6339 | putter++ | STATUS: tweak Rules section.
17:52 wilx` is now known as wilx
svnbot6 r6340 | putter++ | EvalX.pm: Added PStmt. 'say 3;say 4' works. 18:01
fglock stevan++ I've got Ref working with AUTOLOAD 18:03
autrijus xinming: sure, but avoid eval_ok if you can 18:06
xinming: lives_ok {} 18:07
xinming: ok
ok(eval'')
is both better
because eval_ok can't see 'my' variables
xinming autrijus: hmm, Are you free for now? 18:11
hmm, maybe not, I will try myself,
bbl.
svnbot6 r6341 | fglock++ | * perl5/ Value - Ref uses AUTOLOAD to auto-dereference 18:12
autrijus sorry, I was distracted by accidentally stumbing upon www.my-ebooks.net 18:16
xinming ?eval eval 'class C { has $:b; method { $:b }; }; my C $o .= new; 18:26
evalbot6 Error: unexpected "'" expecting block construct, ":", "\\", "$!", "$/", "$", "'", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
svnbot6 r6342 | putter++ | crude_repl.pl: Improved repl commands.
r6342 | putter++ | Prim5.pm: Added infix:<~>. :l ../../t/01-sanity/01-tap.t now works.
r6343 | fglock++ | * perl5/ Scalar - uses AUTOLOAD to auto-dereference
xinming ?eval eval 'class C { has $:b; method get_b { $:b }; }; my C $o .= new;
evalbot6 Error: unexpected "'" expecting block construct, ":", "\\", "$!", "$/", "$", "'", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
xinming ?eval eval 'class C { has $:b; method get_b { $:b }; }' my C $o .= new;
Aankhen`` Whoa... OpenFoundr looks different.
evalbot6 Error: unexpected "m" expecting operator, ":", ",", term postfix, postfix conditional, postfix loop, postfix iteration, ";" or end of input
Aankhen`` OpenFoundry, even. 18:27
xinming ?eval eval 'class C { has $:b; method get_b { $:b }; }'; my C $o .= new;
evalbot6 \C.new();
putter Aankhen``: yes. improved vcs browsing. 18:29
Aankhen`` It looks unfinished...
xinming ?eval eval 'class C { has $:b = 100; method get_b { $:b }; }'; my C $o .= new; 18:30
evalbot6 \C.new();
xinming ?eval eval 'class C { has $:b = 100; method get_b { $:b }; }'; my C $o .= new; $o.get_b;
evalbot6 Error: No compatible subroutine found: "&get_b"
putter unfinished? 18:31
xinming ?eval eval 'class C { has $:b = 100; has $.a := $:b; method get_b { $:b }; }'; my C $o .= new; $o.get_b;
evalbot6 Error: No compatible subroutine found: "&get_b"
Aankhen`` Yes.
Header looks fine... "Summary, Tracker, Wiki [...]" looks fine... rest of it is styled in such a way that it looks unstyled.
xinming ?eval class C { has $:b = 100; has $.a := $:b; method get_b { $:b }; }; my C $o .= new; $o.get_b; 18:32
evalbot6 Error: unexpected "=" expecting trait, "handles", ";" or "}"
xinming ?eval my $str = "123"; "hello $str".say; 18:38
evalbot6 hello 123 bool::true
xinming ?eval my $str = "123"; "hello $str1".say;
evalbot6 Error: Undeclared variable: "$str1"
xinming ?eval my $str = "123"; "hello {$str}1".say;
evalbot6 hello 1231 bool::true
xinming ?eval my $str = "123"; eval {"hello {$str}1".say}; 18:39
evalbot6 'SubBlock(<anon>)'
xinming ?eval my $str = "123"; eval qq,"hello {$str}1".say,;
evalbot6 hello 1231 bool::true
putter Aankhen``: I suspect that's the style... ;-) 18:40
Aankhen`` makes low noises of dissent. 18:41
autrijus seen on #ruby-lang: 18:42
jabbot autrijus: I havn't seen on, autrijus
autrijus <autrijus> "perl6 is complete not when there's nothing to take away, but when there's nothing left to add"
putter Aankhen``: :) 18:45
svnbot6 r6344 | fglock++ | * perl5/ Scalar .id and .tie pass all tests
putter "Perfection is reached, either when there is no longer anything to add, or when there is no longer anything left to take away." (E. Aint-Xupery) www.vendian.org/mncharity/Temporary.../work.html ;-) 18:47
err, hmm, top page is www.vendian.org/mncharity/dir2/misdesign/ 18:48
fglock what's the docs/AES for auto-dereferencing? 18:50
svnbot6 r6345 | fglock++ | * perl5/ Scalar - shorten TODO list :)
autrijus fglock: search p6l for hackathon notes
fglock: it's S02 I think... 18:51
it just says scalar ref to array and hash container need to autoderef
scalar-to-scalar remains unspecced for the longest time
then at hackathon larry agreed to zeroderef -- i.e. no deref for scalar refs -- for now.
fglock 'Lazy' is a 'type' of 'Array'? (ie. the same class) 18:57
svnbot6 r6346 | fglock++ | * perl5/ Value - Ref - only Hash and Array autoderef
fglock or a type of List? 18:58
Aankhen`` G'night.
xinming ?eval my $.t = 1; $.t; 18:59
evalbot6 Error: Undeclared variable: "$?SELF"
fglock good night Aankhen
``
xinming hmm, Is it a bug or it should be a special case?
the variable name with a '.' at the beginning.
Aankhen``: Good night.
fglock ?eval my $?SELF; my $.t = 1; $.t; 19:00
evalbot6 \undef
putter hmm, let's see, how does one assign an arbitrary value to an existing Perl6::Value::Int... 19:03
fglock putter: you can't assign to Int
you have to use 'Scalar'
Int is just an object oriented number, like '3' 19:04
autrijus mmm flgr.0x42.net/ruby.js/ 19:05
(ruby prelude in js)
putter hmm. but Int has increment and decrement methods... shouldnt they be... oh, they are aren't mutators. ok.
fglock $scalar++ calls 3++ 19:06
stevan thats it,.. ruby is just too cool,.. I'm switching
fglock this should have been implemented as a multisub 19:07
autrijus stevan: it's just the runtime, there's no compiler
but may be of interest :) 19:08
xinming: "my $.x" outside class is definitely not allowed
putter re ruby.js, oooo, neat! unfortunately last time I checked, there was no ruby equivalent of pypy, ie, a rewrite of the ruby C core in ruby. 19:09
autrijus there's one early effort based on RACC
but it didn't really take off.
but now with YARV, it's much easier
since there's a VM instruction set
putter and ripper is slowly maturing, so one can use that until one has a parser. 19:10
autrijus however YARV is still quite early -- but already runs miniruby -- which is already better than parrot/perl :)
putter ;)
autrijus but the Pneuma and Theos is on our side! 19:11
stevan and Chaos!!!!
autrijus (a #ruby-lang folk just bought that shirt, claiming it's the geekest shirt ever)
putter lol
stevan I think they might be right :) 19:12
autrijus beating even this:
www.spreadshirt.com/shop.php?op=art...729738#top
stevan however, we can surely top it
meppl :D
stevan www.spreadshirt.com/shop.php?op=art...752302#top 19:13
now that is geeky
McCarthy rules!
autrijus yeah, that got mentioned too
xinming found painful to understand perl 6. T_T
autrijus but still pneuma beats it all
stevan I think i like it in silver better : www.spreadshirt.com/shop.php?op=art...752288#top
autrijus: we need to do a metamodel 2.0 with chaos involved
autrijus stevan: sure! 19:14
xinming: it gets better the more you get used to it :)
Odin- Isn't that kinda like physical pain?
autrijus I don't know. I never got used to physical pain 19:15
stevan hmm,.. should I get autrijus magnets (www.cafepress.com/autrijus.28686100) or buttons (www.cafepress.com/autrijus.28686099) 19:16
fglock trying to find out what does 'returns Lazy' mean 19:17
Odin- has heard that eventually endorphine response drowns out the pain... 19:18
Meaning that something that's actually very hurtful can start feeling good...
PerlJam fglock: I think that Lazy is a List that isn't all there yet. Or it's there but only on demand.
fglock PerlJam: but List is lazy by default, so it just means 'List'? 19:19
autrijus damnit, my hd just failed on me 19:22
autrijus starts the long painful process of dd
obra Again?
autrijus yeah.
there's something about my usage pattern that makes hard disks unhappy. 19:23
I wonder why.
obra I wonder if it's the frequent spinning whilst walking. 19:24
how often do you drop it? 19:25
fglock ok found it in S06 - List=(Lazy|Eager), but Lazy is the default. Lazy and Eager are type names.
re S06: Traits are roles stored in the cell? 19:30
autrijus obra: very often
like, twice a day
usually on some semisoft surface though 19:31
putter thinks autrijus needs a milspec laptop... 19:33
stevan Panasonic used to make a ultralight ruggedized laptop
I used to drool over it on www.dynamism.com 19:34
not sure if they still make it though
obra stevan: the toughbooks. they still do 19:36
putter I wonder if you can boot of a card, and then just use a solid-state or tiny-drive card?
stevan catalog2.panasonic.com/webapp/wcs/s...upId=12871
obra autrijus: perhaps you want a lenovo with a gravity sensor 19:37
putter www.panasonic.com/business/toughbook/home.asp
stevan hey autrijus, they even have outdoor readable screens,.. so you can go outside :)
fglock reimplements tieable scalars
autrijus yow 19:40
completely died
I shouldn't run that dd
:-((
xinming found someone has implemented the attribute test. 19:41
autrijus oh well 19:47
I'll see what I can tomorrow to salvage at least my ~/.svk/local
fglock my $x does Tieable; my $y := $x; tie $y, $o --> is this an error? $y is not tieable
autrijus local branches are no good when hard disk fails
fglock: "my $x is Tieable"
"does" is for classes
fglock: tieableness is on the cell 19:48
fglock: the := points $y to the same cell
so tie suceeds
it's consistent with the perl5 *y = *x semantics 19:49
I think.
fglock I'm trying to find out how to make 'my $x is Scalar is Tieable' to set the scalar cell to tieable 19:50
autrijus it should probably use a Cell::Tieable or something
sorry I can't be of much help; my mind is reeling from the sudden shock :)
I think sleep is for the best
autrijus waves &
xinming autrijus: Good night
fglock time zones-- it's 17:00 here 19:51
xinming It 03:52 Aug 19 here. ;-) 19:52
Odin- 19:52 GMT
svnbot6 r6347 | yiyihu++ | There is already a attributes test in t/oo/attributes, I will learn more and improve that one instead of reinventing the wheel.
xinming Maybe It's the same as autrijus'
subversion is an amazing software. :-) 19:53
Odin- Aha! You are a dangerous subversive! 19:55
xinming ...
Odin- What? You use subversion! :p
xinming well, don't say that please. You can say I am a newbie rather than subversive.
Odin- is being silly, it should be noted. 19:56
putter Good night autrijus. Sorry for the loss. 19:58
fglock re metamodel: how can I make an object instance to do/be a role? 20:00
xinming fglock: I thnk the grammar will be role this_role { is that_class }; class that_class { bla; bla; }; 20:02
fglock xinming: I can make a 'Class' do a Role, but what I need is that an 'Object' do a role - I don't know if that's possible 20:04
xinming fglock: sorry, I didnt read the question carefully. :-S 20:06
fglock this is actually a 'mixin' - I'll look by this name
putter tries to remember how to do interpolated symbol names in p5... my $x; my $name = 'x'; print $::($name); nope, err... 20:11
xinming putter: do you mean this? 20:26
our $x = "string"; my $name = "x"; $$name = "haha"; print $x;
?eval our $x = "string"; my $name = "x"; $$name = "haha"; print $x; 20:28
evalbot6 stringbool::true
xinming ?eval our $x = "string"; my $name = "x"; $$name = "haha"; $x.say;
evalbot6 string bool::true
xinming not work in perl 6 20:29
I think I should say pugs. :-) 20:30
putter xinming: yes! thank you. :) 20:36
Khisanth did that change to $()? 20:41
xinming symbolic reference won't work with the variable declared by "my". 20:42
fglock ?eval my $n=1; say ::($n) 20:43
evalbot6 1 bool::true
fglock :)
xinming ?eval my $n=3; say ::($n) 20:44
evalbot6 3 bool::true
fglock ?eval my $n=4; say ::($n)
evalbot6 4 bool::true
xinming ?eval our $x = "string"; my $name = "x"; $::($name) = "haha"; $x.say;
evalbot6 haha bool::true
xinming :-)
I like haha, better than giggle. 20:45
?eval my $x = "string"; my $name = "x"; $::($name) = "haha"; $x.say; 20:53
evalbot6 haha bool::true
xinming ?eval my $x = "string"; my $x = "test"; my $name = "x"; $::($name) = "haha"; $x.say;
evalbot6 haha bool::true
xinming ?eval my $x = "string"; my $x = "test"; my $name = "x"; $::($name) = "haha"; $OUTER::x.say; 20:54
evalbot6 (no output)
xinming How to access the first $x? or It's dead.
fglock ?eval my $x = "string"; { my $x = "test"; my $name = "x"; $::($name) = "haha"; $OUTER::x.say; } 20:55
evalbot6 string bool::true
xinming ?eval 25_6 21:00
evalbot6 256
putter iblech: ping? 21:02
xinming ?eval sub tmp { :key .("value of pair"); 21:04
evalbot6 Error: unexpected end of input expecting end of input, ";", statements or "}"
svnbot6 r6348 | putter++ | PIL-Run variables are now Scalar. t/01-sanity/02-counter.t passes.
xinming ?eval sub tmp { :key("value of pair"); 21:05
evalbot6 Error: unexpected end of input expecting end of input, ";", statements or "}"
xinming ?eval sub tmp { :key("value of pair")};
evalbot6 undef
xinming ?eval sub tmp { :key("value of pair") }; tmp();
evalbot6 ('key' => 'value of pair')
fglock putter++ 21:06
xinming ?eval %hash<Mon Tue Wed Thu Fri Sat Sun> = 1..7; 21:09
evalbot6 Error: Undeclared variable: "%hash"
xinming ?eval my %hash<Mon Tue Wed Thu Fri Sat Sun> = 1..7; 21:10
evalbot6 Error: unexpected "<" expecting word character, "::", trait, "=", ".=", ":=", "::=", ";" or end of input
fglock putter - "my $i=1; say $i.str" gives "Method not found: .apply" 21:11
21:11 wilx` is now known as wilx
putter fglock: method invocation!?! ha! there are no objects. there are no methods. the Subs are even Subs yet. ;-) 21:14
(well, I suppose Int et al has sucked in Objects, but the rest is true:) 21:15
fglock If $i is Scalar, then $i->str works at the perl level, no problem
you already have objects! 21:16
putter yes, but '$i.str' in 'say $i.str' is a method invocation. which the runtime knows nothing about as yet. 21:17
and Sub is still the old non-metamodel stub. and we dont have Macros, so && and || dont work. 21:18
hmm, I'm currently puzzling over Macros. Does the MM have Macro? 21:19
xinming why the "=~" is renamed to "~~" please? 21:20
fglock no. I think macros are expanded at compile-time
putter suspects a rigid compile-time vs run-time split will cause much pain. 21:23
xinming anyone here would help? :-S
tell me why the =~ operator is renamed to ~~, in synopsis, It doesn't tell you much. 21:24
?eval (3,8,2,9,3,8) >>-<< (1, 2, 3);
evalbot6 (2, 6, -1, 9, 3, 8)
fglock xinming - don't know 21:26
xinming thanks anyway. ;-) 21:27
theorbtwo Because it's a lot more then just =~ now.
And it's symmetric. 21:28
PerlJam It's also really confusing if you happen to read the Exegeses now as E03 has ~~ as an xor operator ;) 21:29
xinming my @x = ( 1, 2, 3 ); my @y = (10, 20, 30); for zip( @x, @y ) -> $a, $b { "$a~$b".say }; 21:30
?eval my @x = ( 1, 2, 3 ); my @y = (10, 20, 30); for zip( @x, @y ) -> $a, $b { "$a~$b".say };
evalbot6 1~10 2~20 3~30 undef
putter fglock: even though most macros are expanded at compile-time, (1) compile-time in perl has stuff running (2) macros participate in namespaces (packages) and scoping, (3) some macros (eg, regex ones) need to be available at runtime. So I think the MM has to include macros.
xinming ?eval my @x = ( 1, 2, 3 ); my @y = (10, 20, 30); for zip( @x, @y ) -> $a, $b { $a~$b.say };
evalbot6 10 20 30 undef
xinming ?eval my @x = ( 1, 2, 3 ); my @y = (10, 20, 30); for zip( @x, @y ) -> $a, $b { ($a~$b).say };
evalbot6 110 220 330 undef
xinming hmm, I am sorry for trying the evals here, But the pugs readline doesn't seem to work very well for long terms. 21:31
fglock xinming: for long expressions, you can type in a text editor and execute using 'pugs filename' 21:33
putter: macros should be available inside $str.eval, which is compile+run time 21:34
coral did anyone identify what in evalbot was breaking any().pick? 21:35
xinming geoffb: hmm, In fact, What I mean, is the expressions not too long, And not too short. :-) 21:36
fglock: hmm, In fact, What I mean, is the expressions not too long, And not too short. :-)
typo. :-)
fglock coral: don't know about that - but autrijus made some fixes today 21:38
I guess I can't implement Scalar 'tieable' without traits. I'm going to work on the other container types. 21:40
xinming ?eval my $x; my $x; 21:51
evalbot6 undef
Aankhen`` "Morning".
xinming Aankhen``: morning. ;-)
my $x; my $x; is a bug. hmm, Did anyone write the test for this?
Aankhen`` 3:20 AM is a rather indecent time to be up.
xinming :-), here is 05:53 21:52
?eval my @x = ( 1, 2, 3 ); my @y = (10, 20, 30); for zip( @x, @y ) -> $a, $b { ($a~$b).say }; 21:55
evalbot6 110 220 330 undef
xinming ?eval my @x = ( 1, 2, 3 ); my @y = (10, 20, 30); for zip( @x; @y ) -> $a, $b { ($a~$b).say };
evalbot6 Error: unexpected "f" expecting ";", statements or end of input reserved word
xinming another bug. :-) 21:56
Khisanth what is the ; suppose to do there? 21:57
xinming hmm, maybe not the bug. just a typo in synopsis.
Khisanth: hmm, Maybe a typo in synopsis 21:58
Khisanth don't think so
xinming see S04
Khisanth: and see S03
Khisanth xinming: S09 actually :) 22:02
xinming Khisanth: that's for multi dimension array. not for zip operator I think 22:04
Khisanth () is a bracket thingy:) 22:05
xinming ?eval given 1 { when 1 { 'number'.say }; when "1" { 'string'.say } };
evalbot6 number bool::true
xinming ?eval given 1 { when "1" { 'number'.say }; when "1" { 'string'.say } };
evalbot6 number bool::true
xinming ?eval given "1" { when 1 { 'number'.say }; when "1" { 'string'.say } }; 22:06
evalbot6 number bool::true
xinming ?eval given "1" { when "1" { 'number'.say }; when 1 { 'string'.say } };
evalbot6 number bool::true
xinming ?eval given 1 { when "1" { 'number'.say }; when 1 { 'string'.say } };
evalbot6 number bool::true
Aankhen`` leaves. 22:09
Bye guys.
I shall miss all the scintillating and way-too-intelligent-for-me conversations in this channel. :-)
But oh well, I'll be back on the 28th. 22:10
Ciao.
putter Bye Aankhen``! 22:15
Look forward to your return.
xinming putter:
putter: could you please tell me how to do the match exactly in the above example?
?eval given 1 { when 1 { 'number'.say }; when "1" { 'string'.say } }; 22:16
evalbot6 number bool::true
xinming ?eval given "1" { when 1 { 'number'.say }; when "1" { 'string'.say } };
evalbot6 number bool::true
putter xinming: sorry, i'm late and scrambling to get out the door. 22:21
bye all
the approach currently taken by EvalX needs to be altered. talk later.
xinming putter: bye.
?eval given "1" { when 1 { 'number'.say }; when all(( $_.ref eq "Str", "1")) { 'string'.say } }; 22:40
evalbot6 number bool::true
Khisanth ?eval given "1" { when "1" { 'string'.say }; when 1 { 'number'.say } }; 23:07
evalbot6 string bool::true
Khisanth ?eval "1" ~~ 1
evalbot6 bool::true
coral what 23:22
er, hi purple
?eval any(3,1,1,1,1,1,1).pick
evalbot6 3
coral ?eval any(3,1,1,1,1,1,1).pick
evalbot6 3
coral ?eval any(3,1,1,1,1,1,1).pick
evalbot6 3
coral hmm, i think it's still not fixed in evalbot 23:23
autrijus did say that the bug was evalbot-specific
wilx What does .pick do?
Khisanth which revision is it running anyway?
coral collapses the quantum eigenstate
(in different words)
?eval (3|4).pick
evalbot6 3
coral sometimes that would return 4
?version 23:24
not sure how to make evalbot evidence its version
Khisanth one of those globals but I don't know the name
?eval map { (3|4).pick } 1..10 23:25
evalbot6 (3, 4, 4, 3, 3, 4, 4, 3, 4, 3)
Khisanth hmm
so what is up with the 3 and the 1's?
theorbtwo ?eval scalar(any(3,1,1,1,1,1,1).pick) 23:30
evalbot6 1
theorbtwo ?eval scalar(any(3,1,1,1,1,1,1).pick)
evalbot6 1
theorbtwo ?eval scalar(any(3,1,1,1,1,1,1).pick)
evalbot6 1
theorbtwo ?eval join ', ', (any(3,1,1,1,1,1,1).pick)
evalbot6 '3'
theorbtwo ?eval join ', ', (any(3,1,1,1,1,1,1).pick)
evalbot6 '3'
theorbtwo ?eval join ', ', (any(3,1,1,1,1,1,1).pick)
evalbot6 '1'
theorbtwo ?eval join ', ', (any(3,1,1,1,1,1,1).pick)
evalbot6 '3'
theorbtwo ?eval my @res; for (0..10) push @res, (any(3,1,1,1,1,1,1).pick); @res 23:31
evalbot6 Error: Pattern match failure in do expression at src/Pugs/Eval.hs:383:4-12
theorbtwo ?eval my @res; for (0..10) {push @res, (any(3,1,1,1,1,1,1).pick)}; @res;
evalbot6 [3, 1, 1, 3, 3, 3, 3, 1, 3, 1, 3]
theorbtwo This seems a bit unlikely.