»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
00:05 bjz left
AlexDaniel samcv: 2.9G here :) 00:06
00:07 bjz joined
rightfold Why does S:g sometimes return a slip instead of a string? 00:07
notviki samcv: replied and rejected.
rightfold: your rakudo is too old.
rightfold I have Rakudo 2016.11. To which version should I upgrade? 00:08
00:08 kurahaupo__ joined
notviki rightfold: are you using Rakudo Star? 00:08
rightfold no
notviki rightfold: then 2016.12 00:09
rightfold where can I find it?
notviki rightfold: where did you find 2016.11?
rightfold perl6.org/downloads/ 00:10
notviki rightfold: there are multiple instructions on that page. Which did you follow?
samcv i just made Send an email to rakudobug at perl.org. on the rakudo wiki in bold
rightfold The one that is no longer there, apparently.
samcv so people can easily find it by scanning the page
rightfold Maybe I did get Rakudo Star by accident. How do I check? 00:11
notviki unsure
samcv perl6 --version
idk what does it say
rightfold This is Rakudo version 2016.11 built on MoarVM version 2016.11 implementing Perl 6.c.
samcv 2016.11 is the newest on rakudo.org/how-to-get-rakudo/ 00:12
notviki There's no final 2016.12 R* release yet, just the beta: pl6anet.org/drop/rakudo-star-2016.1...eta.tar.gz 00:13
rightfold: or you can download just the compiler and build it: rakudo.org/downloads/rakudo/
rightfold I'll just work around the slip
notviki rightfold: or you can just use .subst(:g) instead of S:g/// and wait for next star
rightfold Thanks :) 00:15
00:16 CQ joined 00:17 BenGoldberg left 00:18 BenGoldberg joined
SmokeMachine m: use Test; pass Q[\] 00:27
camelia rakudo-moar a687d9: OUTPUT«ok 1 - \\␤»
SmokeMachine is the "\\" expected? 00:28
m: say Q[\] 00:29
camelia rakudo-moar a687d9: OUTPUT«\␤»
geekosaur looks like it 00:30
artifact of Test.pm
m: use Test; pass chr(92)
camelia rakudo-moar a687d9: OUTPUT«ok 1 - \\␤»
00:32 lukaramu left
notviki SmokeMachine: yes, there's an explicit code that backslashes the backslashes so that backslashes backslashing the # don't get backslashed if the message contains backslashes 00:33
also backslashes.
geekosaur managed to parse that somehow. and it even makes sense...
SmokeMachine notviki: so: I can't use only 1 backslash as test description? 00:34
notviki: I got a little confused... 00:35
geekosaur try this: the response needs to be parseable by TAP, so it needs to backslash stuff that TAP might interpret, so it needs to escape actual backslashes 00:36
notviki SmokeMachine: you can, but it'll be backslashed in the output. 00:37
SmokeMachine geekosaur: ok... now I got it!
00:38 CQ left
SmokeMachine will prove remove that extra backslash if it shows the test description? 00:38
in case of an error, for example...
00:38 shayan_ left
notviki Don't think so 00:39
SmokeMachine no, it didn't with -v...
:( 00:40
I was trying to say that the fund received a Capture... but it shows: ok 189 - test-func received \\(42) 00:41
:(
notviki SmokeMachine: well, it needs to backslashes prior to '#' char (ensuring the backslash backslashing # doesn't get backslashed accidentally). See if you can achieve that without backslashing all the backslashes: github.com/rakudo/rakudo/blob/nom/...#L617-L623 00:43
It's very very very preferable for that code to be very fast.
00:44 rindolf left 00:54 TimToady left 00:59 curt_ left
dugword Woo! First pull request merged! Thank you all very much for the help and guidance! 01:00
notviki dugword++ 01:01
keep 'em coming.
dugword I'm hooked now
01:02 realityeuphoria joined 01:03 newbie1 left, newbie1 joined
japhb
.oO( Hook, line, and sinker ... )
01:10
01:11 bwisti left
dugword Anyone using the default vim perl 6 syntax highlighting? It is unusably slow for me on files larger than a few hundred. Suggestions for a better one? 01:14
few hundred lines*
SmokeMachine notviki: if I understood it well, it's backslashing the #, not preventing it... am I wrong? 01:20
geekosaur # has a meaning to TAP, so if you use it in a description it needs to be escaped 01:22
SmokeMachine "#" Will become "\#" and "\#" Will become "\\\#". Is it it?
geekosaur yes
SmokeMachine If I don't backslash the backslash, so "\#" will become "\\#", and the backslash will be escaped... 01:24
I think I got the problem... 01:25
notviki SmokeMachine: and "\\#" => "\\\#"
wait
geekosaur actually \\# becomes \\\\#
er
actually \\# becomes \\\\\#
leaning toothpicks, ho! 01:26
notviki SmokeMachine: the big picture goal is to escape "#" using a backslash. The extra fuffing is to ensure that the backslash we add to escape the "#" doesn't get backslahed by any previous backslashes
SmokeMachine Is it possible to use regex? 01:27
notviki SmokeMachine: you can try, but my guess it'll be slow.
01:28 floutenvy joined
SmokeMachine Ok... 01:28
notviki SmokeMachine: and we want this very fast. This code is used literally by every test. Currenty Rakudo's stresstest has 130902 top-level tests (even more if you count stuff in subtest) and on my box it takes 507 wallclock secs to run.
SmokeMachine It's using nqp::* to be faster? 01:29
notviki Yes
SmokeMachine Probably I shouldn't mess with it...
notviki And core devs have to run the spectest on every change (that subset of tests is ~55K of tests and takes 3-5 minutes to run).
SmokeMachine: why not? :) 01:30
SmokeMachine I'm not the best one to make a change that can affect so many places... 01:31
notviki But it'll be reviewed
SmokeMachine But I'll think how would I do that...
01:33 Ven joined 01:35 claytonrowe left
SmokeMachine notviki: I jus want every # backslashed, right? 01:36
notviki pretty much 01:37
SmokeMachine # wrong; \# ok; \\# wrong; \\\# ok; right?
notviki right
01:37 Ven left
SmokeMachine Not a very good solution, but I could change the "#" for " \#" 01:38
With the space...
*to 01:40
notviki That could work.
01:42 newbie1 left
SmokeMachine m: say "\ " 01:42
camelia rakudo-moar 37941d: OUTPUT« ␤»
notviki well, for ' \#' to be more accurate
Double quotes would turn it back into plain '#' unless you escape the backslash
01:43 floutenvy left
SmokeMachine Right! 01:43
notviki: but it will change the message... is that ok?
notviki Though note that '\#' will end up as '\ \#' when it could stay unchanged; would people be similarly disappointed with that as you were with the scaped backslash? 01:45
SmokeMachine: if it passes roast tests, then it's fine.
01:48 aborazmeh joined, aborazmeh left, aborazmeh joined, wamba left
SmokeMachine notviki: but it will affect only messages with # (that is the real problem) not every message with \ 01:50
notviki yeah
SmokeMachine Probably it will be faster, it'll be only 1 pair of split/join 01:51
Not 2
01:52 floutenvy joined
SmokeMachine notviki: I'll try to write a pull request tomorrow (I'm out of my computer now (I'd love to have perl6 on iOS)) 01:52
notviki SmokeMachine: and put a comment above that code, saying that space is there to prevent previous backslashes from interfering. Otherwise, some future programmer might assume the space is accidental and remove it. 01:54
SmokeMachine notviki: ok! Thank you very much! 01:56
notviki: are there tests to test the print of tests? Tests that might be affected by the change? 01:58
01:58 shayan_ joined
notviki No(t yet) 01:59
For now the roast itself serves as a test for tests. 02:00
(which doesn't cover failure modes, which is why eventually we'd want proper tests for test routines)
mst a script to diff 'current t/ output' versus 'last commit t/ output' might be a neat first step
02:00 floutenvy left
SmokeMachine notviki: ok 02:01
mst: doesn't looks hard...
mst: wouldn't be a problem when testing random, pick, roll, etc? 02:02
mst, sorry! Of course not!
mst I've no idea, but you can make a stable mode for tests like that with a fixed seed usually
notviki diff probably won't help you much in this case, because you *are* changing the output. 02:03
SmokeMachine It will test the test output...
notviki: sure! But probably would help after the change...
mst notviki: the way I find it useful is to be able to see "this all passed, *and* other than my specific change, it passed the *way* I expected" 02:04
notviki: like, if you get a diff in a test file you didn't expect, you can go look and work out if there's a problem with that test or if that change makes sense
SmokeMachine But how could that be done? Run the tests again getting the output?
mst well on my projects where I use this I strive for stable test output 02:05
and commit the output
and juust overwrite those files and then git diff them
this is not a fully general answer
but it turns out, for me, for those projects, to be really handy
SmokeMachine Or write a file with the output while running the tests and test that file?
mst basically, what I'm talking about is, roughly 02:06
'git checkout HEAD~1; <run tests>; git checkout HEAD; <run tests>; <diff>;'
it's not clever, it's not complicared, it's not always useful, but sometimes it's well worth it
I have no opinion beyond that 02:07
I'm not saying it's necessarily worth it, just "I have done this on projects that are language-ish and it was helpful to me"
SmokeMachine mst: makes sense for me... 02:08
02:09 espadrine left
dalek c: 35b6eb9 | coke++ | doc/Language/ (2 files):
remove trailing whitespace
02:09
c: 86b1beb | coke++ | xt/words.pws:
allow non-american spelling
c: 97173d2 | coke++ | xt/code.pws:
new code snippet
02:13 BenGoldberg left, shayan_ left 02:15 BenGoldberg joined
rightfold Do slangs still require nqp calls? 02:17
To install them
02:19 shayan_ joined 02:27 BenGoldberg left 02:29 BenGoldberg joined 02:38 kalkin- left, kalkin-_ joined
notviki buggable: slang 02:38
buggable: eco slang
buggable notviki, Found 5 results: Slang::Tuxic, Slang::Piersing, v5, Slang::SQL, Slang::Roman. See modules.perl6.org/#q=slang
02:42 realityeuphoria left 02:45 labster left 02:46 ilbot3 left, labster joined 02:47 ilbot3 joined 02:51 bjz left 02:55 kyan joined
BenGoldberg m: my $f = proto multi(Int) { * }; { $f.add_dispatchee(multi sub fac (0) { 1 }); $f.add_dispatchee(multi sub fac ($n) { $n * $f($n-1) }) }; say $f(5) 03:02
camelia rakudo-moar 37941d: OUTPUT«120␤»
BenGoldberg m: my $f = proto multi(Int) { * }; { $f.add_dispatchee(multi sub (0) { 1 }); $f.add_dispatchee(multi sub ($n) { $n * $f($n-1) }) }; say $f(5)
camelia rakudo-moar 37941d: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤An anonymous routine may not take a multi declarator␤at <tmp>:1␤------> 3 { $f.add_dispatchee(multi sub (0) { 1 }7⏏5); $f.add_dispatchee(multi sub ($n) { $n␤ expecting any of:␤ horizo…»
BenGoldberg m: my $f = proto multi(Int) { * }; { $f.add_dispatchee(sub (0) { 1 }); $f.add_dispatchee(sub ($n) { $n * $f($n-1) }) }; say $f(5) 03:03
camelia rakudo-moar 37941d: OUTPUT«120␤»
BenGoldberg Whee! Anonymous multi sub. A bit wordy, but it works :) 03:04
03:05 dugword left 03:08 bjz joined 03:12 pyrimidine left 03:13 pyrimidine joined 03:14 noganex joined 03:17 noganex_ left 03:23 dugword joined
BenGoldberg is confused by this error message: 03:27
m: sub ack(*@stack) { my $n = @stack.pop; proto helper(Int) { * }; multi helper(3) { 2 ** ( $n + 3 ) - 3 }; multi helper(2) { 2 * $n + 3 }; multi helper($m where 0|1) { $n + $m + 1 }; multi helper($m is copy) { push @stack, (--$m) x $n; push @stack, reverse 3 .. --$m; 13 }; while @stack { $n = helper(pop @stack) }; $n }; say ack(3,4);
camelia rakudo-moar 37941d: OUTPUT«125␤»
03:27 dugword left, pyrimidi_ joined
BenGoldberg m: sub ack(*@stack) { my $n = @stack.pop; proto helper(Int) { * }; multi helper(3) { 2 ** ( $n + 3 ) - 3 }; multi helper(2) { 2 * $n + 3 }; multi helper($m where 0|1) { $n + $m + 1 }; multi helper($m is copy) { push @stack, (--$m) x $n; push @stack, reverse 3 .. --$m; 13 }; while @stack { $n = helper(pop @stack) }; $n }; say ack(4, 1); 03:27
camelia rakudo-moar 37941d: OUTPUT«Type check failed in binding to <anon>; expected Int but got Seq (().Seq)␤ in sub ack at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
03:27 mr-foobar left 03:29 pyrimidine left 03:47 aborazmeh left 03:49 lichtkind__ joined, diakopter joined 03:52 lichtkind_ left 03:57 shayan_ left 03:59 shayan_ joined 04:06 shayan_ left 04:07 shayan_ joined 04:11 pyrimidi_ left 04:12 pyrimidine joined 04:21 dugword joined 04:24 TimToady joined 04:33 aborazmeh joined, aborazmeh left, aborazmeh joined 04:50 xtreak joined 04:54 mr-foobar joined 04:57 pyrimidine left, aborazmeh left 04:58 pyrimidine joined 05:07 kurahaupo__ left 05:14 BenGoldberg left 05:40 bwisti joined 05:43 shayan_ left 05:55 Cabanossi left 05:57 Cabanossi joined 06:01 tojo joined 06:02 tojo left 06:03 tojo joined 06:05 tojo left 06:06 dugword left 06:08 tojo joined, khw left, tojo left, grondilu left 06:09 grondilu joined 06:12 tojo joined 06:13 tojo left 06:14 tojo joined, tojo left, skids left 06:25 tojo joined 06:28 CIAvash joined 06:32 tojo left
CIAvash .ask TimToady any thoughts on this: irclog.perlgeek.de/perl6/2016-12-22#i_13784143 06:34
yoleaux CIAvash: I'll pass your message to TimToady.
06:44 AlexDaniel left 06:45 labster left 06:46 labster joined 06:48 kyan left 06:50 rburkholder left 06:56 dugword joined
samcv wooooo. 100%%%% passing with my branch of MoarVM for unicode 9.0 06:58
will be a bit til that is merged though because makes too many changes and might break things 06:59
but the other one that is less drastic gets us down to only failing 7
and should be much easier for us to extend things for future unicode version being able to save state between parsing charcaters
i'm excited 07:00
Woodi hi #perl6 :) 07:01
samcv: I have serious problems with accepting Unicode in forms other then UTF8. maybe there are more ppls lik me... so some blog post or introduction or other form of mind educating would be helpfull... 07:04
samcv hi
which formats?
UTF-16? 07:05
Woodi samcv: all up to you, even that if you want to do such thing :)
samcv well what formats do you need 07:06
no I want to do it
i want everything unicode
all of the things
Woodi and UTF-16 is something I for reasons not known to me realy hate :)
samcv non-standard number of bytes to character
well. 'standard' from an 8bit per char world
Woodi probaby becouse it is a "change"...
samcv yeah. and it is sort of wasteful for small numbers and stuff 07:07
er like ascii gets larger
07:07 Wanderer68 joined
samcv Moar stores them as 32 bit ints though 07:07
TEttinger wooo samcv, 100% is great
samcv each grapheme seperately and they're negative if it's a synthetic grapheme
yeah i know
now it is crashing randomly tho :P
well not randomly. but. like 1/2 of the types you start it, it immediately crashes. other than that it works perfect 07:08
so that's probably not too bad since there must be some place it's getting mad at
idk
Woodi samcv: all that subject seems to be "embaded" somehow, eg. not straight way to move from vt100 to Unicode graphemes :)
samcv embaded? 07:09
embedded and a bad thing?
Woodi, if you have seen i'm also imlementing Unicode Collation Algorithm
Woodi you need some box like vm for that, far from "natural" machine representations :)
samcv so you can sort strings by alphabetic type order
my goal is that the user shouldn't even care about the encoding 07:10
so if we switched from unicode to like. some format different 100 years from now
things would still appear the same
well at least from the sorting standpoint for sorting strings
also Woodi what formats 07:14
did you want
Woodi define "formats" pls :) 07:17
samcv encodings
unicode encoding
formats.
Woodi I like A4, more then 80x25... ah
samcv encodings of the unicode format :) 07:18
Woodi I like utf-8
samcv but we already have that!
also anybody here good with gdb
i'm trying to debug the random crashes. i run perl6-gdb-m, type run
Unhandled exception: should eventually be unreachable
Woodi samcv: for what formats are used ? storing in file ?
samcv type 'backtrace'
> no stack 07:19
how can i backtrace when no stack
ahh
do i need to set breakpoints or something
still have no clue where it's screwing up
Woodi maybe compile with debugging symbols ?
samcv should still have a stack. if no debugging symbols should just print out random junk 07:20
Woodi call stack, memory stack ? 07:21
samcv it says no stack. so. idk!
the program has terminated though so i assume it just can't find it 07:22
cause it's closed already
geekosaur or it's dying in ld.so 07:27
(which typically ends with it SIGKILL-ing itself)
samcv not sure why it would die there though
but anything's possible
geekosaur (and which can't be intercepted, so no chance for the debugger to intervene)
samcv ack 07:28
and it doesn't crash every time so i don't know how to proceed
TEttinger samcv: maybe an issue with your computer, rather than Perl6? 07:29
samcv uhm it works fine if i revert to before my changes
TEttinger hm nvm
07:30 darutoko joined
samcv github.com/samcv/MoarVM/compare/mo...0?expand=1 these are the changes since it broke 07:31
07:35 bjz left 07:38 holli left, mr-foobar left 07:41 bjz joined
samcv ok actually it broke from just this commit github.com/samcv/MoarVM/commit/86c...0667d05738 07:42
i feel really lucky that i can at least track it to some smaller change, cause the commit before it was tons of changes
07:42 RabidGravy joined
samcv should_break is only called in that file FYI 07:43
maybe should_break isn't returning a MVMint32? 07:45
could the type be causing that? i wasn't having problems with changes before
since i basically did similarish changes so i can retain state across a different section of it 07:46
i mean it says static MVMint32 should_break, so i'd think it would return all things as MVMint32 or cast or whatever if it's not, though i've never had any problems in C before 07:47
07:51 pierre_ joined, pierre_ left, pierre_ joined 07:53 nine joined 07:54 camelia left, chienjo joined 07:55 camelia joined 07:56 ChanServ sets mode: +v camelia 07:57 shayan_ joined 07:58 CQ joined 07:59 chienjo left, chienjo joined, chienjo is now known as hchienjo
CQ hello, is there something like cpanm-reporter for perl6? I can offer to build modules under a freenas jail (freebsd 10) 07:59
08:02 thayne joined 08:03 bwisti left
RabidGravy well, there is testers.perl6.org/ 08:09
I'm not sure if there is any other client for it than panda, but I haven't checked recently 08:11
but it's just a POST of some JSON to testers.perl6.org/report 08:13
CQ github.com/perl6/cpandatesters.perl6.org ... not touched in a while...
08:14 Tonik joined
RabidGravy yes that's the same code 08:14
seems to work fine 08:16
08:16 dugword left 08:18 nine left 08:19 pyrimidine left, camelia left 08:20 nine joined, pyrimidine joined, camelia joined 08:22 ChanServ sets mode: +v camelia 08:23 petrutrimbitas joined 08:27 pyrimidi_ joined, pyrimidine left 08:29 tokomer joined 08:31 petrutrimbitas left 08:34 thayne left 08:37 thayne joined 08:38 hchienjo left 08:40 wamba joined 08:43 abraxxa joined 08:46 xtreak left 08:49 bjz_ joined 08:50 bjz left 08:51 xtreak joined
dalek c: 8a2f868 | (Nic Q)++ | doc/Type/ (2 files):
Add header to 'is default'
08:58
c: dbcefef | (Nic Q)++ | doc/Type/Sub.pod6:
Made the 'is default' a sub-heading in the Sub type
synopsebot6 Link: doc.perl6.org/type/Sub
c: 1d48c87 | Altai-man++ | doc/Type/ (2 files):
Merge pull request #1100 from nicqrocks/master

Edit headers to 'is default' sections
09:03 jonas1 joined 09:06 shayan_ left
masak morning, #perl6 09:09
gfldex: I'm available to discuss macros if you like
I find it difficult to summarize the situation in small non-scary words, but I also remain hopeful that macros do have a place in the design of Perl 6 09:10
it won't be easy to sneak them in, but it will be worth it
think of it as an API for the program structure
09:18 petrutrimbitas joined 09:25 romrador joined
arnsholt masak: I'm not gfldex, but since you mentioned the topic: What's your current vision of macros for Perl 6? 09:26
I haven't been able to follow 007, unfortunately
09:28 petrutrimbitas left
gfldex is this a bug? www.reddit.com/r/perl6/comments/5l...v/dbwdem2/ 09:30
09:31 kaare_ left
jast so... what's the situation in not-so-small, not-so-non-scary words? ;) 09:31
09:31 mst joined
arnsholt gfldex: The issue might be something to do with lexical scoping of things, since the new multi candidate isn't in the lexical scope of the array eqv definition 09:33
ISTR reading something about a way to lift an operator to the caller's scope in one of the synopses, but not sure what the current state of that is
gfldex arnsholt: I believe to remeber that TimToady had the same opinion until I convinced him otherwise. 09:34
masak arnsholt: can you read this? github.com/masak/007/issues/176#is...-240849038 09:37
(if not, I'll be happy to walk you through it)
it's about parsing something like `[+]` or `[||]` in 007
09:37 domidumont joined
arnsholt masak: Meeting now, but I'll read it later! 09:38
masak cool
I want to reply concretely to your question about my current vision; that definition of `term:reduce` is part of my vision :)
gfldex arnsholt: see (for operator overloading discussion) irclog.perlgeek.de/perl6/2010-08-11#i_2691533
masak the fact that it contains a closure both in macro-space and runtime-space pleases me immensely. that feels like *using* macros, for reals 09:39
samcv also guys. so is UTF-16 NYI or what is the status of that
gfldex i'm inclined to give myself a bonus point for remembering stuff from 6 years ago :->
samcv because i have never had to use it 09:40
masak well, not a closure in runtime-space. just a slurpy parameter.
but still.
samcv m: say "string".encode("utf-8").elems 09:41
camelia rakudo-moar 37941d: OUTPUT«6␤»
samcv m: say "string".encode("utf-16").elems
camelia rakudo-moar 37941d: OUTPUT«6␤»
samcv m: say "string".encode("utf-32").elems
camelia rakudo-moar 37941d: OUTPUT«Unknown string encoding: 'utf32'␤ in block <unit> at <tmp> line 1␤␤»
samcv m: say "string".encode("utf-32LE").elems
camelia rakudo-moar 37941d: OUTPUT«Unknown string encoding: 'utf-32le'␤ in block <unit> at <tmp> line 1␤␤»
samcv m: say "🐧".encode("utf-16").elems
camelia rakudo-moar 37941d: OUTPUT«2␤»
samcv m: say "🐧".encode("utf-8").elems
camelia rakudo-moar 37941d: OUTPUT«4␤»
samcv so i guess we have it implemented right
09:41 domidumont left
RabidGravy gfldex, that's winning, I can't remember stuff from a week and a half ago 09:42
09:42 domidumont joined
gfldex RabidGravy: don't worry, that just alsheimers 09:43
RabidGravy that's fine then ;-) 09:46
09:52 pyrimidi_ left 09:53 pyrimidine joined
samcv m: say "\x[6F]\x[34F]\x[323]".chars 09:55
camelia rakudo-moar 37941d: OUTPUT«1␤»
samcv hmm looks like i broke multiple extending marks somehow
m: "\x[6F]\x[34F]\x[323]".uniprops("GCB").say 09:57
camelia rakudo-moar 37941d: OUTPUT«(Other Extend Extend)␤»
09:58 TEttinger left 10:06 grondilu_ joined 10:08 CQ left, grondilu left 10:17 bjz joined 10:18 xtreak left, bjz_ left 10:20 xtreak joined 10:25 jonas1 left 10:26 jonas1 joined 10:27 pyrimidine left, pyrimidine joined 10:33 rindolf joined 10:34 dogbert2 left 10:35 dogbert17 joined 10:41 kalkin-_ is now known as kalkin- 10:44 avalenn joined
masak toolforger: found it! it's called "Zermelo's construction" by Wikipedia: en.wikipedia.org/wiki/Natural_numb...structions 10:46
I would say Zermelo's construction is simpler than von Neumann's, but it also misses some nice properties that the latter has 10:47
(notably, in von Neumann's construction, less-than comparison comes down to set membership) 10:48
10:51 ralisch joined, brrt joined, labster left 11:01 petrutrimbitas joined 11:08 wamba left 11:11 zakharyas joined
arnsholt masak: I *think* I can read it. Basically, a term:reduce is a term that looks like /\[ <infix> \]/ and expands to "(sub macro_reduce_or_whatever(*values) { values.reduce($op.identifier) })" 11:12
I'm not *quite* sure how the values after the term get turned into arguments to a call, except I guess maybe "(sub ($arg) { $arg + 1 }) 1" does that already?
And having a closure both in macro- and code-space is very neat! 11:13
I also like how it falls out entirely naturally of the macro definition that the reduce op uses op multis from the lexical scope where it's used 11:14
DrForr El_Che: Around finally. 11:16
arnsholt masak: Anyways, does this mean that macros will mean hooking into well-defined bits of the parser (like term and expr, and maybe atoms)? 11:22
masak arnsholt: basically `[+]` parses to a function (created at macro-time) that reduces with infix:<+> on its arguments 11:25
DrForr Oo, polishing up my code *just* in time to have the grammar internals rewritten :)
masak arnsholt: yes, full agreement about "falls out entirely naturally" -- it feels like the first "reward" for insisting on having Perl 6's scoping rules even inside macros/quasis 11:26
11:27 toolforger joined
masak arnsholt: basically, the macro comes down to using slurpy params and array reduce to define the reduce metaop. 11:27
toolforger: hiya. backlog for you, sir: irclog.perlgeek.de/perl6/2017-01-02#i_13835698 11:28
toolforger thx
masak (or madam. or bot.)
toolforger ask my significant other :-)
11:28 hankache joined
masak arnsholt: as you can see from that issue, my early attempts included parsing also the argument list. but I gradually realized that it's better to leave that to the underlying language. 11:29
arnsholt: also, having the macro create an anonymous function that DTRT at runtime feels *very* Lispy and right in some way 11:30
basically "aaah, yes. this is how I want to write macros." and then we just make sure to have a supporting toolset around that.
11:31 pierre_ left
masak TimToady seems not to believe so much in `is parsed` anymore. I've lately come to like it more. it has limits, yes, similar to how one shouldn't use small regexes for big-enough parsing problems. but for making individual additions to a language, they're very nice. 11:31
philosophical question remain regarding `is parsed`, and I'd be happy to discuss them here. but for now, they seem like the way forward and the natural next step for 007 11:32
11:33 jonas1 left 11:34 Actualeyes left 11:36 zakharyas left, lukaramu joined 11:37 Actualeyes joined
toolforger BTW what's the status of auth: ? 11:38
is there a consensus?
arnsholt masak: `is parsed` seems sensible enough to me 11:43
RabidGravy I'm not quite sure I understand the question, "auth" is a thing, it's part of the long name of a module 11:44
arnsholt It feels like it's basically equivalent to an addition to the grammar of "token $macro-name { $is-parsed-bit }" with a corresponding action method that does whatever the macro code does
toolforger RabidGravy: there were some discussions about it lately, but I missed the conclusion, if any, and probably context as well 11:45
arnsholt The argument to is parsed is a regex, sure, but it's no different from a token/rule/regex except in notation
11:47 xtreak left
arnsholt masak: But in the concrete example of your reduce metaop above, I guess it has the drawback of having to be used like `[+](1, 2, 3)`? 11:47
Given that "(sub { $^a + 1 }) 1` is TTIAR 11:48
toolforger What does TTIAR mean? 11:50
arnsholt Two terms in a row
toolforger ah ok thx 11:51
arnsholt masak++ has a blog post (about macros, appropriately) which describes it in some detail: strangelyconsistent.org/blog/macros...s-in-a-row 11:52
11:55 Actualeyes left 11:56 pmurias joined
DrForr Looks like I've got a new post to read :) 12:00
toolforger read it, understood about 75% (as I expected) 12:01
ralisch masak++
toolforger at least I now understand what the fuss is about :-)
RabidGravy "Looks like you failed 18 tests of 18" 12:04
top job
12:05 xtreak joined
masak arnsholt: yes. 007 is "a simpler Perl 6" in many ways. one of those ways is that it eschews listops. 12:06
arnsholt: for a while I had an error message in the parser that caught listops, because I kept typing `say x;` in my 007 programs :)
arnsholt =D 12:07
masak but the parser error was problematic, and I had to remove it for reasons I don't remember
m: say [+](1, 2, 3)
camelia rakudo-moar 37941d: OUTPUT«6␤»
masak anyway, the `[+](1, 2, 3)` syntax works in Perl 6 as well as in (coming soon to a computer near you) 007 12:08
arnsholt Hmm. I guess in full Perl 6 making it prefix:reduce might let you use the paren-less syntax as well? 12:09
Assuming operator macros are on the table 12:10
masak ah; yes. here's what the listop error ended up tripping on: github.com/masak/007/issues/76
arnsholt: operator macros already work in 007.
ralisch When are we getting an "Inline::007"?
masak arnsholt: as I've been known to say more than once, implementing macros in 007 was way easier than implementing operators :)
ralisch: that should be entirely doable. they could even share a runloop. 12:11
ralisch: contributions welcome! :D
arnsholt masak: Hee hee! 12:12
masak arnsholt: hm. looking at #76 with fresh eyes makes me think that the fault wasn't really with the parse error.
arnsholt I like the EXPR rule I see in the commit linked from that issue, BTW
masak yeah. 12:13
arnsholt token EXPR { <term> +% <infix> } # SO much easier that operator precedence =D
*than
ralisch masak: did you improve the "{{{ }}}" construct yet?
masak arnsholt: 007 still has operator precedence.
arnsholt: it's <termish>, not <term> -- the former includes pre- and postfixes
arnsholt: 007 has a slight simplification compared to Perl 6, where prepostfixes are always tighter than infixes 12:14
arnsholt Right. And then you do the infix precedence stuff in the EXPR action instead?
masak makes us get away with that simpler parsing rule
yeah, kinda
arnsholt Cool
masak there's one batch of precedence handling in the termish action (the prepostfixes), and one in EXPR (the infixes)
arnsholt Makes sense 12:15
masak the one takeaway from implementing operator precedence from scratch on my own terms is this:
arnsholt "Don't"? =)
masak associativity should hang off the precedence level hook, not the operator hook
Perl 6 messes that one up slightly, unfortunately
I'm definitely not saying don't :) 12:16
arnsholt (Incidentally, I'm doing something similar; trying to write up how to implement an EXPR for Perl 6 as a tutorial-y blog post)
masak sure, there are various "fun" ways to abuse precedence and associativity and make your program an unreadable mess
but Perl is all about those double-edged features. with great power *mumble* responsibility *mumble*, etc
there are so many nice things that precedence/associativity enables that count towards readability -- on balance, it's worth it, IMO 12:17
arnsholt method EXPR in HLL/Grammar.nqp seems to be something of a dark corner of the internals, so I thought I'd try to write something moderately elightening about the topic
masak arnsholt: neat! go for it! let me know if you want something proofed
arnsholt Will do!
RabidGravy someone be a love and make an SQL parser, changing these tests every time I change the way the density of parentheses is beginning to become annoying
arnsholt I was hoping to get it done for the advent calendar, but you know, babies and stuff =) 12:18
DrForr I intend to take care of that once the low-hanging fruit for Perl6:Parser is plucked. 12:21
masak arnsholt: babies? since when? congratulations!
12:21 Actualeyes joined
DrForr Oh, indeed. Yes, I've heard they take up valuable coding time :) Congrats! 12:22
arnsholt Thanks! =)
He was born in mid-June, so getting more used to now, but I've gotten a new relationship to the whole "copious spare time" thing =D 12:23
12:23 grondilu_ left 12:27 grondilu joined, xtreak left
ralisch Lisp is so fucking ugly. 12:27
12:28 petrutrimbitas left 12:29 wamba joined 12:30 rburkholder joined 12:31 pierre_ joined
pmurias ralisch: how is that Perl 6 relevant? ;) 12:32
rightfold (say (infix:<+> 1, 2)) 12:33
ralisch People were talking about sytatic macros, which masak is stealing from lisp. So I went to have a look.
rightfold Lisp is no more
Name the specific lisp
RabidGravy all programming languages are ugly, it's just some are uglier than others 12:34
ralisch Lisp Machine Lisp
RabidGravy RPG/III now that's a *really* ugly language 12:35
masak arnsholt: re "copious spare time" -- 2yo at home. it gets (slightly) better.
12:35 pierre_ left
CIAvash rightfold: Just in case you missed it: irclog.perlgeek.de/perl6/2017-01-01#i_13831144 12:36
masak ralisch: it's a bit of a "pick your poison" thing, though. either you choose the raw simplicity of Lisp syntax (which some have called ugly, yes) or your AST formats takes on some irreducible complexity.
format*
rightfold CIAvash: nice thanks 12:37
DrForr I didn't think there was a single LispM left alive, at least one that could be hooked up to the interwebs.
12:38 hankache left
DrForr Not discounting your story, just genuine surprise that there's a machine out there and available. 12:38
masak RabidGravy: re "all programming languages are ugly, it's just some are uglier than others" -- I think that's too defeatist. there are *some* aspects of *some* languages that I consider genuinely beautiful. but that kind of beauty often transcends syntax and goes into semantics. anyway, that's what I want to encourage/signal-boost, in any language I'm using.
ralisch "AST formats takes on some irreducible complexity" -> Doesn't more clues help the compiler, though?
masak I'd say extra complexity such as op precedence is for humans, not for the computer 12:39
the computer parses Lisp or Perl 6 with the same ease
but Perl 6 might be nicer to read (in some ways) (sometimes) (according to some)
:P
ralisch Anyone that actually likes lisp has the same problem from people that think programming languages should actually have broken math: their brains are already fried. 12:41
masak ralisch: I don't think such exclusionist rhetoric is necessary 12:42
I've learned a lot from studying Lisp
ralisch sorry, it was meant as a joke
masak aha -- that was not apparent to me ;) 12:43
stmuk timotimo: ping
lucs m: say 42.WHAT # Okay.
camelia rakudo-moar 37941d: OUTPUT«(Int)␤»
RabidGravy # Looks like you failed 2 tests of 18
lucs m: say "moo " ~ 42.WHAT # ?
camelia rakudo-moar 37941d: OUTPUT«Use of uninitialized value of type Int in string context.␤Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.␤ in block <unit> at <tmp> line 1␤moo ␤»
RabidGravy there that's better
psch m: say Int; say "moo " ~ Int 12:44
camelia rakudo-moar 37941d: OUTPUT«(Int)␤Use of uninitialized value of type Int in string context.␤Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.␤ in block <unit> at <tmp> line 1␤moo ␤»
psch m: say Int; say "moo " ~ Int.gist
camelia rakudo-moar 37941d: OUTPUT«(Int)␤moo (Int)␤»
psch lucs: what exactly is the question? :)
12:45 wamba left, bjz left
lucs Why does say "moo " ~ 42.WHAT fail? 12:45
psch lucs: it doesn't, it warns and stringifies to ""
pmurias masak: isn't a Lisp much easier to parse for a computer than Perl6?
psch lucs: &say calls .gist on its arguments. &infix:<~> calls .Str
(or .Stringy maybe i think)
rightfold It is easier to write a lisp parser than to write a Perl 6 parser
masak pmurias: maybe in the sense that Perl 6 makes the fan whir more. not in the sense I meant, of the computer going "man, this is *hard*" 12:46
rightfold However a machine just does what it's told, and has no notion of difficulty
lucs psch: Ah, I see, thanks.
psch m: print 42.WHAT
camelia rakudo-moar 37941d: OUTPUT«Use of uninitialized value of type Int in string context.␤Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.␤ in block <unit> at <tmp> line 1␤»
pmurias masak: parsing Perl 6 is undecidable
rightfold No it's not
masak pmurias: I don't like that description.
arnsholt Lisp isn't necessarily very easy to parse, at least not in the "easy to implement" sense
rightfold It's undecidable if you assume you can't execute arbitrary Perl 6 code during parsing 12:47
masak what rightfold said.
rightfold But you can so the assumption is moot
masak "only Perl 6 can parse Perl 6"
arnsholt Macros require you to have the whole language working at compile-time, so it's pretty tricky
masak if you try to parse Perl 6 *without* Perl 6, you are in a state of sin ;)
arnsholt And Common Lisp has symbol macros, so even *lexing* uses the whole language runtime 12:48
rightfold Well tbh
There are some Perl 6 programs that can't be parsed
Those that throw or loop indefinitely during parse time
DrForr Those sound like bugs we need to work with :)
masak not sure I'd count that as "can't be parsed"
I mean, not worse than any syntax error, anyway 12:49
arnsholt Can't be parsed *in finite time*
masak if the code you run at parse time sinks your program, how are you in any way more excused from the consequences than if the code you run at runtime does?
arnsholt Exactly
masak "doctor, it hurts when I set my compiler on fire!" 12:50
arnsholt The "parsing Perl is undecidable" meme is kind of annoying, because every other language that lets you execute code compile-time has the same problem
rightfold At parse time
arnsholt Python *can* be parsed statically, but only because it shunts lots of stuff you'd think is compile time off to run time 12:51
masak hm, I guess 007 has that problem too, then
it has BEGIN blocks
arnsholt And macros =)
masak oh right
arnsholt macro yes { loop { say "y" } } # =) 12:52
masak I just tried that in 007 :) 12:53
gist.github.com/masak/340bc4bfdfc2...ee66e36fcf 12:54
:P
pmurias arnsholt: "parsing $lang is undecidable" meme is annoying because it seems to imply that the language is not "readable" which is not true, but that doesn't change the fact that sacrifice a valuable property by allowing code execution at compile time 12:55
s/compile time/parse time/
masak yes, exactly
still, it *is* a tradeoff
toolforger indeed 12:56
masak one I can imagine making differently depending on context
toolforger It limits what tools can do
DrForr My main issue with that is static code analysis becomes in a sense impossible, because in order to analyze the text you have to run at least certain portions.
masak Java: boring, but much more analyzable
toolforger say, "please find me all references to function Foo::Bar"
masak Perl 6: exciting, but tools can do less
toolforger Heh. We're in violent agreement.
masak tending towards the ultra-violent, even 12:57
jnthn "Tools can do less" - I'd say "generic tools can do less", but as I argued in the "beyond static vs. dynamic" talk, when the compiler is opened up for programs to participate in their own compilation, you can enrich compile time to be useful in domain-specific ways.
yoleaux 1 Jan 2017 01:55Z <samcv> jnthn: new PR github.com/MoarVM/MoarVM/pull/477 want your input on the return values and if they seem sane
1 Jan 2017 01:57Z <samcv> jnthn: when you get around to it, need some help properly iterating over the codepoints (NFC codepoints) in unicmp_s
1 Jan 2017 07:50Z <samcv> jnthn: why is the very important MVM_unicode_normalizer_process_codepoint in normalize.h and not in normalize.c? confused
DrForr I'm over on the oter side of te spectrum, nearing infra-dead :)
masak jnthn: yes. good point.
samcv why isn't there just one yoleaux
masak jnthn: that is a very powerful point that I'm dimly aware of but haven't fully internalized yet ;) 12:58
arnsholt *groan*
masak samcv: are you confusing "three yoleaux" with "three messages from yoleaux", perchance?
jnthn samcv: On the latter question - I think 'cus it's MVM_STATIC_INLINE
pmurias masak: re making the fan spin harder, that's also a very serious tradeoff
psch masak: well, we do have yoleaux2 in #perl6-dev
samcv oh i see jnthn 12:59
arnsholt masak and jnthn: the punster pair of #perl6 =D
masak pmurias: I don't write programs for the fan in my computer ;)
arnsholt: what -- what have we done? :)
oh, the "ultra-violent" bit
that's from H2G2, btw 13:00
jnthn is amused that H2G2 offers no compression over HHGG :P
DrForr So was mine :) though the damn keyboard keeps screwing me over.
pmurias masak: there is a whole possible world of awesome live programming stuff that sort of depends on your programs being parsable efficently
masak jnthn: depends how thin your 2s are :P 13:01
pmurias: hey, I'm not knocking efficient parsing, don't get me wrong
ralisch About tools: Is exporting the AST enough? 13:02
masak pmurias: just saying I like much of the expressive power some of the higher-abstraction languages give me
pmurias: but yeah, it's far from black-and-white, granted
pmurias: some days I really like the algebraic manipulations Haskell affords me, where refactoring feels like rewriting math formulas
ralisch: the question is interesting but a bit vaguely stated 13:03
ralisch In the emacs-GCC sense, where Stallman wanted to stop GCC from dumping it's internal state so that emacs could understand the code. 13:04
pmurias masak: Sean Mcdirmid is an interesting researcher to follow for such things
masak pmurias: also, an argument could be made that if the problem is that your fan spins too hard too often, it's possible you need a hardware upgrade
"throw more hardware at the problem" is not just a flippant non-solution; sometimes it makes a difference, especially for developer efficiency
DrForr ralisch: For tools like tidiers, I'd say so, but more complex transformations really need richer annotations 13:05
masak pmurias: will look him up; thanks
ralisch masak: or to clean up the dust
RabidGravy the fan on this laptop is continuously spinning
masak .oO( I'm not a big fan of spinning continuously )
RabidGravy I think I need to disassemble it and give it a good cleaning
ralisch 's $DAYJOB is desktop support 13:06
The company call's them "distributed systems". 13:07
jast "them"? the users? :)
13:07 petrutrimbitas joined
ralisch the desktops 13:07
jast are they web scale? 13:08
masak the apostrophes
ralisch sorry for my bad grammar's
masak at least it's not bad Grammer
images-na.ssl-images-amazon.com/im...17_AL_.jpg 13:09
ralisch I saw it as soon as I hit enter
jast that's the best moment to notice these things, speaking from personal experience
masak IRC has this nice message undo mechanism wherein you stare at the screen, weeping in frustration
doesn't fix the typo, but feels kinda good afterwards 13:10
ralisch And here it gets archived forever.
13:10 xiaomiao left
masak waves to future historians 13:10
heelllloooooo! you can't answer baaaaaaack! 13:11
ralisch historian's
jast I have it on good authority that the channel logfiles are laser-etched into huge marble slabs in hard realtime
masak well, they can answer back, but I can't hear them
they can only leave messages for even later future historians
and so on, and so forth
arnsholt masak: At least the weeping is cathartic =)
ralisch You can't hear them yet.
jast one-way messaging... so basically like twitter and facebook? 13:12
masak jast: more like message-in-a-bottle
pmurias m: sub foo(Str $arg) {say VAR($arg).^name};sub bar($arg) {say VAR($arg).^name};foo('str');bar('str')
camelia rakudo-moar 37941d: OUTPUT«Str␤Scalar␤»
ralisch TIMTOADY probably can tell you about historians answering back after a few years. You're still young. 13:13
masak jast: with a strong current
jast currents have been known to reverse direction
RabidGravy wee! those tests passing now
pmurias jnthn: ^^ how does a type constraint cause decontainerization?
m: sub foo(Str $arg) {say VAR($arg).^name};sub bar($arg) {say VAR($arg).^name};foo('str');bar('str')
camelia rakudo-moar 37941d: OUTPUT«Str␤Scalar␤»
masak jast: as far as we know, this happens all the time with the flow of time :P
s/as far as we know/for all we know/ 13:14
SmokeMachine Is there a documentation for the "is parsed" trait?
13:14 xiaomiao joined
ralisch SmokeMachine: strangelyconsistent.org/ 13:15
masak SmokeMachine: only some very handwavy spec.
SmokeMachine: but I'm here if you want to talk.
SmokeMachine Thanks! 13:16
masak SmokeMachine: if you want to start somewhere, maybe do strangelyconsistent.org/blog/macros...long-break and then subsequent posts
man, that post is wrotten more than two years ago!
SmokeMachine Reading! Thanks! 13:17
masak fun fact: 007 and Noa were born in the same month.
(December 2014)
arnsholt: I recently taught Noa a song that goes like this: "八八八, 八八八八, 八八八八八. 十六!" -- it warms his coder pappa's heart to hear him sing it :> 13:22
jnthn pmurias: It's an optimization, in fact. When we don't have a type constraint there we assume that we should wrap any incoming argument up in a readonly Scalar container just in case it is Iterable. 13:26
pmurias: But when the constraint is a non-Iterable type and not one of Any/Cool/Mu then we assume that can never happen and don't waste time wrapping it. 13:27
pmurias: The wrapping is needed to make sure $foo will never flatten in flattening context.
arnsholt masak: That's more Chinese than I grok, unfortunately =)
masak arnsholt: "eight, eight, eight ... sixteen!" 13:28
arnsholt \o/
(If they're all eight, why the varying ny 13:29
masak just the rhythm of the melody
arnsholt Aha
masak actually, the song can be sung with any N and 2*N. I made it up to get Noa used to the concept of doubling.
but the 8-16 version made me especially happy
arnsholt Obviously! =D
13:29 petrutrimbitas left
arnsholt (Speaking of, the missus has some trouble seeing the innate roundness of numbers like 16 and 32 =) 13:30
masak she might not see binary when she closes her eyes, then 13:31
I've known people like that
ralisch My coder dad knows COBOl, C and Java. Yesterday morning he was on about how every programming language is just the same. He doesn't even know C++. I sang a little P6 for him and he kept trying to understand functional programming all morning. 13:32
13:32 pierre_ joined
masak "every programming language is just the same" -- I've come to believe this both *more* and *less* in the past year or two 13:33
it's like there are senses in which it's true, and senses in which it's false (or irrelevant)
jast of course
ralisch Yes, the way he means it is false.
jast the end result can always be the same, but the style and the ways in which you can express yourself... that's not at all irrelevant 13:34
masak ralisch: you should show him INTERCAL, Brainfuck, and Befunge :P
ralisch Like I said, just a fragment of P6 was enough to send him spinning.
moritz try writing a CRUD web application with COBOL, for once :-)
masak moritz: www.coboloncogs.org/INDEX.HTM :P 13:35
13:35 cibs left
jast still, you can adapt to a different style and you're back doing essentially the same things as in any other languages, only a little differently 13:35
arnsholt Also, fortran.io/
moritz masak: :) 13:36
jast (I re-assigned $DAYJOB recently and started using Python. It's both less and more frustrating than I thought it would be.)
13:36 cibs joined
ralisch Moritz: modern COBOl is even object-oriented, and he's used to calling BAL subprograms. 13:36
masak Python is a cute little language with clear beginner benefits
moritz arnsholt: I believe modern fortran isn't too bad; it's just that soo much code is still stuck with F77
13:36 pierre_ left
moritz jast: that's been my experience as well 13:37
ralisch Theyre taking first-order functions out of the language.
jast you can do some pretty trippy stuff in Python, too. all the same, I think some of it is vexingly inconsistent, and I appreciate TIMTOWTDI quite a bit, too
ralisch Can't have two ways to write something.
13:38 Ven joined
moritz jast: one of my constant frustrations with python is how modules are located. Writing a script foo.py in the current directory means that an 'import foo' now takes that one, and that can be a real pain to debug when you're not aware that that's happening 13:38
jast also I'm not a huge fan of the way the official documentation is structured
moritz and after about two years of using, I'm still not warming up to the idea of not declaring variables, or by having everything in a module public by default 13:39
jast with Perl 6 the structure Just Makes Sense(tm). with Python I often have to resort to Google to find the right part of the official docs...
moritz \o/ somebody likes the p6 docs! 13:40
jast one thing I found interesting is that 'import foo' and 'from foo import bar' have entirely different runtime behaviour
with the former you can't run into recursion, with the latter you get an utterly vague import failure if there is recursion 13:41
masak jast: that doesn't bother me so much
they have different use cases
jast still I had to rewrite a huge chain of imports after adding a single new one
plus all references to all of these imports
pmurias jnthn: any hints how that optimalization is done on the JVM backend? the JVM backend is using the bind_sig method for everything right? 13:42
13:42 Ven left
psch ISTR that happens in the Java-level Binder, actually. the ro-recont that is 13:42
jast really it's all just minor annoyances. like how, in Python 2, you have to manually pass the instance and the current class when using super 13:43
psch pmurias: ^^^ that's also where we do the bind failover stuff, which sounds like it should be related
pmurias psch: I found the ro-recont, I'm just now trying to figure out how the case when it's not called works 13:44
masak jast: I find the `super` wart in Python 2 an interesting topic of study from a language design perspective
I mean, it's clear that it *is* a wart, not least because Python 3 fixed it
jnthn pmurias: It maybe is ismply not done.
*simply
masak but one can also explain why it's not easily fixable in Python 2 13:45
jnthn pmurias: I *think* it's done on Moar when we lower the signature, emitting code to bind it.
pmurias: And the slow-path binder doesn't worry abou tit
*about it
jast masak: I wasn't too interested in the details at the time, but what you just said id what I took away from my experience basically 13:46
pmurias j: sub foo(Str $arg) {say VAR($arg).^name};sub bar($arg) {say VAR($arg).^name};foo('str');bar('str') 13:47
camelia rakudo-jvm 8ca367: OUTPUT«Str␤Scalar␤»
pmurias jnthn: ^^
jnthn Hm, interesting. 13:48
Then no, I don't know where it happens, but it'll check against Iterable somewhere in binder-related code, which should help you grep it out :)
13:52 wamba joined 13:53 tokomer left
masak m: sub circumfix:<d[ ]>([Int $year, Int $month, Int $day]) { Date.new(:$year, :$month, :$day) }; say d[2014, 12, 24] 13:55
camelia rakudo-moar 37941d: OUTPUT«2014-12-24␤»
masak \o/
arnsholt moritz: The "import from ." behaviour has bitten me once too. I had a directory of helper python scripts, one of which happened to have the same name as a Python built-in module. And another script that used said built-in module >.< 13:58
IIRC Python 3 fixes that one too, no?
moritz no 13:59
I've experienced that in python 3
masak .oO( that's your problem right there -- python 3 should not be *experienced*, it should only be ranted at from a distance in python community blog posts ) :P 14:00
14:01 pyrimidine left
arnsholt Ah, never mind me then 14:01
14:01 pyrimidine joined
arnsholt super() is a somewhat magical function in Python, BTW 14:02
ralisch masak: same thing with Perl6?
moritz arnsholt: s/somewhat/very/
arnsholt One of the fun cases where the Zen of Python happens to be "implicit is better than explicit"
moritz uhm
other way round, no?
arnsholt That's the usual formulation, yes =)
moritz ah 14:03
arnsholt But there are a few cases where IMO it's the other way 'round. Like variable declarations
moritz the Zen of Python also states that there should be one, and preferrably only one obvious way to do things
and look at string formatting.
arnsholt (Or variable scoping, more properly, I guess)
masak ralisch: I wish Perl 6 had the rants Python 3 does... :/
jast Python 2 has a number of interesting ways to output to stderr 14:04
masak moritz: "one and only one" is an ideal, hence the "should"
moritz masak: but 4 is a bit excessive, IMHO
masak moritz: at any given moment, Python and its community are in a state that diverges from the one-and-only way 14:05
ralisch See how historians can talk back to you, but it takes them some years: www.reddit.com/r/perl/comments/5lj...k_at_nasa/
masak moritz: more seriously, though, I believe that the redundancy offered by for loops/HOP functions/list comprehensions is largely good and can be used to increase readability 14:06
ralisch "4 is a bit excessive, IMHO" -> 4 is not nearly enough ways to do something.
moritz masak: which is fine, it#s just that I feel some sense of superiority from pyhton folks talking about perl, and then it rubs me the wrong way when python doesn't keep up with its own ideal
masak, ralisch: there's a reason that I hang out in #perl6 rather than #python :-)
masak moritz: I had the same thought when I started out with Python. especially since the dictum is clearly a reaction to Perl's promiscuous "more than one way" approach 14:07
dalek c: 1265f5d | (Tom Browder)++ | doc/Language/modules.pod6:
change to preferred name
synopsebot6 Link: doc.perl6.org/language/modules
masak moritz: but I've since made peace with that, somehow. it doesn't bug me anymore that Python people can't see that they often live by TIMTOWTDI ;)
jast in any case, I can work with Python and I guess that is all that matters for the most part
14:08 xinming_ left
RabidGravy the most python I see these days is in the backend parts of Airtime 14:09
frankly some of it is scary
DrForr Woof. This apartment may be soundproof but it's not smellproof. Someone's chopping onions somewhere close. 14:10
masak oh CRAP the `is parsed` macro in E06 o.O
I had repressed that one
14:10 xinming joined
masak it contains a `(.*?)` :( 14:10
arnsholt Oh noes! 14:11
What could possibly go wrong?!
masak .oO( mentally cue blog post: "that's not what a responsible parser author does" )
jast I find that (.*?) works great for parsing HTML
jast waits for it.......
masak pony
DrForr targets the OADS. 14:12
stmuk blogs.perl.org/users/steve_mynott/2...uture.html
masak jast: ZA􏿽xCD􏿽xA0􏿽xCC􏿽xA1􏿽xCD􏿽x8A􏿽xCD􏿽x9DLGΌ ISͮ̂҉̯͈͕̹̘̱ TO􏿽xCD􏿽x85􏿽xCD􏿽x87􏿽xCC􏿽xB9􏿽xCC􏿽xBA􏿽xC6􏿽x9D̴ȳ̳ TH̘E􏿽xCD􏿽x84􏿽xCC􏿽x89􏿽xCD􏿽x96 ͠P̯͍̭O̚​N̐Y̡ H􏿽xCD􏿽xA8􏿽xCD􏿽x8A􏿽xCC􏿽xBD􏿽xCC􏿽x85􏿽xCC􏿽xBE􏿽xCC􏿽x8E􏿽xCC􏿽xA1􏿽xCC􏿽xB8􏿽xCC􏿽xAA􏿽xCC􏿽xAFE􏿽xCC􏿽xBE􏿽xCD􏿽x9B􏿽xCD􏿽xAA􏿽xCD􏿽x84􏿽xCC􏿽x80􏿽xCC􏿽x81􏿽xCC􏿽xA7􏿽xCD􏿽x98􏿽xCC􏿽xAC􏿽xCC􏿽xA9 􏿽xCD􏿽xA7􏿽xCC􏿽xBE􏿽xCD􏿽xAC􏿽xCC􏿽xA7􏿽xCC􏿽xB6􏿽xCC􏿽xA8􏿽xCC􏿽xB1􏿽xCC􏿽xB9􏿽xCC􏿽xAD􏿽xCC􏿽xAFC􏿽xCD􏿽xAD􏿽xCC􏿽x8F􏿽xCD􏿽xA5􏿽xCD􏿽xAE􏿽xCD􏿽x9F􏿽xCC􏿽xB7􏿽xCC􏿽x99􏿽xCC􏿽xB2􏿽xCC􏿽x9D􏿽xCD􏿽x96Oͮ͏̮̪̝͍M􏿽xCD􏿽x8A􏿽xCC􏿽x92􏿽xCC􏿽x9A􏿽xCD􏿽xAA􏿽xCD􏿽xA9􏿽xCD􏿽xAC􏿽xCC􏿽x9A􏿽xCD􏿽x9C􏿽xCC􏿽xB2􏿽xCC􏿽x96E􏿽xCC􏿽x91􏿽xCD􏿽xA9􏿽xCD􏿽x8C􏿽xCD􏿽x9D􏿽xCC􏿽xB4􏿽xCC􏿽x9F􏿽xCC􏿽x9F􏿽xCD􏿽x99􏿽xCC􏿽x9ES􏿽xCD􏿽xAF􏿽xCC􏿽xBF􏿽xCC􏿽x94􏿽xCC􏿽xA8􏿽xCD􏿽x80􏿽xCC􏿽xA5􏿽xCD􏿽x85􏿽xCC􏿽xAB􏿽xCD􏿽x8E􏿽xCC􏿽xAD
masak wonders what he just did to IRC clients the world over
jast mine feels fine
DrForr Induced some tweets to @FakeUnicode? 14:13
moritz stmuk: are you on twitter?
stmuk yes
moritz ah, @steve_mynott, it seems 14:14
notviki wwwyyyyyyyy
masak oh, today's autopun spotting: twitter.com/MicroSFF/status/815613223839944706
stmuk I just tweeted
moritz too
notviki masak: well, you completely fucked up my terminal. So thanks. 14:15
moritz masak: nice one
diakopter FALLS OVER
masak diakopter: was it the autopun, or E06?
moritz or the new year? or the old one? 14:16
masak notviki: anytime :)
ralisch T􏿽xCC􏿽x8F􏿽xCC􏿽x86􏿽xCC􏿽xBF􏿽xCD􏿽xAE􏿽xCD􏿽xAF􏿽xCD􏿽xAF􏿽xCD􏿽xAE􏿽xCD􏿽x83􏿽xCC􏿽xBD􏿽xCC􏿽x8D􏿽xCD􏿽x90􏿽xCC􏿽xBF􏿽xCD􏿽x86􏿽xCC􏿽x84􏿽xCD􏿽x8A􏿽xCD􏿽xAE􏿽xCC􏿽xBD􏿽xCD􏿽xA6􏿽xCD􏿽x9D􏿽xCD􏿽x9D􏿽xCC􏿽xBC􏿽xCC􏿽x99􏿽xCC􏿽xA5􏿽xCC􏿽xAF􏿽xCC􏿽x98􏿽xCD􏿽x94􏿽xCC􏿽xA3􏿽xCC􏿽xBC􏿽xCD􏿽x87􏿽xCC􏿽x96􏿽xCC􏿽xAE􏿽xCD􏿽x88􏿽xCC􏿽xA6􏿽xCC􏿽xAA􏿽xCD􏿽x94􏿽xCC􏿽xAA􏿽xCC􏿽x96E􏿽xCC􏿽x88􏿽xCC􏿽x94􏿽xCC􏿽x82􏿽xCD􏿽x8A􏿽xCC􏿽xA1􏿽xD2􏿽x89􏿽xCC􏿽xA5􏿽xCC􏿽xA6􏿽xCC􏿽x99􏿽xCC􏿽x9E􏿽xCC􏿽x96􏿽xCC􏿽xB0R􏿽xCC􏿽xBF􏿽xCD􏿽xAB􏿽xCC􏿽x89􏿽xCC􏿽xA8􏿽xCD􏿽x81􏿽xCC􏿽x9B􏿽xCC􏿽xA5􏿽xCD􏿽x9A􏿽xCD􏿽x87􏿽xCC􏿽xBC􏿽xCD􏿽x85􏿽xCC􏿽xAB􏿽xCD􏿽x88􏿽xCC􏿽x9E􏿽xCC􏿽xA5􏿽xCD􏿽x93􏿽xCC􏿽xB0􏿽xCC􏿽xAC􏿽xCD􏿽x9A􏿽xCD􏿽x9A􏿽xCC􏿽xA9􏿽xCC􏿽x99􏿽xCC􏿽x98M􏿽xCC􏿽x92􏿽xCC􏿽x88􏿽xCD􏿽x8B􏿽xCD􏿽x90􏿽xCC􏿽x82􏿽xCC􏿽x8E􏿽xCC􏿽x90􏿽xCD􏿽x86􏿽xCD􏿽x8B􏿽xCD􏿽xA3􏿽xCD􏿽x8A􏿽xCD􏿽xA3􏿽xCD􏿽xAC􏿽xCD􏿽x9C􏿽xCC􏿽xA2􏿽xCC􏿽x99􏿽xCC􏿽xAA􏿽xCD􏿽x89􏿽xCC􏿽x9F􏿽xCD􏿽x95􏿽xCC􏿽xAA􏿽xCC􏿽xA0􏿽xCC􏿽x98􏿽xCC􏿽xA3􏿽xCC􏿽x9C􏿽xCC􏿽xAA􏿽xCC􏿽x9D􏿽xCC􏿽xAA􏿽xCD􏿽x95􏿽xCD􏿽x85􏿽xCD􏿽x88􏿽xCC􏿽x98􏿽xCD􏿽x8DI􏿽xCC􏿽x94􏿽xCC􏿽x82􏿽xCC􏿽x86􏿽xCD􏿽xA6􏿽xCC􏿽x81􏿽xCD􏿽xAD􏿽xCD􏿽x8C􏿽xCD􏿽xAB􏿽xCC􏿽x81􏿽xCD􏿽xA6􏿽xCC􏿽x94􏿽xCD􏿽xAB􏿽xCC􏿽x87􏿽xD2􏿽x89􏿽xCD􏿽x80􏿽xCC􏿽x95􏿽xCC􏿽xB6􏿽xCD􏿽x8E􏿽xCD􏿽x96􏿽xCC􏿽xAE􏿽xCD􏿽x96􏿽xCC􏿽xA9􏿽xCD􏿽x9A􏿽xCD􏿽x8D􏿽xCC􏿽x96􏿽xCD􏿽x89􏿽xCC􏿽xA0􏿽xCD􏿽x9A􏿽xCC􏿽xBA􏿽xCC􏿽xB9􏿽xCC􏿽xBC􏿽xCD􏿽x96􏿽xCC􏿽xB1􏿽xCC􏿽xA0􏿽xCC􏿽xAC􏿽xCD􏿽x94N􏿽xCC􏿽x8B􏿽xCD􏿽x91􏿽xCC􏿽xBF􏿽xCC􏿽xBE􏿽xCC􏿽x88􏿽xCC􏿽x8E􏿽xCC􏿽x83􏿽xCC􏿽x90􏿽xCD􏿽x9B􏿽xCD􏿽xA5􏿽xCC􏿽xBE􏿽xCD􏿽xA2􏿽xCC􏿽x95􏿽xCD􏿽xA2􏿽xCC􏿽xB4􏿽xCD􏿽x88􏿽xCC􏿽xA4􏿽xCC􏿽x9C􏿽xCC􏿽xA3􏿽xCC􏿽xABA􏿽xCC􏿽x8D􏿽xCC􏿽x94􏿽xCD􏿽x86􏿽xCD􏿽x84􏿽xCC􏿽x8B􏿽xCD􏿽xA3􏿽xCC􏿽xBF􏿽xCD􏿽xA8􏿽xCC􏿽x82􏿽xCC􏿽x9A􏿽xCD􏿽xAA􏿽xCD􏿽x80􏿽xCD􏿽xA2􏿽xCC􏿽xA5􏿽xCC􏿽xB3􏿽xCD􏿽x93􏿽xCC􏿽x9C􏿽xCD􏿽x95L􏿽xCD􏿽x91􏿽xCC􏿽x94􏿽xCC􏿽x82􏿽xCC􏿽x83􏿽xCD􏿽x82􏿽xCD􏿽x82􏿽xCD􏿽xA3􏿽xCD􏿽xA7􏿽xCC􏿽x81􏿽xCD􏿽x82􏿽xCC􏿽xBF􏿽xCC􏿽xB8􏿽xCD􏿽x8D􏿽xCC􏿽xA4􏿽xCC􏿽xA6􏿽xCC􏿽xA5􏿽xCC􏿽xAF􏿽xCD􏿽x85􏿽xCC􏿽xB9 ̍̄̃̄̐̔̔ͬ̐͌̃̈ͬ́͑􏿽xCD
masak .oO( the new year hit me, like a ton of bricks )
diakopter broke synopsebot6
masak ralisch: you killed synopsebot6! D:
14:16 synopsebot6 joined
masak ETOOMANYMARKS 14:16
EUNICODE
diakopter i can't see my own typing 14:17
is anyone seeing this
test
jast I � Unicode
notviki barely
ralisch @FakeUnicode broke archive.is
notviki it's spilling into the second channel too
ralisch sorry guys 14:18
masak diakopter: no, I can't see what you're writing, sorry
ralisch the bots really dislike me now
diakopter hrm
DrForr diakopter: reset ; stty sane
diakopter reset ; stty sane 14:19
notviki reset ; stty name
moritz you can always check the IR clogs for reference
notviki IT"S NOT WORKING!
DrForr stty INSANE IN DA BRANE
masak suddenly wants an stty(1) where that works 14:20
dalek c: db9a46e | (Tom Browder)++ | doc/Language/modules.pod6:
modernize, use META6.json
14:21
synopsebot6 Link: doc.perl6.org/language/modules
ralisch Only after the terminal emulator is running out of the kernel. kmscon and systemd-consoled projects go in that direction, but are frozen for now because lack of volunteers.
tbrowder ref doc change: is zef installed with Rakudo Star yet? 14:23
14:23 grumble left 14:24 grumble joined
pmurias psch: why was trial_bind moved from java into nqp land? 14:24
masak TIL about "fused multiply-add": en.wikipedia.org/wiki/Multiply%E2%...2.80.93add
notviki obtains immunity from unicode by installing a different terminal 14:25
masak notviki: is that some kind of challenge? :P
14:26 cdg joined 14:27 pierre_ joined 14:30 kurahaupo__ joined
notviki ugh, can't get the colour and fonts same as in the old terminal... 14:30
diakopter watches a funnel descend from the roaring green sky 14:31
14:32 aindilis joined, dogbert2 joined, dogbert17 left, rburkholder left, rpburkholder joined
dalek c: 4ac813e | (Tom Browder)++ | doc/Language/modules.pod6:
use complete words
14:35
synopsebot6 Link: doc.perl6.org/language/modules
14:36 Gasher joined
tbrowder .ask ugexe is zef installed with Rakudo Star yet 14:36
yoleaux tbrowder: I'll pass your message to ugexe.
14:36 skids joined
SmokeMachine is the current commit on rakudo breaking on make? 14:38
notviki No
14:40 yyy joined
SmokeMachine I'm getting this: www.irccloud.com/pastebin/qGlsH06G/ 14:40
with no changes... 14:41
14:42 AlexDaniel joined
SmokeMachine notviki: ^^ 14:42
notviki SmokeMachine: you need a full build cycle so it picks up updated nqp 14:46
perl Configure.pl --gen-moar --gen-nqp --backends=moar; make; make test; make install
SmokeMachine hum... thanks!
AlexDaniel hmm 14:51
m: my @a = 1 ... ∞; say @a[^50]
camelia rakudo-moar 6ffbbf: OUTPUT«(1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50)␤»
AlexDaniel so this is lazy
m: my @a = 1 ... 99999999999999; say @a[^50]
and this is not… hmmm
camelia rakudo-moar 6ffbbf: OUTPUT«(timeout)»
AlexDaniel do we have anything in our documentation that explains this? 14:52
docs.perl6.org/language/operators#..._%E2%80%A6
“The sequence operator is a generic operator to produce lazy lists.”
o-oops…
masak yes, I don't see why both above should work 14:53
shouldn't*
AlexDaniel I couldn't sleep yesterday because of this ticket 14:54
notviki I don't see why 1...Inf doesn't hang
m: my @a = gather { say "hi" };
camelia rakudo-moar 6ffbbf: OUTPUT«hi␤»
masak notviki: it's a bit of a special case.
notviki Well, so that' your answer. 14:55
masak notviki: when assigning something known-infinite to an array.
notviki :S
masak it doesn't eagerly try to expand it
largely because people expect it not to, rather than hang
notviki masak: what sort of special case is it? Considering we have no indication for what is infinite
AlexDaniel so why do we default to implicit “eager” rather than “lazy”?
masak I believe pmichaud wrote all of this up somewhere long ago 14:56
is it... S07?
notviki m: my @a = 1 ... { -1; }; say @a[^50]
camelia rakudo-moar 6ffbbf: OUTPUT«(1 (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (…»
masak no, that's written by jnthn
notviki m: my @a = 1 ... { 999999999999; }; say @a[^50]
camelia rakudo-moar 6ffbbf: OUTPUT«(1 (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (…»
masak S03 mentions "mostly eager" and refers to S07, but S07 doesn't mention "mostly eager
"
so probably that was an earlier version of S07 that did that :/ 14:57
notviki m: my @a = 1 ... * < Inf; say @a[^50]
camelia rakudo-moar 6ffbbf: OUTPUT«(1 (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (…»
notviki gives up
masak ah, jnthn re-wrote S06 back in Sep 2015
jnthn++, I mean
notviki: github.com/perl6/specs/commit/89b9...770cd2fbb6 14:58
notviki: search for "Levels of laziness"
I don't know why that section is gone from most-recent -- it still makes sense to me 14:59
notviki m: my @a = 1, * + 1 ... { 999999; }; say @a[^50] 15:00
camelia rakudo-moar 6ffbbf: OUTPUT«(1 (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (Any) (…»
notviki m: my @a = 1, * + 1 ... { False }; say @a[^50] 15:01
camelia rakudo-moar 6ffbbf: OUTPUT«(timeout)»
notviki m: my @a = 1 ... Inf-1
camelia ( no output )
SmokeMachine notviki: running the spec tests for that we talked yesterday...
notviki Ok, well, makes sense to me then. It's eager unless it can detect the infinite 15:02
m: my @a = 1 ... NaN 15:04
heh
camelia rakudo-moar 6ffbbf: OUTPUT«(timeout)»
SmokeMachine How do I run the spec tests in parallel? 15:05
15:05 grondilu left
notviki TEST_JOBS=7 make spectest 15:06
And since you're changing a test function, I'd recommend running TEST_JOBS=7 make stresstest
for more thorough test 15:07
AlexDaniel notviki: there's a ticket for NaN 15:08
15:08 grondilu joined
notviki AlexDaniel: what sort of ticket? 15:08
The above code doesn't look like a bug to me 15:10
AlexDaniel notviki: hmmm 15:11
notviki Well, other than whatever "detect the infinite" special case does
AlexDaniel notviki: but still, RT #125336 ← all ranges listed there are not marked as infinite
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=125336
AlexDaniel m: say (NaN..0).infinite
camelia rakudo-moar 6ffbbf: OUTPUT«False␤»
AlexDaniel m: say (NaN..0)[^20]
camelia rakudo-moar 6ffbbf: OUTPUT«(Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil Nil)␤»
AlexDaniel oh wait…
m: .say for (Inf..0)[^10] 15:12
camelia rakudo-moar 6ffbbf: OUTPUT«Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤»
AlexDaniel m: .say for (NaN..NaN)[^10]
camelia rakudo-moar 6ffbbf: OUTPUT«NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤NaN␤»
AlexDaniel m: say (NaN..NaN).infinite
camelia rakudo-moar 48e8cc: OUTPUT«False␤»
rightfold m: say "Batman!"
camelia rakudo-moar 48e8cc: OUTPUT«Batman!␤»
AlexDaniel well, this
the rest seems to be fixed I guess?
notviki we have an infinite method :o
AlexDaniel m: say (0..NaN)[^10] 15:13
camelia rakudo-moar 48e8cc: OUTPUT«(0 1 2 3 4 5 6 7 8 9)␤»
AlexDaniel m: say (0..NaN).infinite
camelia rakudo-moar 48e8cc: OUTPUT«False␤»
notviki m: .say for (NaN..0)[^20+1024]
camelia rakudo-moar 48e8cc: OUTPUT«Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤»
notviki m: .say for (NaN..0)[^20] 15:14
camelia rakudo-moar 48e8cc: OUTPUT«Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤Nil␤»
notviki s: ^1, 'infinite', \()
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/6ffb...nge.pm#L77
15:15 khw joined
notviki Yeah, it just checks for two infinites: github.com/rakudo/rakudo/blob/6ffb...nge.pm#L53 15:15
AlexDaniel also does this for whatevers 15:16
15:16 pyrimidine left, pyrimidine joined
notviki m: say Inf cmp NaN 15:16
camelia rakudo-moar 48e8cc: OUTPUT«Less␤»
timotimo stmuk: what's up? :)
AlexDaniel m: say (*..50)[^10]' 15:17
camelia rakudo-moar 48e8cc: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Two terms in a row␤at <tmp>:1␤------> 3say (*..50)[^10]7⏏5'␤ expecting any of:␤ infix␤ infix stopper␤ postfix␤ statement end␤ statement modifier␤…»
AlexDaniel m: say (*..50)[^10]
camelia rakudo-moar 48e8cc: OUTPUT«(-Inf -Inf -Inf -Inf -Inf -Inf -Inf -Inf -Inf -Inf)␤»
AlexDaniel m: say (*..50).infinite
camelia rakudo-moar 48e8cc: OUTPUT«True␤»
AlexDaniel m: say (-Inf..50).infinite
camelia rakudo-moar 48e8cc: OUTPUT«True␤»
notviki unsure of whether we should add NaN to the list. 15:18
ralisch m: say Inf.infinite
camelia rakudo-moar 48e8cc: OUTPUT«No such method 'infinite' for invocant of type 'Num'␤ in block <unit> at <tmp> line 1␤␤»
notviki There are many other instances where the range would be infinite 15:19
and we don't detect those either
m: say (1e200 .. 1e300)[^10]
camelia rakudo-moar 48e8cc: OUTPUT«(1e+200 1e+200 1e+200 1e+200 1e+200 1e+200 1e+200 1e+200 1e+200 1e+200)␤»
notviki m: say (1e200 .. 1e300).infinite
camelia rakudo-moar 48e8cc: OUTPUT«False␤»
ralisch m: say (1e200 .. 1e300).elems 15:20
camelia rakudo-moar 48e8cc: OUTPUT«(timeout)» 15:21
notviki that'll try to reify everything
and fail because it's infinite
SmokeMachine Thanks!
ralisch m: say (1e200 .. 1e300).end
notviki
.oO( we have an .end method? )
camelia rakudo-moar 48e8cc: OUTPUT«(timeout)» 15:22
notviki m: ^5 .end.say
camelia rakudo-moar 48e8cc: OUTPUT«4␤»
ralisch m: say (0 .. 10 ).end
camelia rakudo-moar 48e8cc: OUTPUT«10␤»
notviki -_-
m: ^5 .tail.say
camelia rakudo-moar 48e8cc: OUTPUT«4␤»
notviki m: ^5 .first(:end).say
camelia rakudo-moar 48e8cc: OUTPUT«4␤»
notviki m: ^5 .[*-1].say
camelia rakudo-moar 48e8cc: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Malformed postfix call (only alphabetic methods may be detached)␤at <tmp>:1␤------> 3^5 .7⏏5[*-1].say␤»
notviki m: (^5).[*-1].say
camelia rakudo-moar 48e8cc: OUTPUT«4␤»
15:23 thayne left
notviki We should add another method... that does the same thing by randomly choosing to call any of those ^ 15:23
ralisch m: say (^10).end === (^10).[*-1]
camelia rakudo-moar 48e8cc: OUTPUT«True␤»
notviki I guess the trick here is .end can tell you the answer without reifying everything when it can 15:24
m: say (-Inf..5).end
camelia rakudo-moar 48e8cc: OUTPUT«Cannot .elems a lazy list␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
notviki um...
That's nice.
Ah, right, int ranges only 15:25
m: say (-9999999999..999999999999999).end
s: ^1, 'end', \()
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/48e8...Any.pm#L86
notviki wtf
camelia rakudo-moar 48e8cc: OUTPUT«(signal SEGV)»
notviki It's not even a Range method.
ah, end returns an index 15:26
m: <a b c d>.end.say
camelia rakudo-moar 48e8cc: OUTPUT«3␤»
notviki m: <a b c d>.first(:end, :k).say 15:27
camelia rakudo-moar 48e8cc: OUTPUT«3␤»
ralisch m: say (-9999999999..999999999999999).last
camelia rakudo-moar 48e8cc: OUTPUT«No such method 'last' for invocant of type 'Range'␤ in block <unit> at <tmp> line 1␤␤»
15:32 grondilu left 15:33 Dunearhp joined 15:35 grondilu joined
SmokeMachine notviki: looks like its working... 15:39
cosimo_ -win 21
15:40 brrt left
SmokeMachine MacBook-Pro-de-Fernando:rakudo fernando$ ./perl6 -Ilib -MTest -e'pass Q[\]' 15:40
ok 1 - \
15:40 telex left
ralisch m: say (-9999999999..999999999999999).perl 15:41
camelia rakudo-moar 48e8cc: OUTPUT«-9999999999..999999999999999␤»
notviki SmokeMachine: what does ./perl6 -Ilib -MTest -e'todo 1; pass Q[\]'
give you?
SmokeMachine ok 1 - \
notviki :S
What happened to the todo?
SmokeMachine sorry! 15:42
ok 1 - \# TODO 1
15:42 telex joined
ralisch m: say dd (-9999999999..999999999999999) 15:42
camelia rakudo-moar 48e8cc: OUTPUT«-9999999999..999999999999999␤Nil␤»
notviki SmokeMachine: that's broken
SmokeMachine notviki: why?
notviki SmokeMachine: you escaped the TODO 15:43
SmokeMachine :(
Yes... :( www.irccloud.com/pastebin/tB2ijXc0/ 15:44
15:45 cdg_ joined
notviki SmokeMachine: and I bet if you run this script in harness it'll fail the run: gist.github.com/zoffixznet/b15a5f5...10e9b44d55 15:45
instead of noticing the TODO
15:46 cdg left, kaare_ joined
notviki "<notviki> That could work." 15:46
I guess I was wrong :P
SmokeMachine notvick www.irccloud.com/pastebin/vlRcAsUr/ 15:47
sorry! no -Ilib! 15:48
www.irccloud.com/pastebin/AAfiSqW9/
15:48 mr-foobar joined
SmokeMachine notviki: I think you are right... :( 15:49
samcv i think the backslash is my least favorite key 15:50
notviki SmokeMachine: there's one more hack available: Add an extra space here too: github.com/rakudo/rakudo/blob/nom/...t.pm6#L342
samcv because it makes things look ugly
notviki with a comment that space is important
ralisch Because of leaning toothpick syndrome?
samcv ralisch, yes 15:51
just read the source grammar for the atom syntax highlighter (in CSON)
it's got two levels of escaping one for the CSON then one for the regex engine
both requiring different things escaped
and dealing with escapes differently 15:52
SmokeMachine notviki: do you mean " # TODO"?
samcv nowdays i just have a script i use with `xclip` to just pipe stuff from clipboard, unescape/escape and put it back
work with it in sane form, where it's only escaped as far as for the regex engine
notviki SmokeMachine: yes 15:53
AlexDaniel samcv: is there any preprocessor for this? 15:55
samcv uh. well it parses the CSON and unescapes it then passes it to Onigumura regex engine 15:56
there's a ticket for an enhancement to allow YAML files, but not seeing them implementing that unless somebody random just contributes it or something
dalek c: d048c11 | (Steve Mynott)++ | doc/Language/faq.pod6:
6.d answer
16:01
synopsebot6 Link: doc.perl6.org/language/faq
16:02 TimToady left 16:06 holli joined 16:11 troys joined 16:16 dalek left 16:17 dalek joined, ChanServ sets mode: +v dalek, jonas1 joined
AlexDaniel .in 14600d use 6.za after 6.y 16:22
yoleaux AlexDaniel: I'll remind you on 23 Dec 2056 16:22Z
16:23 jonas1 left 16:25 dalek left 16:26 dalek joined, ChanServ sets mode: +v dalek 16:29 yyy left
SmokeMachine notviki: www.irccloud.com/pastebin/SmEPbFrA/ 16:31
16:32 abraxxa left 16:33 abraxxa joined
notviki SmokeMachine: what does "prove -e './perl6 -Ilib' -vlr foo.t " give? 16:33
16:33 Khisanth left
SmokeMachine www.irccloud.com/pastebin/7woEElwf/notviki 16:34
notviki: only the space on # TODO wouldn't make the magic? 16:35
notviki No, because then apperance of '# TODO' in test description would be interpreted as a TAP command 16:36
SmokeMachine I mean: the space on # TODO and change "#" to "\#" without space 16:39
no... 16:40
16:40 cibs left
SmokeMachine it needs the space 16:40
16:42 cibs joined
SmokeMachine notviki www.irccloud.com/pastebin/kzxjjPhG/ 16:44
16:46 Khisanth joined
notviki Well, yeah, add space before "#TODO" and change "#" to " \#" 16:50
16:50 abraxxa left 16:51 abraxxa joined
samcv notviki, can there be leading spaces before #?rakudo.moar in test TODO's 16:52
notviki I don't know
16:54 troys is now known as troys_
SmokeMachine notviki: github.com/rakudo/rakudo/pull/985 16:56
16:56 pierre_ left 16:57 pierre_ joined 16:58 abraxxa left
samcv m: say '«'.uniprop('Bidi_Mirroring_Glyph') 16:59
camelia rakudo-moar 7c8b70: OUTPUT«»␤»
samcv m: say '['.uniprop('Bidi_Mirroring_Glyph')
camelia rakudo-moar 7c8b70: OUTPUT«]␤»
samcv nice
AlexDaniel, how often does unicodable rebuild? 17:00
evalable6, say 'test'
evalable6 samcv, rakudo-moar 7c8b705: OUTPUT«test»
ralisch m: say '﴾'.uniprop('Bidi_Mirroring_Glyph') 17:01
camelia rakudo-moar 7c8b70: OUTPUT«␤»
samcv u: { .uniprop-int('Bidi_Mirroring_Glyph') }
m: "﴾".uniname.say
camelia rakudo-moar 7c8b70: OUTPUT«ORNATE LEFT PARENTHESIS␤»
unicodable6 samcv, U+0028 LEFT PARENTHESIS [Ps] (()
samcv, U+0029 RIGHT PARENTHESIS [Pe] ())
samcv, U+003C LESS-THAN SIGN [Sm] (<)
notviki samcv: I guess not, since /spec/S05-mass/properties-general.t is now failing for me.
unicodable6 samcv, gist.github.com/fb0ab77b1294ef82eb...8119008ebc
samcv my least favorite ralisch
17:01 pierre_ left
SmokeMachine My second pull request... I'm so happy! :) 17:03
ralisch samcv: Shh bby is ok
17:05 cibs left 17:07 cibs joined
ralisch SmokeMachine, which city are you in? I will buy you a beer. 17:07
toolforger gratz :-) 17:08
Not sure whether I already have 2 - does a retracted PR count? ;-) 17:09
notviki SmokeMachine: which city are you in? I'll buy you some cocaine. 17:10
17:11 bwisti joined
ralisch I would buy some magic powder for him, but I'm not prepared to deal with him horny. 17:11
17:13 cibs left
SmokeMachine ralisch: Rio de Janeiro! I want that beer! 😃 17:13
17:13 cibs joined
SmokeMachine notviki: no, thanks! 17:13
ralisch I'm in Curitiba.
toolforger No thanks, I have Coke :-) 17:14
17:15 girafe joined
timotimo ralisch: what is "shh bby is ok" supposed to mean? 17:16
ralisch knowyourmeme.com/memes/shh-bby-is-ok 17:17
timotimo weird. 17:18
SmokeMachine ralisch: mais fácil p/ te cobrar então! :)
17:18 colomon joined, troys_ is now known as troys
ralisch SmokeMachine: Sim sim 17:18
Te perguntei a cidade por reconhecer o nome zuca. 17:19
colomon just managed to create a Wunderlist task for himself using perl6 and Inline::Python. :)
skids General Web2.0 survival rule: if it's nonsense, google it with the word "meme" after it. 17:20
toolforger lol
ugexe tadzik: can you merge github.com/tadzik/rakudobrew/pull/110 ? 17:22
yoleaux 14:36Z <tbrowder> ugexe: is zef installed with Rakudo Star yet
ugexe .tell tbrowder stmuk is heading that. afaik he has it working so it should be in the next release or so 17:23
yoleaux ugexe: I'll pass your message to tbrowder.
17:24 Ven joined
SmokeMachine Merged! \o/ 17:26
colomon nine++ # Inline::Python is wonderful 17:28
17:29 Ven left 17:31 zacts joined 17:32 leego joined
notviki SmokeMachine: did you run spectest? 17:32
17:32 shayan_ joined
notviki feels like a badguy... chasing after roast breakers >_< 17:33
timotimo captain planet~
notviki it's even part of 6.c-errata :/ 17:34
colomon Roastbreaker: The latest Bond flick.
17:35 leego left, leego joined 17:42 girafe2 joined
colomon nine: is there a way to use named arguments with python method calls? It’s the first thing that didn’t Just Work for me on this project… 17:43
17:44 girafe left
toolforger yes, for any Python method or function 17:48
colomon afk # noms with fam
17:52 hartenfels joined, PotatoGim left 17:53 tbrowder joined, w4and0er96 left, clkao left
SmokeMachine notviki: I'm not sure if I did it after the space on # TODO... I'm sorry... 17:54
I'm out of my computer now... :( 17:55
17:55 PotatoGim joined 17:56 dugword joined
nine colomon: not yet, but I'd love to support them. In contrast to Perl 5's Inline::Python they were a real hassle. 17:56
17:56 peteretep joined 17:57 w4and0er96 joined, domidumont left
notviki SmokeMachine: there was a failure, but in this case we were able to amend the test. 17:57
17:57 BuildTheRobots joined 17:59 wamba left 18:00 olinkl joined 18:02 lizmat left
SmokeMachine I'll be out of my computer by 8 days... 18:03
notviki crazy
timotimo oh no, you'll remain stuck inside your computer for 8 days? 18:04
18:05 lizmat joined
AlexDaniel samcv: “how often does unicodable rebuild?” – depends. Stuff in { … } is executed on the latest rakudo (which is built almost immediately) 18:06
samcv: however, if you are not using a code block, it will use whatever it is currently running on
which is usually one or two weeks old
18:08 clkao joined
SmokeMachine notviki: so is it fixed? 18:10
notviki SmokeMachine: yes 18:11
SmokeMachine Great! What was it?
notviki SmokeMachine: test that tested output of TODO
SmokeMachine notviki: so there was a test that tests tests?! :P 18:12
notviki yes 18:13
SmokeMachine notviki: thanks for all the help! 18:14
lizmat starts working on the Perl 6 Weekly before her battery runs out (because of power outage)
18:17 curt_ joined 18:18 rafaschp joined, CIAvash left 18:19 ralisch left
curt_ p6: say (1..10).Set eqv (1..10).reverse.Set; class MyObj { has Set $.s }; say MyObj.new(s => (1..10).Set) eqv MyObj.new(s => (1..10).reverse.Set); 18:20
camelia rakudo-moar 618877: OUTPUT«True␤False␤»
timotimo only works if you turn your MyObj into a value type by giving it a proper WHICH 18:21
m: say (1..10).Set.WHICH; class MyObj { has Set $.s }; say MyObj.new(s=>(1..10).Set).WHICH 18:22
camelia rakudo-moar 618877: OUTPUT«Set|Int|1 Int|10 Int|2 Int|3 Int|4 Int|5 Int|6 Int|7 Int|8 Int|9␤MyObj|61563736␤»
notviki timotimo: what's a value type? 18:23
curt_ I agree there are ways to make it work, but why doesn't the default Any eqv Any just call eqv() on each attribute instead of string comparing their .perl()s? 18:24
timotimo a type whose identity is defined by its contents
18:24 shayan_ left
notviki Ah 18:24
timotimo i don't have a good answer, curt_ 18:25
lizmat curt_: that would then only be the public attributes, like the ones that .new accepts, right ? 18:26
perhaps we should make a ticket for that, so the idea won't fall through the cracks 18:27
notviki curt_: in your case it doesn't get to .perls it fails because they're different object instances
m: say (1..10).Set.perl 18:29
camelia rakudo-moar 618877: OUTPUT«set(5,7,9,4,8,3,1,6,2,10)␤»
notviki m: say (1..10).reverse.Set.perl
camelia rakudo-moar 618877: OUTPUT«set(5,9,7,8,4,3,6,1,10,2)␤»
notviki m: say (1..10).reverse.Set.perl
camelia rakudo-moar 618877: OUTPUT«set(5,9,7,8,4,3,6,1,10,2)␤»
notviki wonders if that order is random and so <eqv> comparison of string .perl is flawed due to that
lizmat notviki: not true
curt_ p6:say (1..10).Set eqv (1..10).reverse.Set; class MyObj { has Set $.s; method perl { 'foo' }}; say MyObj.new(s => (1..10).Set) eqv MyObj.new(s => (1..10).reverse.Set); 18:30
lizmat it does get to the .perl
curt_ p6: say (1..10).Set eqv (1..10).reverse.Set; class MyObj { has Set $.s; method perl { 'foo' }}; say MyObj.new(s => (1..10).Set) eqv MyObj.new(s => (1..10).reverse.Set);
camelia rakudo-moar 618877: OUTPUT«True␤True␤»
notviki lizmat: ah right
18:35 troys is now known as troys_, shayan_ joined
AlexDaniel m: say bag(<a b c>).Set.Bag.Set.Mix.Hash.Mix.Bag.Set 18:36
camelia rakudo-moar 618877: OUTPUT«set(a, c, b)␤»
AlexDaniel xD
timotimo Set-it.Bag-it.Mix-it.now-upgrade-it
toolforger m: say bag(<a b c>) 18:37
camelia rakudo-moar 618877: OUTPUT«bag(a, c, b)␤»
18:37 pierre_ joined
toolforger m: say bag(<a b c>).Set 18:37
camelia rakudo-moar 618877: OUTPUT«set(a, c, b)␤»
toolforger That's a surprising order - I don't mind, but I guess it will confuse some people 18:38
rafaschp Why would it keep the order? 18:39
timotimo the order is due to how the hash function works internally 18:40
notviki toolforger: setties and baggies are not ordered
timotimo j: say bag(<a b c>)
camelia rakudo-jvm 8ca367: OUTPUT«bag(c, a, b)␤»
toolforger :-D
something to mention in the docs
conditions under which you can depend on the sort order being the same 18:41
typically, stable within the same run of the same VM
timotimo never rely on this
psch doesn't see any sort there
notviki toolforger: those conditions are none
timotimo also, when you increase the size of the bag, it'll switch the order of the first few around, too, i think 18:42
toolforger timotimo, that would be a good idea to mention
rephrasing
AlexDaniel if you need order, you don't want set/bag/mix/hash etc.
toolforger sometimes you don't care about the order but you need the order to be "the same as last time" 18:43
AlexDaniel no, it's not a good idea to mention how the order might change
18:43 lizmat left
AlexDaniel because there is no order 18:43
timotimo correct
toolforger Actually it is important to mention that 18:44
I have experienced in-team discussions
18:44 lizmat joined
RabidGravy if you want them in a predicatable order then it's sort them 18:44
toolforger A says "let's avoid depending on the order because the docs say don't"
then B says "but it is stable"
18:44 xinming_ joined
toolforger challenges A to show situations where the order changes 18:44
psch and then you get epsilon delta for comparisons 18:45
toolforger now A needs to know how to trigger order-changing mutations
psch oh, wait, that was ieee754
AlexDaniel no, A checks out roast
and sees that there are no tests that check that the order is stable
toolforger that's not going to convince B
AlexDaniel therefore it is not
toolforger I have seen that kind of discussions 18:46
AlexDaniel well sorry but then B can go f…
toolforger B often is the project leader...
RabidGravy hand them a broom and tell them to go amuse themselves
psch xkcd.com/1172/
toolforger I have been A more often than I care to remember
psch that's B, innit :l
well, one version of B i suppose
"i tested it, it's stable, who cares what the docs say" is what i see the same 18:47
AlexDaniel toolforger: anyway, we don't doc what is not specced
toolforger: and we're not going to spec how the order should or should not change
toolforger I'm not talking about speccing
RabidGravy also isn't there a CERT advisory regarding hashing that mentions this stuff?
from like ten years ago
18:47 xinming left
AlexDaniel toolforger: but there's no doccing without speccing 18:47
toolforger now that's a horrible approach 18:48
because it leaves A out in the cold
AlexDaniel but at least A is right :)
rafaschp The docs start like this: "Unordered collections of unique and weighted objects in Perl 6"
toolforger and you can't handwave real-world workplace problems away by sloganning
psch well, the established practice in dev is "A does CYA, shit breaks, B complains, A proves B is to blame" 18:49
and "find a new job if it doesn't change"
timotimo what is CYA again?
rafaschp It's mentioned 5 times they have no order.
psch cover your ass
timotimo ah
toolforger psch, not everybody has the kind of luxury you're taking for granted with that
blaming your lead or your boss isn't always an option
finding another job isn't either, not for everybody
AlexDaniel rafaschp: there are still some issues on these pages though 18:50
toolforger and outright refusal to help people with real-world problem... sounds pretty un-Perlish to me
AlexDaniel rafaschp: for example, “reverse” is added to all of them
skids Weren't we randomizing at some point just to deal with that?
mst toolforger: if they're explicitly documented as unordered I don't understand what real-world problem you still have he4re
timotimo toolforger: there are no technological solutions to social issues
AlexDaniel rafaschp: it the docs for reverse say “Returns a list with the same elements in reverse order.”
mst toolforger: please stop insulting the channel and let's concentrate on the actual problem here
psch skids: yeah, i think we explicitly randomize
or, at least used to
18:51 MasterDukeLaptop joined
toolforger mst, I just explained; if you disagree with some of the points, we can discuss that 18:51
rafaschp There may be, but the fact that they are unordered is mentioned 6 times.
mst toolforger: your explanation was that it isn't documented. but it is.
AlexDaniel rafaschp: now, that being on that page might suggest there is some order… which is a bit unfortunate
geekosaur the randomization was for one of the things that can autothread, iirc, not hashes
AlexDaniel rafaschp: I'll create an issue for that, let's see if we can fix it…
toolforger timotimo in this case it could
mst toolforger: I'm looking for a problem based on this reality, rather than one you made up
toolforger: what, specifically, are you finding not-sufficiently-guaranteed here? 18:52
MasterDukeLaptop toolforger: did you get my email? and if so, did it make sense?
toolforger what's the reasons against putting in an example? I agree it cannot be spec, but it could be advice
mst toolforger: an example of what?
toolforger MasterDukeLaptop yes, thanks, I didn't get around to trying things out
mst I'm sorry, I got distracted by all your shouting 'unperlish' when you didn't immediately get your way
toolforger mst an example of how ordering assumptions could break
psch ah, there's the problem
RabidGravy the observation that the order of the keys may be stable in some circumstances is just that, an observation, that is not what is documented
MasterDukeLaptop toolforger: np, just wanted to make sure i got it to the right place 18:53
mst ah, hmm
AlexDaniel these examples won't work on all implementations though
psch you're assuming order when dealing with unordered collection types
mst ok, hang on, let's step back a moment
you're arguing paast each other
psch mst++
mst (1) we cannot produce an example that will reliably work on all implementations, and in fact, you will often get the problem with unordered things that once every N runs the thing produces the same order anyway 18:54
so I don't believe that we can produce a runnable or specifyable answer here
toolforger exactly
mst *however* the whole "this is unordered, but may initially to a naive developer appear ordered" problem is very real
rafaschp m: say bag(<a b c>).reverse
camelia rakudo-moar 618877: OUTPUT«(b => 1 c => 1 a => 1)␤»
toolforger mst, exactly my thinking
rafaschp m: say bag(<a b c>)
camelia rakudo-moar 618877: OUTPUT«bag(a, c, b)␤»
mst note that lots and lots of people (including past-mst) run face-first into the fact that lots of SQL database implementations 18:55
return things in PK order -most- of the time because that's more convenient to the implementation
thereby leading to people not realising that the order is 'whatever the db feels like' unless you provide ORDER BY
toolforger oh yeah
mst toolforger: am I right in thinking that you're scared of basically the same mistake here?
toolforger exactly, mst 18:56
rafaschp m: say (1+1i) < (2+1i)
camelia rakudo-moar 618877: OUTPUT«Can not convert 1+1i to Real: imaginary part not zero␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
mst ok, so, while you can't document *all* the things that aren't specified
because, y'know, infinite number of possible things to do wrong
skids Liberally peppering docs with conspicuous ".sort" calls might serve as a clue.
mst I've seen so many people blow their own feet off with this particular thing
that I think it might be worth calling it out a bit more clearly 18:57
toolforger +1
AlexDaniel so we should stress yet again that it is unordered?
mst AlexDaniel: "yet again" is not constructive, please remain quiet until you've remembered how to be nice
AlexDaniel :X
rafaschp One smaller thing we can take is that calling .reverse on them shouldn't work? Like '<' doesn't work in Complex numbers?
timotimo .reverse is a method on Cool which calls .list on your thing for you 18:58
m: say 5.reverse
camelia rakudo-moar 618877: OUTPUT«(5)␤»
mst the trick is to try and avoid people falling into the trap, and the word 'unordered' being in several places is, humans being humans, probably sadly not sufficient
toolforger "stress again" isn't going to convince newbies who didn't care the first time they read it
mst more they probably skipped over the word anyway
toolforger true
mst and lots of people will be coming from languages with only arrays and hashes and therefore it won't even occur to them this is a problem 18:59
rafaschp Well, above they were talking about CYA, which the docs already do. Now were moved to LTA.
toolforger what's CYA and LTA?
mst cover your arse and less than awesome
toolforger ah thx 19:00
mst and, no, everyody else inferred CYA from toolforger wanting to stop the junior doing the LTA thing
and also I don't care which it is, the question is "will this stab newbies in the foot?"
now, getting back to the point
I would -love- to insert the SQL comparison somewhere, but that would require some sort of tutorialish spot to insert it into, and I dunno if we have one of those yet 19:01
*however*
is there a specific requirement currently that documentation examples produce exactly the ooutput from the examples on the current rakudo?
mst is wondering if we could build multiple return orderings into a SYNOPSIS or similar
so, like, the 'this is not the order I expected' hopefully sinks in from them reading the code 19:02
which newbies are more likely to do, since the examples are what they're about to copy-paste
toolforger That would be awesome to have; it's called doctests in Python, and it helped a ton because it would tell you if one of your changes would break example doce in the docs
mst toolforger: the whole point is we can't have that for this.
toolforger "would be awesome" unfortunately isn't "we can", I know 19:03
mst toolforger: well, no, it's more ... argh
toolforger heh
still, doctests would help
mst my point is that for *most* things we *can* do something like that in *theory*
toolforger if every doctest includes a sort call, that should help
mst ok, but ... yes. that's exactly what I'm -not- suggesting 19:04
because it exactly causes the exact problem you had in the first place
mst grumbles
ok, gimme a second to swig more coffee, and I shall try this again
MasterDukeLaptop there are some tests for the examples in the docs. not sure if they check output, it may just be that they compile
mst because going from 'AlexDaniel and toolforger are talking apst each other' to 'mst is talking past everybody' is not actually an improvement. 19:05
AlexDaniel alright folks
github.com/perl6/doc/issues/1105 github.com/perl6/doc/issues/1106 github.com/perl6/doc/issues/1107
feel free to edit these issues or comment on them 19:06
mst oooh
traps!
AlexDaniel but I think if these three are resolved, then we won't have any issues…
mst comment added to 1107 wrt the SQL SELECT thing 19:07
RabidGravy As a slightly tangential thing I started a thing a while back that is intended to test the SYNOPSIS in some POD, because that is a major cause of bug reports for my stuff :)
mst yes. what I was trying to make sense about, and will try to do so again in a minute, is to suggest better ways to achieve the same goal as 1106
but I need to get my thought process together 19:08
and try and produce an explanation that doesn't confuse everybody like my last attempt did
19:08 pierre_ left
toolforger comment added to #1106 to favor tangible advice over mere highlighting 19:11
skids wonders if order can change during GC promotion
19:11 wamba joined, espadrine joined
mst ok, so, what I was thinking is 19:11
where we have examples that show return values
if we make sure the return values are different orders in each example 19:12
toolforger would an order change confuse running iterators?
mst that might imply to people that the orders are going to be weird
am I making any sense here?
toolforger oh, there's the general question what happens to an iterator if the underlying collection is mutated
mst "shuffle the results in the examples" seems like a neat approach to me 19:13
toolforger is there anything official about that?
mst and maybe a bit more visceral than just words
toolforger problem is that result shuffling means manual editing instead of simple copy&paste
with the added risk of introducing typos 19:14
skids Reversing key/value mappings in a bag might work.
rafaschp "shuffle the results in the examples" We should shuffle the results in the implementation.
notviki heh
mst rafaschp: the trouble with that is that it tends to be a pessimisation
timotimo or maybe always have .sort in the examples?
toolforger Actually results shuffling might be a good idea
skids @a{@a.keys.sort} = @a{@a.keys.sort.reverse}
erm, damn, %
toolforger not for normal mode, but for test runs
rafaschp mst: I know, it's but a joke. 19:15
AlexDaniel I remember we were doing it for » but then suddenly stopped?
mst rafaschp: yeah, not really
what toolforger said is potentially totally sane
notviki I have an idea how to make myself productive....
19:15 notviki left
mst had been thinking about that earlier 19:15
AlexDaniel c: all <a b c d e f g h i>».say
mst a test module that randomises it
committable6 AlexDaniel, gist.github.com/3ec5be837a2f7d80f5...e1394bc331 19:16
skids So, having a CLI flag that pathologically shuffles everything that is unordered might not be a bad thing.
AlexDaniel yea, so what changed…
toolforger likes to be potentially sane :-D
rafaschp s/CLI flag/pragma/
mst pragma only works lexically
for test files you want to screw over -everybody-
timotimo yup 19:17
explode everything
rafaschp Would that appear in the docs?
19:17 jabowery left
AlexDaniel bisect: old=2015.07 <a b c d e f g h i>».say 19:17
toolforger If the pragma is being checked by all implementations?
bisectable6 AlexDaniel, Bisecting by output (old=2015.07 new=6188771) because on both starting points the exit code is 0
AlexDaniel, bisect log: gist.github.com/d4440b7e2dec7325ef...44dcdd3908
AlexDaniel, (2015-08-22) github.com/rakudo/rakudo/commit/a5...45458185fe
AlexDaniel c: a5193055^,a5193055 <a b c d e f g h i>».say
committable6 AlexDaniel, ¦«a5193055^»: i␤g␤e␤c␤a␤h␤f␤d␤b␤¦«a519305»: a␤b␤c␤d␤e␤f␤g␤h␤i
toolforger It would need to be a global flag 19:18
AlexDaniel soooo… why?
toolforger to be able to screw everybody
timotimo why did we stop randomizing hyper?
AlexDaniel yes
timotimo most probably performance
toolforger Yeah, you have to be smart about performance 19:19
AlexDaniel the comment tells nothing about it
rafaschp And then copy-paste the examples when using the flag, to show newbs that it can be lopsided.
toolforger Probably use a subclass to avoid performance issues
AlexDaniel I'll go file a rakudo ticket for this, just so that we have a documented decision on why it is this way
mst this is the annoying thing, having the implementation work in the way most likely to confuse newbies 19:20
is also almost always the fastest way for it to work
toolforger: don't you just love the real world
toolforger In Java land they use factories for that kind of performance issue, but it's complicating things hugely there; Perl might have better ways for switching in a different implementation
yeah, real world can be a real pain :-)
or really sweet 19:21
AlexDaniel well, in theory, we don't really have to shuffle it. Just process the first element as the last one and that's it, it's no longer in order
skids Any reason not to make that part of the debugger build?
toolforger though stable-within-the-VM order tends to be a net win
mst if the real world is 'really sweet' IME it usually means some &*$% put sugar in my coffee again
AlexDaniel and the rest is as sequential as it can be, so no performance issues
toolforger it's still an extra test 19:22
would that test be on the code path for every call?
BTW sort order problems came up pretty often in SymPy 19:23
they adressed that by xor-ing in a random seed into hash values
mst lots of perl5 test suites started failing after we added hash randomisation 19:24
toolforger the seed was logged in the output, and could be manually set via command line, so test results stayed repeatable as needed
otherwise, the random seed was initialized from timestamp
mst toolforger: heh. compare: metacpan.org/pod/Test2::Plugin::SRand
toolforger I think they monkey-patched the hashtable classes 19:25
rafaschp P5 does the same thing for security.
timotimo right, there's an attack that trashes performance by knowing/guessing what buckets values will end up in and giving many of those values
toolforger Test2::Plugin::SRand does the same thing for random numbers, yes 19:26
AlexDaniel wait, wasn't there a ticket for ».say ?
a doc one
timotimo yeah we wanted to make sure we never have >>.say in the docs
mst toolforger: I just thought it was interesting that roughly the same behaviour had been independently invented 19:27
skids
.oO(siphash)
19:28
toolforger mst, yeah it's a pretty repeating pattern. For SymPy (symbolic math in Python) it was that some algorithms turned out to critically depend on term order in inputs, but no test would detect that unless you actively shuffled terms 19:29
so it seems to be a recurring theme
and not just for randomized stuff 19:30
mst where possible, I sort() away such problems
rafaschp So, the answer is that we should xor salt wih the hashes in every run?
toolforger Actually that's what Java does, it does not have unordered collections
mst Moo (a lightweight perl6-style OO system in perl5) always populates attributes in dictionary order
toolforger I think the reasoning is that usually collections get sorted anyway
19:31 pyrimidine left, pyrimidine joined
toolforger unsorted collections just tend to get sorted multiple times during their lifetime 19:31
but of course that's just assumptions, YMMV
AlexDaniel ok, another ticket RT #130485 19:32
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130485
AlexDaniel ok, here is the old ticket for ».say github.com/perl6/doc/issues/960
tadzik ugexe: done :)
AlexDaniel timotimo: it's not just the docs, we want to clearly say that people should not do that 19:33
timotimo ah
good point
AlexDaniel anyway, does anybody have any other concerns regarding the order of things?
I can file more tickets if you tell me about the actual issues that could be solved 19:34
mst pokes github.com/perl6/doc/issues/1106
19:34 darutoko left 19:35 labster joined
toolforger I'm somewhat unsure about repeating the same mantra everywhere 19:36
it might make the point more clear
but it might confuse people if it's forgotten somewhere
mst oh, true
toolforger they'd start to be unsure whether the omission is intentional or not
AlexDaniel mst: we can do that, yea. Normally we want our examples to be runnable so that we can find broken examples automatically by comparing the actual output and the output in the docs, but there are many exceptions to that so it's cool.
mst AlexDaniel: I asked about comparing output earlier and nobody answered me :) 19:37
toolforger: there we go, apparently they do -mostly- work like doctests :)
(it was in the middle of my wall of text, mind, I'm not complaining)
AlexDaniel and we don't enforce that currently 19:38
toolforger I have a pretty fiendish idea: have a "doctest mode" that switches all unordered collections to ordered ones, and produce example output with that so all outputs will ge sorted
this makes doctest outputs easier to read for humans
19:38 nowan_ left
toolforger BUT as soon as people try the doctests at home, they will get different results and instantly be unsure that they can get repeatable order in their unordered collections 19:39
AlexDaniel I don't think these are supposed to be used by regular users, this is just to keep our docs right 19:40
toolforger people copy&paste example code when exploring stuff
19:41 nowan joined
AlexDaniel well, if it comes with “# order is NOT guaranteed” comment that I guess it's ok 19:41
then*
toolforger: anyway, thanks for bringing up the issue :) 19:43
toolforger :-)
AlexDaniel toolforger: it was a bit tough but I guess there's a clear way forward now 19:44
toolforger sorry for being tough myself
AlexDaniel toolforger: if you want to tackle this more, perhaps consider submitting a PR?
well, it was a problem on our end too 19:45
toolforger I'm just learning Perl, and I have too little insight into the ecosystem right now
19:45 Ven joined
toolforger Big thanks to mst for deescalation 19:46
rafaschp toolforger: I'm sorry I didn't understand your question, I assumed things I shouldn't have.
AlexDaniel toolforger: well, it's not so much about the ecosystem? I think you're the right person to document why the whole thing is a trap. But it's up to you, of course 19:48
toolforger ah, documentation is not a problem
I thought you were talking about implementing the shuffle and/or the sort-all modes 19:49
AlexDaniel and we can always start with something basic and then build upon
toolforger true
on it
give me a bit
AlexDaniel toolforger++
toolforger that's going to be ma 2nd accepted PR then - break out the confetti! 19:50
:-D
s/ma/my/
19:50 Ven left 19:58 petrutrimbitas joined 20:00 wamba1 joined 20:01 wamba left 20:02 bjz joined 20:09 pierre_ joined 20:14 pierre_ left 20:16 rafaschp left, hankache joined 20:19 cibs left 20:20 cibs joined 20:21 TEttinger joined, dugword left 20:22 pyrimidine left 20:23 pyrimidine joined
dalek osystem/MARTIMM-patch-1: 0b910d1 | (Marcel Timmerman)++ | META.list:
Tinky::Hash as an extension on Tinky
20:26
osystem: 0b910d1 | (Marcel Timmerman)++ | META.list:
Tinky::Hash as an extension on Tinky
20:27
osystem: 18f69bd | (Marcel Timmerman)++ | META.list:
Merge pull request #277 from perl6/MARTIMM-patch-1

Tinky::Hash as an extension on Tinky
20:28 kjs_ joined 20:31 cibs left 20:32 Tonik left, cibs joined 20:33 sufrostico joined, pierre_ joined 20:38 cdg_ left 20:40 cdg joined
dalek osystem: 04dd61b | (Alexey Melezhik)++ | META.list:
Update META.list

Sparrowdo module to manage Ruby gems via Ruby bundler.
20:40
osystem: 3500bcb | RabidGravy++ | META.list:
Merge branch 'master' into master
osystem: 51d7cbe | RabidGravy++ | META.list:
Merge pull request #278 from melezhik/master

Add Sparrowdo::Ruby::Bundler to ecosystem
20:42 kjs_ left 20:44 cdg left
RabidGravy all groovy, surprised that doesn't happen more often (merge conflicts on the META.list) 20:45
20:45 sufrostico left
RabidGravy Also MARTIMM++ # most groovy, I was thinking of doing that myself :) 20:46
20:47 kjs_ joined 20:49 zakharyas joined
stmuk w00t! FOSDEM train tickets! 2 EU Belgium beers + Perl 20:49
20:53 sjohnsen joined
RabidGravy rarr! 20:53
21:00 sjohnsen left, Ven joined 21:01 sjohnsen joined
DrForr I need to arrange my time off. 21:02
masak while we're on the subject of macros (as we were earlier today):
I have an open grant for bringing macros to Rakudo
I got it to the halfway point, and I feel pretty pleased with the correspondence between the grant and the work done on that part 21:03
but then my re-thinking and the blog post I linked to made the second half of the grant largely moot 21:04
and I can tell empirically that my time for non-$work things isn't as realiable as it used to be before I became a parent 21:05
21:05 Gasher left, Gasher joined
masak I guess I should at some point have a small chat with my grant manager, pmichaud ;) 21:06
anyway, that's the lay of the land. as you all know, I'm still very eager to bring macros to Perl 6 and to Rakudo
the 007 experiment has been fantastic in mapping out what needs doing 21:07
DrForr I'm looking forward to testing them :)
lizmat
.oO( is that newspeak? "realiable" :-)
21:08
21:08 sjohnsen left
masak no, it's just me being a klutz with the keyboard :P 21:09
r-e-l-i-a-b-l-e
21:09 setty1 joined, hankache left 21:10 hankache joined 21:15 Ven left 21:18 bjz left 21:21 Ven joined 21:27 rindolf left 21:28 Ven left 21:31 petrutrimbitas left, shayan_ left
geekosaur hides under a rock during the mailstorm... 21:34
21:35 Ven joined 21:36 ilmari left, ufobat joined
ufobat what would be the right way to say that a variable my $foo should by of the type of a role Foo? 21:38
my Foo $foo?
m: role Foo {method n{...}}; class Bar does Foo {method n{"n"}}; my Foo @a = (); @a.push: Bar.new; say @a[0].n 21:40
camelia rakudo-moar 618877: OUTPUT«n␤»
ufobat m: role Foo {method n{...}}; class Bar does Foo {method n{"n"}}; my Foo @a = (); say @a[0].n
camelia rakudo-moar 618877: OUTPUT«Method 'n' must be implemented by Foo because it is required by roles: Foo.␤ in any compose_method_table at gen/moar/Metamodel.nqp line 2832␤ in any apply at gen/moar/Metamodel.nqp line 2843␤ in any compose at gen/moar/Metamodel.nqp line 3015␤ …»
dalek href="https://perl6.org:">perl6.org: fed5600 | (Tom Browder)++ | source/whatever/index.html:
change link

reword text
toolforger New PR: github.com/perl6/doc/pull/1109 - could probably use some feedback before merging it 21:41
ufobat m: role Foo {method n{...}}; class Bar does Foo {method n{"n"}}; my @a = (); say @a[0].n
camelia rakudo-moar 618877: OUTPUT«No such method 'n' for invocant of type 'Any'␤ in block <unit> at <tmp> line 1␤␤»
toolforger it's about the unordered-collections traps we discussed earlier
21:42 dugword joined 21:43 kjs_ left, kjs_ joined 21:44 dalek left 21:45 bjz joined, dalek joined, ChanServ sets mode: +v dalek 21:46 pierre__ joined 21:47 kjs_ left 21:49 pierre_ left
rightfold Is gather/take safe to use with parallelism? 21:52
dalek href="https://perl6.org:">perl6.org: 5cf3628 | (Tom Browder)++ | source/whatever/index.html:
fix typo
21:54
21:54 troys_ is now known as troys 21:55 hartenfels left 21:58 pecastro joined 21:59 bjz left
RabidGravy toodles! 22:01
dalek href="https://perl6.org:">perl6.org: 8660918 | (Tom Browder)++ | source/whatever/index.html:
change emphasis
dugword In the Perl6 core modules, where does "nqp" get defined? I.e. in IO::Socket::INET there is a call to `nqp::socket`. Where does that live? 22:02
22:02 hankache left
toolforger I dimly recall it's a special namespace that exposes various internals 22:03
RabidGravy it's an nqp operator defined in er NQP
AlexDaniel samcv: here?
22:05 toolforger left 22:06 petrutrimbitas joined
dalek href="https://perl6.org:">perl6.org: d9f8f1c | (Tom Browder)++ | source/whatever/index.html:
add comma
22:06
22:06 pierre__ left 22:08 RabidGravy left 22:09 Ven left
skids rightfold: you could do Supply.from-list(gather { }) as an event source, or, if you want multiple workers in a block-on-receive, you'd have to figure out how to get it into a Channel instead. 22:11
22:11 bronco_creek joined
skids I don't think you can just pull from a Seq from multiple threads. 22:11
dugword I was after the socket operator, the details I was looking for are in the MoarVM repo. Thanks 22:12
bronco_creek I'm having panda problems on mac OS X. Module installs always fail with "Failed cloning git repository" Any suggestions?
yoleaux 6 Aug 2016 01:01Z <b2gills> bronco_creek: Windows has always accepted both kinds of slashes, it's only some programs that have a problem with forward slashes.
bronco_creek b2gills: ? 22:14
b2gills That was a response to your last message. C:\Windows C:/Windows both work natively in Windows ( and has worked that way since directories were added in DOS 2.0 ) 22:16
22:17 Tonik joined
dugword Did it use to work bronco_creek? File permissions perhaps? I've seen similar problems with cpanm and npm where if you install a module once with sudo/root it changes the ownership of key files. chown -R `whoami`:staff ./perl6 22:17
~/.perl6 rather 22:18
22:18 zakharyas left, skids left 22:24 kurahaupo__ left
dugword bronco_creek: There is also zef as an alternative to panda 22:25
AlexDaniel .tell samcv perhaps you can take a look at #130419 ? I wonder what you think.
synopsebot6 Link: rt.perl.org/rt3//Public/Bug/Displa...?id=130419
yoleaux AlexDaniel: I'll pass your message to samcv.
22:25 kurahaupo__ joined 22:26 ccakes left
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2017/01/02/...rime-time/ 22:27
22:30 Wanderer68 left
AlexDaniel \o/ 22:30
lizmat++
kalkin- I think i found a bug in zef. If you use the perl6-tester and run zef test on Perl6::Parser it will hang on this test t/11-package-declarator.t
22:32 troys is now known as troys_, notviki joined, shayan_ joined
notviki dugword: NQP is a compiler toolkit. You can get some docs at github.com/perl6/nqp/blob/master/d...s.markdown github.com/perl6/nqp/blob/master/d...t.markdown and there's also an internals course: edumentab.github.io/rakudo-and-nqp-...ls-course/ 22:33
22:34 ccakes joined
dugword Nice, that internals course looks magical 22:36
22:40 shayan_ left, troys_ is now known as troys 22:43 petrutrimbitas left 22:44 TEttinger left 22:46 TEttinger joined 22:50 awwaiid joined
dalek href="https://perl6.org:">perl6.org: 3e85dac | (Tom Browder)++ | source/resources/index.html:
add a section on Perl 6 books
22:58
href="https://perl6.org:">perl6.org: ca2d0d1 | (Tom Browder)++ | source/resources/index.html:
Merge pull request #63 from tbrowder/add-books

add a section on Perl 6 books
AlexDaniel oh. The first one was corrected to 6.c, good. 22:59
23:00 troys left
bronco_creek dugwood: turns out that, after my upgrade to sierra, I needed to run 'xcode-select --install' from the command line to fix communications with git. I wonder if other p6ers have run into this. 23:02
dugword crazy, I'm on a mac and didn't have that issue. 23:06
Did you have to agree to new terms or something? I've seen something similar with xcode 23:07
23:08 Gasher left 23:10 labster left 23:11 labster joined, cibs left
dalek href="https://perl6.org:">perl6.org: a5b6bc1 | (Tom Browder)++ | source/resources/index.html:
shorten section title
23:13
href="https://perl6.org:">perl6.org: 0348e41 | (Tom Browder)++ | /:
Merge branch 'master' of github.com/perl6/perl6.org into add-books

Correcttion
href="https://perl6.org:">perl6.org: 4eb3fc2 | (Tom Browder)++ | source/resources/index.html:
Merge pull request #64 from tbrowder/add-books

Add books
23:13 cibs joined
23:13 rpburkholder left 23:14 labster left
bronco_creek dugwood: yes, had to agree to install new developer tools 23:14
23:15 labster joined 23:18 bstamour joined
tbrowder um, i need some help from an expert on the change i made to perl6.org/resources/index.html 23:19
yoleaux 17:23Z <ugexe> tbrowder: stmuk is heading that. afaik he has it working so it should be in the next release or so
notviki tbrowder: what is it?
tbrowder i added a section on books to the last row on the resources page, but the section title is blue while all the others are black and i cannot see why 23:20
ugexe: thanks! 23:21
dalek href="https://perl6.org:">perl6.org: 2c014ca | (Zoffix Znet)++ | source/resources/index.html:
Fix unclosed <a>
23:22
notviki tbrowder: ^ that should fix it
tbrowder thanks, notviki--i knew i should have checked with xmllint but what could go wrong...NOT 23:26
BTW, i thought you would morph away with the new year! 23:27
23:33 bronco_creek left, pmurias left 23:36 lukaramu left 23:47 kurahaupo__ left 23:49 rpburkholder joined 23:54 espadrine left 23:55 kybr joined 23:56 wamba1 left 23:57 skids joined 23:59 Tonik left