»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by diakopter on 25 January 2010. |
|||
00:03
Guest24562 left
00:18
justatheory left,
payload left
00:25
ihrd joined,
ihrd left
00:26
rgrau left
00:28
mssm left,
lichtkind left
00:33
lestrrat is now known as lest_away
00:46
colomon left
00:49
nihiliad left,
f00li5h left,
Grrrr left,
f00li5h joined,
arnsholt left
00:50
cotto left
00:51
Grrrr joined
00:58
nihiliad joined,
cotto joined
01:00
arnsholt joined,
jferrero left
01:10
meppl left
01:12
justatheory joined
01:13
LaVolta joined
01:16
hudnix joined
01:17
synth left
01:20
payload joined
01:23
colomon joined
01:24
lest_away is now known as lestrrat
01:26
drbean joined
01:30
yinyin joined
01:39
Chillance left
01:40
brianherman joined
01:41
jaldhar joined
|
|||
brianherman | is perl 6 finished? | 01:41 | |
01:41
ascent_ joined
|
|||
Juerd | brianherman: No | 01:43 | |
brianherman: Is Perl 5 finished? :) | |||
brianherman | oh | ||
good point | |||
01:44
lestrrat left
|
|||
brianherman | maybe i mean is perl 6 stable? | 01:44 | |
the best part of perl 6 is that butterfly | |||
that thing is cute | |||
diakopter | brianherman: see perl6.org/specification/ | 01:45 | |
significant parts of the specification are in flux and/or unimplemented and/or conjectural | 01:46 | ||
01:47
lestrrat joined
|
|||
zorgnax | what keyboard commands do I have available in the rakudo repl? | 01:52 | |
the history commands dont work (up down C-p C-n) | 01:53 | ||
colomon | zorgnax: up down works fine for me in the REPL... | 01:56 | |
02:05
fookyou joined
|
|||
fookyou | test | 02:05 | |
zorgnax | I'm not sure whats wrong in my setup then. I just did a git pull and rebuilt it so I know everything is up to date | 02:06 | |
fookyou | Can anyone unban me from #perl?? I dunno why I'm banned.... Just came to the channel after like months... | ||
colomon | zorgnax: what platform? | ||
zorgnax | ubuntu karmic | 02:07 | |
diakopter | zorgnax: I think you have to build parrot with readline | 02:08 | |
which I'm not sure rakudo does by default | 02:09 | ||
zorgnax | parrot? | ||
diakopter | afk& | ||
zorgnax | I thought that type of functionality would be in the code for perl6 | ||
02:10
fookyou is now known as blahnickblah
|
|||
colomon | zorgnax: it works for me on OS X and CentOS, with Rakudo built with --gen-parrot. | 02:11 | |
zorgnax | that's all that I did | 02:12 | |
diakopter | blahnickblah: this channel really doesn't have much to do with #perl | 02:15 | |
blahnickblah: probably someone else using your IP address/block got banned. | |||
blahnickblah | Yeah, just was hoping.... I love using perl and I'm never on freenode, so I dunno why I'm banned... | ||
I did refresh my ip recently..... I dunno... | |||
diakopter | use the web interface | ||
webchat.freenode.net/ | 02:16 | ||
just be sure not to mention you're banned, or else they'll likely kick you :) | |||
blahnickblah | lol | ||
brianherman | lol | ||
blahnickblah | I'll just change my ip?! Maybe it some range that's banned?? | 02:17 | |
I don't really care enough tho.... I got my question answered in #ubuntu.... But if I did it's probably a range ban anyways... | |||
Hows perl6 going anyways??! | 02:18 | ||
Is it gonna be really different??! | |||
02:21
alester joined
02:22
jaldhar left
02:23
blahnickblah left
02:37
k23z__ left
02:38
brianherman left
02:40
jaldhar joined
02:52
cognominal left
03:08
agentzh joined
|
|||
sjohnson | "Is it gonna be really different??!" | 03:11 | |
elegantly phrased question | |||
04:03
LaVolta left
04:34
alester left
04:37
jaldhar left
04:40
jaldhar joined
04:45
justatheory left
04:47
rekhajos joined
04:52
tuxdna joined,
nihiliad left
05:08
LaVolta joined
05:20
cjk101010 joined
05:43
TiMBuS joined
05:59
gabiruh left
06:06
gabiruh joined
06:16
hcchien joined,
hcchien left
06:31
addicted joined
06:37
addicted left
06:49
agentzh left
06:51
tarbo2 joined
07:19
kaare joined
07:20
kaare is now known as Guest75057
07:31
Su-Shee joined,
LaVolta left
|
|||
Su-Shee | good morning | 07:32 | |
07:32
Baggiokwok joined
07:41
agentzh joined
07:44
drbean left
08:03
[particle]1 joined
08:18
iblechbot joined
08:44
rgrau joined
08:59
Baggiokwok left
09:06
dakkar joined
09:09
gfldex joined
09:12
drbean joined
|
|||
moritz_ | good morning | 09:13 | |
09:14
renormalist|work joined
09:16
mtve joined
09:22
renormalist|work left
09:23
renormalist|work joined
|
|||
diakopter | hi | 09:27 | |
09:28
Baggiokwok joined
|
|||
moritz_ | how is it going? | 09:31 | |
jnthn | morning | 09:33 | |
09:34
k23z__ joined,
moritz_ sets mode: +ooo jnthn diakopter sjohnson
09:37
colomon2 left
09:45
yinyin left
09:56
yahooooo left
09:57
yahooooo joined
10:02
ejs joined
10:06
ejs left
10:07
drbean left
10:12
ejs joined
10:19
ruoso left
10:27
JimmyZ joined
10:33
JimmyZ left
10:36
agentzh left
10:39
renormalist|work left,
renormalist|work joined
10:46
mathw joined
10:48
patspam left
10:53
mssm joined
|
|||
colomon | morning | 11:01 | |
11:12
payload left
11:20
lestrrat is now known as lest_away
11:23
TiMBuS left
|
|||
sjohnson | hi guys | 11:25 | |
araujo | hello | 11:30 | |
11:30
mj41 left
11:31
moritz_ sets mode: +C
11:33
mj41 joined,
drbean joined
11:43
payload joined
11:47
payload left
11:48
payload joined
11:50
Woody2143 joined
11:53
payload left
11:54
payload joined
11:55
Baggiokwok left
11:57
payload1 joined
11:58
colomon left,
rekhajos left
12:00
payload left
12:02
colomon joined,
payload1 left
12:03
payload joined
12:08
payload left
12:10
LaVolta joined
12:13
Woody2143 left
12:17
bluescreen joined
12:21
lest_away is now known as lestrrat
12:22
uniejo joined
12:25
iblechbot left
12:26
f00li5h left,
f00li5h joined
12:33
cotto left
|
|||
colomon | > (1..*).map({ last if $_ > 100; $_.say; }).eager | 12:39 | |
lambdabot | <no location info>: parse error on input `{' | ||
colomon | now works perfectly in my local copy of ng1. :) | 12:40 | |
jnthn | colomon: Nice! | 12:41 | |
12:43
payload joined
12:44
meppl joined
12:45
plainhao joined,
k23z__ left
12:46
SmokeMachine joined
|
|||
colomon | though it only works for numbers, because I don't know the Inf equivalent for, say, strings. (Actually, range iterators only work for numbers, too, because of the dispatch bug.) | 12:46 | |
actually, based on the Range spec, it seems like there needs to be some sort of interface where you can determine the min and max possible values for types you can call succ on. | 12:47 | ||
12:49
cotto joined
|
|||
colomon | ng: say Inf.WHAET | 12:58 | |
p6eval | ng 22b55c: OUTPUT«Method 'WHAET' not found for invocant of class 'Float'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
colomon | ng: say Inf.WHAT | ||
p6eval | ng 22b55c: OUTPUT«Num()» | ||
12:59
mberends joined
13:07
pmurias joined
|
|||
pmurias | in svn.pugscode.org/pugs/misc/camelia.txt in line 21 it should be "or any other"? | 13:10 | |
moritz_ | probably | 13:11 | |
oh wait | 13:12 | ||
no | |||
I think TimToady really meant "only the language" | |||
13:18
uniejo left
13:21
bluescreen left,
bluescreen joined
13:23
mberends left
13:29
bbkr joined
|
|||
colomon | ng: say 3 lt 5 | 13:35 | |
p6eval | ng 22b55c: OUTPUT«1» | ||
colomon | ng: say 11 lt 5 | ||
p6eval | ng 22b55c: OUTPUT«1» | ||
colomon | Whoops. | ||
bbkr | hi. why there is no news on rakudo.org about 25th release? | ||
moritz_ | colomon: what's "Whoops" about that? | 13:36 | |
colomon: that's how string comparison works | |||
colomon | moritz_: ng's Range is always using string comparison to check Range membership. | ||
moritz_ | colomon: ouch | ||
colomon | I think I was thinking that lt and gt went with cmp, not leg. | 13:37 | |
moritz_ | colomon: it should use cmp, which is polymorphic | ||
colomon | moritz_: actually, before and after, which are the cmp equivalents of < and > (or vice versa) | ||
of course, at least for now before and after are implemented in terms of cmp. :) | |||
moritz_ | bbkr: probably pmichaud++ forgot to put up the notice | 13:38 | |
colomon | This is why I am always a bit suspicious of TDD: 106 tests for basic Range functionality, but none of them could distinguish between comparing two numbers as strings and comparing two numbers as numbers. | ||
moritz_ | this is why I think our test suite is way too small | 13:39 | |
in the end no methodology can replace careful thinking | |||
colomon | moritz_: exactly. | 13:45 | |
13:49
Woody2143 joined
13:56
pmurias left
13:57
jaldhar left,
hicx174 left,
hicx174 joined
13:59
ignacio_ joined
14:04
uniejo joined
14:07
uniejo left,
uniejo joined
14:11
ruoso joined
14:12
synth joined
14:14
k23z__ joined
14:19
jaldhar joined
14:25
ignacio_ left,
drbean left,
hicx174 left
14:26
[particle]1 left
|
|||
bbkr | "perl6 -v" on 25th release still returns "Copyright 2006-2009, The Perl Foundation.", year should be changed. | 14:27 | |
moritz_ | bbkr: thanks for the hint, I'll change that | 14:29 | |
14:30
rgrau` joined,
Baggiokwok joined
14:32
ignacio_ joined
14:34
[particle] joined,
iblechbot joined
14:36
hicx174 joined
14:38
uniejo left,
ignacio_ left
14:42
hicx174 left,
hicx174 joined
14:45
ejs left
14:49
ejs joined
14:53
ignacio_ joined
14:55
Exodist joined,
Guest75057 left
15:02
hicx174 left,
PacoLinux joined
15:04
payload left
15:22
hicx174 joined
15:24
wasy joined
|
|||
sjohnson | another sleepless night | 15:28 | |
i generated some python -> clipper code translation using perl. it is good to use perl again | 15:29 | ||
Perl's slogan should be "Perl... is there anything it can't do?" | |||
15:30
pmurias joined
15:32
Baggiokwok left
15:33
hanekomu joined
15:34
Psyche^ joined
15:35
Psyche^ left,
Patterner left,
Patterner joined
15:36
ejs left
15:40
payload joined
15:41
iblechbot left
15:42
k23z__ left
15:44
jferrero joined
|
|||
pmichaud | good morning, #perl6 | 16:00 | |
16:02
jaldhar left
|
|||
pmichaud | colomon: ping | 16:04 | |
sjohnson | hi | 16:06 | |
16:06
jaldhar joined
16:08
nihiliad joined
16:16
LaVolta left
16:18
payload left
16:19
payload joined
|
|||
diakopter | moritz_: going well | 16:24 | |
16:26
ejs joined
|
|||
diakopter | TimToady: is there really an S09 rewrite pending? | 16:37 | |
pmichaud | I'd guess that the recent changes to slice design is likely to spill into S09 | 16:41 | |
so, it's not necessarily a rewrite, as much as "figure out how to get S09 to work with new information regarding slices" | |||
diakopter | oh | 16:42 | |
pmichaud | (which may well end up in being a rewrite :-) | 16:43 | |
16:46
justatheory joined
16:47
payload left
16:55
mberends joined
|
|||
colomon | pmichaud: pong | 16:57 | |
pmichaud | colomon: for Ranges, I don't think we should be converting Whatever into Inf | ||
I think it should remain as a Whatever | |||
colomon | pmichaud: really? | ||
pmichaud | in particular, (3..*).perl should probably return "3..*" and not "3..Inf" | ||
colomon | will that work better for non-numeric types? | ||
ng: say 2 < * | 16:58 | ||
p6eval | ng 22b55c: OUTPUT«too few positional arguments: 3 passed, 4 (or more) expectedcurrent instr.: 'perl6;Code;new' pc 11858 (src/builtins/Positional.pir:169)» | ||
pmichaud | it should work better for non-numeric types, yes.... but it's likely also going to be important for @a[3..*] handling | ||
in the places where we do comparisons on a range endpoint, we'll need to explicitly check for Whatever | 16:59 | ||
colomon | okay, can do. | ||
(I was wondering if there was a shortcut around that.) | |||
pmichaud | note that 2 < * produces a WhateverCode object | ||
colomon | pmichaud: that's what I thought. | ||
okay, I can have that for you in a few minutes here, I think. | |||
pmichaud | no problem or rush... just wanted to make that opinion known :-) | 17:00 | |
colomon | yeah, but it's too fun to put off. | 17:02 | |
:) | |||
Is there a better Whatever check than ~~ ::Whatever? | 17:03 | ||
pmichaud | not that I know of | 17:04 | |
colomon | ng: my $a = *; say $a.perl | 17:07 | |
p6eval | ng 22b55c: OUTPUT«too few positional arguments: 3 passed, 4 (or more) expectedcurrent instr.: 'perl6;Code;new' pc 11858 (src/builtins/Positional.pir:169)» | ||
colomon | ng: sub foo($a) { say $a.perl; say $a.WHAT; }; foo(*) | 17:08 | |
p6eval | ng 22b55c: OUTPUT«too few positional arguments: 3 passed, 4 (or more) expectedcurrent instr.: 'perl6;Code;new' pc 11858 (src/builtins/Positional.pir:169)» | ||
17:11
fda314925 joined
|
|||
colomon | pmichaud: when I try to pass that Whatever to bless, it balks at it with that same "too few positional arguments" message. | 17:13 | |
ng: my $a = *; | 17:14 | ||
p6eval | ng 22b55c: OUTPUT«too few positional arguments: 3 passed, 4 (or more) expectedcurrent instr.: 'perl6;Code;new' pc 11858 (src/builtins/Positional.pir:169)» | ||
17:14
fda314925 left
|
|||
pmichaud | I'm not sure that Whatever has been implemented in ng/ng1 | 17:15 | |
colomon | pmichaud: it was working when I passed it in using 1..* and Range.new converted it to Inf. | 17:16 | |
pmichaud | ng: say Whatever.WHAT; | ||
p6eval | ng 22b55c: OUTPUT«too few positional arguments: 3 passed, 4 (or more) expectedcurrent instr.: 'perl6;Code;new' pc 11858 (src/builtins/Positional.pir:169)» | ||
colomon | Huh. | ||
pmichaud | something looks very wrong with whatever there :-) | ||
it may be that the dispatcher is having trouble dealing with threading | 17:17 | ||
sorry, with whatever-dispatch | |||
colomon | yeah, I thought that was just the message for when it tried to bind it to a closure and failed. | ||
(er, whatever the proper term for that trick is.) | |||
pmichaud | anyway, jnthn++ is probably the person to check with on that | 17:18 | |
we can leave the Inf/-Inf conversions in place for now so that Range "works", but eventually I think it needs to be the type | |||
colomon | okay, maybe I won't have it for you in a few minutes. :) | ||
funny thing is, I think I have the right code for the Whatever version already (at least for iteration) but it is full of fail with that issue. | 17:19 | ||
(I mean, locally, not the version I checked in.) | |||
17:21
fda314925 joined
|
|||
spinclad | (question: why doesn't 1..* produce a WhateverCode?) (answer: it's special cased.) (special case smell?) | 17:21 | |
colomon | spinclad: why should it? | 17:22 | |
bbkr | ng: my %h = * => "a"; say %h{"this whatever is fake :P"} | 17:23 | |
p6eval | ng 22b55c: OUTPUT«Confused at line 1, near "my %h = * "current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)» | ||
colomon | spinclad: I guess I see 1..* as being not that different from foo(*)... | 17:25 | |
spinclad | in @a[0..*] (or should that be @a[0..^*]?) it seems it should act as a WhateverCode, taking @a's limit index as argument. | ||
but by itself 0..* is supposed to be 0..Inf ... i don't quite see how that works both ways. | 17:26 | ||
pmichaud | spinclad: yes, but you don't typically want my @a = 3..*; to act as though you're creating an array with a WhateverCode object | ||
in the case of @a[0..*] it's not a WhateverCode, it's a Range. Trying to make it a WhateverCode will in fact be problematic | |||
because if @a has 10 elements, then @a[0..10] is in fact incorrect | 17:27 | ||
spinclad | right, so i wondered 0..^* | ||
pmichaud | * doesn't mean "last element", it means "whatever" | 17:28 | |
it's probably a mental mistake to try to make it mean "last element" | |||
(or, more precisely, "index of last element" | |||
let me put it this way | 17:29 | ||
we know that for @a[3..7] the postcircumfix:<[...]> needs to be able to handle an argument of type Range | |||
so _that's_ the point at which we check the Range for any whatevers | 17:30 | ||
spinclad | well... inside an index, if it _is_ a WhateverCode, it's handed ... not 'index of last element', but the one after that, the first past the end. | ||
pmichaud | right | ||
if a WhateverCode is passed as a subscript, then we evaluate the WhateverCode with the length of the array | 17:31 | ||
spinclad | right | ||
17:33
fda314925 left
17:34
araujo left
|
|||
colomon | rakudo: my @a = 1..10; say @a[*-2]; say @a[{$_ - 2}]; | 17:35 | |
p6eval | rakudo 1d4928: OUTPUT«99» | ||
spinclad | (otoh, in @a[0..*], with 0..* a Range, it looks like one iterates the Range until one falls of the end of @a, without complaint. ... ) | ||
pmichaud | rakudo would seem to have that wrong. | ||
I'm not sure what the second one should've produced. Possibly it should have not bound at all (no matching multi) | 17:36 | ||
colomon | I was just exploring what would happen if 1..* was the same as { 1..$_ } | 17:37 | |
spinclad | ng: my @a = 0..9; say @a[0..*]; say @a[0..100] | ||
p6eval | ng 22b55c: OUTPUT«too few positional arguments: 3 passed, 4 (or more) expectedcurrent instr.: 'perl6;Code;new' pc 11858 (src/builtins/Positional.pir:169)» | ||
spinclad | rakudo: my @a = 0..9; say @a[0..*]; say @a[0..100] | ||
TimToady | note that subscripts are defined to not care if their final range runs off the end, so it doesn't matter what * expands to, as long as it's >= elems -1 | ||
p6eval | rakudo 1d4928: OUTPUT«0123456789Use of uninitialized value0123456789Use of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of | ||
..uninitializ… | |||
TimToady | that does imply keeping the info around somewhere that the final element of the list is a range | 17:38 | |
spinclad | hm.. interesting difference there.. 0..* stops on first failure, 0..100 keeps going | ||
rakudo: my @a = 0..9; say @a[0..^*] | 17:39 | ||
p6eval | rakudo 1d4928: OUTPUT«0123456789» | ||
spinclad | huh. looks like a WhateverCoded Range to me. | 17:40 | |
(btw, in colomon's example, i think the 9's are correct. | 17:41 | ||
) | |||
17:41
ejs left
|
|||
TimToady | rakudo: my @a = <a b c>; say @a[0..10000]; # supposed to work by current spec | 17:42 | |
p6eval | rakudo 1d4928: OUTPUT«abcUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse of uninitialized valueUse | ||
..of un… | |||
TimToady | see S09:220 | ||
spinclad | heh. works fine. | ||
17:43
k23z__ joined
|
|||
TimToady | *not* fine if you want to interate down the array one slice at a time and merely return a truncated final element | 17:44 | |
*iterate, even | |||
17:44
k23z__ left
|
|||
TimToady | and the current policy solves the ..* vs ..^* ambiguity by make it not matter | 17:46 | |
I doubt that part of S09 is going to change, even if the rest does... :) | |||
17:47
pmurias left,
cjk101010 left
17:49
jferrero left
17:51
iblechbot joined
|
|||
spinclad | rakudo: (0..*).perl.say | 17:53 | |
p6eval | rakudo 1d4928: OUTPUT«{ ... }» | ||
spinclad | (*-1).perl.say | ||
rakudo: (*-1).perl.say | 17:54 | ||
p6eval | rakudo 1d4928: OUTPUT«{ ... }» | ||
17:54
fda314925 joined
|
|||
spinclad | (*-1).WHAT.say | 17:55 | |
17:55
cjk101010 joined
|
|||
spinclad | rakudo: (0..*).WHAT.say | 17:55 | |
p6eval | rakudo 1d4928: OUTPUT«!whatever_closure» | ||
17:56
rdice joined
17:57
fda314925 left
|
|||
spinclad | ok, thanks. so rakudo trunk _does_ make 0..* a WhateverCode, but that's outdated spec, and should indeed be special cased to Range; and trunk likewise doesn't truncate index ranges per spec. seems sensible design, even with the small bit of special casing. | 18:01 | |
18:02
kst joined
18:03
Chillance joined
|
|||
TimToady | well, it should work even if it does return a WhateverCode, as long as the code in question still returns a recognizable range | 18:06 | |
'tis the truncation that is the key | |||
spinclad | sure | 18:09 | |
colomon | Is @a[*..5] also supposed to work? | 18:10 | |
TimToady | no | 18:11 | |
colomon | why not? | ||
TimToady | truncation is defined only at the end | ||
and 0 isn't that hard to type | |||
spinclad | ... but if 0..* be a WhateverCode, then i think other uses of it like for 0..* {...} would fail: no argument given to the WhateverCode | 18:12 | |
18:12
fda314925 joined
|
|||
colomon | TimToady: isn't it possible to create a Positional whose index range doesn't start at 0? | 18:13 | |
TimToady | spinclad: unless the argument defaults to Inf | ||
spinclad | aha... | 18:14 | |
@a[*..*] # robotic grin | |||
lambdabot | Unknown command, try @list | ||
18:14
ShaneC joined
|
|||
TimToady | colomon: by current spec, .[] is always 0-base, and you use .{} to get something else | 18:20 | |
18:20
cdarroch joined,
cdarroch left,
cdarroch joined
|
|||
colomon | TimToady: ah. okay. :) | 18:20 | |
vorner | TimToady: can't you create multi operator and do something else in it? | 18:21 | |
TimToady | you can do anything you like, with enough work :) | ||
Perl 6 is designed to mutate into any language you like, even if you're into horror... | 18:22 | ||
vorner | but I guess you would handle all the whatevers in it yourself anyway | ||
TimToady | if it comes down to it, you can always write macros or grammar rules | 18:23 | |
or change out the semantic analysis routimes | |||
but yes, multiple dispatch is lexically scope, so you can always override those easily | 18:25 | ||
*scoped | |||
vorner | Right, I heard that, I just wondered if the axiom that index is 0-based couldn't hurt somewhere | 18:26 | |
TimToady | hasn't seemed to hurt C that much :) | ||
at some point, one just switches to functions instead of subscripts | 18:27 | ||
vorner | but C doesn't have things like whatevers and so on, any zero-based things are done by programmer who knows if he makes the array something-else based | 18:28 | |
TimToady | S09 just says that something-else-based just uses .{} instead of .[] | ||
.[] implies UInt | |||
and the type inferencer can depend on that | 18:29 | ||
colomon | Perl 6 has a type inferencer?! Cool! | ||
TimToady | in the abstract... | ||
nobody's written it yet | 18:30 | ||
colomon | That probably explains why I've not heard of it. :) | ||
TimToady | but it's all swept under the carpet of "If the compiler is able to detect that something will fail at run time, it may complain at compile time." | 18:31 | |
jnthn | We only do it in one place in Rakuod so far. :-) | ||
*Rakudo | |||
(the case of multi fact(0) { 1 } style things) | |||
colomon | jnthn: so, about ng and Whatever.... :) | 18:32 | |
TimToady | we do not, however *require* type inference, since that also requires the user to be quite sophisticated to do the meta-type-inference | ||
see ML etc. | |||
jnthn | colomon: oh noes, what discussion have I just wondered into from while debugging a memory leak... :-) | ||
colomon has an entire collection of half-read functional programming books for much that reason... | 18:33 | ||
jnthn | colomon: I suspect ng may not know a whole load about Whatever yet. | 18:34 | |
colomon | jnthn: as you can see from the backlog, it gives "too few positional arguments: 3 passed, 4 (or more) expected" almost anytime you do anything with it other than ~~ ::Whatever. | ||
jnthn | colomon: Oh, maybe bit-rot. | 18:35 | |
That could be easily fixable. | |||
colomon | As pmichaud said, jnthn++. :) | 18:36 | |
jnthn | For introducing bitrot? ;-) | 18:37 | |
TimToady | afk & | ||
jnthn | Wow, I got karma for rotting too. :-) | ||
colomon | for knowing how to fix it... | ||
jnthn | I'll try and fix it in a moment...think I know why $work-app is leaking some gigs... | ||
colomon | cool. | 18:38 | |
18:43
ignacio_ left
18:44
dakkar left
18:49
SmokeMachine left
18:56
jonasbn joined
18:58
ignacio_ joined
19:00
SmokeMachine joined
|
|||
colomon | pmichaud: one other thing which keeps worrying me about Iterators. How does @a.map(-> $a is rw { ... }) work? | 19:00 | |
19:02
stephenlb joined
19:03
rdice left
19:09
REPLeffect joined
19:12
cognominal joined
19:14
cognominal left,
cognominal joined,
user__ joined
19:15
user__ is now known as dr_df0
19:16
ejs joined
|
|||
dr_df0 | perl6: say 'test' | 19:17 | |
p6eval | elf 29603, pugs, rakudo 1d4928: OUTPUT«test» | ||
jnthn | ng: * | ||
p6eval | ng 22b55c: OUTPUT«sh: ./perl6: No such file or directory» | ||
jnthn | colomon: ah, not quite what I thought...gotta go for dinner now...actually seems there is two issues, not just one. | 19:18 | |
erm, there are... | |||
colomon | k. talk to you later, then. | ||
jnthn | cu | ||
pmichaud | colomon: @a.map(-> $a is rw { ... }) works because the result of iterating @a is each of the elements of @a | 19:20 | |
colomon | pmichaud: but how does it work wrt iterators? | 19:21 | |
diakopter | ng: * | ||
p6eval | ng 22b55c: ( no output ) | ||
colomon | pmichaud: I mean, .get is returning a value, right, not a reference to a value. | ||
pmichaud | colomon: no, .get returns the actual container, not a value | 19:22 | |
19:24
jaldhar left
|
|||
pmichaud | afk, lunch | 19:24 | |
19:25
jaldhar joined
19:34
wasy left,
wasy joined
19:35
wasy left
19:37
wasy joined
19:48
payload joined
19:49
araujo joined
19:52
ignacio_ left,
k23z__ joined
19:54
cotto_work joined
20:01
nihiliad left
20:06
ignacio_ joined
20:13
plainhao left
|
|||
pugs_svn | r29604 | lwall++ | [S02,S06] continue de-confusing flat and eager | 20:15 | |
PerlJam | good day all | ||
colomon | o/ | ||
20:21
hercynium left
20:22
cognominal left
20:29
dr_df0 left
|
|||
pugs_svn | r29605 | lwall++ | [S02,S03,S04] more @@ removal; some s/Capture/Parcel/ cleanup | 20:34 | |
20:35
mberends left
|
|||
Tene | ng: say (*+5).WHAT | 20:35 | |
p6eval | ng 22b55c: OUTPUT«too few positional arguments: 3 passed, 4 (or more) expectedcurrent instr.: 'perl6;Code;new' pc 11858 (src/builtins/Positional.pir:169)» | ||
Tene | ng: say 1..* | ||
p6eval | ng 22b55c: OUTPUT«too few positional arguments: 3 passed, 4 (or more) expectedcurrent instr.: 'perl6;Code;new' pc 11858 (src/builtins/Positional.pir:169)» | ||
Tene | What part of Perl 6 determines that * with .. is different from * with other operators? | 20:36 | |
ruoso | TimToady, considering "say flat(<1 2> Z <3 4>)" and "say slice(<1 2> Z <3 4>)"... does a simple "say <1 2> Z <3 4>" still flattens? | 20:37 | |
I'm assuming it does, because the signature of say is "(@items)" | |||
sorry... | |||
it is (*@items) | |||
and I somehow think that slurpy does flatten the result | 20:38 | ||
er... not result, the parameters... | |||
pmichaud | (the arguments :-) | ||
I haven't read the updates -- but before all of these latest changes I had been thinking that slice(...) would remove the flattening behavior of any of its arguments | 20:39 | ||
20:39
cdarroch left
|
|||
ruoso | right... and flat preserves it | 20:39 | |
so what is the default? | |||
pmichaud | actually, I'd think that flat forces it | ||
ruoso | ah... right... | ||
pmichaud | there are three levels | ||
Tene | "A C<Parcel>s is normally flattened..." -- typo | ||
pmichaud | flat - forces it | ||
slice - denies it | 20:40 | ||
(list) -- allows it | |||
where "it" == "flattening" | |||
ruoso | so "sub say(*@items) {...}" will flatten | ||
pmichaud | if the arguments to @items are flattening arguments | ||
but the result of slice() never flattens | |||
ruoso | or will it still depend on how @items is used? | ||
pmichaud | I need to read latest spec updates | 20:41 | |
on another topic -- I'm thinking that perhaps we just switch ng1 branch to master within 48 hours | |||
Tene | pmichaud: have a list of topics you'd like to see worked on before then? | 20:42 | |
pmichaud | anything that currently fails "make spectest" :-) | ||
Tene | I was planning on looking at * tonight. | ||
pmichaud | but short term, I'd like to bring the iterator stuff up-to-spec with the latest changes | ||
whatever would be good also | |||
but I think looking at * isn't much help before we get closures and thunks fixed. | |||
Tene nods. | 20:43 | ||
20:43
sjohnson sets mode: +o PerlJam
20:48
mberends joined
|
|||
TimToady | I don't have a sig notation for slice context yet, but it might be **@foo, or maybe something liek *@foo! to make it bind like a positional | 20:51 | |
also considering whether -> args should just default to slurpy always | |||
pmichaud | how strongly are you trying to stick with ASCII for slice notation? | 20:52 | |
I keep thinking of | 20:53 | ||
oops | |||
§ as a possibility | |||
20:53
cdarroch joined,
cdarroch left,
cdarroch joined
|
|||
TimToady | well, we'll come up with some way to be explicit about which kind of binding we want, but how to default -> the other way is a problem | 20:54 | |
pmichaud | I don't quite see the problem with -> | ||
TimToady | you posed it as Pm-19 | 20:55 | |
did you see what I wrote? | 20:56 | ||
pmichaud | yes, but let me re-read | ||
TimToady | it just occurred to me that a 3rd approach was to always make -> assume it's in a slurpy setting unless specifically marked otherwise | 20:57 | |
pmichaud | I would think that if I want a slice that I'd use (old notation) --> @@x | ||
20:57
_ash joined
|
|||
pmichaud | or, more specifically, if I want a non-flattening item | 20:57 | |
TimToady | yes, but the question is how the default gets to be flattening? | 20:58 | |
ordinary mandatory positionals don't flatten | |||
pmichaud | true, but there we're binding to a parcel instead of an iterator | ||
in the case of map, we're doing repeated binding against an iterator | 20:59 | ||
TimToady | yes, so the binding has to behave differently than an ordinary call | ||
how does the binder know that? | |||
pmichaud | (bad guess) ... because it's against an iterator instead of a standard parcel? | 21:00 | |
i.e., inside of .map, we'd be doing &block(|$iterator) instead of &block(|(parcel)) | 21:01 | ||
TimToady | the ordinary call is also binding against the iterator embedded in the Capture | ||
jnthn | It maybe pretends to. ;-) | ||
jnthn has seen captures as rather more low-levelish thingies. :-) | 21:02 | ||
pmichaud | I think that's still a difference -- a binding against an iterator is different from binding to a capture (that has an iterator) | ||
many times we end up performing operations on objects for which the first step is "get an iterator for this object", and the behavior is different than if we were performing the operation directly on an iterator | |||
jnthn | The capture may be Iterable, which means it can provide an iterator, I'm not sure that means it "has an" iterator (as in $.has) | ||
pmichaud | perhaps what I'm trying to say is that I think that binding to a capture should be a "succeed/fail" sort of thing, while binding to an iterator is the way we think of partial binding (more) | 21:06 | |
jnthn | Anyway, I'm inclined to agree with pmichaud that I'd prefer to see the two separate. | ||
pmichaud | I also feel like this is relevant to the handling of feeds | ||
jnthn | pmichaud: +1 | ||
pmichaud | that what gets passed among feeds are iterators with partial bindings, and not completed captures | 21:07 | |
TimToady | how does map tell the lambda's binding that it's okay to leave extra args? | ||
jnthn | TimToady: Presumably because you invoke with an iterator rather than a capture, no? | 21:08 | |
pmichaud | yeah, something like that | ||
jnthn | TimToady: Or are you wanting to distinguish it in a different way? | ||
colomon: Locally: | |||
> my $a = *; say $a.WHAT | 21:09 | ||
lambdabot | <no location info>: parse error on input `=' | ||
jnthn | Whatever() | ||
/kick lam... | |||
colomon | \o/ | ||
pmichaud | jnthn, colomon: 20:40 <pmichaud> on another topic -- I'm thinking that perhaps we just switch ng1 branch to master within 48 hours | ||
TimToady | okay, I'm binding a signature, $x, $y, $z for something. How does the binding of $y know whether to call .get or .getitem? | ||
colomon stupidly thought lambdabot's response was what jnthn was getting locally... | 21:10 | ||
TimToady | it might be a simple lambda supplied to a map, or it might be the where-the-rubber-meets the road of an ordinary sub or method | ||
colomon | pmichaud: there have been a couple minor changes on ng since ng1, I think. | ||
TimToady | this has to distribute over the parameters so each one knows whether to .get or .getitem | ||
pmichaud | colomon: presumably they can be merged into ng1/master also | 21:11 | |
TimToady | it's not the same throughout the signature | ||
jnthn | TimToady: Wait...huh | ||
jnthn is confused now | |||
TimToady | then don't vote +1 :P | ||
colomon | pmichaud: is there a decent chance we can get spectest back to ng levels before making the switch? it's sort of too broken for regular hacking at the moment. | ||
pmichaud | colomon: is anyone actively hacking on ng? | 21:12 | |
colomon | pmichaud: I don't think so. | ||
pmichaud | (whether to call .get or .getitem) ...this is partially why I prefered it to be always .get (which acts like .getitem), instead of trying to put flattening directly into the iterator | ||
21:13
payload left
|
|||
TimToady | then you're re-inventing the iterator inside the binder, I think | 21:13 | |
pmichaud | then .map would handle flatten-versus-not-flatten in what it passed to the lambda | ||
yes, I recognize this is also problematic | |||
colomon | pmichaud: actually, looks like the only patch ng has that ng1 doesn't is turning on spectests. | ||
TimToady | or inside map | ||
I'd like a pure view where a signature is a pattern that matches against a supply of values | 21:14 | ||
and each parameter knows whether it's supposed to match a parcel or something smaller | |||
I'd like map to not care, so you could map with a block with either kind of parameter | 21:15 | ||
jnthn | TimToady: Well, I thought I understood the issue at that point...either a signature sourced its arguments from a capture and exhausted it, or got them from an iterator and didn't care if there was more. | ||
pmichaud | colomon: so, if nobody is actively hacking on ng, I'm saying we should go ahead and abandon its line of development in favor of ng1 | ||
jnthn | pmichaud: oh sh...I just pushed a patch to ng. | ||
pmichaud | jnthn: no biggie | ||
jnthn: I did say "within 48 hours" | |||
jnthn | Feel free to cherry pick. | ||
colomon | pmichaud: no real argument there.... (see jnthn++'s whoops! :) | ||
pmichaud | and yes, I figure there will be some cherry picking | 21:16 | |
but I also think we might be at a point where it's worthwhile to commit to ng1 as the new master, even if we're not up to date on spectests | |||
TimToady | something has to iterate through the capture's list | ||
colomon | pmichaud: I do think we need to get things cleaned up a bit before pushing ng1 to mainstream, even if it's just turning off failing spectests. | ||
pmichaud | colomon: I'd be okay with that | ||
TimToady: carrying this line of thinking a bit further... when binding to a capture, we do iterate through the capture's list, but that's a bit different from binding to an iterator | 21:17 | ||
TimToady | why? | ||
pmichaud | if only because we have the "you must exhaust the list" flag turned on. | ||
TimToady | that flag is also the negation of the "you are applying this sig repeatedly and the default binding for each parameter should be slurpy" flag | 21:19 | |
colomon | pmichaud: how about I make a list of the failing spectests (ie ones that worked in ng but not in ng1), we (or just I?) take a quick look at why they are broken, and turn them off if they can't be easily fixed. then make getting them working again a priority. | ||
pmichaud | colomon: that's easy enough to do (more) | ||
just do "make spectest" in the ng1 branch. any tests that are failing, mark with two #'s | |||
the spectest.data file in ng1 was taken from the ng branch, so it already comments out the tests that weren't passing in ng | 21:20 | ||
TimToady | whether you reinvent iterators on a level above iterators or not is relatively immaterial, you have to get the bit in there consistently to all kinds of lambdas | ||
pmichaud | it's not just lambdas, is it? It's really any signature, right? | ||
TimToady | and like subpatterns, maybe the default for lambda's should be that we are a submatch | 21:21 | |
colomon | pmichaud: roger. I'll get on it here. | ||
21:21
cognominal joined
|
|||
TimToady | and default to get semantics rather than getitem semantics | 21:21 | |
for unmarked parameters | |||
jnthn | Gotta go for a bit. | 21:22 | |
21:22
charsbar_ joined
|
|||
pmichaud | I feel like we're making a fundamental mistake in the design of .map | 21:23 | |
not sure where, but the complexity of the solution feels like we might be asking the wrong question | |||
TimToady | map should be very simple | ||
pmichaud | agreed | ||
TimToady | match a sig, turn it into a parcel, repeat | 21:24 | |
21:24
charsbar left,
bluescreen left
|
|||
TimToady | no introspection | 21:24 | |
pmichaud | is the same true for feed operators? | ||
TimToady | ideally | ||
the sig already knows it's a submatch somehow | |||
and somehow the cursor is maintained | |||
over the input stream | |||
21:24
uniejo joined
|
|||
pmichaud | well, if we think about it in the subrule context, then the sig is always a partial match, and we carp whenever the outer context determines "oh, you didn't match everything". I.e., the anchor comes from somewhere external. | 21:25 | |
colomon | pmichaud: actually, this is definitely a good time to switch ng1 to ng, at least, as I keep on wanting to make lazy tests... | ||
mathw | I haven't been paying attention, ng1? | ||
colomon | mathw: ng1 is a branch of ng with laziness. | 21:26 | |
pmichaud | mathw: ng1 was a temporary branch I created to experiment with lazy list and iteration | ||
mathw | ooooh | ||
cool, thanks | |||
pmichaud | mathw: but it's progressed far enough now that I think we're ready to commit to it | ||
mathw | my attention's definitely been elsewhere lately | ||
TimToady | but lambda don't know whether they're submatches by themselves. it would be like a submatch not knowing whether it should ratchet | ||
colomon | mathw: for instance, this morning, I temporarily had (1..*).map ... working. | ||
mathw | colomon: that is the most exciting thing I've heard this year | 21:27 | |
pmichaud | TimToady: yes, I see the problem | ||
and it's that problem that makes me think we're looking at this all wrong | |||
TimToady | if somebody writes -> $x, @y {...} we are in trouble if we assume *$x, *@y if he calls it like a normal sub | ||
the alternative is to assume slice binding for map and force explicit flattening | 21:28 | ||
pmichaud | or to require .slice for map if slice binding is wanted | ||
(unless you rejected that option) | |||
TimToady | it's just that p5 programmers will expect flatness | 21:29 | |
otoh other language folks might expect non-flat | |||
cuts both ways | |||
pmichaud | right, flatness default, .slice explicitly says "the elements in the input list don't flatten" | ||
so we'd end up with | 21:30 | ||
(1,2,3 Z 4,5,6).map(-> $a, $b { ... }) | |||
and | |||
TimToady | map: -> *$x, *$y {...} to do flattening | ||
pmichaud | (1,2,3 Z 4,5,6).slice.map(-> $a { ... }) | ||
TimToady | and -> $x, $y would bind slicely like positionals do | 21:31 | |
that is, itemly, parcel at a time | |||
colomon | pmichaud: permission to try to merge ng patches with ng1? | ||
TimToady | if we defaulted it the other way | ||
pmichaud | colomon: you don't need my permission to do it locally, just to push :-) | ||
21:31
cjk101010 left
|
|||
colomon | pmichaud: sure enough. :) | 21:32 | |
TimToady | of course, and people would have to put |foo() into their list to avoid accidental slices | ||
pmichaud | colomon: and if everything works reasonably enough after doing it locally, then just push :0 | ||
TimToady | and I still rather suspect that flat lists will be used more than slice lists | 21:33 | |
colomon might just have fallen in love with git... that was dead easy. | |||
pmichaud | TimToady: right, so I think that .map should result in flat bindings by default | ||
TimToady | which leaves us with the question of how $b knows to do something gettish rather than getitemish | 21:34 | |
pmichaud | the .slice answer above is that we adjust the input string so that .get results in getitem behavior instead of flatten behavior | ||
TimToady | that doesn't work inside a sig | 21:35 | |
so can't be used to slicify subscripts, for instance | |||
colomon | afk, need to read to the boy for a minute | ||
pmichaud | have a quick example of that? I'm not sure I follow | ||
TimToady | we can override slurpy with ** or some such, so I'm not worried about that part | 21:36 | |
pmichaud | (example of slicify subscripts, that is) | ||
TimToady | if postcircumfix:<[]> has a sig containing *@slices, it flattens, but if we turn *@@slices into, say **@slices, then it slices | 21:37 | |
I'm not too worried about the parameters that are explicitly marked | 21:38 | ||
but I'd like to be able to choose maps behavior via the signature, not by preprocessing | |||
to take a simple case | 21:39 | ||
one parameter to map | |||
could be either *$x or **$x to explicitly either slurp or slice | |||
21:39
payload joined,
ruoso left
|
|||
TimToady | the sig is where that info belongs, just as the subpattern is where most of the info should be re ratcheting and such | 21:40 | |
pmichaud | okay, I follow that last part :) | ||
TimToady | could also be some notation like -> ($x) to indicate "I'm a real sig with a real positional parameter that does getitem" | 21:41 | |
(assuming we work out ambiguity with existing () usage) | |||
not necessarily a good assumption | 21:42 | ||
21:42
Su-Shee left
|
|||
pmichaud | what if someone does (...).map(&foo) -- does it make a difference whether &foo was created via a lambda or a sub ? | 21:42 | |
TimToady | but slicing may be fundamental enough to warrant stealing the notation | ||
diakopter | std: <()><()><()> | 21:43 | |
p6eval | std 29605: OUTPUT«ok 00:01 105m» | ||
TimToady | I'd like it not to make a difference, if possible, which makes me lean toward map somehow telling the signature to default to slurpy for unmarked params | ||
including placeholders and $_ | |||
pmichaud | I agree that it's better if it doesn't make a difference | ||
21:44
SmokeMachine left
|
|||
TimToady | hence one of the two solutions in Pm-19 | 21:44 | |
diakopter | std: ->$(){} | ||
p6eval | std 29605: OUTPUT«ok 00:01 106m» | ||
TimToady | either rewrite/clone a different sig | ||
or rely on some magical cursor applicator to do the right thing with the sig | |||
pmichaud | right now the .count approach is more along the lines of "magical cursor applicator" , I guess. | 21:45 | |
TimToady | if it can solve the cursor problem at the same time, all the better | ||
pmichaud | that doesn't argue against magical cursor application, just noting where .count falls :-) | ||
TimToady | .count is introspection, and the antithesis of what we're trying to do as pattern matching | ||
the sig should decide how much to match, and it may not know in advance | 21:46 | ||
just like a subpattern | |||
pmichaud | right | ||
TimToady | sorry to be so adamant on this; wait, no I'm not... :) | ||
21:47
alester joined
|
|||
pmichaud | no, I think you're fundamentally correct | 21:47 | |
I just can't understand it all yet :) | |||
s/can't/don't/ # I guess | |||
TimToady is living proof that someone can be fundamentally correct without understanding it all yet... | |||
pmichaud | and I'm also trying to figure out what to do in the meantime to keep development moving even while we don't have a lot of these fundamental issues resolved | ||
TimToady | well, fundamentally correcter, at least | 21:48 | |
diakopter | by defintion | ||
pmichaud | one step might be for me to stop asking questions in pm.txt, I suppose :-) :-) | ||
"If you don't want to know the answers... don't ask!" :-) | 21:49 | ||
21:49
ejs left
|
|||
diakopter | "if you have to ask, you can't afford it" | 21:49 | |
TimToady | well, to the first approximation, rakudo can still flatten everything that comes into map until we want to do slices | 21:50 | |
colomon | > my $a = (1..*); say $a.perl | ||
1..!whatever_dispatch_helper | |||
lambdabot | <no location info>: parse error on input `=' | ||
diakopter | (jokingly implying TimToady should anticipate all the questions...) | ||
TimToady | we can delegate it to the sign later when the sig is ready | ||
pmichaud | yeah, I'm thinking that's what we'll likely do | ||
Tene | I don't remember ever seeing anyone here actually use almbdabot on purpose. | ||
Does anyone object to me kicking it? | |||
TimToady | @karma Tene | 21:51 | |
lambdabot | Tene has a karma of 70 | ||
TimToady | looks like you have enough karma to do that | ||
diakopter | @karma lambdabot | ||
lambdabot | lambdabot has a karma of 2 | ||
TimToady | hah, you win | ||
Tene | Ah, I have seen people askit for karma, yes. | ||
pmichaud | I don't have a use for lambdabot other than as something that increases my annoyance level (and by extension, diminishes -Ofun) | ||
Tene | @karma diakopter | ||
lambdabot | diakopter has a karma of 135 | ||
TimToady | phenny: karma Tene | ||
Tene | lambdabot: owner? | ||
diakopter | .karma Tene | 21:52 | |
pmichaud | for me, keeping track of karma isn't worth the annoyance factor, either. | ||
21:52
lambdabot was kicked by Tene (lambdabot))
|
|||
colomon just pushed merge plus pmichaud++'s suggestions for 1..* Range -- lazy Range iteration working again in ng1. | 21:52 | ||
TimToady | @foo | ||
diakopter | I would've just quieted it | ||
so it doesn't know it's kicked | |||
quieted | |||
sigh. | 21:53 | ||
dalek MIA again | |||
21:54
dalek joined
|
|||
diakopter | at least it's authenticated | 21:54 | |
sjohnson | diakopter: how do you quiet it? | 21:55 | |
diakopter | the irc client on feather (in Europe) connects to freenode through Oregon, but my irc client in Virginia connects to freenode through Germany. | ||
TimToady | I thought we were in planet Houston? | 21:57 | |
diakopter | that VPS is in Mclean, VA I think | 21:58 | |
pmichaud | scruffy little planet | ||
diakopter | Langley to be precise | ||
er, | 22:01 | ||
erm | |||
maybe not | |||
TimToady | was always more of a navy guy myself | ||
diakopter | the various geoip dbs differ in knowledge | 22:02 | |
_ash | > my $a = 1, 2; for $a { say $_.perl } | ||
Method 'perl' not found for invocant of class 'Seq' # i know its not the proper use of variables, but still an odd error, removing .perl prints $a as expected | |||
this is on ng1 | |||
pmichaud | just copy the 'perl' method from Array.pm into Seq.pm, and change the brackets to parens | 22:03 | |
colomon | jnthn++ | 22:06 | |
_ash | so, inside the for loop $a was being referenced by a Seq? (just trying to understand this all) | ||
pmichaud | keep in mind that my $a = 1,2; in Perl 6 doesn't do what you think it does. | ||
(or if it does do what you think it does, then you shouldn't be doing that :-) | 22:07 | ||
PerlJam wonders whose surprise Perl follows for the principle of least surprise. | 22:08 | ||
_ash | hehe, i am probably abusing old ways of doing things, i am sure, or incomplete ways of doing things | ||
pmichaud | incorrect, in this case. | ||
my $a = 1, 2; # likely wrong | |||
_ash | my $a = (1, 2); say $a ~~ Seq; | ||
1 | |||
pmichaud | At the moment I don't have a simple mechanism in Rakudo to flag "my $a = 1, 2;" as an error, or I would do so. | 22:09 | |
_ash | with or without the ( ) around 1,2 it's still 1 | ||
pmichaud | at the moment, spec says that a Parcel in item context becomes a Seq | ||
and assignment to a scalar is doing item context | |||
_ash | std: my $a = 1, 2; say $a ~~ Seq; | 22:10 | |
p6eval | std 29605: OUTPUT«ok 00:01 108m» | ||
_ash | whats happening to $a in the std then? just curious | ||
pmichaud | it's parsing as | ||
_ash | are they both out of date? | ||
pmichaud | (my $a = 1), 2; say $a ~~ Seq; | ||
_ash | ah | ||
pmichaud | and if std were a full compiler, it would probably complain about "useless use of 2 in ... " | 22:11 | |
_ash | makes sense | ||
22:11
jonasbn left
|
|||
_ash | okay, i get that | 22:11 | |
pmichaud | rakudo (all branches) currently parses my $a = 1,2; as my $a = (1,2); | 22:12 | |
_ash | its probably gonna be a long time before my nq-nqp is parsing much of this properly if ever | ||
TimToady | it requires = to know whether the sigil on the left was $ | ||
STD does it with a dynamic variable | 22:13 | ||
the trick is to keep a $ from propagating up the left side to far and giving a fake positive | |||
*too far | |||
22:16
pmurias joined
22:19
ignacio_ left,
japhb joined
|
|||
_ash | so... are ( ) lists going to still be immutable? like i should be able to say my @a = (1, 2); push @a, 4; and it give an error since i used ( ) not [ ] ? | 22:20 | |
PerlJam | _ash: that would be bizarre. | 22:23 | |
TimToady | only if you did := instead of = | ||
PerlJam | () is immutable, but an @array is mutable. | ||
TimToady | = pokes copies of values into the array | 22:24 | |
_ash | ah, okay | ||
TimToady | we had good reasons for leaving = with p5 semantics and making := something else :) | ||
diakopter | std: my @a := (1, 2); @a.push 4; | 22:25 | |
p6eval | std 29605: OUTPUT«===SORRY!===Two terms in a row at /tmp/3PdWLj6xzB line 1:------> my @a := (1, 2); @a.push ⏏4; expecting any of: bracketed infix infix or meta-infix statement modifier loopFAILED 00:01 108m» | ||
_ash | so, i really need to understand what = vs := vs ::= does | ||
TimToady | diakopter: methods can't be listops | 22:26 | |
not without a : | |||
PerlJam | diakopter: missing a : | ||
diakopter | oo | ||
pmichaud | ash: = is assignment. @a = 1,2,$b; copies the values from the list into @a | ||
diakopter | I'm so behind. | ||
_ash | i didn't realize = did a copy | ||
pmichaud | if it didn't do a copy, then changes to $b would be reflected in @a | 22:27 | |
diakopter | and by behind, I mean behind on reading/remembering the spec. | ||
(not not keeping up with changes) | |||
_ash | pmichaud: makes sense, i just never realized it till you guys pointed it out | ||
TimToady | it's only been like that since, oh, about 2004 | ||
diakopter | exaclty | ||
TimToady | it will help to remember that $.foo wants to look both like a variable and a method call | 22:28 | |
diakopter | found out for certain; that VPS is in Equnix in Ashburn, VA | ||
and my cubeighbor used to work there. | 22:29 | ||
TimToady | and the default on whether to look for more arguments is different between methods and functions because methods already have one argument, so might well not any more | ||
(the one arg being the invocant) | |||
ss/not any/not want any/ | 22:30 | ||
diakopter | what's ss/// | 22:31 | |
TimToady | s:sigspace | 22:32 | |
_ash | where is the <ident> regex defined? i haven't found it yet | 22:33 | |
pmichaud | in nqp | ||
it's part of the regex library of builtins | |||
Tene | -ash: you mean in the Perl 6 specs, yes? | 22:34 | |
_ash | yeah, i was meaning more in the spec, is there an example of what it recognizes as valid? | ||
(was reading S06) | 22:35 | ||
pmichaud | S-5 | ||
er, S05 | |||
_ash | oops, ya i can't copy paste properly | ||
pmichaud | no, it doesn't say exactly. I think it's the standard "alpha followed by zero or more alnum" definition, though. | 22:37 | |
_ash | or _ if i am not mistaken, i just wanted to make sure | ||
Tene | including -_' or not? | ||
pmichaud | _ is generally considered alpha | ||
ident does not include the -' | 22:38 | ||
token ident { <.alpha> \w* | |||
} | |||
diakopter | m:scrabble/any hing/ | ||
PerlJam | if ident doesn't contain - or ', then what is the "identifier" regex that does contain those things called? | 22:40 | |
_ash | \w* i believe | ||
pmichaud | "identifier" | ||
token identifier { <.ident> [ <.apostrophe> <.ident> ]* | |||
} | |||
_ash | hmm so nqp and rakudo use 2 different definitions of identifier? | 22:43 | |
pmichaud | I don't think so | ||
note "ident" versus "identifier" | |||
"ident" is the traditional alpha + \w* | |||
_ash | well, they both have an ident and an identifier | ||
pmichaud | "identifier" is the one that includes apostrophe and hyphen | ||
they're supposed to be the same | 22:44 | ||
(nqp and rakudo, that is) | |||
_ash | in nqp its token identifier { <ident> } | 22:46 | |
pmichaud | I suspect I just haven't implemented the expanded version yet | ||
PerlJam | That's some LHF for others though :) | 22:47 | |
_ash | so really its any alphnum + - and ' and unicode? or... | ||
is unicode included in alphanum? | |||
pmichaud | unicode alnums are included in alnum :-) | 22:48 | |
not all of unicode is alnum | |||
Juerd | Maybe, just maybe, I should remove that highlight on /unicode/ in my irssi. | 22:49 | |
Maybe it's useful to rename either ident or identifier, to avoid confusion. Maybe ident-atom for ident. | 22:51 | ||
pmichaud | that'd be funny, since ident-atom would be the thing that doesn't have the hyphens :) | 22:52 | |
PerlJam | heh | ||
pmichaud | while identifier has no hyphens in its name but it does in what it matches :-) | ||
Juerd | pmichaud: Funny is so much better than confusing :) | ||
pmichaud | so perhaps identifier should be ident-with-apostrophes-and-hyphens | ||
PerlJam | so ... ident and ident-ifier ? :) | 22:53 | |
_ash | lol | ||
pmichaud | ident-if-i-err | ||
diakopter | ident-with-'apostrophes'-and-hyphens | ||
Juerd | PerlJam: lol | ||
diakopter: Invalid | |||
pmichaud | '- isn't valid, though | ||
nor is -' | |||
diakopter | oh | ||
pmichaud | ident-with-ap'str'phes-and-hyphens | ||
Juerd | I suggested ident-atom because that's how rfc2822 calls things. There's atom, and dot-atom, where dot-atom-text is 1*atext *("." 1*atext) | 22:54 | |
For example, [email@hidden.address] is a valid address while foo..bar@example.org isn't. | 22:55 | ||
pmichaud: apo's :) | |||
PerlJam always thinks of apostrophes in a contractive sense, so a really long name is odd in that respect too | 22:56 | ||
Juerd | fakeident, real-ident | ||
There's a fakeident in every real one :) | |||
PerlJam | i-d'e'n-t | 22:57 | |
i-den't | 22:58 | ||
Juerd | Why not? :) | ||
22:58
wasy is now known as wasy_afk
|
|||
_ash | is there a reason to have both of them? just wondering, i see identifier used a lot but ident not so much | 23:00 | |
PerlJam | _ash: ou need idents to build an identifier :) | ||
s/ou/you/ | |||
Juerd | _ash: identifier uses ident. | 23:01 | |
_ash | true, but ident doesn't have to be called ident | ||
Juerd | I think it would be better if it were called something else | ||
pmichaud | and the bikeshed doesn't have to be purple. | ||
:-) | |||
_ash | but if you make it purple then you can see it from like a block away | 23:02 | |
Juerd | That depends on the shade of purple | ||
_ash | unless your eyes are as bad as mine and you need a new pair of glasses | ||
Juerd | It's okay if the bikeshed is purple, if everything surrounding it has sufficiently contrasting colors. | ||
pmichaud | it also depends on the neighborhood you live i... what Juerd++ said | ||
Juerd | Purple next to navy blue looks horrible | ||
pmichaud | that's why we only store green bikes in the purple bikeshed | 23:03 | |
23:03
uniejo left
|
|||
Juerd | Currently there are blue bikes in the purple bikeshed. | 23:03 | |
Well, at least one :) | |||
Tene | I'm still just a little bit grumpy over supporting internal ', but not $a', $a'', etc. | 23:05 | |
frettled | I think the bikeshed should allow more bikes. ;) | 23:06 | |
Juerd | Tene: You've never played golf, have you? :) | ||
_ash | frettled wants new lines and whitespace in his variable names i bet | ||
my $aname = 5; say $a; | 23:07 | ||
frettled | _ash: and Unicode free-for-all and a pony | 23:08 | |
23:11
mberends left
23:16
iblechbot left
23:18
meppl left
23:19
toddr joined
23:22
mberends joined,
sjn joined
|
|||
pugs_svn | r29606 | colomon++ | [t/spec] Fudge for ng1. | 23:22 | |
23:29
alester left,
payload left,
_ash left,
stephenlb left
23:30
eternaleye joined,
eternaleye left,
eternaleye joined
23:31
stephenlb joined
|
|||
pugs_svn | r29607 | colomon++ | [t/spec] Fudge for ng1. | 23:32 | |
23:33
_ash joined,
alester joined,
alester left
23:34
cotto_work left,
eternaleye left,
payload joined,
cotto_work joined
23:41
eternaleye joined,
eternaleye left,
eternaleye joined
|
|||
pugs_svn | r29608 | colomon++ | [t/spec] Fudge for ng1. | 23:44 | |
colomon | jnthn, pmichaud: any notions why S02-whitespace_and_comments/one-pass-parsing.t fails in ng1? | 23:46 | |
23:47
eternaleye left
23:50
eternaleye joined,
eternaleye left,
eternaleye joined
|
|||
colomon | S06-routine-modifiers/scoped-named-subs.t -- test #2 gets () and expects ''. Seems to me () is probably right, but I don't know how to code that up. | 23:51 | |
(For an "is" test, I mean.) | |||
23:54
Chillance left
|
|||
pugs_svn | r29609 | colomon++ | [t/spec] Fudge for ng1. | 23:54 | |
23:55
mberends left
|