»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
ranott | glad to see so many developers putting their time into Rakudo. Sorry about the away. | 00:04 | |
00:05
benabik left
00:06
Moukeddar joined
00:23
impious left
00:38
whiteknight joined
|
|||
TimToady | sorear: I found a strange niecza bug, gist coming | 00:42 | |
gist.github.com/1121634 | 00:43 | ||
it's a random number generator, which produces the correct sequence, except that the 3rd number is supposed to be 539453717, not -460546283 | 00:44 | ||
(works in nom) | |||
hmm | |||
nom: gist.github.com/1121634 | 00:45 | ||
p6eval | nom: OUTPUT«46747857451293279253945371720349702615542081378707948933204586824858649506003769380969305» | ||
TimToady | niecza: gist.github.com/1121634 | ||
p6eval | niecza v8-21-g9c1607b: OUTPUT«467478574512932792-46054628320349702615542081378707948933204586824858649506003769380969305» | ||
sorear | nom: say -1 % 100 | ||
p6eval | nom: OUTPUT«99» | ||
sorear | niecza: say -1 % 100 | ||
p6eval | niecza v8-21-g9c1607b: OUTPUT«-1» | ||
sorear | perl6: say -1 % 100 | 00:46 | |
p6eval | niecza v8-21-g9c1607b: OUTPUT«-1» | ||
..pugs, rakudo 922500: OUTPUT«99» | |||
TimToady | there it is | ||
00:48
tokuhirom joined
|
|||
TimToady | there's a nom bug too; it segfaults if I move the inner sub till after the inner call to subrand() | 00:48 | |
so probably a post-declaration messup | |||
masak: ^^ :) | 00:49 | ||
00:49
wolfman2000 joined
|
|||
dalek | p: 4e5bf5f | pmichaud++ | src/PAST/NQP.pir: Add :pasttype<xor_nqp>, which allows the return value for two true This can likely be immediately added to Parrot's PCT as a replacement for :pasttype<xor>, but since nom/nqp will need this long before the next Parrot supported release we'll keep a copy here too. |
00:51 | |
ast: 9aed4c2 | sorear++ | S02-names/pseudo.t: [S02-names/pseudo.t] add CALLER, OUTER |
00:58 | ||
01:04
noganex_ joined
|
|||
pmichaud | locally: | 01:05 | |
> say 42 ^^ 15 | |||
Nil | |||
> my $x; $x ^^= 42; $x ^^= 15; say $x | |||
Nil | |||
(this last one is wrong, should probably result in Any) | |||
sorear | why should it result in Any? | 01:06 | |
pmichaud | assigning Nil to a scalar | ||
sorear | oh | ||
you really beleive that? :( | 01:07 | ||
01:07
noganex left
|
|||
pmichaud | I believe that's what the spec says, yes. | 01:07 | |
sorear | yeah but it's so horrible | ||
TimToady | perhaps you should return False if it's false... | 01:08 | |
pmichaud | the spec currently says it wants an empty list in list context, though. Since we don't have a list context, Nil seeems the next-best-thing. | ||
TimToady | sorear: Nil is defined as the absence of a value, so you can't usefully store it | ||
well, how about () then? | |||
pmichaud | I can have it return () always, yes. | ||
TimToady | perl6: say 1 ^^ 0 | 01:09 | |
p6eval | niecza v8-21-g9c1607b: OUTPUT«Unhandled exception: System.Exception: Unable to find lexical &infix:<^^> in mainlineServer stack trace:  at Niecza.CLRBackend.NamProcessor.ResolveLex (System.String name, Boolean upf, System.Int32& uplevel, Boolean core) [0x00000] in <filename unknown>… | ||
..pugs, rakudo 922500: OUTPUT«1» | |||
01:09
woosley joined
|
|||
sorear | I have a negative reflex reaction to anything that involves adding tests to the hot path of assignments | 01:10 | |
01:10
donri left
|
|||
sorear | do we still beleive Nil ~~ Parcel ~~ Any? | 01:10 | |
pmichaud | nom doesn't have Nil ~~ Parcel | ||
nom: say Nil ~~ Parcel; | 01:11 | ||
p6eval | nom: OUTPUT«Bool::False» | ||
pmichaud | although it is still Cool and Any | ||
sorear | nom: say Nil.WHAT | ||
p6eval | nom: OUTPUT«Nil» | ||
TimToady | Nil is about the closest thing we have to a bottom value | ||
sorear | nom: say Nil.^parents | ||
p6eval | nom: OUTPUT«Iterator() Iterable() Cool() Any() Mu()» | ||
TimToady | my $x := Nil; say $x | 01:12 | |
perl6: my $x := Nil; say $x | |||
p6eval | rakudo 922500: OUTPUT«Nil()» | ||
..pugs: OUTPUT«*** No such subroutine: "&Nil" at /tmp/3bLKcQdeAv line 1, column 1-13» | |||
..niecza v8-21-g9c1607b: OUTPUT«» | |||
TimToady | nom: my $x := Nil; say $x | ||
p6eval | nom: OUTPUT«Nil» | 01:13 | |
TimToady | that works | ||
nom: say Nil ~~ List | |||
p6eval | nom: OUTPUT«Bool::False» | ||
TimToady | why is Iterable there twice? | ||
pmichaud | It's not. | 01:14 | |
Iterator and Iterable | |||
TimToady is blind | |||
pmichaud | Nil is self-iteratating. | ||
*iterating. | |||
TimToady | self-irritating :) | ||
pmichaud | *irritating. Whatever. | ||
01:15
jevin left
|
|||
TimToady | sorear: is the -1 % 100 bug a niecza bug or a mono/clr bug? | 01:15 | |
rosettacode.org/wiki/Subtractive_generator <-- 3 uses of sequence operator! | 01:16 | ||
dalek | kudo/nom: cefbda4 | pmichaud++ | / (3 files): Some infix:<xor> improvements -- two true values passed to xor or ^^ |
01:17 | |
TimToady | also shows how very different p6 code can look from p5 code because of that | ||
sorear | TimToady: it's a niecza bug | 01:18 | |
pmichaud | afk, walk | ||
sorear | pmichaud: 'Nil is self-iterating' ? | ||
01:18
jevin joined
|
|||
pmichaud | some things such as Parcels and Nil can act as their own iterator. | 01:19 | |
i.e., they reify to themselves when iterated. | |||
sorear | ah | ||
dalek | kudo/nom: 6834ff0 | pmichaud++ | NOMMAP.markdown: Update NOMMAP. |
||
pmichaud | afk, walk. | 01:20 | |
sorear | nom: for Nil { say 1 } | ||
p6eval | nom: ( no output ) | ||
sorear | that's what I thought | ||
01:20
Moukeddar left
|
|||
TimToady | it's basically an undefined () | 01:20 | |
sorear | TimToady: (my $x := Nil leaving $x =:= Nil) is this a bug? | ||
pmichaud | these days I tend to lean towards the idea that := should do the binding, whatever it may be. | 01:21 | |
TimToady | possibly, according to current spec, but the spec might be wrong there | ||
what pmichaud++ said | |||
sorear | pmichaud: does that translate to "yes" or "no"? | ||
pmichaud | sorear: "not a bug" | ||
sorear | niecza: say -1.0 % 100.0 | ||
p6eval | niecza v8-21-g9c1607b: OUTPUT«-1/1» | ||
sorear | niecza: say -1e0 % 100e0 | ||
p6eval | niecza v8-21-g9c1607b: OUTPUT«99» | ||
pmichaud | similarly I tend to think that binding to a Parcel should leave things as a Parcel and not convert it to a Seq or anything else | 01:22 | |
sorear | niecza: say -1 % (2**64) | ||
p6eval | niecza v8-21-g9c1607b: OUTPUT«-1» | ||
TimToady | I'm find with binding being very primitive compared to assignment | ||
*fine | |||
sorear | looks like Num case is correct and all the others are backward | ||
pmichaud | right... keeping binding very primitive seems to be desirable in nom | ||
afk, walk for real this time. | 01:23 | ||
01:27
whiteknight left
|
|||
dalek | ecs: 81bd38c | larry++ | S02-bits.pod: Bind of Nil with := is primitive (But parameter binding is ::= semantics, which treats Nil as if no arg had been passed.) |
01:27 | |
01:32
ranott left
01:34
daniel-s joined
01:39
daniel-s_ joined,
daniel-s left
01:43
daniel-s__ joined,
daniel-s_ left
|
|||
sorear | niecza: (-1) % 100 | 01:49 | |
p6eval | niecza v8-21-g9c1607b: ( no output ) | ||
sorear | niecza: say (-1) % 100 | ||
p6eval | niecza v8-21-g9c1607b: OUTPUT«-1» | ||
sorear | niecza: say (-101) % 100 | 01:50 | |
p6eval | niecza v8-21-g9c1607b: OUTPUT«99» | ||
01:51
molaf joined
|
|||
dalek | ecza: 0053246 | sorear++ | lib/Builtins.cs: Fix sign behavior of % (TimToady) |
01:55 | |
01:59
woosley left
|
|||
daniel-s__ | nom: 4**3.say | 02:00 | |
p6eval | nom: OUTPUT«Rebuild in progress» | ||
daniel-s__ | rakudo: 4**3.say | 02:01 | |
p6eval | rakudo 922500: OUTPUT«3» | ||
daniel-s__ | rakudo: say 4**3 | ||
p6eval | rakudo 922500: OUTPUT«64» | ||
sorear | method call binds tighter than anything else | 02:04 | |
dalek | ecza: 826f49f | sorear++ | t/spectest.data: Add S02-names/pseudo.t |
02:07 | |
ast: fdbe891 | sorear++ | S02-names/pseudo.t: Finish S02-names/pseudo.t |
|||
sorear | wound up with 140 pseudo package tests | ||
02:29
daniel-s__ is now known as daniel-s
02:32
molaf left
02:38
rdesfo left
02:39
breinbaas left
02:40
breinbaas joined
02:46
lichtkind left
03:10
jaldhar left
03:11
jaldhar joined
03:21
envi joined
03:28
Su-Shee joined
04:05
jimmy1980 left
|
|||
dalek | ecza: 17807f3 | sorear++ | / (2 files): Implement .gist |
04:06 | |
04:10
wolfman2000 left
|
|||
sorear | 1 failing test (was 5) | 04:10 | |
04:11
mattp_ left
04:14
SHODAN joined,
jimmy1980 joined
|
|||
sorear | *file | 04:14 | |
04:17
birdwindupbird joined,
satyavvd joined
|
|||
dalek | ecza: 7888fe2 | sorear++ | src/NieczaFrontendSTD.pm6: Fix LTM automaton generation for user-defined operators |
04:26 | |
sorear | all spectests should now be an unregressed state | ||
04:34
araujo left
04:35
araujo joined,
sivoais left
04:43
am0c left
04:44
Moukeddar joined
04:46
am0c joined
04:50
SHODAN left
05:11
woosley joined
05:12
SHODAN joined
05:16
Moukeddar left
06:01
daniel-s left,
mberends left,
clkao left
06:02
clkao joined
06:07
wtw joined
06:08
mattp_ joined
|
|||
moritz | good morning | 06:15 | |
dalek | ast: 37d802d | moritz++ | S0 (6 files): rakudo unfudges |
||
ast: add4718 | moritz++ | S32-list/reduce.t: fix a test I broke earlier, moritz-- |
|||
sorear | hello moritz | 06:16 | |
moritz: niecza should be passing 'make spectest' again. also, 140 new pseudopackage tests. | 06:17 | ||
moritz | \o/ | ||
06:17
aloha left
06:19
koban joined
|
|||
sorear | niecza: CORE::say 1..5 | 06:19 | |
p6eval | niecza v8-25-g7888fe2: OUTPUT«1..5» | ||
TimToady | niecza: UNIT::say 1..5 | ||
p6eval | niecza v8-25-g7888fe2: OUTPUT«1..5» | 06:20 | |
TimToady | \o/ | ||
niecza: MY::say 1..5 | |||
p6eval | niecza v8-25-g7888fe2: OUTPUT«1..5» | ||
TimToady | ooh | ||
niecza: SETTING::say 1..5 | |||
p6eval | niecza v8-25-g7888fe2: OUTPUT«1..5» | ||
TimToady | wowee | ||
niecza: FOO::say 1..5; # just checking :) | 06:21 | ||
p6eval | niecza v8-25-g7888fe2: OUTPUT«Unhandled exception: Unable to resolve method postcircumfix:<( )> in class Any at /tmp/NM97DlEJJP line 1 (MAIN mainline @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 1957 (CORE C915_ANON @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 1958 (CO… | ||
TimToady | sorear++ | ||
06:37
aloha joined
06:59
masak joined
|
|||
masak | good morning, #perl6. | 06:59 | |
I have a question: why doesn't Perl 5 core have a 'comb' builtin by now? | 07:00 | ||
how do people cope? do they write their own? is there a CPAN module? | |||
sorear | well, there's m//g | 07:02 | |
07:02
mj41 joined
|
|||
sorear | buubot_backup: eval: join " ", "12+34*56" =~ m/\d+/g | 07:02 | |
buubot_backup | sorear: 12 34 56 | 07:03 | |
sorear | also o/ masak | ||
sorear points out shiny niecza feature to masak | 07:04 | ||
07:08
aindilis left
07:11
aindilis joined
|
|||
sorear | rakudo: say Str === Str | 07:12 | |
p6eval | rakudo 922500: OUTPUT«Bool::True» | ||
sorear | rakudo: say Str eq Str | ||
p6eval | rakudo 922500: OUTPUT«Bool::True» | ||
sorear | nom: say Str === Str | ||
p6eval | nom: OUTPUT«Bool::True» | ||
sorear | nom: say Str eq Str | ||
p6eval | nom: OUTPUT«Use of uninitialized value in string contextUse of uninitialized value in string contextBool::True» | ||
masak | sorear: cool! | 07:14 | |
and yes, there's m//g, that's not too bad. will use that :) | |||
07:29
odoacre left
07:35
odoacre joined
07:39
Mowah joined
|
|||
dalek | ecza: 6b9d707 | sorear++ | / (6 files): Implement new Nil model |
07:45 | |
ast: 5451960 | sorear++ | S02-builtin_data_types/nil.t: [S02-builtin_data_types/nil.t] Expand tests to cover all functionality in contemporaneous Niecza commit. |
07:46 | ||
sorear | moritz: I pre-skipped all the new tests for Rakudo because I don't know if it will pass them | ||
nom: sub foo($x = 123, $y = 456) { say ($x, $y) }; foo(Nil, 42) | 07:48 | ||
p6eval | nom: OUTPUT«Nil 42» | ||
sorear | evalbot rebuild niecza | ||
p6eval | OK (started asynchronously) | ||
sorear | niecza: sub foo($x = 123, $y = 456) { say ($x, $y) }; foo(Nil, 42) | 07:49 | |
p6eval | niecza v8-26-g6b9d707: OUTPUT«123 42» | ||
sorear | I decided it made more sense just to check for Nil in the signature binder | 07:50 | |
if we find Nil while doing type checking and it came from a parameter, we throw out the argument and try again using the fallbacks | 07:51 | ||
07:51
meteorjay joined
|
|||
sorear | hmm, I'm at a good stopping point | 07:52 | |
sorear sleep | |||
07:56
wamba joined
|
|||
masak | 'night, sorear | 08:05 | |
dream of more wonderful features in Niecza. | |||
08:42
daxim joined
08:45
woosley left
08:47
woosley joined
08:51
Kivutarrr joined,
zamolxes left
08:52
zamolxes joined
08:58
woosley1 joined,
woosley1 left
09:00
woosley left
09:04
jjore_ left
|
|||
jnthn | o/ #perl6 | 09:06 | |
09:25
Mowah left
09:29
satyavvd left
09:31
ranott joined
09:34
beekor left
|
|||
masak | \o jnthn | 09:35 | |
moritz | o/ | 09:36 | |
09:37
ab5tract joined
10:09
espadrine joined
|
|||
dalek | ast: 5eced30 | moritz++ | integration/lazy-bentley-generator.t: turn an RC entry by TimToady++ into an integration tests Very interesting for us, because it makes nom segfault |
10:14 | |
10:16
im2ee joined
10:17
im2ee left
10:23
Kivutarrr left
10:47
cosimo joined
10:49
jjore joined
11:05
ab5tract left
|
|||
jnthn | masak: o/ | 11:06 | |
jnthn teaching :) | |||
ooh, a segfault | 11:07 | ||
11:07
tokuhirom left,
tokuhirom joined
|
|||
jnthn | somehow we're getting a Parrot string leaking in. | 11:11 | |
moritz imagines jnthn diagnosing a segfault while teaching | |||
11:12
tokuhirom left
|
|||
tadzik | „yeah, ok kids, just a second, I got this..” | 11:13 | |
oh, good afternoon #perl6 | |||
moritz | \o tadzik | 11:14 | |
dalek | ast: 1640c4b | moritz++ | S02-builtin_data_types/nil.t: refudge nil.t for rakudo |
||
jnthn | :) | 11:15 | |
Nah, they're doing exercies :) | 11:16 | ||
moritz | kids, please design a complete storage and meta-object system for Perl 6 that supports gradual typing; don't bother me with questions until you're finished. | ||
11:18
ab5tract joined
|
|||
tadzik | jnthn: whatcha teaching? | 11:19 | |
jnthn | SVN this morning, JavaScript this afternoon :) | ||
Segfaults on the &subrand ... *; | 11:20 | ||
11:20
azawawi joined
|
|||
azawawi | hi | 11:20 | |
11:20
satyavvd joined
|
|||
azawawi | moritz: ping | 11:20 | |
jnthn could make it go away by making assignment coerce or die for non-Perl 6 types | |||
But I'd rather work out where the Parrot string is coming from. | 11:21 | ||
azawawi | Just wanted to say that the latest development release of Wx::Scintilla now wraps the latest Scintilla 2.x. This means that we now have control over Perl and Perl 6 lexer in scintilla in Padre and other editors using Wx | 11:23 | |
i started working on LexPerl6.cxx, should i use the spec as the source code for highlighting stuff | 11:24 | ||
or perl6-examples? | |||
moritz | azawawi: pong | ||
STD.pm6 is a pretty good, big chunk of Perl 6 code to test on | 11:25 | ||
azawawi | so STD.pm6 and NieczaActions.pm6 | 11:26 | |
11:26
MayDaniel joined
|
|||
moritz nods | 11:26 | ||
azawawi | cool | ||
moritz | wingolog.org/archives/2011/08/02/a-...g-compiler might interest the compiler junkies | 11:28 | |
11:29
odoacre left
11:35
cosimo left
11:40
azawawi left
|
|||
tadzik | mmm, bacon for breakfast | 11:44 | |
life doesn't get much better than that :) | 11:45 | ||
moritz | $ ./perl6 -e 'class MyEx is Exception { }; try { MyEx.new().throw }; say $!.WHAT' | 11:46 | |
MyEx() | |||
\o/ | |||
tadzik | yay! | 11:47 | |
moritz | yesterday I experimented with it, and only got segfaults and infinite loops as response | ||
now I've decided to approach it differently, more bottom-up | 11:48 | ||
dalek | kudo/nom-exceptions: 8ea619d | moritz++ | NOMMAP.markdown: note a segfault in NOMMAP |
||
kudo/nom-exceptions: 69e9988 | moritz++ | src/core/Exception.pm: extract payload from parrot excetions, if available |
|||
kudo/nom-exceptions: 0c51f85 | moritz++ | src/core/Exception.pm: in Exception, make sure we have a parrot exception before throwing |
|||
moritz | and I've only modified src/core/*.pm files for it so far | ||
11:49
timbunce joined
|
|||
takadonet | morning all | 11:54 | |
11:59
pernatiy joined
12:01
satyavvd left
12:07
donri joined
12:11
im2ee joined
|
|||
tadzik | morning takadonet | 12:16 | |
moritz | nom: multi d(*@a) { 1 }; multi d(Exception $x) { 2 }; say d Exception.new | 12:22 | |
p6eval | nom: OUTPUT«Ambiguous dispatch to multi 'd'. Ambiguous candidates had signatures::(Positional @a):(Exception $x)current instr.: 'd' pc 478 ((file unknown):485) (/tmp/PYK54132Gp:1)» | ||
jnthn | that looks dubious | ||
The non-slurpy should win, I think. | |||
can't investigate now | |||
moritz | my attempts in the setting (with die()) have the slurpy one always win | ||
yes, I agree | 12:23 | ||
jnthn | Not so surprising there's an issue there - I've yet to get through triaging the multi tests. | ||
12:24
awoodland joined
|
|||
moritz | .u ä | 12:26 | |
phenny | U+00E4 LATIN SMALL LETTER A WITH DIAERESIS (ä) | ||
12:27
im2ee left
|
|||
tadzik | oh, da964eb128332cca8126543a413e905e24a9a75e is a fail | 12:29 | |
12:29
BooK left
|
|||
tadzik | in t/pod/07-tables.t last two tables have an identical ast tree | 12:30 | |
moritz again comments on checking $/.from and $/.to | |||
tadzik | yes, that's what I'm up to no | ||
so the hash index would be from-to, rather than the id | 12:31 | ||
does infix:<~> stringify both sides, in nqp? | |||
seems so | 12:33 | ||
dalek | kudo/nom: 967ab7a | tadzik++ | src/Perl6/Actions.pm: Use $/.from ~ ",' ~ $/.to as a POD block id when adding them to $=POD The previous approach didn't work for two identical POD blocks existing in the document, and caused a failure in t/pod/07-tables.t |
12:35 | |
kudo/podparser: e028411 | jonathan++ | src/ (4 files): Register Capture type so we can use it in the binder. |
|||
kudo/podparser: 3588736 | jonathan++ | src/core/Capture.pm: Fix a thinko. |
|||
kudo/podparser: 0bc9883 | jonathan++ | src/ (2 files): Make |$c work again in signatures; $c becomes a Capture with the current unbound stuff in it. |
|||
kudo/podparser: d74aaa8 | tadzik++ | / (19 files): Merge branch 'nom' into podparser |
|||
tadzik | hrm | 12:36 | |
what is podparser doing here | |||
moritz | you merged into podparser | 12:37 | |
tadzik | I just did 'git push', this must've pushed some old podparser commits already merged into nom and pushed, but not pushed to github/podparser | ||
ok if I remove that branch now? | 12:38 | ||
moritz | what does 'git branch' says? | 12:39 | |
first, git checkout nom | |||
tadzik | nom | ||
moritz | then git branch -D podparser | ||
then | |||
git push origin :podparser # note the colon | |||
tadzik | yeah, I know how to do it :) | ||
just asking if to do it :) | 12:40 | ||
moritz | if you don't need it anymore, delete it | ||
note that in the end, you'll have to get a list of your commits to submit them to gsoc | |||
donri | bitbucket.org/gward/vcprompt/ ;) | ||
tadzik | huh | 12:41 | |
moritz | dunno if you need the branch for that... you can just go through the nom commit list | ||
tadzik | I probably will. All commits done in the summer, not only those gsoc-related? | ||
donri: yeah, I have (nom) in my prompt :) | 12:44 | ||
moritz | tadzik: all gsoc related commits | 12:46 | |
tadzik | oh, that'll require some work :) | ||
luckily, majority of my commits all gsoc related | |||
donri | om nom nom | 12:49 | |
12:57
Holy_Cow joined
12:59
Holy_Cow left
|
|||
masak | how old is 'our'? since v5.0.0? | 13:00 | |
[Coke] | nom: www.cnn.com/ | 13:08 | |
p6eval | nom: OUTPUT«Confused at line 1, near "www"current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)» | ||
[Coke] | does it only work on gist? ;) | 13:09 | |
moritz | yes | ||
p6eval special-cases the URLs and follow the link to the raw text | 13:10 | ||
[Coke] | *snap* | ||
13:23
stephanmg joined,
stephanmg left
13:24
daniel-s joined,
shinobicl joined
13:28
daniel-s left
13:29
daniel-s joined
13:31
jaldhar left
13:33
daniel-s left,
daniel-s joined
13:37
daniel-s left,
Chillance joined,
daniel-s joined
13:38
mls_ joined
|
|||
mls_ | Hi perl6! | 13:38 | |
moritz | hello mls_ | ||
mls_ | $dayjob is interfering with perl6 hacking quite a bit today ;( | ||
PerlJam | good morning #perl6 | 13:39 | |
tadzik | hello mls_, PerlJam | ||
moritz | good morning PerlJam | ||
mls_: as long as it pays the bills... | |||
mls_ | right... ;) | ||
jnthn | mls_: know the feeling :) | 13:41 | |
13:42
daniel-s left,
daniel-s joined
13:46
daniel-s_ joined,
daniel-s left
|
|||
jnthn | nom: my %h = a => ['a','a'], b => ['b']; %h.pairs.max({ $^x.value.elems }) | 13:47 | |
p6eval | nom: OUTPUT«No applicable candidates found to dispatch to for 'Numeric'. Available candidates are::(Mu, Mu %_)current instr.: 'Numeric' pc 620679 (src/gen/CORE.setting.pir:157473) (src/gen/CORE.setting:434)» | ||
jnthn | Bug :( | ||
13:51
daniel-s__ joined,
daniel-s_ left,
smash joined
|
|||
mls_ | jnthn: did you already fix the lex problem in the CATCH handler (i.e. $_ and $! not being accessible)? | 13:52 | |
moritz | nom: try { die 'foo'; CATCH { say $! } } | 13:53 | |
p6eval | nom: OUTPUT«Any()» | ||
moritz | looks like "no" | ||
jnthn | mls_: no | ||
13:54
leprevost joined
13:55
daniel-s__ left,
daniel-s__ joined
13:57
mkramer joined
|
|||
mls_ | a simple workaround would be to make the code generate a capture_lex, but I'd prefer a real fix | 13:58 | |
13:59
mkramer left
|
|||
smash | hello everyone | 14:00 | |
moritz | \o smash | 14:02 | |
14:04
drbean left
14:06
awoodland left
14:09
uvtc joined
|
|||
uvtc | azawawi: Great news about LexPerl6.cxx. azawawi++ . Besides Scite, I think Geany also uses Scintilla. | 14:10 | |
azawawi: Thanks for doing it. :) | 14:11 | ||
phenny, tell azawawi irclog.perlgeek.de/perl6/2011-08-03#i_4215724 | 14:14 | ||
phenny | uvtc: I'll pass that on when azawawi is around. | ||
14:16
uvtc left
14:20
Holy_Cow joined
|
|||
[Coke] | lexperl6.cxx? | 14:31 | |
jnthn | mls_: The real fix is to finish the $! and $/ refactor so we really only give them to routines and then lookup them us as dynamics. | 14:32 | |
That fixes $! | |||
$_ - the block should take a $_ as an implicit parameter, I suspect. so that's how $_ is set. | 14:33 | ||
[Coke] | will fix, or has fixed? | ||
14:33
wamba left
|
|||
jnthn | will fix | 14:33 | |
Thing is that we still need the capture_lex though. | |||
I'm not sure why that is missing. | |||
oh, I bet it's not missing | 14:34 | ||
Just pointing to the real outer rather than the fake frame we insert for the handler. | |||
14:36
molaf joined
14:38
birdwindupbird left
14:40
wtw left
|
|||
PerlJam | why can't people be more like #perl6 people? | 14:51 | |
[Coke] | PerlJam: oh, yah, like THAT would help. | 14:52 | |
... you didn't mean sarcastic, did you. | 14:53 | ||
moritz | PerlJam: then people wouldn't see a reason to come here anymore (except the awesome language, of course) | ||
PerlJam | [Coke]: you remind me so much of this guy I work with ;) | 14:54 | |
[Coke] | uhoh. | ||
14:54
Holy_Cow left
|
|||
PerlJam | last night I had some family drama that could have been avoided if people were just a little more logical and forthright. | 14:55 | |
today I have work drama because people are having "communication" issues. | |||
At least on #perl6 there's some humor to offset any drama :) | 14:56 | ||
(I mean, even just writing those sentences I had to wonder about the existence of a "forth wright" which has a bit of a humor component) | 14:57 | ||
shinobicl | hi.... is Mu == undefined value? | 15:00 | |
PerlJam | shinobicl: most undefined :) | ||
moritz | Mu is an undefined value, yes | ||
shinobicl | is ok if a function of mine returns Mu when the arguments are not valid? | ||
PerlJam | shinobicl: does it return some other typed info normally? | 15:01 | |
shinobicl | an Int | ||
moritz | shinobicl: it's much saner to fail() | ||
or to put the appropriate constraints into the signature | |||
thing is, if a function returns Mu that would normally return an Int, the calling code either has to handle that case directly, or it will fail with a weird error | 15:02 | ||
shinobicl | mmm... fail... that will throw an exception... well, is saner that way i guess | ||
moritz | so rather throw an informative error in the first place | ||
15:03
koban left,
molaf left
15:07
SHODAN left
15:11
slavik left,
slavik joined
15:12
colourspace joined,
wamba joined
15:13
slavik left,
slavik joined
15:18
xinming_ joined
15:21
xinming left
|
|||
masak | PerlJam: sometimes we're just as trigger-happily defensive, illogical, and trollable as on any other IRC channel. at least I am :) | 15:25 | |
PerlJam: but yes, it is indeed offset by something which makes the overall atmosphere here feel very nice. | |||
masak hugs everyone :) | |||
decommute & | 15:26 | ||
PerlJam | no masak, you're WRONG .... sorry, I can't channel tchrist long enough to build up a good novelesque rant :) | ||
masak | :P | ||
you have until I get home to disprove me. then you goin' down :P | 15:27 | ||
15:27
masak left
|
|||
PerlJam | But that's almost #perl6's motto (mission?) or something. #perl6: the friendly place. | 15:28 | |
15:35
Doctor_Pi joined
|
|||
Doctor_Pi | I'm having some problems building rakudo-star 2011-07. Should I report them here or the mailing lists? | 15:37 | |
PerlJam | Doctor_Pi: here is a good start. | ||
Doctor_Pi: what OS? What problems? | |||
Doctor_Pi | Mac OS X 10.5.8 on a PowerBook G4 | 15:38 | |
15:40
daniel-s__ left
|
|||
jnthn home :) | 15:40 | ||
PerlJam | Doctor_Pi: what are the problems exactly? | ||
Doctor_Pi | My command "perl Configure.pl --gen-parrot --gen-parrot-option='--icu-config=/usr/local/bin/icu-config' does a whole bunch of stuff and then terminates with a "Unable to locate parrot-config" error. | 15:42 | |
flussence | s/gen-parrot-option/parrot-option/ | ||
15:44
daxim left
|
|||
Doctor_Pi | flussence: no, part is correct. I can see it finds icu-config with that part. The command was still terminating with just the --gen-parrot part. | 15:45 | |
PerlJam: there is an earlier error message which I think is relevant. Let me find it and post it. | |||
15:49
JimmyZ joined
|
|||
[Coke] returns from a meeting, and wonders if a forth wright is a like a mill wright. | 15:56 | ||
Doctor_Pi | PerlJam: Argument "RELEASE_3_6_0" isn't numeric in addition (+) at Configure.pl line 25, <$REQ> line 1. Appears right after I run the command. | 15:59 | |
PerlJam | Hmm | ||
[Coke] | I'm assuming that's rakudo's configure, not parrots. | 16:01 | |
16:04
JimmyZ left
|
|||
Doctor_Pi | PerlJam: wait a sec. There's more sorry and it was staring at in the face. I think I should use pastbin for the next part. | 16:05 | |
PerlJam: pastebin.com/9WkYLULk | 16:09 | ||
PerlJam | ah, evil pcre | 16:10 | |
you'll have to pass --without-pcre to parrot | 16:11 | ||
(to parrot's config that is) | |||
or install libpcre | |||
[Coke] | probably have an older version in path somewhere that got picked up, and parrot's too stupid to deal with it. | 16:12 | |
PerlJam++ | |||
Doctor_Pi | I can have as many --gen-parrot-option as I want in the master Configure.pl? | ||
PerlJam | Doctor_Pi: I think so, but I don't know for sure. | 16:13 | |
Doctor_Pi | or I can just add it in mty existing one | ||
PerlJam | Doctor_Pi: alternatively, I think you can say --gen-parrot-option='--icu-config=... --without-pcre' | 16:14 | |
16:15
broquaint joined
|
|||
moritz | that won't work | 16:16 | |
I think you have to repeat --gen-parrot-option= for each option you want to pass on | |||
16:17
nine left,
nine joined,
[particle] left
16:18
spetrea left,
sftp left
16:19
spetrea joined,
sftp joined
16:20
felher left
|
|||
pmichaud | good morning, #perl6 | 16:21 | |
Doctor_Pi | Let my try. | ||
takadonet | pmichaud: morning | 16:24 | |
16:24
yath left
|
|||
Doctor_Pi | ok adding "--without-pcre" in the --gen-parrot-option to a preexisting option didn't work. Will repeat --gen-parrot-option. | 16:25 | |
[Coke] | karma pmichaud | 16:26 | |
aloha | pmichaud has karma of 1167. | ||
[Coke] | pmichaud++o/ | ||
karma pmichaud | |||
aloha | pmichaud has karma of 1168. | ||
Doctor_Pi | moritz: you're right. One has repeat --gen-parrot-option= for each option you want to pass on. | 16:28 | |
pmichaud | nom: my $x; $x ^^= 42; $x ^^ = 15; say $x; | 16:29 | |
p6eval | nom: OUTPUT«Confused at line 1, near "$x ^^ = 15"current instr.: 'nqp;HLL;Grammar;panic' pc 23611 (src/stage2/gen/NQPHLL.pir:6348) (src/stage2/gen/NQPHLL.pm:329)» | ||
pmichaud | nom: my $x; $x ^^= 42; $x ^^= 15; say $x; | ||
p6eval | nom: OUTPUT«Nil» | ||
pmichaud | \o/ | ||
16:30
yath joined
16:32
noganex_ left
|
|||
[Coke] | yay | 16:33 | |
shinobicl | continuing with throwing an exception for invalid data instead of just returning Mu... in a test, how should i test it? What is the variable for capturing the error after the "try" ? | 16:34 | |
PerlJam | shinobicl: $! | ||
moritz | shinobicl: dies_ok { your_func("invalid arguments") }, 'description'; | 16:35 | |
PerlJam | shouldn't that be fails_ok :) | 16:36 | |
moritz | nom: use Test; sub f() { fail('a') }; dies_ok { f() } | 16:37 | |
p6eval | nom: OUTPUT«not ok 1 - » | ||
moritz | hm | ||
pmichaud | fail doesn't throw an exception, it returns a value. | ||
moritz | I guess it should just call the closure in sink context | ||
which would then rethrow | 16:38 | ||
shinobicl | cool.. thanks moritz | ||
moritz | nom: use Test; sub f() { fail('a') }; isa_ok f, Failure | ||
p6eval | nom: OUTPUT«ok 1 - The object is-a 'Failure'» | ||
PerlJam | moritz++ you can never have too much karma | 16:39 | |
moritz | pmichaud: any comments on the nom-exceptions branch? | ||
pmichaud | moritz: didn't know there was one... looking. | ||
(or maybe I knew but forgot) | 16:40 | ||
moritz | pmichaud: it doesn't regress anything, but doesn't add too much either... my attempt to add a die() multi that throws an existing exception failed due to a dispatchy detail | ||
oh, it's new | |||
16:42
noganex joined
|
|||
pmichaud | + my Mu $payload := nqp::atkey($parrot_ex, 'payload'); | 16:43 | |
+ my $ex := pir::defined($payload) ?? $payload !! nqp::create(Exception); | |||
that looks... wrong. | |||
I don't think that $!ex should be anything other than a Parrot Exception. | |||
[Coke] | pmichaud: if I go to 123people.com and search for my name, I see your picture under "related pictures". (but not mine). The internets are creepy. | ||
16:43
mj41 left
|
|||
pmichaud | [Coke]: it's just the electronic version of tabloids, I suspect. :-/ | 16:44 | |
16:46
Moukeddar joined
|
|||
PerlJam | [Coke]: does you picture show up when you search for pmichaud's name? :) | 16:47 | |
s/you/your/ | |||
pmichaud | PerlJam: doesn't look like it. | ||
moritz | pmichaud: that's not the parrot exception, but the one we pass to the user | 16:48 | |
pmichaud: and the idea is to attach a Perl 6 exception as a payload of the parrot exception, and unwrap before we turn it to p6 land | 16:49 | ||
PerlJam | [Coke]: Apparently you're 39. All of the Premium Public Records show age: 39 | ||
16:49
wolfman2000 joined
|
|||
moritz | pmichaud: and only in the cases were the parrot exception doesn't have a payload do we create a new Perl 6 exception object | 16:50 | |
[Coke] | PerlJam: maaaaaaaaayb | ||
16:54
[particle] joined
|
|||
pmichaud | moritz: but what about Parrot exceptions that already have a payload? | 16:55 | |
(that aren't Perl 6 exceptions?) | |||
16:56
avar left
|
|||
moritz | pmichaud: those never occur in the whole spectest suite | 16:56 | |
pmichaud: but I agree that we should guard against those | |||
16:56
athomason joined
|
|||
pmichaud | I'm certain that our testing of Exceptions is underdone | 16:56 | |
this repeated argument of "it doesn't occur in the spectest suite" is getting a little stale, given that we know the spectest suite is really not very complete on edge cases. | 16:57 | ||
or in new features. | |||
moritz | but the test coverage won't increase unless somebody implements these features | 16:58 | |
PerlJam | pmichaud: I thought it was an invitation to add more tests | ||
[Coke] | pmichaud: no, but it's a reasonable starting point, esp. for people like me who don't necessarily know any big picture items. | ||
moritz | so, coming back to the original discussion, would you be fine with the branch if I additionally check if the payload is a 6model object? | 16:59 | |
or ~~ Any or so? | |||
16:59
Moukeddar left
|
|||
pmichaud | I want to know more about what problem is trying ot be solved here, first. | 16:59 | |
moritz | throwing and returning more than type of exceptions | ||
16:59
literal left
17:00
literal joined
|
|||
pmichaud | example? | 17:00 | |
moritz | in nom and master, if you subclass Exception, throw it and catch it, you an Exception, not an object of your subclass | ||
17:00
Gothmog_ left,
Gothmog_ joined
|
|||
moritz | nom: class A is Exception { }; try { die A.new }; say $!.WHAT | 17:00 | |
p6eval | nom: OUTPUT«Exception()» | ||
pmichaud | nom: class A is Exception { }; try { A.new.throw }; say $!.WHAT | 17:01 | |
p6eval | nom: OUTPUT«Exception()» | ||
moritz | in the long run I want to throw lots of different exception classes/objects | 17:02 | |
pmichaud | okay, I understand that part. | ||
moritz | like X::Comp, X::IO etc. | ||
[Coke] | +1 there. | 17:03 | |
17:03
tokuhirom joined
|
|||
pmichaud | I think it's a mistake in .throw() to rebind $!ex without possibly saving the old value somewhere. | 17:03 | |
I'm wondering if a new Parrot Exception should be created when the Perl 6 Exception object is created, instead of when it's thrown. | 17:04 | ||
17:04
avar joined,
avar left,
avar joined
|
|||
pmichaud | (i.e., in .BUILD or .new instead of .throw) | 17:04 | |
17:05
noganex left
|
|||
pmichaud | also, I should note that we do have Parrot Exceptions that carry payloads -- all of the control exceptions do so. | 17:07 | |
moritz | pmichaud: I think the correct solution is to call a method on the Perl 6 exception object, so that it can decide what do with it (replace, stack or ignore) | ||
pmichaud | I'm having trouble parsing "it" there | 17:08 | |
s/parsing/binding/ | 17:09 | ||
moritz | it == the parrot exception | ||
pmichaud | for both "it"s? | ||
17:09
pernatiy left
|
|||
moritz | no, the second | 17:09 | |
flussence | .oO( English needs more pronouns... or named variables ) |
17:11 | |
pmichaud | I think named variables are called "nouns". ;-) | ||
17:11
noganex joined
|
|||
moritz | I think we should have some contranouns that go with the pronouns | 17:12 | |
PerlJam | .oO(anti-nouns?) |
17:13 | |
pmichaud | anyway, checking that the payload is a 6model object doesn't seem that useful to me. All of the payloads that I think we encounter are likely to be Perl 6 objects. They just aren't necessarily Perl 6 Exceptions. | ||
i.e., I'm against the assumption that the payload is a Perl 6 Exception. | |||
(because it's false) | |||
moritz | does &EXCEPTION ever see control exceptions? | 17:14 | |
pmichaud | I suspect it would, for CONTROL blocks. | ||
moritz | ok | 17:15 | |
17:15
Holy_Cow joined,
Holy_Cow left
|
|||
moritz | so, checking ~~ Exception? | 17:15 | |
(or X::Base, once we get to it) | |||
pmichaud | somehow I wish we were checking the type of the Parrot Exception instead of the payload. | ||
I can conceive of having an exception that carries another exception as its payload. | |||
moritz | so, introspect the 'type' attribute of the parrot exception? or subclass it, check its type? | 17:16 | |
pmichaud | one of those two, maybe. I'm not really sure. | 17:17 | |
It would really help to have a lot more use cases. | |||
moritz | what kind of use cases? | ||
pmichaud | that's what I'm missing at the moment -- a set of use cases that help to illuminate the problem space. | ||
moritz | my current one is basically | ||
pmichaud | what will be creating the exceptions? | ||
moritz | die(), or X::Something.new() | 17:18 | |
pmichaud | yeah, but that doesn't seem to really illuminate the problem space for me. | ||
17:18
kaare_ joined
|
|||
moritz | try { eval $somestring; CATCH { given X::Comp { say 'Could not compile your input, sorry' } } } | 17:18 | |
pmichaud: that's why I'm asking what kind of use cases you want | 17:19 | ||
pmichaud | s/given/when/ ? | ||
moritz | erm, yes | ||
sorry | |||
pmichaud | okay, that's a lot more helpful. | ||
so, in that case, eval() has to be able to generate a X::Comp exception | |||
moritz | yes | 17:20 | |
or more accurately, the compiler | |||
into which eval() calls | |||
pmichaud | well, I suspect eval() has to catch the exception from the compiler. The compiler might not know about Perl 6 Exceptions -- might not be Perl at all. | ||
17:21
kjeldahl_ joined
|
|||
pmichaud | i.e., eval() has to catch the exception from the compiler, and convert it to an appropriate X::Comp exception. | 17:21 | |
17:21
impious joined,
kjeldahl_ left
17:23
noganex left
|
|||
pmichaud | although since it's in a try block already, I guess any exception coming back from a (foreign?) compiler will have already gone through &EXCEPTION, at least as things currently stand. | 17:24 | |
moritz | sorry, have to run, bbi3h | ||
pmichaud | okay, I'll keep thinking on the issue. | ||
17:27
benabik joined
|
|||
pmichaud | Today's forecast high temperature: 109degF (42.8degC) :-( | 17:31 | |
PerlJam | pmichaud: according to my iphone, it's only 102 degF though ;) | 17:32 | |
PerlJam suddenly feels slightly happier about 95 degF | |||
17:32
tcunha left
|
|||
flussence | jeez, I get worried when my CPU gets that hot... | 17:33 | |
pmichaud | my outdoor thermometer currently reads 105.8 | ||
overnight low temperature was 87.5 :-( | 17:34 | ||
sjohnson | yikes.com | 17:36 | |
that's hot! | |||
17:36
masak joined
|
|||
masak | evening, #perl6. | 17:36 | |
jnthn | pmichaud: Ouch! :O | ||
pmichaud | masak! o/ | ||
jnthn | yay tis masak! | ||
colomon | \o | ||
jnthn has a $dayjob free evening. Dinner first, then hopefully some decent nom hacking :) | |||
masak | PerlJam: I'm not saying #perl6 isn't a very friendly place. it is. | ||
PerlJam | masak: I know ... I was just messing with you. | 17:37 | |
masak | PerlJam: I'm saying that it's a friendly place not because the people here are exceptionally friendly, although they probably are... | ||
PerlJam: ...but because we work on it, consciously and as a group. | |||
PerlJam | yeah, it's our hug-culture | ||
masak | for each year that passes, I'm happy to realize that it seems to work even as we scale up. | 17:38 | |
hopefully the early seeding of friendliness will overpower the inevitable dilution of growing. | |||
pmichaud | that's been my experience in another forum as well. As long as the seeding takes hold, momentum goes a long way. | 17:39 | |
takadonet | masak: My sudoku solver did not finish even over night :( | 17:43 | |
17:44
M_o_C joined,
M_o_C left,
M_o_C joined
17:46
molaf joined
|
|||
mls_ | finished $dayjob (this day: openssl hacking). back to nom... | 17:46 | |
17:50
nsh left,
sbp left
|
|||
masak | takadonet: that just means you need to find another approach. could be worse. :) | 17:55 | |
takadonet | ya well going to test it now to ensure that it works using a VERY simple sudoku puzzle | ||
i was getting some weird uninitizal error but they got fix with updates to nom branch | 17:56 | ||
17:58
nsh joined
17:59
sbp joined
|
|||
takadonet | well it works but getting some warnings message... | 17:59 | |
bbl | 18:00 | ||
18:03
mkramer joined
18:04
mkramer left
18:16
felher joined
|
|||
Doctor_Pi | make spectest in the rakudo subdirectory is giving me "fatal: not a git repository" right after "cd t/spec && git fetch && git checkout rakudo-master && git merge origin/rakudo-master" . The tests are running anyways. | 18:22 | |
18:31
Mowah joined
18:40
am0c left
|
|||
dalek | ecza: 8e562ff | sorear++ | lib/CORE.setting: Fix crash on Range iteration |
18:44 | |
sorear | good * #perl6 | 18:46 | |
18:47
espadrine left
|
|||
[Coke] | sorear: hio. | 18:49 | |
masak | o/ sorear | 18:50 | |
18:52
Trashlord left
18:54
Trashlord joined
18:57
survery joined,
survery left
18:58
aindilis left,
aindilis joined
19:00
pernatiy joined
19:01
M_o_C left
19:06
jjore left,
jjore joined
19:07
[Coke] left
19:09
[Coke] joined
|
|||
sorear | ok, that last commit took 50 failed test files down to 4 | 19:13 | |
masak | \o/ | ||
sorear | nom: enum Foo < A B C >; say Foo::A.Str | 19:14 | |
p6eval | nom: OUTPUT«A» | ||
sorear | nom: say True.gist | 19:15 | |
p6eval | nom: OUTPUT«Bool::True» | ||
sorear | nom: say ~True | ||
p6eval | nom: OUTPUT«Bool::True» | ||
masak | nom: say True ~~ * | 19:16 | |
p6eval | nom: OUTPUT«Bool::True» | ||
dalek | ast: fc26150 | sorear++ | S02-builtin_data_types/bool.t: [S02-builtin_data_types/bool.t] Update for new Enum .gist/.Str rules |
19:19 | |
19:21
localhost joined
|
|||
sorear | nom: say item Nil | 19:22 | |
p6eval | nom: OUTPUT«Could not find sub &itemcurrent instr.: '_block1002' pc 79 ((file unknown):12758678) (/tmp/7T4gPHTNrr:1)» | ||
pmichaud | ooc, does the spec list the stringification of Bool anywhere? | 19:23 | |
masak .oO( if it's an enum, yes... ) | |||
pmichaud | wfm | ||
sorear | the spec defines Bool as an enum | ||
masak | rakudo: say item Nil | 19:24 | |
p6eval | rakudo 922500: OUTPUT«» | ||
pmichaud | rakudo: say (item Nil).WHAT | ||
masak | rakudo: say (item Nil).WHAT | ||
sorear | I think there should probably be a (Note: Implementations are not required to actually use the 'enum' keyword, due to circularity issues. However Bool should *act* as if it were an enum.) | ||
p6eval | rakudo 922500: OUTPUT«Seq()» | ||
sorear | I'm wondering what the signature of item should be | ||
currently in niecza it's sub item(Mu $x) { $x } | 19:25 | ||
niecza: say item Nil | |||
p6eval | niecza v8-26-g6b9d707: OUTPUT«Unhandled exception: No value for parameter Mu $x in CORE item at /home/p6eval/niecza/lib/CORE.setting line 0 (CORE item @ 0)  at /tmp/NQHWqVlYjT line 1 (MAIN mainline @ 1)  at /home/p6eval/niecza/lib/CORE.setting line 1964 (CORE C920_ANON @ 2)  at … | ||
jnthn | eww | ||
sorear | I'm considering a change to 'Mu $x?' | ||
jnthn: what at? | |||
jnthn | Nil doing that. | 19:26 | |
pmichaud | item parses as a list operator. | ||
sorear | jnthn: turning to Seq, or being ignored by the binder? | 19:27 | |
jnthn | sorear: Requring a special case in the binder. | ||
sorear | S02:2244 | ||
jnthn | Yes, I know what the spec says. It doesn't mean I have to agree it's a good idea. :) | 19:28 | |
19:28
noganex joined
19:34
[particle] left
|
|||
flussence | ohai, I let that script run for a week: github.com/flussence/specgraphs/ra...-tests.png | 19:35 | |
(the output's still a bit messy but the data's there) | |||
jdhore | flussence, I'm guessing the green line is nom? | 19:37 | |
flussence | it's all nom, the lines are pass/fail/something | ||
I don't think they're stacked quite right... | |||
jdhore | ah | 19:38 | |
flussence | there's a script and csv file to do this in rakudo/docs & rakudo/tools already, but the data for it hasn't been updated in ages | 19:40 | |
19:40
[particle] joined
|
|||
flussence | and GD::Graph isn't all that pretty to look at IMO, so I wrote another one more or less from scratch using Chart::Gnuplot. still getting the hang of it though... | 19:42 | |
moritz back | 19:43 | ||
jnthn | o/ Mowah | 19:44 | |
er | |||
o/ moritz | |||
darn tab key not being smart enough | 19:45 | ||
dalek | kudo/nom: 21977e8 | jonathan++ | src/binder/types. (2 files): Add a way to store Nil in preperation for handling it in more cases. |
||
kudo/nom: 07c976f | jonathan++ | src/binder/ (3 files): Transform a segfault into an exception (moritz++ for reporting). |
|||
kudo/nom: 1519560 | jonathan++ | NOMMAP.markdown: Remove one completed goal from NOMMAP, as well as one that's kinda too vague to be useful. |
|||
jdhore | "Probably many our things become my things." <--- If you had no context, this sentence would be hilariously nonsensical. | 19:47 | |
jnthn | :) | 19:48 | |
S02-builtin_data_types/pair.t seems to think you should be able to do $pair.key := "KEY" | 19:49 | ||
imo, binding doesn't work in this case | |||
(e.g. that's not one of the LHS forms we should be able to bind to) | 19:50 | ||
sorear | +1 | ||
absolutely no binding to method returns. ever. | |||
moritz | feel free to kick out that test | 19:51 | |
jnthn | \o/ | ||
pmichaud | ...then how does @a[$x] := ... work? | ||
dalek | atures: 3f6c104 | larry++ | features.json: add pseudo packages |
19:52 | |
pmichaud | I'm fine with saying that Pair.key cannot be rebound -- S02:1505 seems to say as much. | ||
jnthn | pmichaud: Syntactic form. | 19:53 | |
TimToady | Lisp programmers might want to change a cdr though... | 19:54 | |
jnthn | pmichaud: It becomes something like @a.postcircumfix:<[ ]>($x, :BIND(...)) or some such. | ||
TimToady is back from a morning-long power feyl | 19:55 | ||
PerlJam | "power feyl"? | ||
moritz thought that wouldn't happen in civilized lands | |||
PerlJam | is that phonetic or should I be googling? | ||
TimToady | we're out in the Wild West | 19:56 | |
pmichaud | they're threatening rolling blackouts here | ||
moritz | PerlJam: fonetic :-) | ||
sorear | fēl or fīl? | 19:57 | |
dalek | ast: cc48639 | jonathan++ | S02-builtin_data_types/pair.t: Toss tests that rely on being able to bind to a method return value. |
||
pmichaud | S02 explicitly says that a Pair's value may be rebound. | 19:58 | |
PerlJam | TimToady, jnthn: do you guys ever talk with Stevan about the P5 mop stuff? | ||
pmichaud | Perhaps that's syntactic also via .{ } | ||
TimToady | occasionally | ||
moritz | PerlJam: I did, just the other day | ||
19:59
ab5tract left
|
|||
jnthn | PerlJam: Haven't really done that...though I read pretty much all of Moose core while doing research for 6model. :) | 19:59 | |
Would be interesting to meet/chat with him more at some point :) | |||
moritz | nickname stevan on irc.perl.org | 20:00 | |
sorear | question: my $x = 2; my $y = foo => $x; $y.value = 5; say $x | ||
PerlJam | moritz: does he have any art we can steal for p6? :-) | ||
sorear | nothingmuch can be blamed for niecza's existance. I came to p6 via #moose | 20:01 | |
jnthn | sorear: At a guess, no | ||
sorear: Too much spooky action at a distance. | |||
masak | nothingmuch++ | ||
jnthn | nom: my $foo = 42; say (:$foo).perl | ||
p6eval | nom: OUTPUT«"foo" => 42» | ||
moritz | PerlJam: he takes a quite different approach (classes are like lexpads, and objects are like closure clones of such lexpads) | 20:02 | |
jnthn | oh, that works, the test requires on eqv on pairs which I guess doesn't work | ||
masak | jnthn: parens not necessary. | ||
nom: my $foo = 42; say :$foo.perl | |||
p6eval | nom: OUTPUT«"foo" => 42» | ||
jnthn | masak: I know, but my brain groups it wrong otherwise. :/ | ||
moritz | PerlJam: it's interesting, and it fits well into p5 think in some way, but so far I don't see that we can or should steel from that | 20:03 | |
masak | jnthn: mine too :) | ||
jnthn | I always do a double take when I see in C#: | ||
new Foo().some_method(); | |||
masak | jnthn: prefix ops are usually tighter than that. | ||
jnthn: oh yes, me too, in Java. | |||
jnthn | I always paren it. | ||
masak | jnthn: not to mention A.new B() | 20:04 | |
jnthn | ...lolwut? :) | ||
masak | I think that was how it was done. | ||
dreadful. | |||
jnthn | Maybe in Java :P | ||
masak | in Java, yes. | ||
jnthn | I don't think C# has an atrocity like that. :P | ||
masak | :P | ||
20:06
localhost left
20:07
lichtkind joined
|
|||
jnthn | Woo, with some patches I'm trying now we should have most of pair.t back :) | 20:09 | |
pmichaud | I'm working on bool.t | ||
jnthn | All but one test, that master passed, hopefully. | ||
pmichaud: ok :) | |||
moritz | jnthn: do you have eqv for Pair/Enum, or should I push it? | 20:10 | |
(need a few more minutes for compilation :/) | |||
jnthn | moritz: I have one compiling now, fairly confidnet it'll work. | ||
moritz | +multi sub infix:<eqv>(Enum:D $a, Enum:D $b) { | 20:11 | |
+ $a.key eqv $b.key && $a.value eqv $b.value; | |||
+ | |||
+} | |||
jnthn | mine also does $a.WHAT === $b.WHAT | ||
moritz | jnthn++ | ||
our eqv overlord | |||
jnthn | :P | 20:12 | |
jnthn starts going through spectest.data and making a shortlist of test files to focus on | |||
pmichaud | What should True.value return, ooc? | ||
jnthn | S03-operators/minmax.t # LHF I suspect, if anyone wants to take it :) | 20:13 | |
moritz | pmichaud: 1? | ||
pmichaud | should it be 1 or True? | ||
sorear | perl6: say True.value | 20:14 | |
moritz | enum A <b c d>; say b.key | ||
p6eval | rakudo 922500: OUTPUT«Method 'value' not found for invocant of class 'Bool' in main program body at line 22:/tmp/AfURRSQE8X» | ||
..pugs: OUTPUT«*** No such method in class Bool: "&value" at /tmp/cdHr2RRN5t line 1, column 5 - line 2, column 1» | |||
..niecza v8-27-g8e562ff: OUTPUT«1» | |||
moritz | perl6: enum A <b c d>; say b.key | ||
sorear | perl6: enum B < F T >; say T.value | 20:15 | |
p6eval | pugs: OUTPUT«*** No such subroutine: "&enum" at /tmp/49xtY90TNi line 1, column 1-15» | ||
..rakudo 922500, niecza v8-27-g8e562ff: OUTPUT«b» | |||
rakudo 922500, niecza v8-27-g8e562ff: OUTPUT«1» | |||
..pugs: OUTPUT«*** No such subroutine: "&enum" at /tmp/JTEuvalht3 line 1, column 1-15» | |||
pmichaud | so have we accepted that Bool ~~ Int, then? | ||
moritz | nom: enum B < F T >; say T.value | ||
p6eval | nom: OUTPUT«1» | ||
masak | pmichaud: that seems to be the consequence of the current spec. | ||
moritz | pmichaud: it might ~~ uint1 or so | ||
masak | moritz: but uint1 ~~ Int | ||
moritz | masak: does it? I'm uncertain about the native types | 20:16 | |
masak | moritz: IIUC all native types ~~ their corresponding capital-letter type. | ||
20:17
localhost joined
|
|||
pmichaud | are .pick and .roll for enums defined only on the enum itself, or for the enumerated values also? | 20:17 | |
i.e., True.pick versus Bool.pick | |||
sorear | doesn't True.^methods eqv Bool.^methods? | ||
pmichaud | sure, but one can distinguish on :D versus :U | 20:18 | |
masak | feels to me True.pick should always return True. | ||
pmichaud | more tellingly | ||
masak | 'night, #perl6 | ||
20:18
masak left
|
|||
pmichaud | enum Coin <Heads Tails>; say Coin.pick; say Heads.pick | 20:18 | |
jnthn | masak is right about the native/capital letter type thing. | ||
pmichaud | nom: enum Coin <Heads Tails>; say Coin.defined; | ||
p6eval | nom: OUTPUT«Bool::False» | 20:19 | |
pmichaud | nom: enum Coin <Heads Tails>; say Coin.WHAT; | ||
p6eval | nom: OUTPUT«Coin()» | ||
jnthn | Coin is a type object. | ||
pmichaud | nom: enum Coin <Heads Tails>; say Coin.^parents; | ||
p6eval | nom: OUTPUT«Int() Real() Numeric() Cool() Any() Mu()» | ||
jnthn | Though note it's HOW is not ClassHOW, but rather EnumHOW. | ||
*its# | |||
[Coke] | /* I do */ new Foo().stuff() /* all the time in ColdFusion */ | ||
20:19
mattp_ left
|
|||
[Coke] | (me was further in backscroll than me thought) | 20:20 | |
pmichaud | nom: enum Coin <Heads Tails>; say Coin.pick; | ||
p6eval | nom: OUTPUT«Coin::Heads» | ||
pmichaud | nom: enum Coin <Heads Tails>; say Coin.pick(2); | ||
p6eval | nom: OUTPUT«Heads Tails» | ||
pmichaud | nom: enum Coin <Heads Tails>; say Coin.roll(3); | ||
p6eval | nom: OUTPUT«Use of uninitialized value in string contextUse of uninitialized value in string contextUse of uninitialized value in string context » | ||
jnthn | o.O | ||
pmichaud | nom: enum Coin <Heads Tails>; say Coin.list; | ||
p6eval | nom: OUTPUT«Use of uninitialized value in string context» | ||
pmichaud | where is Coin.pick coming from? | 20:21 | |
jnthn | pmichaud: my role Enumeration | ||
pmichaud: src/core/Enumeration.pm | |||
pmichaud | okay. | ||
nom: enum Coin <Heads Tails>; say Heads.pick(2); | 20:22 | ||
p6eval | nom: OUTPUT«Heads Tails» | ||
pmichaud | that feels wrong to me. | ||
jnthn | pmichaud: How so? | ||
oh, I guess I can kinda see why. | |||
Hm | |||
pmichaud | it's like saying that 2.pick(2) should be able to return two Ints | ||
(neither of which are 2) | |||
20:22
wallberg joined
|
|||
jnthn | yeah | 20:22 | |
pmichaud | nom: enum RGB <Red Green Blue>; say Red.pick | ||
p6eval | nom: OUTPUT«RGB::Blue» | ||
jnthn | :) | ||
pmichaud | I vote to put a :U on that | 20:23 | |
jnthn | *nod* | ||
We can. | |||
pmichaud | I'll do that... | ||
TimToady | or :A, by new spec | ||
jnthn | Feel free to try it. | ||
TimToady | :U includes failures | ||
jnthn | TimToady: That new spec...needs some thought. | ||
20:23
localhost left
|
|||
jnthn | TimToady: It's not in the slightest bit the kind of change I wanted there. | 20:23 | |
TimToady | but you always carp :) | 20:24 | |
and sometimes you're right :) | |||
pmichaud | I learned long ago to be wary of asking for changes (in S05). :-) | ||
moritz | new spec? from when? | ||
PerlJam | moritz: just the :A :U :D trichotomy | 20:25 | |
20:25
localhost joined
|
|||
jnthn | TimToady: I wanted :U and :D (or whatever we call them) to be low-level, very cheap REPR-level operations. | 20:25 | |
moritz | is :D the default now? | ||
jnthn | Not sugar for (expensive) *.defined | ||
It's a circularity issue as well as a cost one. | 20:26 | ||
20:30
localhost left
20:31
timbunce left,
slavik left
|
|||
TimToady | it's intended to be low-level, the *.defined is just a high-level view of whatever the bit is | 20:35 | |
moritz | .defined is overridable | ||
sorear | *.Mu::defined? :) | ||
dalek | ast: faf8b59 | jonathan++ | S02-builtin_data_types/pair.t: Fudge 1 test for Rakudo (review/fix welcome). |
20:37 | |
pmichaud | jnthn: before I do any Enumeration thingies I probably need to wait for your pair changes. | ||
20:38
timbunce joined
|
|||
jnthn | pmichaud: Just pushed. | 20:38 | |
pmichaud | In S12, why is | ||
Day.enums # map of key/value pairs | |||
not called Day.pairs ? | |||
20:38
bbkr1 joined
20:39
bbkr1 left
|
|||
moritz | because it returns enums, not pairs? | 20:39 | |
jnthn | pmichaud: iiuc, .paris would return a list of pairs; .enums returns an EnumMap. | ||
dalek | kudo/nom: 8443d11 | jonathan++ | src/core/ (2 files): Implement eqv for Enum (and thus Pair). |
||
kudo/nom: 40f4264 | jonathan++ | src/core/Pair.pm: Assignable .key and .value for Pair. |
|||
kudo/nom: e9ee086 | jonathan++ | src/core/Enum.pm: Enum.invert (inherited by Pair). |
|||
kudo/nom: c048df8 | jonathan++ | t/spectest.data: Add a passing test file. |
|||
jnthn | That's +90 or so tests. :) | ||
pmichaud | (returns EnumMap) makes sense then. | 20:40 | |
Should we define .pairs then to be .enums.pairs, ooc? | |||
jnthn | It'd be an easy way to implement it, if nothing else. :) | ||
pmichaud | same for .keys and .values ? | ||
jnthn | wfm | ||
.oO( didn't I already do it that way? :) ) |
|||
pmichaud | .enums appears to be NYI | 20:41 | |
oh, wait, it's there. | |||
jnthn | pmichaud: it's there | ||
pmichaud | .keys and .values and .pairs are NYI | ||
jnthn | but .keys and...right :) | ||
pmichaud | seems like ^enum_values is misnamed. Ought to be ^enum_map | 20:42 | |
since one gets back more than just the values. | |||
jnthn | *nod* | ||
Probably a leftover from when I was exploring how to do EnumHOW. :) | 20:43 | ||
dalek | ast: 3915649 | pmichaud++ | S02-builtin_data_types/bool.t: Unfudge some passing bool.t tests. |
||
kudo/nom: 0cd9e76 | pmichaud++ | src/core/Bool.pm: Add some enum-like methods to Bool. |
20:44 | ||
pmichaud | it feels like .enums, .hash, and .pairs have some ambiguous overlap here. | 20:45 | |
I had the impression that Pair.key is supposed to be immutable. | 20:46 | ||
S02:1504 | 20:47 | ||
"As with C<Hash> types, C<Pair> and C<PairSeq> are mutable in their | |||
values but not in their keys." | |||
jnthn | Oh. | 20:48 | |
Then I was misled by both the tests and master :) | |||
TimToady | it's not clear whether that's just a foolish consistency | ||
pmichaud | I think the tests predate that spec change. | ||
(by a lot.) | |||
should Enum.invert return a Pair, or an Enum ? | 20:49 | ||
20:49
slavik joined
|
|||
TimToady | I would guess Enum | 20:51 | |
pmichaud | Pair.invert also returns an Enum, or a Pair? | ||
TimToady | I would guess Pair for that | ||
but I guess we really need to see use cases | |||
jnthn | nom: say Enum.new(:key<a>, :value(1)); say Pair.new(:key<a>, :value(1)); | 20:52 | |
p6eval | nom: OUTPUT«Rebuild in progress» | ||
TimToady | I'm just a bit slow to automatically convert between mutables and immutables | ||
pmichaud | I agree, thus my questions. :) | ||
jnthn | pmichaud: If the above .new calls both work we can self.new ... :) | ||
pmichaud | it looks like pairs/enums/hashes have some really fuzzy lines about that at the moment. | ||
jnthn: self.new is what I was going to switch to, yes. :) | 20:53 | ||
TimToady | well, hashes are funny because we treat the keys as immutable but the values as mutable | ||
20:53
Mowah left
|
|||
pmichaud | yes, but that can be true with Pair also. | 20:53 | |
(is true currently) | |||
TimToady | but it's strange to a Lisp mind that car and cdr differ | 20:54 | |
20:54
localhost joined,
localhost left
|
|||
TimToady | so I'm thinking currently that Pair.key is mutable, while a Hash key isn't | 20:54 | |
though some would argue that a mutable Hash key just automatically deletes and readds | |||
pmichaud | well, we don't normally see Hash keys alone | 20:55 | |
TimToady | not sure I wanna go that far, at least not yet | ||
PerlJam | What are the differences between a Hash and a list of Pairs? | 20:56 | |
pmichaud | I think I'm fine with saying that Pair keys are mutable; just need to fix the spec (and tests) then. | ||
jnthn | pmichaud: The tests already check the key is mutable. | ||
Unless I mis-read... | |||
pmichaud | jnthn: for Pair itself, yes -- I'm thinking of return values from .pairs, .keys, etc. | 20:57 | |
TimToady | it seems to me that generally you want either a mutable data structure or an immutable enum value | ||
jnthn | pmichaud: ah, ok :) | ||
TimToady | and the immutables are likely to be faster, at least on decontainerization | ||
pmichaud | jnthn: I'm trying to make sure we're not dis-unified on .enums, .pairs, .keys, .values, .kv, .key, .value, .list, .hash, .elems, etc. | ||
TimToady | the optimizer might be able to see .pairs.enums and usefully change it to .enums | 20:58 | |
pmichaud | the name "enums" feels wrong to me that it results in an EnumMap. Feels like it ought to be a List. | 20:59 | |
TimToady | or .pairs.decontainerize -> .enums | ||
or something | |||
pmichaud | Since EnumMap flattens to a list in list context I'm less worried about it... but it still feels like the wrong term. | ||
jnthn | pmichaud: Plurals often feel listy, yes. | 21:00 | |
Maybe .hash | |||
pmichaud | .hash implies mutability, though. | ||
jnthn | (Since that doesn't really mean "a hash", just "something hashy") | ||
TimToady | well, but .enums can have dup keys | ||
pmichaud | ah, I missed the dup keys aspect. | 21:01 | |
TimToady | while an EnumMap is basically an immutable Hash | ||
jnthn | pmichaud: I'd seen .hash as more of a contextualizer than something that promises mutability, but that's just me. :) | ||
pmichaud | jnthn: you're correct, it's a contextualizer. My bad. | 21:02 | |
TimToady | otoh spec currently says .enums returns an EnumMap, which may be wrong | ||
pmichaud | I'm fine with .enums returning an EnumMap for an enum. That kind of makes sense. | ||
jnthn | TimToady: Having *something* on an enumeration that returns an EnumMap is very useful. | ||
TimToady | but it means if you invert an enums you can't push it to keep dups | 21:03 | |
jnthn | ...dups? | ||
pmichaud | well, .invert should probably return a Hash or something like that | ||
TimToady | no | ||
we used to spec it like that, iirc | |||
there's no point in manufacturing a Hash when we're just going to use its (inverted) pairs | 21:04 | ||
pmichaud | let me look at .invert again -- I was absent when a lot of that work was taking places. | 21:05 | |
*place. | |||
21:05
jjore left
|
|||
TimToady | it's currently specced to return a List, so you can say %foo.push: %bar.invert | 21:05 | |
pmichaud | .invert currently produces a list of (inverted) pairs | ||
21:05
jjore joined
|
|||
pmichaud | I agree with that. | 21:05 | |
21:06
Sarten-X left,
takadonet joined
|
|||
TimToady | but I suspect it's really a list of enums | 21:06 | |
pmichaud | that works for me | ||
21:07
Kivutarrr joined,
slavik left
|
|||
pmichaud | so I don't understand the "you can't push it to keep dups" part | 21:08 | |
TimToady | rakudo: my %foo; %foo.push: 'a' => 1, 'a' => 2, 'a' => 3; say %foo.perl | 21:11 | |
p6eval | rakudo 922500: OUTPUT«{"a" => [1, 2, 3]}» | ||
TimToady | rakudo: my %foo; %foo.push: {'a' => 1, 'a' => 2, 'a' => 3}; say %foo.perl | 21:12 | |
p6eval | rakudo 922500: OUTPUT«Trailing item in Hash.push in <anon> at line 5481:src/gen/core.pm{}» | ||
pmichaud | ah | ||
TimToady | rakudo: my %foo; %foo.push: {'a' => 1, 'a' => 2, 'a' => 3}.pairs; say %foo.perl | ||
p6eval | rakudo 922500: OUTPUT«{"a" => 3}» | ||
TimToady | that | ||
21:13
Sarten-X joined
|
|||
pmichaud | so what would be a case with .enums? | 21:14 | |
I mean, I see the problem with {'a' => ... } | |||
but in that case, it's a Hash, which can't have duplicate keys. | |||
TimToady | I dunno, Bag.enums maybe | 21:15 | |
maybe not | |||
pmichaud | in that case, I'd say that .enums returns something that isn't an EnumMap | ||
but still acts like a list of enums/pairs in list context | |||
TimToady | seems okayish | ||
pmichaud | which I guess recalls my earlier question of "what's the (semantic) difference between .enums and .pairs?" Is it simply that .pairs is guaranteed to return a Positional, while .enums returns something Associative? | 21:16 | |
21:16
thundergnat joined
21:17
lichtkind left
|
|||
pmichaud | ...that doesn't feel right, now that I look at it. | 21:19 | |
TimToady | I think they're both Positional | ||
21:19
slavik joined
|
|||
pmichaud | I hope an EnumMap isn't Positional. | 21:19 | |
We discussed that once before (with Hash ~~ Positional) and decided against it. | |||
TimToady | no, it just knows what to do in list context, like a Hash | ||
21:20
timbunce left
|
|||
pmichaud | okay, I can live with that. | 21:20 | |
thundergnat | rakudo: my ($x,$y); say $x = $x +& 1; say $y +&= 1; # bug? | 21:21 | |
p6eval | rakudo 922500: OUTPUT«01» | ||
thundergnat | nom: my ($x,$y); say $x = $x +& 1; say $y +&= 1; | 21:22 | |
p6eval | nom: OUTPUT«No applicable candidates found to dispatch to for 'infix:<+&>'. Available candidates are::():(Any $x):(Int $a, Int $b)current instr.: 'infix:<+&>' pc 599325 (src/gen/CORE.setting.pir:144929) (src/gen/CORE.setting:1468)» | ||
thundergnat | rakudo: my ($x,$y); say $x = $x ?& 1; say $y ?&= 1; #same problem | ||
p6eval | rakudo 922500: OUTPUT«Bool::FalseBool::True» | ||
pmichaud | nom: my $x; say $x +& 1; | 21:23 | |
p6eval | nom: OUTPUT«No applicable candidates found to dispatch to for 'infix:<+&>'. Available candidates are::():(Any $x):(Int $a, Int $b)current instr.: 'infix:<+&>' pc 599325 (src/gen/CORE.setting.pir:144929) (src/gen/CORE.setting:1468)» | ||
pmichaud | that's the "bug" | ||
jnthn | Looks like a missing multi candidate or so. | 21:24 | |
pmichaud | nom only has +& defined for Int | ||
not for Any. | 21:25 | ||
thundergnat | Is that worth file a rakudobug for? | 21:26 | |
*ing | |||
21:26
impious left
|
|||
dalek | atures: d8e968e | larry++ | features.json: more specs |
21:27 | |
21:28
envi left
|
|||
pmichaud | thundergnat: yes, file a rakudobug please. | 21:30 | |
thundergnat | pmichaud: Ok | ||
TimToady | the rakudo behavior is correct | ||
it's the nom behavior that's wrong | 21:31 | ||
pmichaud | surely $y +&= 1; is zero though, yes? | ||
or am I mentally misparsing? | |||
TimToady | S03:4021 | ||
pmichaud | oh! | ||
TimToady | no, the identity for anding is all true | ||
pmichaud | right, $y defaults to all-ones. | ||
thundergnat | So not a bug then | 21:32 | |
pmichaud | then nom is simply suffering from not having &infix:<+&>(Any, Any) | ||
pmichaud fixes. | |||
21:34
donri left
|
|||
jnthn | pmichaud: Fixing that and related is probably going to get us back S03-operators/bit.t | 21:35 | |
huf | _whoa_ | ||
this feature is awesome | 21:36 | ||
jnthn | huf: Which one? :) | ||
huf | S03:4021 | ||
pmichaud | :) | ||
TimToady | well, yes :) | ||
pmichaud | Yes, it's awesome. | ||
jnthn | aha :) | ||
pmichaud | Perl 6 strives for awesomeness. The Perl 6 implementations strive to catch up with that. :) | ||
nom: my %h; %h<xyz> *= 4; say %h.perl; | 21:37 | ||
p6eval | nom: OUTPUT«("xyz" => 4).hash» | ||
thundergnat | Awesome, though a little unintuitive in some of the weird corner cases. | ||
benabik | Does that actually call infix:<*>(), or does it call infix:<*>(4)? | ||
pmichaud | it calls infix:<*>() | 21:38 | |
basically | |||
TimToady | perl6: say [*] | ||
pmichaud | infix:<*>( infix:<*>(), 4) | ||
p6eval | pugs: OUTPUT«1» | ||
..niecza v8-27-g8e562ff: OUTPUT«0» | |||
..rakudo 922500: OUTPUT«» | |||
TimToady | nom: say [*] | ||
p6eval | nom: OUTPUT«» | ||
TimToady | hmm | ||
pmichaud | nom: say [*] () | ||
p6eval | nom: OUTPUT«1» | ||
TimToady | nom: say [*]; | 21:39 | |
p6eval | nom: OUTPUT«» | ||
TimToady | buglet, I think | ||
21:39
donri joined
|
|||
pmichaud | I believe so. Common one, too. :) | 21:39 | |
at least pugs gets it right :) | |||
TimToady | niecza: say [*] 4 | ||
p6eval | niecza v8-27-g8e562ff: OUTPUT«4» | ||
TimToady | well, at least niecza gets that one right | 21:40 | |
pmichaud | nom: say [*] 4; # checking, although I'm sure it's correct | ||
p6eval | nom: OUTPUT«4» | ||
TimToady | niecza: say [*] () | ||
p6eval | niecza v8-27-g8e562ff: OUTPUT«0» | ||
sorear | nom: say +Nil | 21:41 | |
p6eval | nom: OUTPUT«0» | ||
sorear | nom: say ~Nil | 21:43 | |
p6eval | nom: OUTPUT«» | ||
sorear | Is the lack of warnings on these correct/ | ||
TimToady | I suspect not | ||
well, + may be okay | |||
pmichaud | I think there should probably be warnings, since Nil is undefined. | ||
TimToady | hard to say | ||
warnings are probably saner | 21:44 | ||
one should really use () to mean an empty list, not Nil | |||
21:44
im2ee joined
|
|||
pmichaud | looks like Iterable needs a :D on method Numeric | 21:44 | |
TimToady | we should try defaulting invocants to :D and see what hell breaks loose | 21:45 | |
PerlJam bets very little hell breaks loose | |||
TimToady | except for all the new methods that break | 21:46 | |
pmichaud | well, hell breaks loose for "static method" | ||
*methods | |||
i.e., those that expect to be on the type object | |||
(such as "new" :) | |||
TimToady | I suppose we could issue an exception for new, or just say that static methods must be marked with :A (or whatever it ends up) | ||
21:46
donri left
|
|||
jnthn | rakudo: Mu.all | 21:46 | |
pmichaud | I'm fine with marking static methods | ||
p6eval | rakudo 922500: OUTPUT«Method 'all' not found for invocant of class '' in main program body at line 22:/tmp/rICn1DcArW» | 21:47 | |
jnthn | rakudo: Any.all | ||
p6eval | rakudo 922500: ( no output ) | ||
pmichaud | grrrr, tadzik's Pod stuff caused me to delete a directory that caused me to clobber my +& fixes when I tried to fix it. | ||
21:47
Patterner left
|
|||
jnthn | :( | 21:47 | |
pmichaud | tadzik-- (Pod source is in Pod/ and not src/Pod) | ||
or, even more likely, src/core/Pod/ | 21:48 | ||
PerlJam | pmichaud: sounds like you just aren't make enough use of git's features :) | 21:49 | |
(or perhaps not commtting often enough) | |||
21:49
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
pmichaud | PerlJam: no, I just mistyped a command. | 21:49 | |
And I didn't realize that the Pod/ subdir had source files in it | 21:50 | ||
I thought they were just generated. | |||
jnthn | pmichaud: It's a module, so src/Pod is probably righter. Fully agree it shoudln't be in root of the repo though. | ||
pmichaud | tadzik++ # still deserves karma for Pod implementation, though. | ||
pmichaud-- # mistyping a command | 21:51 | ||
jnthn | pmichaud++ # fixing stuff | 21:52 | |
.oO( Conservation of Karma Principle ) |
|||
sorear | negative karma never sticks, especially if applied to a popular person. | ||
TimToady | perl6: say [\*] (); | 21:54 | |
dalek | ecza: f727731 | sorear++ | lib/ (2 files): Mark more setting functions as Nil-transparent, and implement Parcel/List.ACCEPTS |
||
p6eval | pugs: OUTPUT«1» | ||
..rakudo 922500: ( no output ) | |||
..niecza v8-27-g8e562ff: OUTPUT«» | |||
sorear | it should pass all spectest again | ||
pmichaud | nom: say [\*] (); | 21:55 | |
p6eval | nom: OUTPUT«Attempt to return from exhausted Routinecurrent instr.: 'die' pc 586638 (src/gen/CORE.setting.pir:137574) (src/gen/CORE.setting:291)» | ||
pmichaud | *huh* | ||
21:55
REPLeffect left
|
|||
TimToady | should probably return () | 21:55 | |
pmichaud | probably a bug in the triangle metaop code. | ||
pmichaud will fix. | |||
> my $x; say $x +& 1; | 21:56 | ||
Use of uninitialized value in numeric context | |||
0 | |||
\o/ | |||
21:56
im2ee left
|
|||
jnthn | :) | 21:57 | |
22:01
donri joined
|
|||
sorear wonders what the 'n+-' on PROCESS, GLOBAL, CALLER, DYNAMIC refers to. | 22:01 | ||
22:02
ixxvil joined
|
|||
ixxvil | did you guys finalise on the logo for roku?> | 22:02 | |
sorry | |||
rakudo | |||
pmichaud | very few things are final in Perl 6. :-) | ||
dalek | atures: f9b23b7 | larry++ | features.json: ding niecza for missing degenerate cases [op] and op= don't do the right thing with nothing |
||
pmichaud | (short answer: "no") | ||
> say +Nil | 22:03 | ||
Use of uninitialized value in numeric context | |||
0 | |||
\o/ | |||
jnthn | \o/ | 22:04 | |
22:04
colourspace left
22:05
colourspace joined
|
|||
pmichaud | Latest push leaves a couple of failing spectests... but I have to leave for an hour so will fix them when I get back (if nobody beats me to them). | 22:10 | |
Fixed +Nil, triangle op on empty lists, and +&. | |||
bbiah | |||
22:10
Kivutarrr left
|
|||
dalek | kudo/nom: 9a99a12 | pmichaud++ | src/core/Numeric.pm: Add infix:<+&>(Any, Any) (and related bitwise ops). |
22:11 | |
kudo/nom: 120d3be | pmichaud++ | src/core/ (6 files): Make sure .Numeric is properly multied. |
|||
kudo/nom: f72544a | pmichaud++ | src/core/metaops.pm: Fix triangle metaops on empty lists (TimToady++). |
|||
ixxvil | pmichaud: yeah but did you guys finalize on the logo? | 22:14 | |
i remember a few designing it for you guys but became of that | |||
what | |||
what became* | |||
22:14
saaki left
|
|||
dalek | kudo/nom: f5ab8d0 | jonathan++ | src/Perl6/Metamodel/ (2 files): Allow overriding of postcircumfix:<( )>. |
22:15 | |
kudo/nom: bc30e74 | jonathan++ | src/core/Capture.pm: Cheating |$c in argument lists (only puts in positional bit...will fix that up shortly). |
|||
kudo/nom: d9a6cfa | jonathan++ | t/spectest.data: We now pass S13-overloading/typecasting-long.t. |
|||
kudo/nom: 275e3db | jonathan++ | src/core/Junction.pm: Implement junction invocation. |
|||
kudo/nom: d097bdc | jonathan++ | src/core/Any.pm: Any.[all|any|n?one] |
|||
22:16
leprevost left
22:31
drbean joined
22:32
ixxvil left
22:33
MayDaniel left
|
|||
dalek | atures: 0f4caee | larry++ | features.json: spec refinements |
22:37 | |
22:38
Moukeddar joined
22:42
kaare_ left
|
|||
pmichaud | jnthn: how does the 'invoke' vtable mapping work, exactly? | 22:45 | |
22:46
supernovus joined
|
|||
pmichaud | I mean, what happens for types that don't define a postcircumfix:<( )> ? | 22:47 | |
jnthn | nom: class A { }; A.new.() | ||
p6eval | nom: OUTPUT«invoke() not implemented in class 'A'current instr.: '_block1002' pc 109 ((file unknown):30838431) (/tmp/qBw7q6zeTK:1)» | ||
jnthn | er, too soon | ||
Anyway, it just says postcircumfix:<( )> is not implemented. | |||
pmichaud | is postcircumfix:<( )> implemented in Code, though? | 22:48 | |
jnthn | No (more) | ||
There's a fast path for Code and its subclasses | |||
pmichaud | ohhhhhh | ||
+Code.HOW.add_parrot_vtable_mapping(Code, 'invoke', nqp::null()); | |||
jnthn | Yes :) | ||
pmichaud | the null removes the mapping? | ||
jnthn | That's a bit...cheaty. ;) | ||
Suppresses emission of it at least, yes. | 22:49 | ||
supernovus | So, I was just taking a quick peek at "nom" and am wondering how different it is to actually write core libs for it (or at least port ones from the "old" directory) as the Temporal.pm would be a nice thing to bring back, but I'm not sure where to start (I helped work on the version in the current "master" branch.) | ||
jnthn | I'm not 100% happy with that factoring, but I didn't think of a nicer one yet. | ||
pmichaud | so, Code and subclasses default back to the fast path, and everything else under Mu gets the slow postcircumfix:<( )>. Cheaty, yes, but fastpaths often are. | ||
jnthn | Right. :) | ||
pmichaud | supernovus: it depends on the lib. | ||
jnthn | And it's actually not so cheaty - it's a general feature now. We use it in Capture in NQP for example. | 22:50 | |
pmichaud | supernovus: mainly, class declarations need to become "my class" | ||
jnthn | But not for invoke. | ||
pmichaud | jnthn++ # wfm, thanks | ||
jnthn | Another 25 passing tests coming up :) | 22:51 | |
supernovus | pmichaud: okay, I'll see about setting up a parallel path for "nom" and see if I can port Temporal. Hopefully someone else takes on IO::Socket::INET, those are the two "core" libs that I use quite often that are still missing from nom. Scratching an itch :-) | 22:53 | |
pmichaud | supernovus++ # let us know where we can help :) | ||
dalek | ast: c0a9803 | jonathan++ | S12-introspection/attributes.t: Update attributes introspection test to latest spec; fudge :tree tests for Rakudo. |
22:54 | |
22:55
[particle] left,
whiteknight joined
22:56
[particle] joined
|
|||
dalek | kudo/nom: 057f236 | jonathan++ | src/Perl6/Metamodel/AttributeContainer.pm: Fix bug where .^attributes could make multiple entries for an attribute in the result list. |
22:56 | |
kudo/nom: 402f330 | jonathan++ | src/core/Attribute.pm: Some missing methods on Attribute. |
|||
kudo/nom: 80467f3 | jonathan++ | src/ (3 files): Some missing decontainerizations in Attribute methods and a naming fix to bring us in line with spec and tests. |
|||
kudo/nom: 538d581 | jonathan++ | t/spectest.data: Run S12-introspection/attributes.t. |
|||
Moukeddar | guys, can someone explain to me the difference between the different types of licenses ? | ||
sorear | ok | ||
Moukeddar | GPL,GPLv2,NewBSD, etc... | ||
sorear | GPL family licenses require derived works to use the same license | 22:57 | |
if you create a modified version of Linux and distribute it, you have to provide the source, and anyone who gets your modified version is allowed to make derivatives themselves | 22:58 | ||
BSD family licenses have no such restriction | 22:59 | ||
you can make a modified version of BSD Unix and destribute it commercially with no restrictions | |||
if you want to know what a specific license says, there is no substitute for reading it (or paying someone to read it for you) | 23:00 | ||
also, I know absolutely nothing about the specifics of how copyright law is implemented and enforced in Morocco | 23:01 | ||
was that useful? | 23:02 | ||
Moukeddar | |||
Moukeddar | i'm reading :) | ||
gfldex | please note that licenses are not written in plain english | 23:03 | |
Moukeddar | gfldex, good point Sir :) | ||
copyright law isn't really enforced here | 23:04 | ||
but it's good to know | |||
sorear | your deferential style of address amuses me. | ||
Moukeddar | what style? | ||
23:05
wallberg left
|
|||
sorear | you use 'Sir' much more than is typical | 23:07 | |
23:11
smash left
|
|||
dalek | kudo/nom: 9fdde9e | pmichaud++ | src/core/Enumeration.pm: Roles apparently can't quite handle 'multi method' yet, so set |
23:13 | |
Moukeddar | i just like it :) | 23:14 | |
jnthn | pmichaud: They can't? | 23:17 | |
pmichaud: Details? | 23:18 | ||
23:18
whiteknight left,
whiteknight joined
|
|||
pmichaud | jnthn: undo the patch I just made, then run t/spec/S12-class/anonymous.t :) | 23:18 | |
dalek | ecza: 695339a | sorear++ | / (5 files): Add a place in the return sequence to hook in LEAVE. |
||
kudo/nom: 3b56d34 | jonathan++ | src/core/IO.pm: Implement get and close subs. |
23:19 | ||
kudo/nom: 0db8c6f | jonathan++ | t/spectest.data: 3 more passing IO test files giving about 50 more passing tests. |
|||
jnthn | pmichaud: thanks, I look tomorrow at that one | 23:20 | |
23:27
shinobicl left
23:28
supernovus left,
wamba left
|
|||
pmichaud | afk, dinner. | 23:29 | |
dalek | kudo/nom: a207490 | pmichaud++ | / (2 files): Add prefix:<+^>(Any), winning us the S03-operators/bit.t tests. |
23:30 | |
23:42
molaf_ joined
|
|||
dalek | ast: 2603206 | jonathan++ | S12-attributes/undeclared.t: Update S12-attributes/undeclared.t to handle compilers that can detect undeclared attributes at compile time; remove two tests that are invalid. |
23:43 | |
23:45
molaf left
|
|||
colourspace | what is hlagh | 23:45 | |
dalek | kudo/nom: de65682 | jonathan++ | src/core/IO.pm: Implement slurp. |
23:47 | |
kudo/nom: 6d942a8 | jonathan++ | t/spectest.data: Two more passing test files. |
|||
sorear | colourspace: context? | 23:49 | |
23:50
kcwu left,
kcwu joined
|
|||
sorear | What happens if a LEAVE block throws an exception during exceptional unwinding? | 23:51 | |
Are LEAVE blocks queued on entry or at inline time? (return; LEAVE {... }) | |||
jnthn | sleeep & | 23:52 | |
sorear | likewise in a DBC context, are POST blocks run during exceptional unwinding, and what happens if they fail? | 23:56 |