gnuvince ?eval 1..10:by(2) 00:01
00:01 evalbot_r13755 is now known as evalbot_r13761
evalbot_r13761 Error: Unexpected ":" expecting "_", fraction, exponent, term postfix, comment, operator, statement modifier, ";" or end of input 00:01
00:01 dvorak left 00:24 mako132_ joined 00:43 dduncan joined 00:45 dduncan left 00:53 vel joined 00:59 cventers joined, cventers left, cventers joined 01:10 cventers joined, cventers is now known as cventers_ 01:11 Salzh joined 01:12 mako132_ joined, szabgab joined 01:13 cventers_ is now known as cventers 01:14 cventers is now known as cventers__, cventers__ is now known as cventers[a] 01:16 cventers[a] is now known as cventers__, cventers__ is now known as cventers_ 01:18 cventers_ is now known as cventers 01:19 cventers is now known as cventers_, cventers_ is now known as cventers__, cventers__ is now known as cventers[a] 01:20 cventers[a] is now known as cventers
TreyHarris argh... i need to figure out if i can make the perl debugger accept colons before its commands (:x, :q, :R, etc.), or if i can get ghci and Pugs to take just q, etc. i am constantly using colons in perldebug and no colons in pugs and ghci 01:27
stevan seen ingy 01:42
jabbot stevan: ingy was seen 1 days 8 hours 36 minutes 48 seconds ago
stevan ingy: pingy
01:59 shobadobs joined
audreyt ingy: can you cut 0.19 of Module::Compile for release? I've committed all neccessary stuff into the kwiki repo that fixed the bug reported by fglock (with tests) 02:07
lambdabot audreyt: You have 3 new messages. '/msg lambdabot @messages' to read them.
audreyt @tell ingy can you cut 0.19 of Module::Compile for release? I've committed all neccessary stuff into the kwiki repo that fixed the bug reported by fglock (with tests)
lambdabot Consider it noted.
clkao hi audreyt 02:09
02:13 buffer joined 02:16 Limbic_Region joined, ashleyb joined
Limbic_Region salutations all 02:18
audreyt @tell lanny the bug was because implicit vars weren't ordered lexographically anymore! 02:19
lambdabot Consider it noted.
audreyt @tell lanny {$^a <=> $^b} were erroneously taking the params in the wrong order. thanks for spotting this before release!
lambdabot Consider it noted.
audreyt Limbic_Region: greetings
Limbic_Region audreyt - there are still a few tests that blow up with the windows error I told you about earlier 02:20
but that has been going on for some time
I just accepted it
would you like me to run a smoke and give you the exact test names?
audreyt yes, please 02:24
Limbic_Region running now 02:25
and I still have to delete several tests before smoking as they hang (already hivemindered)
audreyt k 02:27
Limbic_Region what did you think about leo taking a less active role in parrot? 02:31
audreyt I don't think about parrot much these days... 02:33
except when attempting (and failing) to fix embedding
not specific to parrot, though, I think a $job where one can deploy one's active free software proejct is a real plus 02:34
even though it may look like a distraction at first
I know that Dan Sugalski (and parrot) benefitted from his deployment of parrot in his prev $job
Limbic_Region oh definately
audreyt and jifty/pugs/ghc all benefitted from my day $job
Limbic_Region I was just thinking that it was a much overdue "break" 02:35
audreyt ^C
yeah. although if one's job was utterly unrelated, then the FOSS side may suffer 02:36
Limbic_Region well, that depends on if you are looking at long or short term benefits
being away totally for a while can give you perspective and renewed energy 02:37
audreyt that's true too
Limbic_Region assuming you come back - you may have more to offer than if you had stayed
audreyt in any case leo deserves a sabbatical :)
Limbic_Region yep - that was my thinking though I hope code monkeys step up to fill the gap 02:38
audreyt there's certainly a lot of new PDDs to implement recently...
Limbic_Region yeah, I saw that
going to try to build ghc on cygwin again tomorrow - afraid simon and I are talking past one another 02:39
audreyt oy
#ghc may help
Limbic_Region it is strangely quiet
audreyt I've found them really helpful
yeah, it only rises to action when someone raises some bork
TimToady rehi
Limbic_Region but I think the issue is that things *should* be getting further along then they are
audreyt TimToady: greetings! 02:40
TimToady: quick question. I realized that
Limbic_Region so I probably need to find out why they aren't before squawkig again
audreyt 1 < any(@x) 10
1 < any(@x) < 10
cannot work the same way as
1 < ($j = any(@x)) < 10
i.e. the latter has no way to rewrite into a grep
TimToady whoever is documenting min and max should probably put them near sort and cmp and eqv with similar parameterization
audreyt and since it's a syntactical rewrite it doesn't matter if it occurs in the first two operand pos or not 02:41
pasteling Someone at pasted "S09 patch" (45 lines, 1.6K) at
audreyt so I patched S09 (see above) to say that
02:42 lanny joined
TimToady somewhere I proposed that that be 1 < those(@x) < 10 instead 02:42
audreyt where those() is also syntactic?
TimToady to make the desire for grep rewrite explicit
Limbic_Region lanny - did you see TimToady's comment from a minute ago?
audreyt what do you think about
TimToady and leave any() alone
audreyt 1 < list(@x) < 10
TimToady might work
audreyt those() doesn't anything in isolation troubles me
TimToady we're getting dangerously close to list comprehensions here. :)
lanny Limbic_Region: Missed it. There's always a delay between the logs and logging on through the browser irc 02:43
lambdabot lanny: You have 2 new messages. '/msg lambdabot @messages' to read them.
Limbic_Region lanny - [22:41] <TimToady> whoever is documenting min and max should probably put them near sort and cmp and eqv with similar parameterization
I know you worked on sort.t
audreyt TimToady: we'll just call it "list() comprehension"
TimToady lanny: was it you asking about min/max?
lanny Got it. :)
Yes. There's a lot of tests on them and Damian mentioned them in p.p6.lang. 02:44
TimToady audreyt‼
svnbot6 r13762 | audreyt++ | * Fix extraction of {$^a+$^b} so it's sorted lexographically
r13762 | audreyt++ | again. (It was erroneously sorting with internal IDs.)
r13762 | audreyt++ | lanny++ for noticing this.
lanny Wasn't sure about just going in to Functions.pod and fixing up whatever I thought was out of whack though. I'll do the needful.
audreyt TimToady??
TimToady if something's missing, better to whack it in somewhere--can always be moved later. 02:45
audreyt: was just commenting on your list() comprehensible remark
lanny I noticed it but the tests were what did the work. I'm just glad it wasn't in op1MinMax. I must have looked through the code for 30 minutes trying to find the bug.
@messages 02:46
lambdabot audreyt said 27m 28s ago: the bug was because implicit vars weren't ordered lexographically anymore!
audreyt said 27m 5s ago: {$^a <=> $^b} were erroneously taking the params in the wrong order. thanks for spotting this before release!
svnbot6 r13763 | audreyt++ | * Pugs.Prim.List: Make max/min not compare the first element twice. 02:47
TimToady min/max should take exactly same args as sort 02:48
audreyt TimToady: I take that I can check it in? I'll move it from S09 to S02 where it belongs
Limbic_Region audreyt - the first test that causes Win32 to have the windows level error is t/regex/from_perl6_rules/codevars.t or combchar.t (it happens somewhere in between the two)
TimToady ci.WHICH? 02:49
Limbic_Region the second is t/regex/p6regex/p6regex.t
02:49 weinig is now known as weinig|sleep
lanny TimToady: min/max args -- noted 02:49
Limbic_Region err, let me hiveminder these instead - you are busy
TimToady audreyt: ci the list() thing? 02:50
if so, yes.
audreyt thx :) 02:52
02:54 mauke_ joined
Limbic_Region ok, hivemindered 02:58
TimToady audreyt: did you notice that .pick merely defaults to .pick(1) now? 02:59
and that .pick(*) is a shuffle?
Limbic_Region ?eval say (1..10).pick 03:01
evalbot_r13761 OUTPUT[9 ] Bool::True
TimToady ?eval (^100).pick
evalbot_r13761 26.0
audreyt TimToady: no, that's cool 03:03
TimToady I keep wondering if there's some way to refactor the 0-or-1-ary rand into something saner.
audreyt also, 03:04
$x = list(@y) ~~ {...}
TimToady make people write 1.rand maybe.
audreyt should comprehend as well
the list-context constraint feels wrong here
TimToady those @x that match works there
if that's what it means 03:05
audreyt yup
$x = @y.grep:{...}
same as this
ok, implemented and specced and tested
TimToady $x = grep(@x) ~~ {...}
audreyt lunch, bbiab
03:09 mauke_ is now known as mauke, Limbic_Region joined
svnbot6 r13764 | audreyt++ | * Implement "list() comprehension": 03:14
r13764 | audreyt++ | pugs> 1 < list(1,1,2,3,5,8) < 8
r13764 | audreyt++ | (2, 3, 5)
lanny TimToady: On pick() is there any reason not to allow @a.pick(*, :replacement)? 03:16
Ooh. Well that was a bad example. @a.pick(7, :replacement); 03:17
TimToady seems like that would be hyperable somehow
but that would certainly be more readable in some sense. 03:18
wolverian * seems quite hyper already to me, intuitively
TimToady well, @a.pick(*, :repl) would presumably give you an eternal supply h
lanny R has a sample() that will take a vector and do random selection with or without replacement. Very useful in a Stats system but since pick() is already there seems like the place for it.
Hmm. "Pick a number from 1..100". repeat { (1..100).pick(*, :repl); } 03:20
TimToady repeat isn't legal without a conditional, btw 03:21
lanny Darn. Had a long "discussion" with Juerd today about for ^$num { do_something; } for loops of a given length. He's agin' it and I can see his arguments.
TimToady yeah, I read it all. 03:22
lanny I guess for 0..^$num { do_something(); } is as easy.
ah. loop { ...pick(); } 03:24
Limbic_Region TimToady - even the part where I said you were subject to losing er uh, changing your mind
TTFN all - almost tomorrow 03:27
TimToady laters
Khisanth besides you can only lose something if you still have it 03:29
lanny If sort, min, max, cmp, and eqv all have the same MMD signature (is there a name for the collective signature of all Codes of the same name?) any objection to renaming it. CmpCriterion maybe? OrderCriterion? PosetCriterion? 03:32
SortCriterion would also make sense but some folks might wonder at sort being the kernel.
TimToady Ordering? 03:33
lanny blah(@values, Ordering @by); subset Ordering of Sig | KeyExt | Comp | OrderingPair;
TimToady seems really strange to call that a subset 03:34
lanny It makes coding it in Perl 6 a touch easier since given/when gets a bit easier. 03:35
subset of Any where { self ~~ Sig | KeyExt | Comp | OrderingPair } if it makes you feel better. :) 03:36
TimToady whew!
so maybe it's really subset Ordering where Sig | KeyExt | Comp | OrderingPair; 03:37
and it just defaults to "of Any"
lanny I need to read up on S05 so I can start talking the grammar but that would seem to have where taking a Junction or a Code. It's good sugar but was wondering earlier if everything needed couldn't be state with subset of Blah where { }? 03:39
TimToady after all, you can't actually have an Ordering that is more than one of those... 03:40
lanny * stated
03:40 kanru joined
TimToady well, sure, in the same sense that every "when Blah" can be stated in terms of when {...} 03:41
but syntactic sugar is sweet
and the whole point of smart matching is to sweep as much dwimmery into one spot so that we can use it all sorts of other places. 03:42
including run-time type checking.
and MMD
lanny Yes. 03:43
I like syntactic sugar. Maybe that hsould have been, "It's good sugar and..." 03:44
In the end all sugar goes to something canonical (or circular) and I like those small islands of stability sometimes. Especially against the churning sea of the specs. 03:45
TimToady ?eval say ~(list(^100) ~~ /7/) 03:46
03:46 evalbot_r13761 is now known as evalbot_r13764
evalbot_r13764 *** Cannot parse regex: 7 *** Error: Error: 'require' trapped by operation mask at /home/audreyt/pugs/perl5/Pugs-Compiler-Rule/lib/Pugs/Runtime/Match/ line 23. *** Cannot parse regex: 7 *** Error: Error: 'require' trapped by operation mask at /home/audreyt/pugs/perl5/Pugs-Compiler-Rule/lib/Pugs/Runtime/Match/ line 23. *** Cannot parse regex: 7 *** Error: Error: 'require' trapped by operation mask at /home/audreyt/pugs/perl5 03:46
TimToady ?eval say ~(list(^100) ~~ m:P5/7/)
evalbot_r13764 OUTPUT[7 17 27 37 47 57 67 70 71 72 73 74 75 76 77 78 79 87 97 ] Bool::True 03:47
lanny * wanders off to type of Orderings.
bah. s/*/\/me/
TimToady whatever. :)
lanny That's what I said.
TimToady ?eval say ~(list(^100) !% 7) 03:56
evalbot_r13764 Error: Unexpected "!%" expecting comment, operator or ")"
TimToady ?eval say ~(list(^100) !% 7) 03:57
evalbot_r13764 Error: Unexpected "!%" expecting comment, operator or ")"
TimToady ?eval say ~(list(^100) % 7)
evalbot_r13764 OUTPUT[2 ] Bool::True
TimToady I wonder if it's worth having a !% operator that means "is evenly divisible by" 03:58
seems odd that "?%" would mean "isn't evenly divisible by". 03:59
lanny Back in Modern Algebra that was | but you just used that one up. :)
svnbot6 r13765 | lanny++ | * minmax.t - fixed buggy test
TimToady just wondering, since chaining operators are special cased in various ways, and % is often used as a logical that way 04:00
but maybe we want ?/ and !/
lanny It would be nice. Would save untold == 0 on $n % 2 == 0;
TimToady and list(^100) ~~ { $_ % 2 == 0 } 04:01
lanny Of course anyone that wanted those could just code em. How do you tell when the Specs end and when "stuff the developer should do" begins? 04:05
TimToady the Specs end when I get tired. :) 04:06
lanny :)
Course if you coded it as an infix then you'd have to grep over a list to extract from a list. Or MMD it I guess. 04:08
TimToady ?eval say ~(list(^100) ~~ { not $_ % 7 }) 04:10
04:10 evalbot_r13764 is now known as evalbot_r13765
evalbot_r13765 OUTPUT[0 7 14 21 28 35 42 49 56 63 70 77 84 91 98 ] Bool::True 04:10
TimToady I'd do ?% and !% in a shot if they weren't bassackwards... 04:11
lanny Perl6 pass one question of the mini-mental physical. News at 11.
They are "more" correct but I really think ?/ and !/ will be easier to remember.
TimToady but don't really decompose to not a / b 04:12
whereas !% would, unless we make ?% mean not a % b 04:13
lanny You could do that. If you just spell out, "yes, it's backwards. sue me" then I think you could chalk it up as a win and move on.
You hardly need the !% op from above since that's just !% := % 04:15
TimToady if ?% were chaining you'd get !?% for free. :) !?!?! 04:16
buffer i want left behind: the rising
lanny The wheels within wheels of Perl 6 remind me a LOT of lisp. It's gonna be a great language.
buffer anyone have it
04:18 buffer left
TimToady maybe all the boolean ?^ ?& !| etc belong in chained ops rather than + and * 04:23
lanny sort { $^a <=> $^b } is insensitive(&abs), @values;
TimToady sort { +abs($_) }, @values 04:24
sort -> Num $_ { .abs }, @values 04:25
lanny Oh yes. You *could* do it those ways. But if someone tacks on is insensitive all I've got for a meaning right now is "see if $a.can('lc')" 04:26
TimToady sorry, didn't mean to trammel your very valid point. :)
lanny Personally I'd like to see insensitive go away for writing what you mean and descending go away for reverse().
TimToady sort :(-Num), @values 04:27
lanny Is that a new kind of smiley? 04:28
:) But what I'm really wonder is if the '-' is a typo on Num or not.
Wow. What great typing. Time for sleep soon.
TimToady right now it would be a typo, but we could have +/- "zones" like * and | 04:29
or just sort :(Num is descending), @values
descending is terribly cobolesque though 04:30
lanny That's already specced as I read it. 04:31
And how do you define descending for sort :(Dog is descending), @values;
TimToady depends on whether the type does Ordered in the first place
lanny Unless there's something like Dog does Order;
TimToady anything that does Ordered presumably has a default ordering. 04:32
lanny nods.
TimToady that's what makes Sig so powerful in sorts et al.
lanny Yeah. That seems to have dropped out of the specs lately or google can't tease it out but I recall that from an earlier question I asked in here.
TimToady it's implicit in the Sig as criterion idea though 04:33
lanny Yes but implicit ideas in specs that others might code your language from to be standard might leave a lot of room for interesting Perl 6's. 04:34
TimToady that's kinda why we're pushing to the the Haskell one done first. :)
even if it's not The Spec, it can at least point the True Way 04:35
and if we're really lucky someone will have installed a regression test for the way pugs does it.
lanny Yeah. :) Saw that coming.
TimToady I've really been delighted with how that's been working out over the last while though. 04:36
I feel like the process is convergent. 04:37
things will certainly diverge later, and that's okay
but we're at a golden moment right now when the leverage on the future is spectacularly huge, for good and ill 04:38
I think the intersection of what fits in audrey's brain and what fits in my brain will be something really useful. 04:39
lanny Yeah. Nice to watch y'all play off each other.
TimToady well, I oversimplify, of course, since @brains >>> 2 04:40
@brains ⋙ 2 04:41
lambdabot I think so, Brain, but isn't that why they invented tube socks?
lanny Is that a hypered >? 04:42
No. Much-greater-than.
TimToady no, that's Unicode for VERY MUCH GREATER THAN
much greater than is just ≫ 04:43
well, go put your brain in a tube sock.
lanny No. One more question.
TimToady @questions ≫ 1 04:44
lambdabot Unknown command, try @list
lanny In role Ordered presumably there is cmp() to set up the ordering. Does it need a desensitize() to state how to make something is insensitive? 04:45
TimToady more like :canonicalize($how) or some such
04:46 mako132_ joined
TimToady that's really what KeyExt is doing 04:46
lanny Ah yes.
TimToady anyway, I prefer to state it in the positive 04:47
ruz hi, I don't get why "\Z(?!\n)" can be used instead of "\z" in perl5 code. And couldn't find anything related in docs. could you give me a hint?
lanny sort :(Dog is not_quite_there_on_the_empathy_thing_but_hopefully_soon), @values might be a bit rough just to say that Dog's are insensitive beasts. 04:48
TimToady :D
lanny Off to find a tube sock. Cheers. 04:49
TimToady ruz: \Z means \z|\n\z
so the negative lookahead falsifies the second part.
fortunately, Perl 6 has neither \z nor \Z 04:50
but I have no clue why anyone would use the lookahead when \z works fine (except maybe for really old Perls?) 04:51
ruz is it possible that some perl 5.x version has no support for \z?
TimToady could be
04:51 Tman joined
TimToady I think that's right, which is why there's \A and \Z and why \z doesn't match. 04:51
\Z and \z ought to have been switched.
Tman what's the general consensus on how far along pugs is/how far it has to go? 04:52
ruz TimToady: yep, but do you have time machine?
TimToady it's come along spectacularly far, it still has a long way to go, and insane people are starting to play with it for real things. 04:53
ruz :) ok, thanks, I think there is no another reason
Tman hmm. 04:54
what kinds of things are missing?
TimToady we haven't really installed the Moose meta-object protocol yet, so the OO support is still chewing gum and bailing wire.
Tman doesn't know what that is :p 04:55
TimToady we're still in the process of bootstrapping the compiler in itself.
and it's almost completely unoptimized.
we're going for correctness first. 04:56
Tman right
TimToady but the P5ish subset of P6 works pretty well, if you ignore the fact that we switched regex engines recently and it's still pretty creaky
Tman cool 04:57
TimToady would you like to help?
knowing any of Perl | Haskell | English is a plus 04:58
Tman no Haskell and not a whole lot of experience with Perl (but some) 04:59
TimToady we need the viewpoint of people who are just getting into it as well. 05:00
fresh eyes are always useful
Tman yeah
TimToady anyway, I can offer you a commit bit if you'd like 05:01
a lot of people just go in and start whacking on tests.
Tman I'll look into it
TimToady after finding holes in the specs
Tman not really any experience with interpreters either 05:02
which is worrying
TimToady that matters very little, I think.
since Perl 6 is agnostic as to whether it's compiled or interpreted.
Tman well, with parsing I mean 05:03
TimToady anyway, you're welcome to hang around until you get the "itch"
Tman x)
TimToady reading through the specs is a good place to start, and if you read the ones that are backannotated with passing/failing tests, you can get a feeling for how far along pugs is. 05:05
Tman okay
TimToady you can get an annotated view of the synopses by following SYN links from 05:06
lambdabot Title: Pugs Smoke Reports,
05:08 SubStack joined
Tman kk 05:09
TimToady ciao & # chow 05:10
05:15 BooK joined, shobadobs joined 05:19 Aankhen`` joined
gaal wow, those new list() comprehensions look weird 05:34
?eval list(1,2,3,4) < list(3,4,5,6) 05:35
evalbot_r13765 (1, 2, 3)
gaal > [(x,y) | x <- [1..4] | y <- [3..6]] 05:36
lambdabot Parse error
gaal hm?
ah, no -fglasgow-exts 05:37
anyway: what do we do for parallel comprehensions?
for those not familiar with the feature: in shiny haskell, that's: 05:38
05:40 SubStack joined 05:42 b00t joined 05:43 takanori joined
TimToady ?eval say perl map { [$^x, $^y] }, each(1..4; 3..6) 05:55
evalbot_r13765 OUTPUT[([1, 3], [2, 4], [3, 5], [4, 6]) ] Bool::True
TimToady ?eval say perl each(1..4; 3..6).map:{ [$^x,$^y] } 05:57
evalbot_r13765 OUTPUT[([1, 3], [2, 4], [3, 5], [4, 6]) ] Bool::True
gaal okay.. sometihng that eludes me for the moment in my pre-caffeinated state, how do you get all pairs such that x < y and each is selected from their own list? 06:03
shobadobs walk through the lists in the style of the merging algorithm that mergesort uses 06:04
gaal cartesian_product(@x, @y).grep:{$x<$y}
TimToady ?eval say perl each(1..4; 3..6).map:{ $^x < $^y ?? [$^x,$^y] !! () }
evalbot_r13765 OUTPUT[([1, 3], [2, 4], [3, 5], [4, 6]) ] Bool::True
gaal [1,6] e.g. shoudl be there too 06:05
no longer a parallel query
TimToady ?eval say perl each(1..4; 3..6).map:{ $^x < $^y / 2 ?? [$^x,$^y] !! () }
evalbot_r13765 OUTPUT[([1, 3],) ] Bool::True
TimToady lessee. Did anyone implement my X,X yet? 06:06
?eval 1..4 X,X 3..6 06:07
evalbot_r13765 Error: Unexpected "X" expecting comment, operator, statement modifier, ";" or end of input
TimToady nope
anyway, that should be grep -> [$x, $y] { $x < $y }, @x X,X @y or some suc 06:08
gaal ah, I don't think XxX is implemented at all yet
TimToady *such
gaal okay, thanks. I'd better go wake up. 06:09
TimToady list(@x X,X @y) ~~ -> [$x, $y] { $x < $y } in the new syntax
svnbot6 r13766 | Darren_Duncan++ | ext/Rosetta/ : minor update to Copying.pod
TimToady list(@x X,X @y) ~~ { $_[0] < $_[1] } 06:10
gaal ah, it's a shame you can't use placeholders there 06:13
because there has to be unpacking
TimToady list(@x X,X @y) ~~ { infix:{'<'}(|$_) } 06:14
gaal use Golf; # turns '&infix:' into 'i'
TimToady but maybe < is smart enough to do:
list(@x X,X @y) ~~ .infix:{','} 06:15
s:2nd/,/</ that is. 'course if this were APL you'd have started with X<X to get a selector map 06:16
gaal 'course!
anyway.. bbiab & :-)
TimToady list(@x X,X @y) ~~ { [<] @$_ } 06:18
list(@x X,X @y) ~~ .[].'[<]' 06:19
list(@x X,X @y) ~~ .'[<]' might possibly be forced to dwym 06:20
masak @brain makes lambdabot give a random "pinky and the brain" quote? 06:24
lambdabot It must be inordinately taxing to be such a boob.
masak guess so
TimToady list([0,2],[1,2],[2,2],[3,2]) ~~ { [<] @$_ } seems to be broken. 06:27
that's cuz this appears to be broken:
?eval say grep { [<] @$_ }, [0,2],[1,2],[2,2],[3,2]
06:27 evalbot_r13765 is now known as evalbot_r13766
evalbot_r13766 OUTPUT[0 21 22 23 2 ] Bool::True 06:27
TimToady ?eval [<] 1,2 06:29
evalbot_r13766 Bool::True
TimToady ?eval [<] 2,1
evalbot_r13766 Bool::False
TimToady ?eval my @x = 2,1; [<] @x
evalbot_r13766 Bool::False
TimToady ?eval my $x = [2,1]; [<] @$x 06:30
evalbot_r13766 Bool::True
TimToady hmm
?eval my $x = [2,1]; [<] |$x
evalbot_r13766 Bool::True
TimToady ?eval my $x = [2,1]; [<] |@$x 06:31
evalbot_r13766 Bool::True
TimToady ?eval my $x = (2,1); [<] @$x