»ö« 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. |
|||
00:02
fgomez left
00:04
benabik left
00:11
thou left
00:17
benabik joined,
fgomez joined
|
|||
flussence | well, I've hit a stone wall. "psgi.input => Buf.new()" on a POST request - it's not getting set, which means POST doesn't work at all. | 00:23 | |
00:25
japhb_ left
00:26
whiteknight left
|
|||
flussence | ...I think IO::Socket.get is broken. | 00:40 | |
HTTP::Easy::PSGI only does reads by calling .get for the headers and a .read($len) later on, but that .read always ends up with no data | 00:41 | ||
actually... I might be horribly wrong | 00:49 | ||
yeah, it's the other way around: irclog.perlgeek.de/perl6/2012-10-24#i_6095161 | 00:50 | ||
diakopter | I've had my head buried in a stone wall of a project for 2 weeks | 00:51 | |
er, 3 | |||
00:57
rindolf left
01:02
benabik_ joined
01:05
gdey left,
benabik left,
benabik_ is now known as benabik
01:13
PacoAir left
|
|||
flussence | oh. | 01:14 | |
figured out why it doesn't work. | |||
in 837d0f8 moritz deleted the line in .read that... does the reading bit | |||
01:16
benabik left,
benabik joined
|
|||
flussence | more specifically, this one: github.com/rakudo/rakudo/commit/837d0f8#L2L30 | 01:18 | |
01:20
Chillance left
|
|||
flussence | and with that fixed I can get back to fighting bugs in modules instead of the language itself... *sigh* | 01:21 | |
01:30
FROGGS_ joined
01:33
flightrecorder left
01:34
FROGGS left,
flightrecorder joined
01:40
fgomez left,
fgomez joined
01:44
MikeFair joined,
benabik left
01:45
jerome left
01:50
benabik joined
01:56
DarthGandalf left
01:59
jerome joined,
DarthGandalf joined
02:21
orafu left,
orafu joined
02:40
skids joined
02:54
bapa left,
bapa joined
03:10
jaldhar joined
03:12
flightrecorder left,
FROGGS_ left
03:14
gregp joined,
gregp is now known as Guest34516
03:15
Guest34516 is now known as gregster
03:17
gregster left
03:19
orafu left,
OuLouFu joined,
OuLouFu is now known as orafu
03:40
HarryS joined
03:51
armitage81 left
04:01
thou joined
04:04
cognominal left
04:22
Playb3yond joined
04:24
telex left
04:25
Playb3yond left
04:28
jaldhar left
04:34
telex joined,
azawawi joined
|
|||
azawawi | hi #perl6 | 04:40 | |
phenny | azawawi: 26 Oct 22:13Z <rindolf> tell azawawi OK, I understand now - regarding HTTP::Easy. | ||
azawawi | rn: require File::Spec; | 04:43 | |
p6eval | niecza v22-14-g136ddcf: OUTPUT«Unhandled exception: System.NotImplementedException: The requested feature is not implemented. at Anon.1.Run.MAIN.C0mainline (Niecza.Frame ) [0x00000] in <filename unknown>:0  at Niecza.Kernel.RunCore (Niecza.Frame& cur) [0x00000] in <filename unknown>… | ||
..rakudo 3619d7: OUTPUT«Could not find File::Spec in any of: /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/lib, /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/vendor/lib, /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/site/lib, /home/p6eval/.perl… | |||
azawawi | star: require File::Spec; | ||
p6eval | star 2012.07: OUTPUT«Could not find File::Spec in any of: /home/p6eval/.perl6/lib, /home/p6eval/star/lib/parrot/4.6.0/languages/perl6/lib in any load_module at src/Perl6/ModuleLoader.pm:108 in block <anon> at /tmp/jQF2rCmulp:1» | ||
04:43
jaldhar joined
|
|||
azawawi | star: if (1) { require File::Spec; } | 04:45 | |
p6eval | star 2012.07: OUTPUT«Could not find File::Spec in any of: /home/p6eval/.perl6/lib, /home/p6eval/star/lib/parrot/4.6.0/languages/perl6/lib in any load_module at src/Perl6/ModuleLoader.pm:108 in block <anon> at /tmp/yhJNoydXNT:1» | ||
azawawi | r: if (1) { require File::Spec; } | 04:46 | |
p6eval | rakudo 3619d7: OUTPUT«Could not find File::Spec in any of: /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/lib, /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/vendor/lib, /home/p6eval/nom-inst/lib/parrot/4.8.0-devel/languages/perl6/site/lib, /home/p6eval/.perl… | ||
04:48
telex left
|
|||
azawawi | moritz: ping | 04:52 | |
04:53
telex joined
04:55
jaldhar left
|
|||
azawawi | phenny: tell moritz Any chance star: is upgraded to 2012.09 or the upcoming 2012.10? Thanks. | 04:56 | |
phenny | azawawi: I'll pass that on when moritz is around. | ||
azawawi | star: /clear | 04:58 | |
p6eval | star 2012.07: OUTPUT«===SORRY!===Preceding context expects a term, but found infix / insteadat /tmp/58T7rkhTy9:1» | ||
04:59
jaldhar joined
|
|||
azawawi | do 'require' in Perl 6 work in the same way that it works in Perl 5 or not? | 05:01 | |
s/do/does/ | |||
azawawi walk & | 05:02 | ||
05:02
azawawi left
05:04
tokuhir__ left
05:08
Entonian joined
05:09
Entonian left,
Entonian joined
05:11
Entonian left,
Entonian joined
05:16
Entonian left
05:43
sisar joined
05:48
bro_grammer left
05:52
Pleiades` left
05:58
Pleiades` joined
06:23
skids left
06:32
s1n left
06:37
sivoais left
06:42
sivoais joined
06:44
thou left,
flightrecorder joined
07:02
GlitchMr joined
07:06
mucker joined
07:10
Rix joined
07:38
mucker left
07:40
SamuraiJack joined
07:46
gootle joined
|
|||
moritz | phenny: tell azawawi I'll upgrade p6eval once 2012.10 is released | 08:22 | |
phenny | moritz: I'll pass that on when azawawi is around. | ||
moritz: 04:56Z <azawawi> tell moritz Any chance star: is upgraded to 2012.09 or the upcoming 2012.10? Thanks. | |||
08:28
havenn_ joined
08:29
sisar left
08:30
havenn left
08:44
havenn_ left
08:56
MayDaniel joined
08:58
SamuraiJack left,
jaffa4 joined
|
|||
jaffa4 | hi ALL | 08:59 | |
how would you convert c flag in a regular expression to Perl 6 regular expression? | |||
09:00
colomon left
|
|||
sorear | I need to look up what c does | 09:12 | |
09:15
cognominal joined
|
|||
sorear | jaffa4: /c is inapplicable in perl 6 because it modifies the behavior of pos(), which has been removed due to bad interaction with threads | 09:15 | |
jaffa4 | well, I am not sure I understand you I mean the whys... but it does not work.. right... | 09:16 | |
sorear | What are you trying to accomplish? | ||
jaffa4 | to continue matching if a previous match fails | 09:17 | |
sorear | please elaborate | ||
what is "continue" | |||
jaffa4 | continue from the same position which was before the last match failed. | ||
sorear | /c is meaningless in perl 5 except when it modifies scalar context /g | 09:18 | |
scalar context /g is gone | |||
there is no 'same position'. perl 6 doesn't remember that, unless our communication is very confused | 09:19 | ||
jaffa4 | $/.pos | ||
sorear | hmm... probably you should save $/.pos in a variable if you want to still have it after the next match | 09:20 | |
jaffa4 | yes, I can do that | ||
sorear | or write the code to not use $/ directly | ||
e.g. $match //= m/foo/ | 09:21 | ||
jaffa4 | Not sure what I see | ||
r:$match //= m/foo/ | 09:25 | ||
std: match //= m/foo/ | 09:26 | ||
p6eval | std 64edd1c: OUTPUT«===SORRY!===Null regex not allowed at /tmp/9uSPFYSjs0 line 1:------> match //⏏= m/foo/Undeclared routine: 'match' used at line 1Check failedFAILED 00:00 43m» | ||
jaffa4 | r: match //= m/foo/ | ||
p6eval | rakudo 3619d7: OUTPUT«===SORRY!===Null regex not allowed at line 2, near "= m/foo/"» | 09:27 | |
jaffa4 | r: $match //= m/foo/ | ||
p6eval | rakudo 3619d7: OUTPUT«===SORRY!===Variable $match is not declaredat /tmp/vap8A8vqAi:1» | ||
jaffa4 | r: my $match='m'; $match //= m/foo/ | ||
p6eval | rakudo 3619d7: ( no output ) | ||
jaffa4 | r: my $match='m'; $match //= m/fm/ | ||
p6eval | rakudo 3619d7: ( no output ) | ||
jaffa4 | r: my $match='m'; print $match //= m/fm/ | 09:28 | |
p6eval | rakudo 3619d7: OUTPUT«m» | ||
jaffa4 | r: my $match='m'; print $match //= m/fm/ ; print $match.pos | ||
p6eval | rakudo 3619d7: OUTPUT«No such method 'pos' for invocant of type 'Str' in block at /tmp/7KbbptzgN2:1m» | ||
09:33
Su-Shee left
|
|||
jaffa4 | r: my $match='m'; print ($match //= m/fm/ ).pos; | 09:42 | |
p6eval | rakudo 3619d7: OUTPUT«No such method 'pos' for invocant of type 'Str' in block at /tmp/UhI6HfbiLN:1» | ||
09:42
cognominal left
09:45
havenn joined
09:50
havenn left
|
|||
masak | good antenoon, #perl6 | 09:53 | |
eiro | hello guys | ||
09:55
cognominal joined
|
|||
eiro | yeah cognominal :) | 09:56 | |
cognominal | hi, eiro and the nice #perl6 crowd | 09:57 | |
masak .oO( are you saying eiro is not nice? ) :P | 09:58 | ||
moritz | jaffa4: simply store the $/.to from the previous successful match, and anchor to that with :c($pos) or :p($pos) | 09:59 | |
though for lexing (for which you use /c in Perl 5) you can just use a grammar instead | |||
cognominal | * and the rest of the nice ... | 10:01 | |
now, masak will say I downplay #perl6 compared to eiro | 10:02 | ||
eiro | haha. i'm confused, have poor skills in both perl6 and english6 but i'm trying. i want bailador to listen to other than localhost:3000 | 10:07 | |
masak | I ain't said nothin' :) | ||
10:08
cognominal_ joined
|
|||
eiro | (btw the bailador message is a lie: it doesn't listen to 0.0.0.0 :) | 10:08 | |
10:08
cognominal left
|
|||
eiro | wow! another improved cognominal_ | 10:08 | |
imppressive update | |||
10:10
spider-mario joined
10:13
cognominal__ joined
10:14
cognominal_ left
10:15
kurahaupo joined
10:16
not_gerd_ joined
|
|||
not_gerd_ | hello, #perl6 | 10:16 | |
10:16
havenn joined
|
|||
not_gerd_ | r: sub foo(--> Str) { fail }; foo | 10:16 | |
p6eval | rakudo 3619d7: OUTPUT«Type check failed for return value; expected 'Str' but got 'Failure' in sub foo at /tmp/0ZrVGVmt0m:1 in block at /tmp/0ZrVGVmt0m:1» | ||
not_gerd_ | ^ bug? | 10:17 | |
10:17
whiteknight joined
|
|||
jnthn | morning o/ | 10:19 | |
not_gerd_ | jnthn: good morning | 10:20 | |
jnthn | er, afternoon :) | ||
not_gerd_ | ;) | ||
jnthn: irclog.perlgeek.de/perl6/2012-10-27#i_6104324 | |||
10:21
kurahaupo left
10:22
havenn left
|
|||
not_gerd_ | using typed containers appears to be fraught with gotchas | 10:23 | |
Nominal type check failed for parameter '@triggers'; expected Positional but got Array instead | |||
Ulti | win 2 | ||
not_gerd_ | lose 1 | ||
Ulti | :( | 10:24 | |
not that this window isn't my fav ;) | |||
jnthn | not_gerd_: While the error isn't great, note that you can only pass a typed array to something expecting to be passed a typed array | ||
r: sub foo(Int @a) { }; my @b = 1,2,3; foo(@b); | 10:25 | ||
p6eval | rakudo 3619d7: OUTPUT«Nominal type check failed for parameter '@a'; expected Positional but got Array instead in sub foo at /tmp/FudroQh7lM:1 in block at /tmp/FudroQh7lM:1» | ||
jnthn | r: sub foo(Int @a) { }; my Int @b = 1,2,3; foo(@b); | ||
p6eval | rakudo 3619d7: ( no output ) | ||
jnthn | It's on my todo list to make the error include the parametric bit. I'm really not sure why it doesn't already... | ||
10:25
cognominal__ left
|
|||
not_gerd_ | jnthn: any comments on returning Failure from subs with typed return values? | 10:26 | |
10:27
MayDaniel left
|
|||
jnthn | not_gerd_: In theory it should work. In practice, making it work may interact interestingly with the optimizer, which believes that if you say you're going to return a Str, you really are, and thus it can analyze/inline any call it's nested in based on that. | 10:28 | |
not_gerd_ | r: (-> Str *@ {})() | 10:29 | |
p6eval | rakudo 3619d7: OUTPUT«Nominal type check failed for parameter ''; expected Positional but got Array instead in block at /tmp/8AuoXqKwID:1» | ||
not_gerd_ | r: (-> Str :@dummy {})() | 10:30 | |
p6eval | rakudo 3619d7: OUTPUT«Nominal type check failed for parameter '@dummy'; expected Positional but got Array instead in block at /tmp/nj6qHNDKgS:1» | ||
10:30
pmurias joined
|
|||
not_gerd_ | these were my specific problems | 10:30 | |
10:31
not_gerd_ is now known as not_gerd,
cognominal joined
|
|||
jnthn | I think typed slurpies ain't gonna work, but the second one is certainly an issue. I suspect it's creating an untyped default container. | 10:31 | |
moritz: flussence noticed that github.com/rakudo/rakudo/commit/837d0f8#L2L30 seems to have accidentally the line that does a read from a socket | 10:34 | ||
moritz: I'm spectesting a patch that adds it back, but otoh the spectests didn't miss it in the first place... | 10:36 | ||
I'm also thinking I'll include this patch in R* so we don't have a month of "R* won't .read from sockets", but I ain't gonna cut a separate Rakudo release in order to do that. | 10:37 | ||
not_gerd | r: (-> Str @ {})(Nil) | ||
p6eval | rakudo 3619d7: OUTPUT«Nominal type check failed for parameter ''; expected Positional but got Nil instead in block at /tmp/gLih4ud_F7:1» | ||
not_gerd | another one I expected to work | 10:38 | |
jnthn | Hm, not sure about that one. I can see why it perhaps should. | ||
r: (-> @a { say @a.WHAT })(Nil) | |||
p6eval | rakudo 3619d7: OUTPUT«Nominal type check failed for parameter '@a'; expected Positional but got Nil instead in block at /tmp/F4A9bzL7rE:1» | ||
jnthn | You don't even need to type it for that one though :) | ||
10:43
cognominal left
|
|||
dalek | kudo/nom: 72ec639 | jnthn++ | src/core/IO/Socket.pm: Restore accidentally removed read in IO::Socket. |
10:43 | |
jnthn | phenny: tell flussence I restored the missing read in 72ec639 | ||
phenny | jnthn: I'll pass that on when flussence is around. | ||
jnthn | flussence++ # bug report that specified why the code was wrong | 10:44 | |
10:48
havenn joined
|
|||
not_gerd | r: (-> Str() $ {})(42) | 10:50 | |
p6eval | rakudo 3619d7: OUTPUT«===SORRY!===Missing blockat /tmp/Kn4UVMdMLZ:1» | ||
not_gerd | not implemented or am I misremembering the syntax? | ||
10:50
tokuhiro_ joined,
cognominal joined
|
|||
not_gerd | std: (-> Str() $ {})(42) | 10:50 | |
p6eval | std 64edd1c: OUTPUT«ok 00:00 46m» | ||
cognominal | jnthn++ # nice QAST doc | 10:52 | |
jnthn | not_gerd: The new coercion syntax isn't implemented; Rakudo does support the old "as Str" way. | 10:54 | |
10:55
havenn left
11:01
rindolf joined
|
|||
eiro | pull request on vim-perl: gf navigation now works for perl6 | 11:02 | |
moritz | \o/ | 11:03 | |
11:16
cognominal left
11:19
cognominal_ joined
11:20
cognominal_ left
11:21
havenn_ joined
|
|||
dalek | ar: 742f9db | jnthn++ | docs/announce/2012.10: Draft release announcement for 2012.10 release. |
11:24 | |
ar: 2651682 | jnthn++ | tools/star/Makefile: Bump versions. |
|||
jnthn | moritz: Any chance you could contribute something to the R* release announcement on the $*CUSTOM-LIB and related changes? | ||
jnthn isn't sure exactly what it is about and would rather somebody who groks it well write that section of the announce ;) | 11:25 | ||
Additionally, if anybody has suggestions of modules we really should include in R*, let me know. :) | 11:27 | ||
(as in, ones we currently don't :)) | |||
11:27
havenn_ left
|
|||
masak | oh, we're in a-star-is-born mode? | 11:27 | |
11:27
Chillance joined
|
|||
jnthn | masak: I'll cut the star release during the weekend. | 11:28 | |
masak | yay | ||
11:31
cognominal joined
|
|||
not_gerd lunch | 11:43 | ||
11:43
not_gerd left
11:54
havenn joined
11:56
cognominal left
11:59
sisar joined
12:00
havenn left
12:02
colomon joined
12:03
cognominal joined
12:04
domidumont joined,
domidumont left
12:06
domidumont joined
12:07
domidumont left,
domidumont joined,
domidumont left
12:08
domidumont joined,
domidumont left
|
|||
pmurias | jnthn: when compiling 'module Foo {...}' GLOBALish should contain Foo? | 12:10 | |
12:11
domidumont joined
12:12
domidumont left
|
|||
jnthn | pmurias: Yes; done at src/NQP/Grammar.pm:392 | 12:17 | |
pmurias: Presuming the module isn't nested in some other package, that is. | 12:18 | ||
See 121 for the "default package is GLOBALish" | |||
pmurias | $block.symtable<$?PACKAGE> seems a correct way of extracting GLOBALish? (with $block being the topmost block) | 12:22 | |
I get the right things from $?PACKAGE at runtime, and NQP*HOW,etc. at compile time | 12:23 | ||
jnthn | It'd have to be $block.symtable<$?PACKAGE><value> to get the actual object. | 12:24 | |
But I'd usually write it as $block.symbol('$?PACKAGE')<value> | |||
pmurias | yes, I was adding <value> | 12:25 | |
I'll switch to .symbol | |||
jnthn | It's doing the same thing under the hood, it's just a little shorter | ||
12:27
havenn joined
12:29
birdwindupbird joined
|
|||
pmurias | jnthn: for $node.symbol('$?PACKAGE')<value>.WHO -> $pkg_var {...} | 12:30 | |
12:30
tokuhiro_ left
|
|||
pmurias | jnthn: should that iterate all the pkg vars? | 12:31 | |
jnthn | pmurias: Looks right. | ||
Well | |||
$pkg_var will be soemthing with .key and .value | |||
pmurias | it seems to work for packages other then GLOBALish | 12:34 | |
12:34
havenn left
|
|||
pmurias moves to a room with internet good enough for pastebins ;) | 12:36 | ||
dalek | pan style="color: #395be5">perl6-examples: 00f5048 | (Gerhard R)++ | euler/prob009-gerdr.pl: [euler/prob009] use naive expression for upper bound |
12:38 | |
pan style="color: #395be5">perl6-examples: ca200a0 | (Gerhard R)++ | euler/prob009-gerdr-feeds.pl: [euler/prob009] add version using feed operators |
|||
moritz | jnthn: re %*CUSTOM_LIB, there's a blurb already in docs/depreactions in the rakudo repo | 12:41 | |
jnthn: IMHO it would be fine just to copy it over; if you don't think that's good enough, I can write something else too | 12:43 | ||
jnthn | moritz: If you're happy with it, I'm sure it's fine :) | ||
12:43
pmurias left
|
|||
moritz | well, it's hard for me to judge if it's informative/understandable, because I already know the stuff :-) | 12:44 | |
jnthn | moritz: It looks OK to me :) | 12:45 | |
12:45
whiteknight left,
pmurias joined
|
|||
jnthn | I understand it now anyways :) | 12:45 | |
moritz | phenny: ask tadzik what he thinks of the panda/custom-lib branch, and if it's mergable before the star release | 12:46 | |
phenny | moritz: I'll pass that on when tadzik is around. | ||
moritz | maybe not before the star release, but I hope before the the 2011.11 star release :-) | 12:47 | |
jnthn | Perhaps best to wait for the 2011.11. | 12:48 | |
pmurias | jnthn: that's what I find at compile time: pastie.org/5123213 | ||
jnthn | er, 2012.11 :) | ||
moritz | erm yes ._) | ||
jnthn | pmurias: Are you looking at $*UNIT or $*UNIT_OUTER? | 12:49 | |
pmurias: I suspect you're looking at the setting's GLOBALish | |||
As in, one frame too far out. | |||
(We cheat a little here in so far as the setting's idea of global actually becomes invisible; dates back to before NQP had any export mechanism I guess...) | 12:50 | ||
12:51
cognominal left
|
|||
pmurias | I'm looking at the $?PACKAGE of all the block in .load, but I guess I should look how the GLOBALish merging work | 12:51 | |
* works | |||
moritz | r: proto sub a($, $?) { } | ||
p6eval | rakudo 72ec63: ( no output ) | 12:52 | |
pmurias | jnthn: the way nqp-js works is I grab the QAST from the compreg'ed nqp and compile it, so I don't have access to any of the contextuals from the compiler | 12:53 | |
jnthn | pmurias: OK, to put it another way: what you get as the "top block" isn't UNIT, it's something that wraps it. | 12:55 | |
pmurias: So you need to look one block down for the one whose symbols table contains GLOBALish for the current unit. | |||
12:59
cognominal joined
13:01
havenn joined
13:04
Psyche^ joined
13:07
havenn left,
Patterner left,
Psyche^ is now known as Patterner
|
|||
flussence | g'mornin, GMT-5 | 13:12 | |
phenny | flussence: 10:43Z <jnthn> tell flussence I restored the missing read in 72ec639 | ||
flussence | yay | ||
moritz | flussence++, jnthn++ # noticing and cleaning up my mess | 13:16 | |
13:32
hash_table joined
13:34
havenn joined
13:41
havenn left
|
|||
dalek | kudo/Q: 5157d7f | jnthn++ | src/Perl6/ (2 files): Stub in quoting grammar/actions. |
13:54 | |
kudo/Q: 5c6fc96 | jnthn++ | src/Perl6/Grammar.pm: Start porting Q language from STD. |
|||
kudo/proto-arity: ce3b28d | moritz++ | src/core/ (2 files): start to switch some protos to a more constraint signature we want things like @list.map: &sin; to work, and that can only work if &sin is arity 1, so it cannot have a proto sig of (|) |
14:01 | ||
kudo/proto-arity: 0315558 | moritz++ | src/core/ (7 files): narrow down more protos |
|||
14:02
PacoAir joined
14:03
mucker joined
14:05
Pleiades` left
14:06
birdwind1pbird joined
14:07
havenn joined
14:11
Pleiades` joined
14:15
havenn left
14:19
cognominal left
14:22
ivan`` left
14:23
ivan`` joined
14:25
arlinius left
14:29
mikemol left
14:30
am0c joined
|
|||
moritz | if somebody could spectest the proto-arity branch against nom, that would be most welcome | 14:32 | |
jnthn | moritz: "against nom"? Is the branch not directly from HEAD? | 14:33 | |
moritz | s/spectest/benchmark/ | ||
moritz a bit distracted | |||
it spectests fine | |||
jnthn | I can run the spectests and see if they're any slower than a normal run. Is there some other benchmark you have in mind? | ||
moritz | nothing in particular, no | 14:34 | |
jnthn | OK | ||
dalek | kudo/Q: 6f1695e | jnthn++ | src/Perl6/Grammar.pm: Add an STD role. While we inherit a bunch of stuff from HLL::Grammar, STD has a few things factored out that we'd also like to share between languages. They shall go into this role. |
||
masak | "Q"? the guy from James Bond movies? | 14:35 | |
:P | |||
jnthn | No, Q the grammar :P | ||
masak | oh! | ||
jnthn | I'm working on aligning STDs and Rakudo's quote parsing. | ||
So we can haz things like quote adverbs. | |||
And then, like, heredocs. | |||
masak | cool. | 14:37 | |
moritz looks forward to it | 14:38 | ||
jnthn too :P | |||
dalek | p: 686d9ed | jnthn++ | src/NQP/World.pm: Fix composing roles with regexes in. The runtime mixin case worked, but curiously not the compile time one. |
||
jnthn | moritz: building and spectesting your branch, so can compare times | 14:39 | |
14:41
havenn joined
|
|||
dalek | kudo/nom: e5b94e3 | masak++ | src/Perl6/World.pm: [src/Perl6/World.pm] make comment more precise |
14:41 | |
14:45
am0c left
14:46
xinming left,
xinming joined
|
|||
jnthn | moritz: No measurable difference. | 14:46 | |
moritz | \o/ | ||
then I'll merge | |||
jnthn | moritz: It was a little faster than my last run in nom, but by second a couple of seconds, which is noise. | 14:47 | |
moritz++ | |||
Gee, it's still October and the November relesae is already starting to smell good :) | 14:48 | ||
14:48
havenn left
|
|||
moritz | :-) | 14:49 | |
masak silently works on macros in the background | |||
this roles fixup code doesn't look so bad. should be able to lift it over and declare D2 complete. | |||
colomon | \o/ | 14:50 | |
14:51
sisar left
|
|||
dalek | kudo/nom: ce3b28d | moritz++ | src/core/ (2 files): start to switch some protos to a more constraint signature we want things like @list.map: &sin; to work, and that can only work if &sin is arity 1, so it cannot have a proto sig of (|) |
14:52 | |
kudo/nom: 0315558 | moritz++ | src/core/ (7 files): narrow down more protos |
|||
kudo/nom: 6cefb40 | moritz++ | src/core/ (9 files): Merge branch 'proto-arity' into nom |
|||
kudo/nom: 6859fb6 | moritz++ | docs/ChangeLog: update ChangeLog with proto arity changes |
|||
14:53
JJ6 joined
14:54
JJ6 left
14:59
mr007x joined
15:05
cognominal joined
|
|||
dalek | ast: 8ce7a4e | moritz++ | S (2 files): rakudo unfudges |
15:13 | |
15:15
havenn joined
15:16
colomon left
|
|||
masak | r: macro einstein() { my $q = quasi { 2 }; $q = quasi { 1 + {{{$q}}} }; $q = quasi { 1 + {{{$q}}} }; $q }; say einstein() | 15:21 | |
p6eval | rakudo 6859fb: OUTPUT«4» | ||
15:21
MayDaniel joined
|
|||
masak | \o/ | 15:21 | |
r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 6 * 10 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; say bohr() | 15:22 | ||
p6eval | rakudo 6859fb: OUTPUT«Cannot call 'infix:<+>'; none of these signatures match::($x = { ... }):(int $a, int $b):(num $a, num $b):(Int:D \a, Int:D \b):(Num:D \a, Num:D \b):(Rational \a, Rational \b):(Rational \a, Int \b):(Int \a, Rational \b):(Complex:D \a, Complex:D \b):(Instan… | ||
15:22
colomon joined
|
|||
masak | :/ | 15:23 | |
cognominal | what is the meaning of {*} in qnp/src/QAST/Compiler.nqp? | ||
masak | r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 6 * 10 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { 66 + {{{$q3}}} } }; say bohr() | ||
p6eval | rakudo 6859fb: OUTPUT«666» | ||
masak | r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 6 * 10 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { 6 + {{{$q2}}} + {{{$q3}}} } }; say bohr() | ||
p6eval | rakudo 6859fb: OUTPUT«666» | 15:24 | |
masak | r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 6 * 10 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} } }; say bohr() | ||
p6eval | rakudo 6859fb: OUTPUT«6» | ||
masak | vewwy weiwd... | ||
jnthn | cognominal: In a proto method? It's "call the appropriate multi here" | ||
masak | so it's only adding *three* things that fails? o.O | ||
s/things/unquotes/ | |||
r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 6 * 10 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q1}}} + {{{$q1}}} } }; say bohr() | 15:25 | ||
p6eval | rakudo 6859fb: OUTPUT«18» | ||
masak | r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 6 * 10 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q2}}} + {{{$q2}}} + {{{$q2}}} } }; say bohr() | ||
p6eval | rakudo 6859fb: OUTPUT«180» | ||
masak | r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 6 * 10 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q3}}} + {{{$q3}}} + {{{$q3}}} } }; say bohr() | ||
p6eval | rakudo 6859fb: OUTPUT«1800» | ||
cognominal | jnthn, thx | ||
masak | what in the world... | ||
jnthn | masak: Did you meant to do $q3 in all the quasis? | 15:26 | |
pmurias | jnthn: I put $*UNIT in every put and it still lacks the package | ||
jnthn | 'cus 600 + 600 + 600 is 1800 in my book :) | ||
pmurias | s/put/pad/ | ||
masak | jnthn: only {{{$q1}}} + {{{$q2}}} + {{{$q3}}} fails. all other combos succeed. that's the weird thing. | 15:27 | |
my best guess is that it's something that trips on the exact shape of the AST created by combining those arithmetical expressions. | |||
jnthn | masak: It's nothing to do with the first quasi just having a literal in? | ||
masak | why would that make a difference? | ||
jnthn | I've no idea :) | 15:28 | |
masak | {{{$q1}}} + {{{$q1}}} + {{{$q1}}} succeeds. | ||
jnthn | ah, true | ||
15:29
domidumont joined
|
|||
masak | r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 6 * 10 }; my $q3 = quasi { say "are we failing in here?"; 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; say bohr() | 15:29 | |
p6eval | rakudo 6859fb: OUTPUT«Cannot call 'infix:<+>'; none of these signatures match::($x = { ... }):(int $a, int $b):(num $a, num $b):(Int:D \a, Int:D \b):(Num:D \a, Num:D \b):(Rational \a, Rational \b):(Rational \a, Int \b):(Int \a, Rational \b):(Complex:D \a, Complex:D \b):(Instan… | ||
pmurias | jnthn: how does WHO work? | ||
masak | huh. which infix:<+> *is* failing? | 15:30 | |
jnthn: or, hm, is that a compile-time error? | |||
r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 6 * 10 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; BEGIN { say "A" }; say bohr(); BEGIN { say "B" } | 15:31 | ||
p6eval | rakudo 6859fb: OUTPUT«ABCannot call 'infix:<+>'; none of these signatures match::($x = { ... }):(int $a, int $b):(num $a, num $b):(Int:D \a, Int:D \b):(Num:D \a, Num:D \b):(Rational \a, Rational \b):(Rational \a, Int \b):(Int \a, Rational \b):(Complex:D \a, Complex:D \b):(In… | ||
masak | r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 6 * 10 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; say "alive"; say bohr() | ||
p6eval | rakudo 6859fb: OUTPUT«aliveCannot call 'infix:<+>'; none of these signatures match::($x = { ... }):(int $a, int $b):(num $a, num $b):(Int:D \a, Int:D \b):(Num:D \a, Num:D \b):(Rational \a, Rational \b):(Rational \a, Int \b):(Int \a, Rational \b):(Complex:D \a, Complex:D \b):(… | ||
jnthn | pmurias: It just grabs the stash associated with the type | ||
pmurias: Under the hood it's no more than STABLE(obj)->WHO | |||
masak | r: macro bohr() { say "A"; my $q1 = quasi { 6 }; say "B"; my $q2 = quasi { 6 * 10 }; say "C"; my $q3 = quasi { 100 + 200 + 300 }; say "D"; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; say bohr() | 15:32 | |
p6eval | rakudo 6859fb: OUTPUT«ABCDCannot call 'infix:<+>'; none of these signatures match::($x = { ... }):(int $a, int $b):(num $a, num $b):(Int:D \a, Int:D \b):(Num:D \a, Num:D \b):(Rational \a, Rational \b):(Rational \a, Int \b):(Int \a, Rational \b):(Complex:D \a, Complex:D \b)… | ||
jnthn | pmurias: In NQP it's just set to a hash. In Rakudo we set it to a Perl 6 Stash object. | ||
masak | r: macro bohr() { my $q1 = quasi { 1 + 5 }; my $q2 = quasi { 6 * 10 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; say bohr() | ||
p6eval | rakudo 6859fb: OUTPUT«720» | ||
masak | jnthn: you're right. | ||
jnthn | o.O | 15:33 | |
wtf, it was a complete guess | |||
masak | jnthn: it *does* have to do with $q1 containing just a literal. | ||
note also that the above answer is wrong. | |||
it should be 666, not 720. | |||
something weird is going on here with precedence. | |||
colomon | hmmm... $q2 + $q2 + $q3 is 720 | ||
masak | r: macro bohr() { my $q1 = quasi { 1 + 5 }; my $q2 = quasi { 10 + 50 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; say bohr() | 15:34 | |
p6eval | rakudo 6859fb: OUTPUT«720» | ||
jnthn | I'm doubtful it's a precedence bug. I do have to wonder if it's not something busted in the code that walks through the AST to find quasis and splicing things in. | ||
masak | ok, not a precedence bug. | ||
I like colomon's theory better. | |||
maybe $q1 gets lost somewhere and $q2 gets used instead. | |||
r: macro bohr() { my $q1 = quasi { 6 * 10 }; my $q2 = quasi { 1 + 5 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; say bohr() | 15:35 | ||
p6eval | rakudo 6859fb: OUTPUT«612» | ||
masak | yeah, colomon++ is right. | ||
jnthn | masak: Yes, my guess was that the "getting lost" is happening in the spliciing. | ||
masak | quite possibly. | ||
masak submits rakudobug | 15:37 | ||
colomon | thought: maybe the reason it wouldn't work when it was quasi { 6 } is there wasn't enough room to splice in 6 * 10. | 15:38 | |
r: macro bohr() { my $q1 = quasi { 6 * 10 }; my $q2 = quasi { 1 + 5 * 2 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; say bohr() | |||
p6eval | rakudo 6859fb: OUTPUT«Cannot call 'Numeric'; none of these signatures match::(Mu:U \v: Mu *%_) in method Numeric at src/gen/CORE.setting:795 in sub infix:<+> at src/gen/CORE.setting:2602 in at /tmp/dU2oFIuXp5:1 in block at /tmp/dU2oFIuXp5:1» | ||
colomon | r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 1 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; say bohr() | 15:39 | |
p6eval | rakudo 6859fb: OUTPUT«602» | ||
colomon | r: macro bohr() { my $q1 = quasi { 6 + 1 }; my $q2 = quasi { 1 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; say bohr() | ||
p6eval | rakudo 6859fb: OUTPUT«608» | ||
colomon | didn't expect that. | 15:40 | |
masak | it gets the sum right. | ||
that last one, I mean. | |||
what the heck is going on here...? | |||
diakopter | r: macro bohr() { my $q2 = quasi { 1 + 5 }; my $q1 = quasi { 10 + 50 }; quasi { {{{$q1}}} + {{{$q2}}} + 600 } }; say bohr() | 15:41 | |
p6eval | rakudo 6859fb: OUTPUT«612» | ||
diakopter | the second splats the first | ||
masak | not in the "608" case above. | 15:42 | |
colomon | hold on, better test | ||
masak | so, yes, but only sometimes. | ||
diakopter | when both are additions | ||
colomon | r: macro bohr() { my $q1 = quasi { 6 + 1 }; my $q2 = quasi { 9 }; my $q3 = quasi { 100 + 200 + 300 }; quasi { {{{$q1}}} + {{{$q2}}} + {{{$q3}}} } }; say bohr() | ||
p6eval | rakudo 6859fb: OUTPUT«616» | ||
diakopter | oH! | 15:43 | |
when both have 2 terms | |||
multiplication works too | |||
first splats the second when theyy're the same shape? | 15:44 | ||
15:44
rindolf left
|
|||
colomon | but if the second is bigger, it super splats it, making something outright illegal. | 15:44 | |
masak | doesn't cover it. the first case had $q1 = quasi { 6 } and $q2 = quasi { 6 * 10 } | ||
15:44
rindolf joined
|
|||
masak | oh! | 15:45 | |
yes, diakopter + colomon might cover it. | |||
masak re-reads backlog to make sure | |||
diakopter | sorry; I meant second splats the first | ||
15:45
mucker left
|
|||
diakopter | typosed | 15:45 | |
masak | r: macro bohr() { my $q1 = quasi { 6 }; my $q2 = quasi { 6 * 10 }; quasi { {{{$q1}}} + {{{$q2}}} } }; say bohr() | 15:46 | |
p6eval | rakudo 6859fb: OUTPUT«Cannot call 'infix:<+>'; none of these signatures match::($x = { ... }):(int $a, int $b):(num $a, num $b):(Int:D \a, Int:D \b):(Num:D \a, Num:D \b):(Rational \a, Rational \b):(Rational \a, Int \b):(Int \a, Rational \b):(Complex:D \a, Complex:D \b):(Instan… | ||
masak | diakopter: oh; that's how I read you anyway :) | ||
r: macro bohr() { my $q1 = quasi { 5 + 1 }; my $q2 = quasi { 6 * 10 }; quasi { {{{$q1}}} + {{{$q2}}} } }; say bohr() | |||
p6eval | rakudo 6859fb: OUTPUT«120» | ||
diakopter | I mean, it'd be cuter if the first got the second | ||
masak | yes, diakopter + colomon seem to have it. | 15:47 | |
diakopter | maybe | ||
colomon | I don't understand it, I'm just trying to pin down the behavior. :) | ||
jnthn | phenny: ask TimToady what stops the sequential alternation in nibbler from being a normal alternation? | ||
phenny | jnthn: I'll pass that on when TimToady is around. | ||
diakopter | jnthn: what does it become if not a normal alternation? | 15:48 | |
masak | colomon: same here. | ||
diakopter | a method? | ||
jnthn | diakopter: It means that the NFA can't be used to pick the branch to take. | ||
diakopter | r: macro bohr() { my $q2 = quasi { 1 + 5 }; my $q1 = quasi { 10 - 50 }; quasi { {{{$q1}}} + {{{$q2}}} } }; say bohr() | 15:50 | |
p6eval | rakudo 6859fb: OUTPUT«12» | ||
colomon | diakopter++ | 15:51 | |
diakopter | wait, it's the second *in the addition*, not the second to be declared | ||
15:51
birdwind1pbird left
|
|||
jnthn | phenny: ask TimToady Why "push @nibbles, $<starter>;" but $<escape>[*-1], $<nibbler>[*-1], etc? Bug? | 15:51 | |
phenny | jnthn: I'll pass that on when TimToady is around. | ||
diakopter | r: macro bohr { my $q2 = quasi { 1 + 5 }; my $q1 = quasi { 10 - 50 }; quasi { try eval('DROOL') + {{{$q2}}} } }; say bohr | 15:56 | |
p6eval | rakudo 6859fb: OUTPUT«===SORRY!===Error while compiling block : Error while compiling block bohr: Error while compiling block : Error while compiling block : Error while compiling op call: Unknown QAST node type QAST::Unquoteat /tmp/MXwoFA4Rny:1» | ||
diakopter | masak: that's something ^^ | ||
what's a QAST::Unquote | 15:57 | ||
that's what she said | |||
masak | diakopter: nice. | 15:59 | |
yes, the fact that QAST::Unquote shows up so late in compilation is always a bug. | |||
something is afoot here. | |||
jnthn: I'm starting to think that the problem is in the find-unquotes recursion. | |||
diakopter | ahand too | ||
jnthn | masak: Sounds feasible given what we're observing. | 16:04 | |
masak | that code is in nqp. it's very approachable. | ||
maybe it does something wrong with operators? | |||
diakopter | r: macro bohr { quasi { try eval('DROOL') } }; bohr | ||
p6eval | rakudo 6859fb: OUTPUT«===SORRY!===Method 'evaluate_unquotes' not found for invocant of class 'String'at /tmp/kD5frDqxtm:1» | ||
diakopter | o+O | ||
jnthn | masak: Didn't you write that code? :) | ||
masak | jnthn: yes, of course I did. :) | 16:05 | |
diakopter | what's evaluate_unqoutes | ||
jnthn | masak: I'm glad you find it approachable :P | ||
masak | should be this one: github.com/perl6/nqp/blob/master/s...Op.nqp#L21 | ||
jnthn | masak: QAST::Op should be quite simple.. | ||
masak | looks right to me. | 16:06 | |
diakopter | masak: another weird bug ^^ | ||
jnthn | masak: boom, headshot | ||
masak: my $result := pir::repr_clone__PP(self); | |||
masak | diakopter: yes. further confirmation that we've identified the area where things are going wrong. | ||
jnthn | masak: That clones the *node* | ||
masak: But not the children array within it | |||
There's a method in QAST::Node called shallow_clone, iirc | |||
masak | jnthn: oh! | ||
jnthn | That clones the object *and* the child array. | ||
diakopter | r: macro marco { quasi { quasi { 5 } } }; say marco | ||
p6eval | rakudo 6859fb: OUTPUT«AST.new()» | 16:07 | |
jnthn | diakopter: That one actually looks right :P | ||
masak | jnthn: would this explain the RT ticket I just filed, about $q1 and $q2 ? | ||
jnthn | masak: possibly | ||
masak | diakopter: that one is right. | ||
diakopter | cool | ||
jnthn | masak: It'd certainly cause...issues. | ||
masak | diakopter: quasi blocks produce AST objects. | ||
jnthn: I'll see about pushing a fix. | |||
16:08
cognominal left
|
|||
dalek | kudo/Q: 50c8923 | jnthn++ | src/Perl6/Grammar.pm: First crack at babble. Fairly alike the STD version, except we cache the derived languages. |
16:09 | |
kudo/Q: 5050218 | jnthn++ | src/Perl6/Grammar.pm: Initial port of nibbler, nibble and quibble. Fairly close to STD, but nibbler should be faster this way. Skipped the runaway multi-line string detection for now; can add it later. |
|||
16:12
colomon_ joined
|
|||
jnthn | break; afk for a bit | 16:12 | |
16:12
colomon left,
colomon_ is now known as colomon
|
|||
moritz | jnthn: please also document those rules, I find the names confusing :-) | 16:13 | |
16:14
cognominal joined
|
|||
diakopter | r: macro marco { try 0 }; marco | 16:15 | |
p6eval | rakudo 6859fb: OUTPUT«(timeout)» | ||
diakopter | masak: ^^ | ||
masak submits rakudobug | 16:16 | ||
r: BEGIN { try 0 }; say "alive" | 16:17 | ||
p6eval | rakudo 6859fb: OUTPUT«(timeout)» | ||
masak | seems it has nothing to do with macros, just 'try' at BEGIN time. | ||
diakopter | oh | ||
masak | r: BEGIN { try { say 0 } }; say "alive" | 16:18 | |
p6eval | rakudo 6859fb: OUTPUT«(timeout)0» | ||
diakopter | r: macro marco { die 1 }; say marco | ||
moritz | r: BEGIN try 0; | ||
p6eval | rakudo 6859fb: OUTPUT«===SORRY!===Method 'SET_FILE_LINE' not found for invocant of class 'X::AdHoc'» | 16:19 | |
rakudo 6859fb: OUTPUT«(timeout)» | |||
diakopter | masak: SET_FILE_LINE error | ||
moritz | I can try to investigate that | ||
masak | at a guess, the bug in podolsky() is also related to the RT ticket found today. | ||
diakopter: that looks genuine. | 16:20 | ||
masak submits rakudobug | |||
diakopter: do you have like a big table of features to try and combine? | |||
because sometimes I've toyed with the idea of making such a table. | 16:21 | ||
diakopter | no just a brain full of jumbled mess | ||
masak | :P | ||
16:22
kaare_ joined
|
|||
diakopter | masak: what do parameters to macros do | 16:25 | |
r: macro marco { polo }; macro polo { marco }; say marco | 16:28 | ||
p6eval | rakudo 6859fb: OUTPUT«===SORRY!===Could not find sub &poloat /tmp/jEHRf9GTEQ:1» | ||
diakopter | r: macro marco { polo }; macro polo { marco }; say polo | ||
p6eval | rakudo 6859fb: OUTPUT«===SORRY!===Could not find sub &poloat /tmp/M02sEn7GNH:1» | ||
diakopter | funny they both can't find polo | ||
r: macro marco { polo }; macro polo { quasi { 55 } }; say marco | 16:29 | ||
p6eval | rakudo 6859fb: OUTPUT«55» | ||
16:29
jaldhar left
|
|||
masak | diakopter: arguably the should find polo, since it's been defined before marco is called. | 16:29 | |
they* | 16:30 | ||
16:30
rindolf left
|
|||
diakopter | but the 3rd marco finds polo before it's defined | 16:30 | |
masak | diakopter: but recursion inside macros needs to bottom out, just like all other recursion :) | ||
oh, so it does. weird. | |||
I can't really explain that. | 16:31 | ||
diakopter: parameters on macros are AST-ifications of the arguments you pass to macros. you can unquote them in quasi blocks. | |||
r: macro twice($stuff) { quasi { {{{$stuff}} | |||
p6eval | rakudo 6859fb: OUTPUT«===SORRY!===Unable to parse expression in block; couldn't find final '}' at line 2, near ""» | ||
masak | ugh. | ||
r: macro twice($stuff) { quasi { {{{$stuff}}}; {{{$stuff}}} } }; twice say "OH HAI" | 16:32 | ||
p6eval | rakudo 6859fb: OUTPUT«OH HAIOH HAI» | ||
masak submits the marco-polo thing | |||
r: macro marco { say "m"; polo }; macro polo { say "p"; marco }; marco | 16:33 | ||
p6eval | rakudo 6859fb: OUTPUT«m===SORRY!===Could not find sub &poloat /tmp/zXOBjjGx1r:1» | ||
masak | r: macro marco { say "m"; polo }; macro polo { say "p"; marco }; polo | ||
p6eval | rakudo 6859fb: OUTPUT«m===SORRY!===Could not find sub &poloat /tmp/hQL1B2hOCX:1» | ||
masak | that last one does not make sense. | ||
it should not say "m" | 16:34 | ||
oh! | |||
no, I'm wrong. | |||
"marco" inside "polo" is a macro invocation and gets run at parse time, when parsing "polo". | 16:35 | ||
so what you should be getting, diakopter, is an infinite loop at parse time. | |||
moritz | why? | ||
at parse time, polo is not known | 16:36 | ||
masak | right. | ||
moritz | so it can't be called | ||
masak | right. | ||
it might be that forward-calls to macros just don't make sense. | |||
because "polo" in "marco" should've been a macro invocation, too, had the parser known that it'd be declared as a macro. | 16:37 | ||
moritz | well, it would compile it to a run-time call, because it's not yet known as a macro | ||
masak | right. | ||
moritz | and then when the parser finds that's a macro, not an ordinary routine, it has to shake its head in confusion | ||
masak | right now, it just moves on with life. | 16:38 | |
r: foo; sub foo { say "OH HAI" } | |||
p6eval | rakudo 6859fb: OUTPUT«OH HAI» | ||
masak | r: foo; macro foo { say "OH HAI" } | ||
p6eval | rakudo 6859fb: OUTPUT«OH HAI» | ||
masak | o.O | ||
16:38
benabik left
|
|||
masak | I wonder why that one works. | 16:38 | |
r: BEGIN { say "A" }; foo; BEGIN { say "B" }; macro foo { say "OH HAI" } | 16:39 | ||
p6eval | rakudo 6859fb: OUTPUT«ABOH HAI» | ||
16:39
benabik joined
|
|||
masak | ahahah. | 16:39 | |
it gets called as a sub. | |||
jnthn | BEGIN time dynamic compilation has snapshot semantics on the outer lexpad. | ||
masak | yeah. | ||
jnthn | Because lexpads are immutable, it just constructs an outer view based on what is decalred so far. | ||
And that view is a snapshot, and not updated. | |||
masak | jnthn: well, foo is called as a sub above. | 16:40 | |
hence the ordering between "B" and "OH HAI". | |||
jnthn | Yes, that's unsurprising. | ||
I'm just pointing out why you might be seeing other interesting things, generally. | |||
masak | so, the rule is, Rakudo tries to call all forward-declared macros as subs. sometimes, it succeeds. | ||
jnthn | Well, if we take the one that failed: | ||
masak | oh, and it doesn't succeed in the "polo" case, because &polo simply isn't visible from within &marco. | 16:41 | |
jnthn | macro marco { say "m"; polo }; macro polo { say "p"; marco }; marco | ||
Disecting this, we se marco, it calls it at compile time, says "m", but there was no polo in the lexpad at the time marco got its snapshot (which happend while parsing polo but before polo was installed). | 16:42 | ||
masak | ah. | ||
so routines get installed at the '}'? | |||
jnthn | Yeah | ||
masak | that makes sense, because lexpads, I guess. | 16:43 | |
jnthn | We could potentially change that. | ||
But I'm not keen at all. | |||
masak | well, it's only an issue with macros. | ||
jnthn | Because it's...dangerous...without other changes. | ||
masak | *nod* | ||
no urgent need. | |||
jnthn | btw, I realized that at the least the non-cloning bug could be why you had that bug when you tried to matryosha quasis in a loop. | 16:44 | |
*matryoshka | |||
masak | <masak> at a guess, the bug in podolsky() is also related to the RT ticket found today. | ||
jnthn: yeah, I realized that in the above line, too :) | 16:45 | ||
jnthn | oh, I didn't fully backlog the bit when I was away :) | ||
masak | it's nice when bugs unify ;) | ||
jnthn | Talking of away, I guess I should go buy something to cook/eat for dinner... | ||
masak | I'll try to fix the cloning bug le meantime. | 16:46 | |
s/le/in le/ | |||
moritz should do his bugfix in nom, not in a non-working, experimental branch :-) | 16:48 | ||
masak | git stash FTW. | 16:49 | |
16:52
colomon left
16:57
colomon joined,
MikeFair left,
MikeFair joined
17:07
benabik left
17:09
benabik joined
17:22
fgomez left,
fgomez joined
|
|||
masak | jnthn: I'm going to commit anyway, because I'm reasonably convinced this is fine. but I found the same need for self.shallow_clone(), not just in 'Op.pm', also in <Block Stmt Stmts Want> >>~>> '.pm'. | 17:25 | |
masak builds and tests | |||
jnthn | yes, anything with kids will need it | 17:29 | |
masak .oO( these nodes shouldn't be getting on a plane at all... ) | 17:30 | ||
flussence | Public Service Announcement: hacking on a crashy web app is much nicer with daemontools instead of doing ^C/↑/ in a terminal window after every change. | 17:31 | |
17:32
GlitchMr left
|
|||
TimToady | .u ↑ | 17:32 | |
phenny | U+2191 UPWARDS ARROW (↑) | ||
TimToady: 15:47Z <jnthn> ask TimToady what stops the sequential alternation in nibbler from being a normal alternation? | |||
TimToady: 15:51Z <jnthn> ask TimToady Why "push @nibbles, $<starter>;" but $<escape>[*-1], $<nibbler>[*-1], etc? Bug? | |||
17:32
GlitchMr joined
|
|||
moritz | p6eval runs inside a while true; do perl evalbot.pl $configfile; sleep 20; done; loop | 17:32 | |
:-) | 17:33 | ||
dalek | p: bc73493 | masak++ | src/QAST/ (5 files): [src/QAST/*.nqp] shallow-clone nodes with kids A node without children can make do with the pir::repr_clone__PP call that was already there. But those that use the array of children need that cloned too, so we do self.shallow_clone(); This ought to fix a number of weird quasi-related behaviors we've seen in Rakudo. |
||
masak | jnthn: is it kosher to bump NQP_REVISION? defaulting to "yes". | ||
flussence | masak: I've done that before, but I felt like being fancy for a change :) | 17:34 | |
whoops | |||
s/m.*/$the-other-m/ | |||
dalek | kudo/nom: 9d50d6b | masak++ | tools/build/NQP_REVISION: [NQP_REVISION] bump for better unquotes handling |
17:35 | |
jnthn | masak: yes, that's pretty much always safe | ||
17:36
birdwindupbird left
|
|||
masak | the only thing I could think of that would make it less than desirable was the upcoming star release. | 17:36 | |
TimToady | re starter/stopper not using [*-1], yes, that's probably a buglet, but masked by the downstream ignoring them, since the internal starter/stoppers just end up part of the string | ||
jnthn: and re || vs |, I just wanted to make sure the quote nester overrode any random escapes you happen to have included by accident, since the quote chars are probably in the user's head, and the escapes probably aren't | 17:38 | ||
qq{ { } } chooses to treat the internals as starter/stopper rather than closure interpolation, for instance | 17:39 | ||
though that may be a retro-rationale; doing LTM between starters and escapes was not working out for some reason that I don't recollect | 17:41 | ||
17:41
telex left
|
|||
TimToady | it might be that it blew up my lexer-writer at the time somehow | 17:42 | |
17:42
telex joined
|
|||
masak | podolsky() passes locally \o/ | 17:42 | |
diakopter | r: macro marco { AST.new }; marco | 17:43 | |
p6eval | rakudo 6859fb: OUTPUT«===SORRY!===Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling block : Unknown QAST node type Any» | ||
diakopter | :> | ||
masak | bohr() still fails :/ | ||
TimToady | otoh I think privileging the starter/stopper is consistent with checking for the stopper as the loop condition | ||
masak | diakopter: fair point. | 17:44 | |
masak submits rakudobug | |||
17:45
benabik left
|
|||
diakopter | r: macro polo { quasi { 5 } }; &polo = macro { quasi { 3 } }; say polo | 17:46 | |
TimToady | so, for instance, qq$ $foo $ is going to take the variable's $ as the quote terminator despite $foo being (potentially) a longer token | ||
p6eval | rakudo 6859fb: OUTPUT«===SORRY!===Error while compiling block : Error while compiling op call: Error while compiling block : Error while compiling op p6store: Unknown QAST node type NQPMu» | ||
TimToady | so it's kinda consistent to treat internal {} as starter/stopper even if it could be an escape too | ||
diakopter | masak: I dunno. trying to clobber polo. | ||
17:47
fgomez left
|
|||
jnthn | TimToady: OK, makes sense. | 17:47 | |
TimToady | kinda :) | ||
jnthn | One option if we want it to be LTMable is to whack a <!starter> before the <escape> | 17:48 | |
TimToady | I know when I first started out I had grand schemes of including terminators in with other categories, but it tended not to work out well | ||
diakopter | r: macro polo { quasi { 5 } }; class polo { quasi { 3 } }; say polo | ||
p6eval | rakudo 6859fb: OUTPUT«polo()» | ||
jnthn | dinner, bbiab | ||
diakopter | masak: I can't redeclare &polo, but I can make a class of that name | 17:49 | |
17:49
hash_table left
|
|||
jnthn | diakopter: Your class is called polo, not &polo :) | 17:49 | |
TimToady | well, if we can make | work faster than ||, it's worth looking at | ||
diakopter | I know | ||
I was referring to an unseen p6eval query | |||
r: macro polo { quasi { 5 } }; my &polo = { quasi { 3 } }; say polo | 17:50 | ||
p6eval | rakudo 6859fb: OUTPUT«===SORRY!===Redeclaration of symbol &poloat /tmp/Oul3A0pquq:1» | ||
diakopter | jnthn: (that) | ||
jnthn: (but I can make a class with name polo) | 17:51 | ||
TimToady | but my guess is that | vs || will be in the noise, unless can find a fast way to maybe scan .*? in front of it, but then you probably need both <!starter> and <!stopper> in front of <escape> | 17:52 | |
furthermore, and difference between | and || code might disappear as we optimized Perl 6 further, since the | form would just be moving the .*? loop to lower-level code which, while faster now, might not be faster later | 17:53 | ||
17:54
fgomez joined
|
|||
GlitchMr | I've Perl 6 changes... now only if my Internet would be quicker... I've typed git push and nothing. | 17:54 | |
TimToady struggles feebly to get out of the conjectural-analytical weeds | 17:55 | ||
diakopter hands TimToady a presupposition | |||
TimToady looks at it, and wishes it were a postsupposition instead... | 17:56 | ||
or perhaps a midsupposition... | |||
moritz | you suppostitions lot! | ||
GlitchMr | | is so natural. It allows some abuse of it like codegolf.stackexchange.com/a/8776/3103, but it also could make really nice code. | 17:57 | |
moritz | *suppostitious # way to kill a pun with a typo | ||
GlitchMr | I mean, x is 0 or 2, not x is 0 or x is 2. | ||
I still have to find use for ^, but whatever. | 17:58 | ||
dalek | pan style="color: #395be5">perl6-examples: 1f2506c | (Gerhard R)++ | euler/prob053-gerdr.pl: [euler/prob053] add version using feed operators |
17:59 | |
TimToady | moritz: you could blame it on pyslexia instead | ||
or would that be qyslexia in this case... | 18:01 | ||
diakopter | r: sub foo { my $x = 5; macro bar { quasi { macro bar { quasi { $x } } } } }; say foo | ||
p6eval | rakudo 6859fb: OUTPUT«5» | ||
diakopter | oh. | ||
r: sub foo { my $x = 5; 7; macro bar { quasi { macro bar { quasi { $x } } } } }; say foo | |||
p6eval | rakudo 6859fb: OUTPUT«7» | ||
masak | diakopter: as jnthn points out, with the macro-and-sub there is an actual name clash, since both are named &polo. with macro-and-class, there isn't. | 18:03 | |
18:03
rindolf joined
|
|||
diakopter | ok | 18:04 | |
r: sub foo { my $x = 5; 7; regex foo { quasi { $x } }; say 'alive'; foo }; say foo | 18:06 | ||
p6eval | rakudo 6859fb: OUTPUT«(timeout)Useless declaration of a has-scoped method in mainlinealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealivealiveali… | ||
diakopter | oh hm | ||
nm | |||
TimToady | std: sub foo { my $x = 5; 7; regex foo { quasi { $x } }; say 'alive'; foo }; say foo | 18:07 | |
GlitchMr | Finite recursion depth would be weird for interpreted language. | ||
p6eval | std 64edd1c: OUTPUT«Potential difficulties: 'regex' declaration outside of grammar at /tmp/mEEtd2ssnm line 1:------> sub foo { my $x = 5; 7; regex foo ⏏{ quasi { $x } }; say 'alive'; foo }; saok 00:00 45m» | ||
GlitchMr | Especially one that encourages functional programming. | 18:08 | |
diakopter | r: sub foo { my $x = 5; 7; &foo() }; say foo | ||
p6eval | rakudo 6859fb: OUTPUT«maximum recursion depth exceededcurrent instr.: 'print_exception' pc 89091 (src/gen/CORE.setting.pir:42742) (src/gen/CORE.setting:9094)called from Sub 'foo' pc 111 ((file unknown):80) (/tmp/Mh3jcAAI_K:1)called from Sub 'foo' pc 155 ((file unknown):103) (/tmp/Mh3… | ||
diakopter | r: sub foo { my $x = 5; 7; class foo { }; &foo() }; say foo | ||
p6eval | rakudo 6859fb: OUTPUT«foo()» | ||
diakopter | somehow the addition of class foo makes &foo() not recurse | 18:09 | |
GlitchMr | Uhm, how did previous example and that didn't? | ||
worked* | |||
diakopter | GlitchMr: I dunno; I'm curious too | ||
masak | GlitchMr: no, finite recursion depth is very common, and pretty much a necessity if you have stackframes. | ||
(and no guarantees of tail-call optimization) | 18:10 | ||
GlitchMr | Perl 5 haves infinite recursion depth (except for operator overloading which doesn't for some reason) | ||
diakopter | interpreted can still have the exact same call stack structure as compiled | ||
GlitchMr | has* | ||
diakopter | eval: sub foo{foo};foo | 18:12 | |
buubot_backup | diakopter: foo | ||
TimToady | Perl 5 is (largely) stackless | ||
GlitchMr | Also, ZX Spectrum BASIC only has memory as recursion limit | ||
Why Perl 6 would have it? | |||
TimToady | so the call stack is really in the heap | ||
but Perl 5 doesn't to tail-recursion optimization, last I knew | 18:13 | ||
*do | |||
GlitchMr | Well, technically there is goto &sub, but it | ||
's manual optimization | |||
diakopter | eval: sub foo {foo};foo | ||
buubot_backup | diakopter: foo | ||
diakopter | eval: sub foo {foo};foo() | ||
buubot_backup | diakopter: foo | ||
diakopter | eval: sub foo {foo};&foo->() | 18:14 | |
buubot_backup | diakopter: foo | ||
GlitchMr | diakopter: foo sub it unknown until Perl sees ending brace of sub | ||
eval: sub foo; sub foo { foo }; foo | |||
buubot_backup | GlitchMr: Out of memory! | ||
GlitchMr | eval: sub foo { foo() }; foo | ||
diakopter | oh yeah. | ||
buubot_backup | GlitchMr: Out of memory! | ||
18:14
cognominal left
|
|||
GlitchMr | is unknown* | 18:14 | |
masak | GlitchMr: so. Perl 5 doesn't have infinite recursion depth. | 18:15 | |
diakopter | TimToady: does p5 malloc frames one by one? or by large blocks? | ||
GlitchMr | masak: obviously no language has infinite recursion depth | 18:16 | |
jnthn | r: sub foo { my $x = 5; 7; &foo() }; say foo | ||
p6eval | rakudo 9d50d6: OUTPUT«maximum recursion depth exceededcurrent instr.: 'print_exception' pc 89091 (src/gen/CORE.setting.pir:42742) (src/gen/CORE.setting:9094)called from Sub 'foo' pc 111 ((file unknown):80) (/tmp/BRQJDGPtcr:1)called from Sub 'foo' pc 155 ((file unknown):103) (/tmp/BRQ… | ||
jnthn | r: sub foo { my $x = 5; 7; class foo { }; &foo() }; say foo | ||
p6eval | rakudo 9d50d6: OUTPUT«foo()» | ||
masak | GlitchMr: you said above that Perl 5 does. | ||
GlitchMr | And no machine is Turing-complete | ||
jnthn | Here', the foo you're talking about is the class foo :) | ||
mst | my perl5 code has intentionally restricted recurion depth | ||
jnthn | Thus the foo() :) | ||
masak | <GlitchMr> Perl 5 haves infinite recursion depth (except for operator overloading which doesn't for some reason) | ||
mst | since I have fatal warnins on, so the 'deep recursion' warning goes off and kills it | 18:17 | |
diakopter | jnthn: right, but how could &foo refer to the class | ||
mst | I consider this to be a feature | ||
jnthn | diakopter: You never fallced the sub | ||
*called | |||
diakopter | ohh | ||
masak | mst: I think I would, too. | ||
GlitchMr | Also, &foo->() looks like %a->{b} for me. | 18:18 | |
Not sure... really | |||
deparse: &foo->() | |||
buubot_backup | GlitchMr: &foo->(); | ||
GlitchMr | eval: use warnings; &foo->() | 18:19 | |
buubot_backup | GlitchMr: ERROR: Undefined subroutine &main::foo called at (eval 20) line 1. | ||
GlitchMr | How does that work? | ||
mst | how does what work? | ||
GlitchMr | &foo->() | ||
Let me guess, it's actually | 18:20 | ||
&foo(@_)->() | |||
mst | eval: sub foo { return sub { 42 } }; &foo->(); | ||
buubot_backup | mst: 42 | ||
TimToady | diakopter: p5 uses a (reallocatable) compact array of PERL_CONTEXT structs for a call stack | ||
mst | GlitchMr: ^^ same way as everything else | ||
diakopter | TimToady: ah | ||
GlitchMr | It looked for me like deprecated %a->{b} for some reason | ||
flussence | I'm not sure /\%a->(.*)/ would make sense at all | 18:22 | |
diakopter | r: my $a; class foo { my class foo { }; $a = foo }; say foo eqv $a | 18:25 | |
p6eval | rakudo 9d50d6: OUTPUT«True» | ||
diakopter | r: my $a; class foo { my class foo { }; $a = foo }; say foo === $a | ||
p6eval | rakudo 9d50d6: OUTPUT«True» | ||
diakopter | :S | ||
r: my $a; class foo { my class foo { }; $a = foo }; say foo ~~ $a | |||
p6eval | rakudo 9d50d6: OUTPUT«False» | ||
dalek | d: edd7715 | larry++ | STD.pm6: $<starter> and $<stopper> under * are arrays |
18:26 | |
masak | r: class foo {}; say foo.WHICH | ||
p6eval | rakudo 9d50d6: OUTPUT«foo» | ||
masak | r: class foo {}; say foo.WHERE | ||
p6eval | rakudo 9d50d6: OUTPUT«-1124002555» | ||
mst | GlitchMr: the other funny one is when people write $obj->method_name->(); | ||
GlitchMr: and then get exceedingly confused | |||
76 | |||
masak | r: class foo { my class foo {}; say foo.WHERE }; say foo.WHERE | 18:27 | |
p6eval | rakudo 9d50d6: OUTPUT«-18927058081340315348» | ||
jnthn | Uh. Returning the class name for .WHICH is a rather bad idea :) | ||
I think that's already RT'd though. | |||
masak | jnthn: that surprised me a bit, yes. | ||
jnthn | masak: me too | ||
masak | jnthn: which is why === gives True above, I guess. | ||
and diakopter is right to ':S' about it. | 18:28 | ||
TimToady | yes, classes are not a value type, so should return object identity | ||
diakopter | r: my $a; class foo { my class foo { }; $a = foo }; say foo.WHERE, $a.WHERE | ||
p6eval | rakudo 9d50d6: OUTPUT«-356640531-363419417» | ||
jnthn | masak: Yes, it's clearly wrong. | 18:29 | |
A patch would be better than a :S :) | |||
diakopter | jnthn: well, I thought it was wrong for the wrong reason | ||
TimToady | jnthn thinks 2 wrongs make a write :) | ||
jnthn | :P | 18:30 | |
TimToady: We have in STD quote_mod:sym<a>, but it doesn't parse array, the long form, which tweak also accepts. Deliberate? | 18:31 | ||
rindolf | How do I run the specttest in parallel? | 18:32 | |
flussence | rindolf: "make TEST_JOBS=<n> spectest" | ||
rindolf | flussence: thanks. | 18:33 | |
18:37
benabik joined
|
|||
moritz | ... as documented in rakudo's README | 18:37 | |
erm should be at least :/ | |||
hm, it's in INSTALL.txt | 18:38 | ||
18:40
cognominal joined
|
|||
pmurias | jnthn: how can I determine in nqp if something is a type object? | 18:42 | |
TimToady | jnthn: there are two ways for quote_mods to get parsed. we only allow the short form for :qa and such, but both the short and long forms can be parsed as quotepairs in babble | ||
but the latter require the colon | |||
at that point, it's the fact that there are two different names in the tweak that allow both :a and :array | 18:43 | ||
jnthn | pmurias: !nqp::concrete($thing) | ||
pmurias: sorry, nqp::isconcrete | 18:44 | ||
TimToady: I figured the quotepair form would allow both, just wanted to check about the quote_mods. | |||
TimToady | yes, the long forms aren't actually parsed with <quote_mod> | 18:47 | |
jnthn | OK | ||
pmurias | jnthn: and check for something being a SixModelObject? | 18:49 | |
TimToady | eventually we probably oughta unify the processing of all identifiers so that a user's 'sub qa' isn't overridden by the language's qa accidentally | 18:50 | |
the quote operators are a bit too keywordy for my tastes right now | |||
that would get them out of the LTM table too | |||
jnthn | arrgh...I start copying a bit of STD and you ponder changing it :P | 18:51 | |
TimToady | well, just the parsing of the symbol. everything else would work the same | 18:52 | |
jnthn | :) | ||
moritz | that's the eternal Perl 6 curse -- you implement something, and thus trigger its change | ||
TimToady | the problem is that whenever you draw my attention to something, I look at it :D | ||
18:53
benabik left
|
|||
TimToady | but I'm still in pondering mode on that; qa and friends probably need to be treated as a lexical macro provided by the setting, and then the identifier participates in normal identifier lookup, rather than being a special rule | 18:55 | |
thankfully I don't know how to do that yet :) | |||
jnthn | pmurias: I guess pir::typeof__SP($obj) gives back SixModelObject. There's not a convenient way 'cus generally it's a smell. | ||
TimToady: Sounds like a cure worse than the disease | 18:56 | ||
moritz | nqp: say(pir::typeof__SP(class A { })); | ||
p6eval | nqp: OUTPUT«NQPMu» | ||
moritz | jnthn: nope | ||
jnthn | Oh. Because...we made that cheat. :/ | 18:57 | |
Grr. | |||
I dunno how you do it then. | |||
moritz | note to self: when implement a feature, either prepare a shiny distraction for TimToady, or switch off dalek :-) | ||
pmurias | using it as one and CATCH is one way | ||
jnthn | pmurias: Yes, I meant a better way than that. ;) | 18:58 | |
TimToady | macro qa { 'q:a' } might be perfectly adequate in this case, actually | ||
jnthn hopes masak++ looks forward to figuring out the circularity sawing needed to make macros work in the setting... | 18:59 | ||
masak | :) | ||
rindolf | OK, running make TEST_JOBS=4 took real 7m12.423s ; user 23m0.866s ; sys 1m39.183s - does not seem too good. | 19:00 | |
What is the wallclock time? | |||
masak | oh, so all of a sudden I'm the macros guy, huh? :P | ||
TimToady | not so sudden as all that :P | ||
jnthn | rindolf: What doesn't seem too good? | ||
rindolf | jnthn: the time it takes it to run. | ||
jnthn: it's a fast machine. | 19:01 | ||
masak | no, seriously. circularity sawing is fine. macros already straddle the compiler and the core. | ||
rindolf | A Core i3 one. | ||
TimToady | even our galaxy has a core... | ||
jnthn | rindolf: Then help make things faster. | ||
rindolf: That's the only way things get better. | |||
TimToady has memories of core memories... | 19:02 | ||
rindolf | jnthn: OK. | ||
jnthn: didn't you say that spectest ran at 2 minutes for you? | |||
jnthn | rindolf: I run it with --jobs=6 here and get through it in < 4 mins, fwiw. | ||
rindolf | Or was it three minutes? | ||
jnthn: what are you machine's specs? | |||
s/you/your/ | |||
jnthn | It was three. Then we started passing more tests ;) | ||
rindolf: It's an i7, quad core | 19:03 | ||
rindolf | jnthn: ah, hah. | ||
BTW, how can I get an account on feather? | |||
jnthn | I think moritz++ can give those these days... | 19:04 | |
dalek | pan style="color: #395be5">perl6-examples: 294bc61 | (Gerhard R)++ | euler/prob003-gerdr (2 files): [euler/prob003] simplify algorithm composite numbers won't divide the reduced $n as their factors have already been seen and divided out |
||
moritz | feather.perl6.nl/ should have a link to instructions | 19:05 | |
rindolf | moritz: it does not. | 19:06 | |
moritz | rindolf: try the "original announcement" link | ||
rindolf | moritz: www.mail-archive.com/perl6-language...20060.html - should I contact Juerd? | 19:08 | |
moritz: that announcement is very old. | |||
moritz: anyway, you can send me a temp password to [email@hidden.address] | 19:09 | ||
19:09
SamuraiJack joined
|
|||
moritz | rindolf: yes, email Juerd and put me CC | 19:09 | |
(include all the required information, as stated in the announcement) | |||
rindolf | moritz: should I email #####@juerd.nl ? | 19:11 | |
moritz: with the pound signs? | |||
dalek | kudo/Q: 606a81a | jnthn++ | src/Perl6/Grammar.pm: Assorted fixes to babble. |
19:19 | |
kudo/Q: fecccba | jnthn++ | src/Perl6/Grammar.pm: Add quote_mod proto and candidates. |
|||
kudo/Q: f3651e8 | jnthn++ | src/Perl6/Actions.pm: Action method for quibble. |
|||
kudo/Q: 069784b | jnthn++ | src/Perl6/Grammar.pm: Add some missing protos. |
|||
19:20
SamuraiJack_ joined
19:21
havenn left
19:24
SamuraiJack left
19:25
fgomez left,
domidumont left
|
|||
rindolf | moritz: ping. | 19:25 | |
19:27
fgomez joined
19:29
Pleiades` left
19:35
cognominal left,
Pleiades` joined
|
|||
tadzik | phenny: pass me a cookie | 19:39 | |
phenny | tadzik: 12:46Z <moritz> ask tadzik what he thinks of the panda/custom-lib branch, and if it's mergable before the star release | ||
tadzik | ohyes | ||
I'll look at it tomorrow, promise | |||
ETOOTIRED today | |||
so, what's cooking today, #perl6? :) | 19:41 | ||
19:43
cognominal joined
19:44
SamuraiJack_ left,
SamuraiJack_ joined
|
|||
dalek | kudo/Q: 1c4a880 | jnthn++ | src/Perl6/Actions.pm: Action method for new quote nibbler. Seems to essentially work. |
19:44 | |
kudo/Q: 768a57b | jnthn++ | src/Perl6/Grammar.pm: Corrections to nibbler grammar rule. |
|||
jnthn | tadzik: moritz++ has been cooking the setting. I'm cooking quotes. masak++ is cooking macros :) | ||
TimToady++ is cooking my brain :P | 19:45 | ||
tadzik | so, nibbler. Can has fancy Formatting Codes quoting now, I guess | ||
jnthn | tadzik: That, and heredocs, are the goal. | ||
tadzik | ossum | 19:46 | |
mst | heredocs ftw | ||
I especially like <<''; for confusing people | |||
gfldex | that's what perl is for after all | 19:47 | |
like god placed bones in the ground to confuse the paleontologists so we place perl scripts on our harddisk to confuse generations to come | 19:48 | ||
masak | std: my $a = q:to'';oh hai | 19:49 | |
p6eval | std edd7715: OUTPUT«ok 00:00 42m» | ||
masak | mst: possibility of confusion retained in Perl 6 ;) | 19:50 | |
std: my $a = q:to'EOT';oh hai | |||
p6eval | std edd7715: OUTPUT«===SORRY!===Unrecognized quote modifier: to'EOT at /tmp/j8tcr5qqJZ line 1:------> my $a = q⏏:to'EOT';(Possible runaway string from line 1)Couldn't find terminator ' at /tmp/j8tcr5qqJZ line 3 (EOF):------> <BOL>⏏[31… | ||
masak | std: my $a = q:to<EOT>;oh hai | 19:51 | |
p6eval | std edd7715: OUTPUT«===SORRY!===(Possible runaway string from line 2)Couldn't find delimiter for heredoc at /tmp/Ux0ppiTNga line 3 (EOF):------> <BOL>⏏<EOL>Parse failedFAILED 00:00 42m» | ||
jnthn | r: say '\a' | 19:52 | |
p6eval | rakudo 9d50d6: OUTPUT«\a» | 19:53 | |
masak | std: say "\a" | ||
p6eval | std edd7715: OUTPUT«ok 00:00 42m» | ||
masak | r: say "\a" | ||
p6eval | rakudo 9d50d6: OUTPUT«===SORRY!===Unrecognized backslash sequence: '\a' at line 2, near "\""» | ||
masak | what does STD think \a is in qq strings? | 19:54 | |
TimToady | n: say ord "\a" | 19:55 | |
p6eval | niecza v22-14-g136ddcf: OUTPUT«7» | ||
masak submits rakudobug | 19:56 | ||
19:56
cognominal left,
colomon left
|
|||
TimToady | p: say ord "\a" | 19:56 | |
p6eval | pugs: OUTPUT«7» | ||
masak | eval: ord "\a" | 19:57 | |
buubot_backup | masak: 7 | ||
masak | :) | ||
19:58
cognominal joined
|
|||
tadzik | flussence! flussence! | 19:59 | |
flussence | hai | 20:00 | |
tadzik | flussence, flussence | ||
your tests not worky | |||
flussence | :( | ||
they did last time I tried... | |||
tadzik | t/05-post-content.t ...... ===SORRY!=== | ||
Variable $postdata is not declared | |||
20:00
GlitchMr left
|
|||
flussence | oh, I'm dumb :) | 20:01 | |
20:02
nlpplz left
|
|||
flussence | ok, try now. I actually did things in the right order this time :) | 20:03 | |
tadzik | No such method 'decode' for invocant of type 'Any' | 20:04 | |
I may have to update my rakudo | |||
that'll take a minute :) | 20:05 | ||
20:05
jaffa4 left
|
|||
flussence | hm, that *should* be a Buf... | 20:06 | |
dalek | ast: faee08f | masak++ | S06-macros/unquoting.t: [S06-macros/unquoting.t] unfudged a TODO test Now passes in Rakudo. |
20:09 | |
20:09
MikeFair left,
jaldhar joined
|
|||
rindolf | phenny: tell moritz that's OK - I found juerd's E-mail address in a an old E-mail. | 20:11 | |
phenny | rindolf: I'll pass that on when moritz is around. | ||
20:14
colomon joined
20:16
benabik joined
20:20
birdwindupbird joined
|
|||
dalek | kudo/Q: ddbb67f | jnthn++ | src/Perl6/ (2 files): Switch basic Q quotes over to new quote handling. No spectest regressions, so either things basically work or it's just undertested. :) |
20:30 | |
kudo/Q: 048c742 | jnthn++ | src/Perl6/Grammar.pm: Factor quote language derivation out of babble. Some things want to just get the language and nibble. |
|||
kudo/Q: 972112f | jnthn++ | src/Perl6/Grammar.pm: Remove accidentally copied multi. |
|||
masak | r: multi d() { [] }; multi d($d) { [$d] }; multi d($d1, $d2, *@a) { ([10*$d1 + $d2, .list] for d(|@a)), ([$d1, .list] for d($d2, |@a)) }; say .map((* + 96).chr).join if all(@$_) <= 26 for d(1, 2, 3, 4) | 20:33 | |
p6eval | rakudo 9d50d6: OUTPUT«lcdawdabcd» | ||
masak | nicer solution to yesterday's little puzzle. | ||
r: multi d() { [] }; multi d($d) { [$d] }; multi d($d1, $d2, *@a) { (["$d1$d2", .list] for d(|@a)), ([$d1, .list] for d($d2, |@a)) }; say .map((* + 96).chr).join if all(@$_) <= 26 for d(1, 2, 3, 4) | 21:00 | ||
p6eval | rakudo 9d50d6: OUTPUT«lcdawdabcd» | 21:01 | |
dalek | kudo/Q: 93abcf3 | jnthn++ | src/Perl6/Actions.pm: Actions for some of the escapes. |
||
kudo/Q: bf526c2 | jnthn++ | src/Perl6/Grammar.pm: Pass on orig, not target, in nibbler. |
|||
kudo/Q: 467a479 | jnthn++ | src/Perl6/ (2 files): Switch single quoted strings to new quote parser. |
|||
21:02
SamuraiJack_ left
21:11
bapa left,
bapa joined
21:16
bapa left,
havenn joined
21:19
bapa joined,
bapa left
21:20
bapa joined
21:22
bapa left
21:24
bapa joined
21:36
benabik left
21:37
kaare_ left
|
|||
masak | 'night, #perl6 | 21:38 | |
dalek | p: 81cdc24 | jnthn++ | src/QRegex/Cursor.nqp: Add orig method to Cursor. |
21:41 | |
p: 84a13cb | jnthn++ | src/how/NQPParametricRoleHOW.pm: Fix thinko when roles did roles. Seems this path never got exercised in NQP before. |
|||
p: c077b22 | jnthn++ | src/HLL/Grammar.pm: Make LANG pass on orig, not target, plus args. This may get rid of some of the oddness we've seen with strings with null bytes showing up. Also means we can pass arguments on to a rule in another language. |
|||
21:42
fgomez left,
fgomez joined
|
|||
dalek | kudo/Q: 75d531b | jnthn++ | src/Perl6/ (2 files): Fill out action methods for remaining escapes. |
21:49 | |
kudo/Q: b276a81 | jnthn++ | src/Perl6/ (2 files): Switch double-quoted strings to new quote parser. |
|||
21:59
birdwindupbird left
22:01
MayDaniel left
22:02
PacoAir left
22:14
imarcusthis- left
22:16
imarcusthis joined,
benabik joined
22:19
tokuhiro_ joined
22:36
rindolf left
22:38
spider-mario left
22:41
rindolf joined,
rindolf left
|
|||
dalek | kudo/Q: 289f960 | jnthn++ | src/Perl6/Grammar.pm: Apply balanced/unbalanced after base tweak. |
22:41 | |
kudo/Q: f86d5a6 | jnthn++ | src/Perl6/Grammar.pm: Fix error reporting. |
|||
kudo/Q: 99f6013 | jnthn++ | src/Perl6/ (2 files): Switch q, qq and Q:PIR to new quote parser. |
|||
jnthn | Got many of the quoting constructs switched over to STD style approach now. No slowdown (thanks to caching the derived languages), and only one new test fail. And it looks like it's 'cus the test is wrong... | 22:43 | |
tadzik | not bad | 22:44 | |
flussence: I think the test is still rong :( | |||
22:45
tokuhiro_ left
22:46
havenn left
22:48
havenn joined
|
|||
jnthn | 'night, #perl6 | 22:50 | |
diakopter | o/ | ||
tadzik | good knight jnthn | ||
23:06
hash_table joined
|
|||
sorear | o/ | 23:07 | |
23:09
benabik left
|
|||
diakopter | sorear: how goes | 23:09 | |
23:09
benabik joined
|
|||
sorear | diakopter: ok | 23:16 | |
flussence | tadzik: I dunno, it looks right to me... am I missing something obvious? | 23:20 | |
or, *which* test's wrong for you? | 23:21 | ||
23:33
stocks joined
|
|||
[Coke] tries to bisect his nqp build segfault | 23:34 | ||
23:35
pmurias left
23:38
stocks left
23:43
pmurias joined
23:52
skids joined
23:55
stocks joined
|