»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
Util r: sub g (*@n) { my @z = grep *.Int.is-prime, ((9,7,3,1) X~ @n); }; say 7.&g.&g.[0].perl; 00:07
camelia rakudo f86a1a: OUTPUT«"997"␤»
Util r: sub g (*@n) { grep *.Int.is-prime, ((9,7,3,1) X~ @n); }; say 7.&g.&g.[0].perl;
camelia rakudo f86a1a: OUTPUT«Nil␤»
Util Why is the assignment to @z needed? 00:08
00:08 pmurias left, risou is now known as risou_awy, BenGoldberg left
diakopter Util: over-eager optimization? :) 00:09
Util diakopter: Hmmm. Perhaps. Looking at the code, do you think that the assignment *should* be able to be left out? 00:10
diakopter r: sub g (*@n) { [grep *.Int.is-prime, ((9,7,3,1) X~ @n)] }; say 7.&g.&g.[0].perl; 00:11
camelia rakudo f86a1a: OUTPUT«Cannot convert string to number: trailing characters after number in '997⏏ 37 17' (indicated by ⏏)␤ in method Int at src/gen/CORE.setting:12017␤ in method Int at src/gen/CORE.setting:5627␤ in sub g at /tmp/FKN26RfGSC:1␤ in block at /tmp/FKN26RfGSC:1␤␤…»
diakopter I can't win
00:12 xenoterracide left, Psyche^_ joined, fridim__ joined
Util diakopter: Thanks for trying. It is of little consequence at the moment; I have the workaround :) 00:14
00:16 Psyche^ left
diakopter r: sub g (*@n) { my @a = grep({ say $^a; $^a.Int.is-prime}, ((9,7,3,1) X~ @n)) }; say 7.&g.&g.[0].perl; 00:18
camelia rakudo f86a1a: OUTPUT«97␤77␤37␤17␤997␤937␤917␤797␤737␤717␤397␤337␤317␤197␤137␤117␤"997"␤»
diakopter r: sub g (*@n) { grep({ say $^a; $^a.Int.is-prime}, ((9,7,3,1) X~ @n)) }; say 7.&g.&g.[0].perl;
camelia rakudo f86a1a: OUTPUT«97␤77␤37␤17␤Nil␤»
diakopter n: sub g (*@n) { my @a = grep({ say $^a; $^a.Int.is-prime}, ((9,7,3,1) X~ @n)) }; say 7.&g.&g.[0].perl; 00:19
camelia niecza v24-95-ga6d4c5f: OUTPUT«Potential difficulties:␤ @a is declared but not used at /tmp/gCMbFieXFt line 1:␤------> sub g (*@n) { my ⏏@a = grep({ say $^a; $^a.Int.is-prime}, ␤␤97␤77␤37␤17␤997␤937␤917␤797␤737␤717␤397␤337␤317␤197␤137␤117␤"997"␤…»
diakopter n: sub g (*@n) { grep({ say $^a; $^a.Int.is-prime}, ((9,7,3,1) X~ @n)) }; say 7.&g.&g.[0].perl;
camelia niecza v24-95-ga6d4c5f: OUTPUT«97␤77␤37␤17␤997␤937␤917␤797␤737␤717␤397␤337␤317␤197␤137␤117␤"997"␤»
diakopter rakudobug of some sort
I'd wager
00:28 Mouq joined
timotimo what's the magic document i have to put in to turn "timotimo" in the release announcement into "Timo Paulssen"? ;) 00:35
Mouq \.tell masak? :) 00:36
00:38 wsri joined 00:45 risou_awy is now known as risou 00:46 risou is now known as risou_awy 00:49 BenGoldberg joined 00:51 krokite joined 00:54 jnap left 00:55 jnap joined 00:57 risou_awy is now known as risou 01:03 zwut00 left 01:04 DarthGandalf left
timotimo anyway, congrats on the succesful release 01:06
01:10 denysonique left 01:19 _sri joined 01:20 berekuk left
BenGoldberg Does parrot use LibTomMath for our Int type? 01:32
(Or at least, Rakudo on Parrot)?
01:33 berekuk joined
diakopter BenGoldberg: I think so 01:33
BenGoldberg I was looking a the code for LibTomMath's stringification, and noticed something fairly silly 01:34
When converting a number to base 10, for example, it repeatedly divides by 10, using the remainder of each division as an output digit.
Division is of course slow (in general; not just LTM) 01:35
01:35 berekuk left
BenGoldberg The *faster* way to convert to base 10 is to convert to base 10000 (using big number divisions), then use C builtin % and / to convert each base 10000 digit into four base 10 digits. 01:37
diakopter how sure are you? :) 01:38
BenGoldberg If I can replace four big number division with a single big number division... very sure :)
The number of big number division we can avoid depends on what we can fit into a bn_digit 01:39
01:41 jnap left
BenGoldberg If bn_digit is 16 bits, then we can reduce the number of big number divides by a factor of 4. If bn_digit is 32 bits, then we can reduce the number of big number divides by a factor of 8 (or 9?) 01:41
01:43 risou is now known as risou_awy
diakopter curious, moarvm is collecting 600,000 objects during global destruction 01:43
(after allocating 100,000 in each of 4 threads.. and doing 9 gc runs.. and the whole process is still taking only 100ms) 01:47
01:48 risou_awy is now known as risou
diakopter curious... oh. 01:49
heh.
01:49 benabik joined
lue diakopter: ww? 02:03
02:08 d^_^b left, d^_^b joined, EvanTeitelman left
BenGoldberg Here's a bit of (untested) code with the speedup I mentioned: codepad.org/BG7s5gqJ 02:11
D'oh... don't read that code, I just realized it's got a really silly bug in it. 02:12
(fixing...)
Ok, codepad.org/0BaJ94Aj should be better 02:19
Err, still wrong, since I made a silly assumption about how many bits libtommath uses (when it's got 32 bit ints, it uses 28 bits! So I've got to look at DIGIT_BIT to get this right)... fixing 02:22
02:26 jnap joined, jnap left 02:34 risou is now known as risou_awy 02:40 risou_awy is now known as risou 02:47 Mouq left
BenGoldberg Ok, this time for sure ;) ... codepad.org/7OZhuiT1 02:50
This time, the first occasion a big int is stringified, it will calculate the largest power of ten that is smaller than MP_DIGIT_MAX. 02:52
It is still, of course, untested, but even so, you should be able to get the idea of what it's doing 02:55
JimmyZ It'd be better to submit a pull request and add an performance test/result comment there :P
BenGoldberg How do I do that? 02:56
JimmyZ and an request to github.com/libtom/libtommath also ? 02:58
BenGoldberg: help.github.com/articles/creating-...ll-request 02:59
03:01 araujo left
BenGoldberg is reading.... :) 03:01
03:02 risou is now known as risou_awy 03:04 preflex_ joined, ChanServ sets mode: +v preflex_, preflex left 03:05 preflex_ is now known as preflex
BenGoldberg Does parrot use it's own branch of libtommath, or should I make a branch from github/libtom/libtommath ? 03:05
diakopter I don't understand the question 03:06
BenGoldberg According to the creating-a-pull-request help doc, the first thing I have to do is make my own branch of the repository 03:08
JimmyZ BenGoldberg: parrot doesn't use, nqp use 03:09
BenGoldberg: Just try it :P 03:10
BenGoldberg So I should make a branch from github.com/libtom/libtommath ? 03:11
03:11 denysonique joined
JimmyZ BenGoldberg: you open a file like github.com/joyent/libuv/blob/master/src/inet.c, you will see "Edit", just click it 03:14
03:27 denysonique left 03:32 fridim__ left 03:34 [Sno] left 03:36 benabik left 03:50 perigrin joined 04:01 preflex left 04:02 preflex joined, ChanServ sets mode: +v preflex, SmokeMachine joined 04:03 risou_awy is now known as risou 04:24 SamuraiJack_ joined 04:36 cjwelborn left 05:01 risou is now known as risou_awy 05:07 risou_awy is now known as risou 05:15 DarthGandalf joined
BenGoldberg .tell JimmyZ Thank you very much! :) 05:17
yoleaux BenGoldberg: I'll pass your message to JimmyZ.
BenGoldberg .tell JimmyZ Here's the result of branching and making a pull request: github.com/BenGoldberg1/libtommath...17bdf8c31a
yoleaux BenGoldberg: I'll pass your message to JimmyZ.
BenGoldberg g'night now 05:18
05:18 atroxaper joined 05:19 sizz_ left, sizz joined
diakopter BenGoldberg: "I have not tested or benchmarked this code, but I know that the basic idea is sound." 05:21
that's unlikely to instill much confidence in someone who's considering pulling your pull request to try it for themselves
05:22 BenGoldberg left 05:25 denysonique joined
TimToady n: sub g (*@n) { grep *.Int.is-prime, ((9,7,3,1) X~ @n); }; say 7.&g.&g.[0].perl; 05:40
camelia niecza v24-95-ga6d4c5f: OUTPUT«"997"␤»
05:49 benabik joined
TimToady r: sub g (*@n) { grep *.Int.is-prime, ((9,7,3,1) X~ @n); }; say 7.&g.&g.[0].perl; 05:49
camelia rakudo f86a1a: OUTPUT«Nil␤»
TimToady r: sub g (*@n) { return grep *.Int.is-prime, ((9,7,3,1) X~ @n); }; say 7.&g.&g.[0].perl;
camelia rakudo f86a1a: OUTPUT«Nil␤»
TimToady r: sub g (*@n) { @(grep *.Int.is-prime, ((9,7,3,1) X~ @n)); }; say 7.&g.&g.[0].perl; 05:50
camelia rakudo f86a1a: OUTPUT«Nil␤»
diakopter TimToady: I tried list() too 05:52
TimToady r: sub g (*@n) { eager grep *.Int.is-prime, ((9,7,3,1) X~ @n); }; say 7.&g.&g.[0].perl;
camelia rakudo f86a1a: OUTPUT«"997"␤»
TimToady I guess it's just too darn lazy :) 05:53
r: sub g (@n) { grep *.Int.is-prime, ((9,7,3,1) X~ @n); }; say 7.&g.&g.[0].perl; 05:54
camelia rakudo f86a1a: OUTPUT«Nominal type check failed for parameter '@n'; expected Positional but got Int instead␤ in sub g at /tmp/OKtMuYguKY:1␤ in block at /tmp/OKtMuYguKY:1␤␤»
TimToady r: sub g (@n) { grep *.Int.is-prime, ((9,7,3,1) X~ @n); }; say [7].&g.&g.[0].perl;
camelia rakudo f86a1a: OUTPUT«Nil␤»
TimToady r: sub g (@n) { [grep *.Int.is-prime, ((9,7,3,1) X~ @n)]; }; say [7].&g.&g.[0].perl; 05:55
camelia rakudo f86a1a: OUTPUT«"997"␤»
diakopter hey, I tried that
but it didn'tn work then
05:55 [Sno] joined
diakopter oh. [7] 05:55
TimToady and no slurpy 05:56
but yeah, probably a bug since niecza handles it fine 05:57
06:06 rindolf joined
sjohnson TimToady: hi, looks like a late night for you! 06:11
06:11 risou is now known as risou_awy
sjohnson (either that or I've hit PgUp too many times..) 06:11
06:11 rindolf left 06:14 varna joined 06:18 risou_awy is now known as risou
corecatcher good morning 06:18
diakopter corecatcher: hi
corecatcher the tutorial slides from last weekend are great, thanks for sharing 06:21
mberends timotimo: I think your git user friendly name goes in ~/.gitconfig 06:27
TimToady sjohnson: eh, it's not even tomorrow yet 06:31
TimToady doesn't usually collapse until about midnight
sjohnson TimToady: I like this line of thinking. actually, I only mentioned it because I should also be in bed soon, and I wanted to project the blame on someone!
sjohnson is guilty 06:32
I got busted, in front of exactly 200 perl 6 irc subscribes. How will I tell this to my family & friends...
TimToady just mention it in your will 06:33
06:34 xinming left 06:36 xinming joined 06:56 atroxaper left, dmol joined 06:58 FROGGS joined 06:59 atroxaper joined 07:01 risou is now known as risou_awy 07:03 sorear left 07:05 risou_awy is now known as risou 07:13 iSlug joined
hoelzro good morning #perl6 07:15
07:18 sqirrel joined, kaleem joined 07:22 zakharyas joined 07:24 jimmy_ joined 07:27 jimmy_ left 07:33 daxim joined 07:39 dmol left 07:42 dmol joined 07:45 dmol left 07:48 donaldh joined 07:49 risou is now known as risou_awy 07:56 risou_awy is now known as risou
FROGGS morning hoelzro 07:57
hoelzro morgen FROGGS
08:01 fhelmberger joined 08:23 domidumont joined 08:24 stevan__ joined 08:26 stevan_ left 08:30 trnh joined
tadzik heh. At a conference I'm on, people next to me just said "have you ever met a compiler engineer? They're not really normal people" :D 08:37
mberends :D 08:39
hoelzro heh 08:42
cosimo tadzik: where are you? 08:46
08:46 risou is now known as risou_awy
tadzik cosimo: onGameStart 2013 08:47
it's mostly about HTML5, JS and games
completely different world 08:48
folks say things like "wow, JS must be the first language ever in which you can do EVERYTHING"
(regarding Nyan Cat built in JS source code which animated itself)
hoelzro waits for a JS OS 08:49
nwc10 yes, the interrupt handlers are going to be something to behold 08:50
mberends is trying to port the RaNIW exercises to JSish
cosimo tadzik: programming is like fashion, someone said 08:51
tadzik cosimo: in a way that creators of it look weird? :)
08:52 daxim left, daxim_ joined
cosimo tadzik: in the way old things are forgotten, and come back as "new" all the time in cycles 08:54
08:55 sorear joined 08:56 JimmyZ left, JimmyZ joined 08:57 genehack left 08:58 genehack joined
tadzik oh yes 08:59
the "write once, run everywhere" mantr 09:00
a
even here, people say "you remember what java said 10 years ago? HTML5 says the same and it's just as false" :)
and it's hilarous when you look at it from a perspective 09:01
for instance, "we choose HTML5 so we can write once, run everywhere, and all the platforms"
huf it's also funny when all that knowledge and experience we have about windowing toolkits has gone out the window as soon as we come to html5... 09:02
tadzik few slides later, few minutes later: "we abandoned the idea of an iOS port, because it was too time-consuming, and we just settled for android"
just wait until someone implements gtk/qt/whatever in html5
huf tadzik: also, you know how it's not cool to make your own GUI app wildly different from whatever the desktop theme looks/feels like? 09:03
tadzik istr gnome people already did that
huf: oh yes I do
huf why dont webdesigners know that? :)
i'd *love* it if all websites looked exactly the same
tadzik well, I don't see at as a problem
I do treat web as an entirely different beast
huf i treat it as two beasts 09:04
09:04 iSlug left
tadzik I hate it when a webapp tries to look like a desktop app 09:04
huf one displays hyperlinked pages, that's the old web (the part that works well)
tadzik because it always fails miserably in the attempt
huf and there's the webapp world, which ... ugh
tadzik for example, new JIRA thinks it's funny to pop-up a window to enter a bug resolution comment
huf tadzik: didnt mean look like a desktop app. just look like each other, a common look&feel
tadzik it looks like a window, but you can't move it
I sometimes move it around with javascript console
huf ah yes, overlays 09:05
tadzik huf: isn't that what HTML was supposed to be about?
so everyone can have their own CSS and make websites look as one wants to
shame that it never happened
huf well yes.
tadzik because everyone wanted to look distinct
huf pixelpushers :)
also that
tadzik now they're emulating desktop on web
and they will end up adjusting to users preferences 09:06
finally! :D
huf :)
tadzik (or so I hope
)
huf yes, but with +1million loc
and it'll be buggier and slower and contain more xml, you know that :)
tadzik I hope I'll never need to care
huf i should get out of webby bs :)
or at least make _websites_, not webapps :)
tadzik heh 09:07
masak good antenoon, #perl6 09:09
timotimo: [backlog] you're probably looking for the user.name config option in ~/.gitconfig 09:11
oh, mberends++ already replied that. 09:13
<tadzik> folks say things like "wow, JS must be the first language ever in which you can do EVERYTHING 09:14
I dub this feature of a language... "Nyan Cat completeness"
tadzik: hm, I don't understand the complaint about CSS. in my book, the CSS dream of ultimate styling freedom came true. 09:17
with maybe two caveats.
(1) people don't use it much. it's fairly restricted to power users. but it's there. 09:18
(2) some aspects of CSS are *insane*, such as the float semantics, which is probably the prime cause of human suffering in the web dev world. the cause seems to be de-facto standardization. 09:19
huf i'd say the "width isnt width" thing with the boxmodel is delicious too :) 09:20
daxim_ float is only so widely used becaused display:table-* don't work in ie6
09:26 sqirrel left, domidumont left
tadzik masak: well, I guess I sort of expected to have "one stylesheet to style them all" 09:26
as in, "I want them all to be yellow on black"
which never quite works in the general case, in my experience 09:27
FROGGS that would be like having a perl compiler that compiles your program like I want to have it
masak tadzik: I find it interesting that *all three* of CSS, JS, and HTML have gotten successful "wrapper" languages recently. 09:28
tadzik: I think something like SCSS or LESS addresses what you want.
09:30 sqirrel joined
tadzik FROGGS: I don't think so. I see it more like reindenting someone else's code with my own .perltidyrc 09:31
FROGGS but but... yellow on black?! 09:32
tadzik I love that!
on grey, more like, but yeah
masak: I'll look at those 09:33
daxim_ search.cpan.org/dist/CSS-LESS/ freshly released 09:42
09:48 SHODAN joined 09:54 ssutch left 09:55 denis_boyun joined, domidumont joined
masak hypothetically... what would it take for 'perl Configure.pl' to be replaced by something non-p5? 09:55
I'm not suggesting we do this, and definitely not now.
but as part of dog-fooding, it's an interesting "what if" to think about. 09:56
there are inherent bootstrapping problems in replacing it with a p6 script.
09:57 dmol joined
nwc10 masak: you'd either need to find a way to translate it to something that runs natively on the platform 09:57
(so a shell script on Unix, a batch file (or better) on Win32, DCL on VMS when you get there)
masak I guess that's doable. 09:58
nwc10 or, potentially, more interesting, convert it to a C program
masak yeah.
masak looks at Configure.pl
nwc10 or, thirdly, try to go for a minimal MoarMV config that builds on ANSI C plus "not much"
tadzik do we have a dependency on a C compiler when running on JVM?
nwc10 and ship bytecode that runs atop that
and bytecode that runs atop JVM
tadzik: good point 09:59
I think it's more "how do you bootstrap the VM" and then ship prebuilt "binaries" for each VM
masak how about implementing it... in NQP?
nwc10 yes, that should work. 10:00
masak that suddenly strikes me as the "platform-independent" option.
because you need the NQP dependency anyway.
I'm glad we had this talk :)
nwc10 it pushes the problem one level lower
how does NQP re-write its Configure.pl
masak that's a later problem.
NQP needs binaries to bootstrap anyway.
nwc10 which I think in turn is "compile it to the native language for each VM targeted"
masak so it's not even really a problem. 10:01
just run the NQP's Configure with stage0 :)
nwc10 at which point seems that you push most of Configure.pl into Configure.nqp
with a wrapper (or wrappers) to get you to NQP
JimmyZ o.O(replace Configure.pl by lua script with a mini lua)
yeah, there is minilua.c file in lua 10:03
masak lunch & 10:15
10:15 pmurias joined
pmurias hi 10:15
10:17 denis_boyun left 10:18 varna left 10:19 pernatiy left 10:21 darutoko joined
darutoko is there a CPAN for perl6? 10:23
pmurias there is modules.perl6.org 10:24
nwc10 the P in CPAN is Perl, not Perl 5. But I don't think that many people are uploading Perl 6 code to it 10:25
(yet)
PAUSE is definately only Perl 5 currently. But PAUSE != CPAN
er, the PAUSE uploader is the (easy) gateway to CPAN. The PAUSE index is what I meant by "Perl 5"
darutoko I mean CPAM module 10:27
nwc10 aha, an installer 10:29
I think it's "panda", but someone else will hopefully answer better
darutoko thank you 10:30
another question, is there a module like LWP::UserAgent?
nwc10 that I don't know. Hopefully someone else does 10:31
10:34 mathw_ is now known as mathw
FROGGS I can only see LWP::Simple, but this could be a good pattern to port LWP from Perl 5 over to Perl 6 10:35
JimmyZ or use v5 in v6
FROGGS nah, this will take a while to do that right 10:36
10:38 domidumont left
darutoko can you help me to install Panda? 10:38
10:39 domidumont joined
darutoko docs says to test: You will need a recent TAP::Harness (3.x) 10:39
I don't see this module in modules.perl6.org
FROGGS darutoko: can you point me to the docs that say that? 10:40
darutoko FROGGS, github.com/tadzik/panda/#running-tests 10:41
dalek p: 87be08f | (Tobias Leich)++ | src/vm/parrot/ops/nqp_bigint.ops:
s/mp_toradix_n/mp_toradix/, (Ben Goldberg)++
FROGGS ahh
pmurias darutoko: I suppose it needs the perl5 TAP::Harness
FROGGS darutoko: pmurias is right
it is just about having a prove binary, which comes from Perl 5 10:42
darutoko oh
ok, thank you
10:46 trnh left 10:52 atroxaper left
darutoko agh 10:55
test failed :(
tadzik which test?
darutoko all exept 1
10:55 donaldh left
darutoko paste.org.ru/?r9cyrs 10:56
tadzik oh my
what rakudo version is that?
darutoko This is perl6 version 2013.05 built on parrot 5.3.0 revision 0
tadzik is there an easy way to update it on your box? 10:57
panda usually targets the latest compiler releaes
darutoko shure
tadzik aweosme
darutoko it my desctop :)
*desktop
tadzik I should add git tags to panda, so on 2013.05 you can checkout panda 2013.05
darutoko damn there is no .msi for 08 10:58
tadzik ouch 10:59
06, maybe? 11:00
I think I introduced these changes around june
darutoko rakudo.org/downloads/star/
tadzik or maybe try checking out aa8e2283c83c6041e535ae342d573d5e46c56ad7 in panda
darutoko 2013.05 and 2013.08
tadzik that should work on 2013.05
11:01 denis_boyun joined
darutoko ok 11:01
tadzik star is not release every month
darutoko so it is no point to even try p6 on windows? 11:02
11:07 berekuk joined
tadzik why not? 11:09
what I mean is, while the compiler has monthly releases, Star doesn't
darutoko so many problems and I even didn't start anything to do 11:10
tadzik btw, if you installed Star, panda is already there
the point of star is shipping usable modules with it
lunch &
darutoko damn, you right :) 11:11
11:11 sqirrel left
tadzik actually, not lunch :) 11:13
darutoko agh, it wants git 11:15
screw it
tadzik :( 11:19
yeah, it uses git to fetch stuff
you can download them manually and install them from directories too
darutoko I hate make on windows 11:20
lizmat good *, #perl6! 11:23
colomon \o
tadzik darutoko: what can I do to make panda more usable for you? 11:24
lizmat too bad all of my Set/Bag work didn't make it to the release announcement
:-)
darutoko tadzik, its not you, its all together 11:25
lizmat continues on getting [] and {} method to sub migration 11:26
darutoko tadzik, I'll try it later on virtual machine with Ubuntu
thank you
tadzik I mean the general stuff, like "don't rely on git"
anything, really
lizmat it turns out that the current adverb implementation assumes the silent absorption of unused named parameetrs 11:27
need to refactor this greatly now :-(
but in the end, it should mean faster [] and {} access
tadzik I wonder if we could set up small VMs for people to try out perl 6 11:28
mberends good idea, as long as there is server space and bandwidth for the downloads 11:29
darutoko you can put it on torrent 11:30
like piratebay
mberends I'd be happy to help build and maintain some VirtualBox images
11:36 pernatiy joined 11:37 sqirrel joined 12:04 iSlug joined
lizmat just realises that the [] and {} adverb handling is now identical, save for the "at_key" and "at_pos" naming 12:04
hoelzro if one wanted to add a keyword to Perl 6 (ex. binary_grammar MyGrammar { ... }), would that require the use of a slang? 12:05
or is there another way to go about it?
12:06 risou_awy is now known as risou
lizmat do you want that keyword to be available everywhere at all time, or just in a lexical context ? 12:06
hoelzro lexical 12:07
I had a (few) cool idea(s)
lizmat wouldn't that just be a infix:<binary_grammar> ? 12:11
*prefix
timotimo i don't think so 12:12
FROGGS it is not a prefix 12:14
hoelzro: you want to create a knowhow I think, look at the RaNIW material 12:15
hoelzro FROGGS: I figured it would take a knowhow, but I didn't know if knowhows automatically created new keywords for their definition
timotimo i think they do 12:16
hoelzro sweet 12:17
lizmat wonders how much would break if at_key and at_pos would be renamed to "at" 12:19
FROGGS hoelzro: in the exercises page 14 and 15 12:21
hoelzro nice
thanks!
FROGGS and in the book thingy section 6model
you would have to create a statement:<binary_grammar> I think 12:22
like there is a statement:sym<grammar>
hoelzro FROGGS: but that requires modifying the Perl 6 grammar itself, doesn't it? 12:23
timotimo finally i have a big teacup. now i can take over the world^Wday 12:28
12:28 darutoko left
hoelzro ugh 12:29
FROGGS hoelzro: no, you could declare it lexically, but you would have to mix-in the action method also
hoelzro rhetorical question #1: why does the Linux OOM killer suck so hard?
timotimo huh, that's hard :o
hoelzro rhetorical question #2: why does Parrot use all my memory?
FROGGS r: multi statement:<hurz>() { }; hurz A { } 12:30
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/A2Nxca2XFP␤Cannot add tokens of category 'statement'␤at /tmp/A2Nxca2XFP:1␤------> multi statement:<hurz>⏏() { }; hurz A { }␤ expecting any of:␤ colon pair␤ quote word…»
FROGGS :/
r: multi package_declarator:<hurz>() { }; hurz A { }
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/cU1DfZJi7x␤Cannot add tokens of category 'package_declarator'␤at /tmp/cU1DfZJi7x:1␤------> multi package_declarator:<hurz>⏏() { }; hurz A { }␤ expecting any of:␤ colon pair␤ …»
FROGGS r: multi package_declarator:<hurz> { }; hurz A { } 12:31
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/i7AEUxpdf5␤Cannot add tokens of category 'package_declarator'␤at /tmp/i7AEUxpdf5:1␤------> multi package_declarator:<hurz> ⏏{ }; hurz A { }␤ expecting any of:␤ colon pair␤ …»
FROGGS damn
hoelzro I think
that jnthn said something about having to use the meta objects by hand to create new classes/whatever
at least for now
nwc10 lizmat: if at_key and at_pos are both called at, does that cause problems for an aggregate that can offer both keyed and positional access? 12:32
lizmat argh, yes
that was the reason
lizmat suddenly recalls having this discussion with jnthn
hoelzro class LuaTable { ... } # ;)
12:35 lichtkind joined, skids left
lichtkind cant find in synopses syntax to resolve role attribute and method name collisions 12:37
no matter how hard i looked
hoelzro I thought you have to define the method yourself?
tadzik that's what I recall 12:38
lichtkind yes but there has to be commands like rename and reject
to do it
cant find syntax on them
tadzik doesn't ring a bell
timotimo there's no syntax, i believe. you just define them, no?
in the class you're mixing into
lichtkind of course you need a syntax 12:39
12:39 cono joined
lichtkind becasue we dont want mixins but traits 12:39
larry explained lengthy why mixins are bad
but there has to be a syntax to resolve conflicts
just read the papers on traits 12:40
timotimo r: role ConA { method foo { say "conA" } }; role ConB { method foo { say "conB" } }; class yoink does ConA does ConB { method foo { ConA::foo() } }
camelia ( no output )
timotimo or something like that?
r: role ConA { method foo { say "conA" } }; role ConB { method foo { say "conB" } }; class yoink does ConA does ConB { method foo { ConA::foo() } }; yoink.new().foo()
camelia rakudo f86a1a: OUTPUT«Could not find symbol '&foo'␤ in method <anon> at src/gen/CORE.setting:12026␤ in any at src/gen/Metamodel.nqp:2671␤ in any find_method_fallback at src/gen/Metamodel.nqp:2659␤ in any find_method at src/gen/Metamodel.nqp:946␤ in method foo at /tmp/Qg4wJ4uTa…»
FROGGS lichtkind: if a class does two roles which have the same method, you need to create that method in your class, and do a dispatch to the right one
timotimo hm.
lichtkind FROGGS: thanks 12:41
lizmat yes, that was mentioned at the RaNIW
FROGGS timotimo: that is a sub call
timotimo of course it is! :)
lichtkind FROGGS: ant with conflicting attributes?
timotimo r: role ConA { method foo { say "conA" } }; role ConB { method foo { say "conB" } }; class yoink does ConA does ConB { method foo { self.ConA::foo() } }; yoink.new().foo() # maybe like this?
camelia rakudo f86a1a: OUTPUT«conA␤»
timotimo cool 12:42
12:42 berekuk left
FROGGS lichtkind: what do you mean by conflicting? if they are multi, there are no conflicts, and if they are onlys, it doesnt matter if they have different signatures 12:42
lichtkind thanks a lot i wouldnt find that on my own 12:43
when different roles a class consumes define same attribute
FROGGS you're welcome :o)
timotimo r: role ConA { method foo { say "conA" } }; role ConB { method foo { say "conB" } }; class yoink does ConA does ConB {}; yoink.new().foo() # what does the error look like?
camelia rakudo f86a1a: OUTPUT«===SORRY!===␤Method 'foo' must be resolved by class yoink because it exists in multiple roles (ConB, ConA)␤»
FROGGS lichtkind: ahh
cono conO!
timotimo "resolved" doesn't really follow the "tell the user exactly what to do to fix it" rule
FROGGS lichtkind: I'm not sure how this is handled, or will be handled 12:44
lichtkind sounds like a whie spot :)
FROGGS lichtkind: I just know that rakudo and spec currently differ at that point
lichtkind have nag $larry
timotimo same as above; the attributes are private to the roles and you can reach the attribute accessors like i did above
lichtkind cool thanks 12:45
FROGGS timotimo: but I think this is meant to change
bbl
timotimo r: role ConA { has $.foo = "ConA" }; role ConB { has $.foo = "conB" }; class yoink does ConA does ConB { method foo { self.ConA::foo } }; my $y = yoink.new(); say $y.foo; $y.foo = "hi"; say $y.foo;
camelia rakudo f86a1a: OUTPUT«===SORRY!===␤Attribute '$!foo' conflicts in role composition␤» 12:46
timotimo oh, interesting
i must have misremembered.
it really was a good idea to get a bigger cup for my tea 12:48
12:49 berekuk joined 12:50 geekosaur left 12:54 geekosaur joined
pmurias tadzik: re setting up small VMs, wouldn't create a install-everything-for-rakudo installer for windows be a better use of time? 12:55
nwc10 dear lazyIRC, can you tell me where the Fine Manual is about "how do I read a file that is in UTF-16?" or "a file that is in ISO-8859-1?" 12:58
JimmyZ pmurias: for windows: rakudo.org/downloads/star/rakudo-st...013.05.msi 12:59
daxim_ "first you port Encode.pm or libiconv…" 13:01
nwc10 if the answer is "there isn't a design yet", that's also interesting and a fair answer
timotimo it would be cool to have a few example files in weird encodings on the evalbot to play around with
though, if you give me a minute i can come up with something ... 13:02
13:02 jnap joined
pmurias nwc10: you want to read a file in ISO-8859-1 from Perl6? 13:03
nwc10 no, I want to know what the design is 13:04
pmurias on the nqp level you first nqp::setencoding($fh,'iso-8859-1') on the file handle, and then nqp::readallfh($fh) 13:06
hoelzro hmm
I'm thinking of writing an "Intro to Perl 6 in 6 minutes" post/document/thing
any ideas on what sort of things are quick to cover, but are cool? 13:07
say 'Hello World!' is nice, but not exactly eye-catching
JimmyZ [\+]
pmurias who is the audience?
hoelzro people who know next to nothing about Perl 6
not necessarily Perl 5 programmers, even 13:08
masak hoelzro: multi subs.
hoelzro oh, nice!
masak hoelzro: nwc10 recently pointed out that they have a really nice reach, and are intuitive.
hoelzro <3 multi subs
masak and it's easy-ish to find nice demos for them.
hoelzro indeed
masak r: multi infix:<+>("PHP", "the Web") { "security vulnerabilities" }; say "PHP" + "the Web"
camelia rakudo f86a1a: OUTPUT«security vulnerabilities␤» 13:09
masak grins
arnsholt =D
masak even silly ones.
hoelzro r: sub infix:<< <3 >>(Str $agent, Str $object) { say "$agent loves $object!" } 'Rob' <3 'Perl 6'
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/mygTg3ljl1␤Two terms in a row␤at /tmp/mygTg3ljl1:1␤------> object) { say "$agent loves $object!" } ⏏'Rob' <3 'Perl 6'␤ expecting any of:␤ postfix␤ statement end␤ …»
hoelzro curses
r: sub infix:<< <3 >>(Str $agent, Str $object) { say "$agent loves $object!" }; 'Rob' <3 'Perl 6'
camelia rakudo f86a1a: OUTPUT«Rob loves Perl 6!␤»
hoelzro hehe
arnsholt Multi subs are awesome
hoelzro that's totally going in there =)
masak yes, but don't put a "say" in an operator, please :)
arnsholt I keep wanting them in various places just about all the time...
hoelzro ok, noted =) 13:10
13:10 ajr joined
arnsholt What, you don't think side effects in operators are a good idea? ^_^ 13:10
13:10 ajr is now known as Guest77464, Guest77464 is now known as ajr_
masak let's just say they should be kept to a minimum :) 13:11
hoelzro anything else I should cover? 13:12
hoelzro will probably combine the <3 operator and multi subs
I'm trying to make it my personal mission to improve doc.perl6.org
improving the look *and* the content
masak hoelzro: personally I like role composition and method conflict resolution a lot. 13:13
hoelzro: the standard example there being DrunkenGymnast.go-to-bar
hoelzro that's a nice feature, but I don't know if it belongs in "6 minute Perl 6"
hmm
masak right. maybe not.
hoelzro I do like that example, though =)
masak :)
it can be explained in a minute or so. 13:14
hoelzro I was very strongly motivated by stevelosh.com/blog/2013/09/teach-dont-tell/
masak DrunkenGymnast does Drunk does Gymnast
hoelzro I want a *very* quick tutorial that gets people hooked
basically, I want to distill the feelings I got over the workshop weekend into an HTML document =) 13:15
lizmat hoelzro++
masak looks like a really nice post.
will read it.
timotimo there needs to be some design put into an example file in an example encoding... hmm 13:16
hoelzro what are the valid characters that can follow 'sub infix:'? just <, <<, and guillemets?
13:16 xinming left
timotimo i think [' ... '] as well 13:17
and i believe spaces are allowed after the < and <<
hoelzro r: sub infix:[ <3 ]('Rob', 'Perl 6') returns Bool { True }
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/JneoskI1Ha␤Unable to parse expression in quote words; couldn't find final '>'␤at /tmp/JneoskI1Ha:1␤------> ]('Rob', 'Perl 6') returns Bool { True }⏏<EOL>␤ expecting any of:␤ …»
hoelzro =(
timotimo r: infix:<< <3 >>(1) { }
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/qzxDAFdBuz␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?)␤at /tmp/qzxDAFdBuz:1␤------> infix:<< <3 >>(1) ⏏{ }␤ expecting any of:␤ …»
hoelzro maybe because the "operator" begins with <
timotimo r: infix:['<3'](1) { }
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/Tb30qQWaXJ␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?)␤at /tmp/Tb30qQWaXJ:1␤------> infix:['<3'](1) ⏏{ }␤ expecting any of:␤ …»
13:17 xinming joined
hoelzro << >> works 13:17
lizmat just realizes that the at_key/at_pos/at argument hasn't been applied to .exists and .delete
timotimo r: multi infix:<< <3 >>(1) { } 13:18
camelia ( no output )
timotimo that's better.
lizmat and that therefore we will need a .exists_key|pos and .delete_key|pos :-(
13:19 kaleem left
masak hoelzro: another very nice feature of multi subs: you can supply literal parameters, like 0, instead of writing them like Int $n where { $n == 0 } 13:19
lizmat .tell jnthn the fact that we can't make a generic 'at' instead of .at_key and .at_pos (because an object might do both) 13:20
yoleaux lizmat: I'll pass your message to jnthn.
13:20 wsri left
masak r: multi fib(0) { 1 }; multi fib(1) { 1 }; multi fib(Int $n) { fib($n-1) + fib($n-2) }; say fib 5 13:20
camelia rakudo f86a1a: OUTPUT«8␤»
hoelzro masak: I intend to demo that =)
lizmat .tell jnthn doesn't that mean that we should separate .exists into .exists_key / .exists_pos as well
yoleaux lizmat: I'll pass your message to jnthn.
masak hoelzro: ooh, ooh! Rat!
hoelzro hmm
masak: care to provide a good example? 13:21
lizmat .tell jnthn and .delete into .delete_key and .delete_pos ?
yoleaux lizmat: I'll pass your message to jnthn.
masak r: my $x = 1000 / 3; say $x * 3
camelia rakudo f86a1a: OUTPUT«1000␤»
masak hoelzro: note, exact reply. not 999.9994 or something like that.
hoelzro: in general, with just +-*/, you don't lose precision.
hoelzro hmm
masak r: .say for 0, 0.1 ... 1.0
camelia rakudo f86a1a: OUTPUT«0␤0.1␤0.2␤0.3␤0.4␤0.5␤0.6␤0.7␤0.8␤0.9␤1␤»
masak very important for things like currencies. 13:22
hoelzro hmm
it's handy
13:23 benabik left
pmurias hoelzro: re the teach-dont-tell despite the article mocking the use of tests as documentation I find them really usefull for that 13:23
hoelzro pmurias: I agree, but I understand his point 13:24
13:24 benabik joined
hoelzro I wouldn't ask something to learn Perl 6 by reading roast 13:24
or get started using Perl 6 by reading roast 13:25
13:25 krokite left
hoelzro but I consult roast often for idiomatic useage 13:25
*usage
I think I found jacobian.org/writing/great-documentation/ especially useful 13:26
and I found that via the first article =)
pmurias I really liked smartlinks (which displayed tests together with the documentation)
hoelzro don't the syn documents have that? 13:27
I think that's very handy
but I consider tests to be on the same level at reference documentation
they're good if you have an idea what you're looking for
tadzik pmurias: maybe. I just don't have a faintest idea how to make things work on windows :) 13:28
also, what I really meant about the VMs was to set up servers that people can ssh to
but your interpretation was much better :) 13:29
13:34 benabik left
lizmat tadzik: a server you can ssh to the same as feather ? 13:46
13:47 tokuhirom_ left, yoleaux left 13:49 simcop2387 left
timotimo oh, togetherJS could be a nice fit for a "try perl6" kind of website 13:49
hoelzro timotimo: I had a similar thought 13:50
we need a JS environment, though =/
13:50 tokuhirom joined
masak I hear someone is working on that. 13:51
pmurias++
hoelzro ;)
13:51 yoleaux joined, ChanServ sets mode: +v yoleaux
timotimo well, for my version of the try perl6 thing, we'd need JS anyway 13:51
13:51 fridim__ joined, simcop2387 joined
timotimo because that's what i built it in 13:51
hoelzro ooo 13:52
thing I think I should add to the 6 minute tutorial: Whatever
Whatever is cool.
timotimo show the newbies whatever is cool.
masak I confess to being so used to Perl 6 that I don't immediately remember what's so cool about Whatever :) 13:53
lizmat r: class A does Positional does Associative {} # so *can* we have a class that does both [] and {} ? 13:54
camelia rakudo f86a1a: OUTPUT«===SORRY!===␤Method 'of' must be resolved by class A because it exists in multiple roles (Associative, Positional)␤»
masak usually it just means "infinity" or "the length of the list" or "the default thing".
lizmat: yes, if you provide your own 'of' method in A.
lizmat which means that either you will have {} or [], right ? 13:55
masak r: class A does Positional does Associative { method of { "disambiguated!" } }
camelia ( no output )
lizmat masak: but not both ?
masak lizmat: I don't see why that would necessarily follow.
"of" refers to the type of the elements, no?
tadzik lizmat: yeah, something like this
masak says nothing of {} vs []
hoelzro hmm 13:57
:title<Foo Bar> # <-- what's the value here? 'Foo Bar' or ['Foo', 'Bar']?
13:59 xenoterracide joined
timotimo the latter 14:01
r: say (:title<Foo Bar>).perl
camelia rakudo f86a1a: OUTPUT«"title" => $("Foo", "Bar")␤»
timotimo well, not exactly the latter
hoelzro oh, ok
I thought I found a bug
14:01 fridim__ left
dalek kudo/method2sub: e7542c8 | (Elizabeth Mattijsen)++ | src/core/ (3 files):
Handle all [] and {} adverb handling in SLICE_ONE and SLICE_MORE

Adapt the postcircumfix candidates to call these subs with the appropriate parameters. Please note that these subs are used for both [] and {}, as their handling is basically the same.
This unfortunately dies during compilation again. Working on that.
14:03
14:08 skids joined 14:10 benabik joined 14:11 denis_boyun left, dmol left
pmurias isn't a danger of putting too much cool stuff in the tutorial make Perl6 like a really crazy language? 14:13
lizmat well, yes and no
hoelzro pmurias: that's why I'm only putting in *some* of the cool stuff )
=)
FROGGS the sane stuff please :o) 14:14
hoelzro it's just to demonstrate the power of the language
masak it all depends on who is the target of the tutorial.
hoelzro I don't intend to introduce slangs or grammars
lizmat in my 5 to 6 nuggets series lightning talks, I've tried to stay as close to Perl 5 as possible initially, and take it from there
hoelzro ...yet.
the target is someone who knows how to program
but of no particular background
I'm thinking of making a "Perl 6 for (Perl 5 || Python || Java || Scalar || etc) programmers" as well 14:15
but first things first =)
it's simply to make other programmers think "holy crap, this language is really cool."
timotimo bioperl6 comes with its own makefile that sets the target to jar :/
interestingly, when using ufo and make, i get a different error from the smoker 14:16
tadzik huh
timotimo there seems to be files missing or something? 14:17
i was hoping there'd be a simple fix :P
pmurias hoelzro: I'm afraid of crossing the line between "holy crap, this language is really cool." and "wtf, this language is really crazy"
14:17 fhelmberger_ joined
hoelzro pmurias: I understand 14:18
that's why I need help writing it =)
if we don't show it off *at all*, it'll just be the language no one cares about, or no one's heard about
I feel like a lot of the Perl 5 community is starting to come around on Perl 6 14:19
14:19 fhelmberger left
hoelzro but I'd like programmers from other communities to look at Perl 6 and find it alluring as well 14:19
timotimo it's alturing all right 14:21
14:22 fhelmberger_ left
diakopter hoelzro: I hesitate because so much is still unpresentable 14:22
hoelzro diakopter: could you clarify? 14:23
diakopter we all know early adopters are masochists with too much time on their hands, or simply contrarians 14:24
masak contrarians? am not!
diakopter but pragmatists juggling priorities and investments have entirely different stsndards of adoption 14:26
hoelzro hmm
I suppose I'm thinking about this documentation for the future, when people start to look at Perl 6 with a more pragmatic mindset 14:27
diakopter around here, early sdopters become stakeholders, or leave
hoelzro I also look at it as my way to knocking something off of the "Perl 6 doesn't have X" list
diakopter because of the huge time investment required 14:28
14:28 iSlug left
diakopter to become acclimated and encultured 14:29
14:29 berekuk left 14:30 thou joined
masak the challenge with all tutorial-like artifacts is having them survive down the years :) 14:30
hoelzro true
masak in a form which is still useful and not misleading five years later.
diakopter "hmm, these look like the sort of people I want to spend much of my screen time with"
14:32 darutoko joined
diakopter don't give away training wheels when there's only 6 feet of road constructed 14:32
masak well, #perl6 has always been about flood-filling. 14:33
working on several approaches at once.
nwc10 hoelzro: couple of suggestions, neither of which may work
14:33 ajr_ left, hummeleB1 joined
timotimo i have no idea how to read kcachegrind :| 14:33
nwc10 1) take entries from the Perl FAQ (ie Perl 5), and produce much nicer shorter answers in perl 6
2) take recipies from the Perl Cookbook, and provide a Perl 6 example 14:34
hoelzro hmm
I like that
I'll put those in my notes
14:34 iSlug joined, berekuk joined
hoelzro but I understand what diakopter is saying 14:34
nwc10 yes
hoelzro so maybe I should focus on improving the more in-depth conceptual documentation
nwc10 yes, that might be better in the short term
14:35 sqirrel left
nwc10 also, I think that "concurrency" and "NFG" are going to be longer term winners (over the current competition for mindshare) 14:35
14:35 colomon left
timotimo hoelzro: there was a perl6 advent entry about perl5 to perl6 which i liked a lot a long time ago 14:35
nwc10 so examples which show how they are easy (once they work well) I hope will go down
go down well
[to be clear :-)]
hoelzro timotimo: are you referring to perlgeek.de/en/article/5-to-6? 14:36
14:36 ajr joined 14:37 ajr is now known as Guest34187
timotimo no 14:37
diakopter nfg is just nfc + a space-optimized (and access-time complexity-optimized!) storage format..
masak thought about perl6advent.wordpress.com/2011/12/...ic-perl-6/ 14:38
timotimo i think i've found my next good optimization target
14:38 Guest34187 is now known as ajr_
diakopter and I'm not convinced of the value beyond that 14:38
timotimo perl6advent.wordpress.com/2011/12/2...ic-perl-6/ - i was refering to this article
Util++ 14:39
diakopter mm days 23
er heh
14:39 berekuk left 14:40 colomon joined, SamuraiJack_ left
diakopter nwc10: what's the selling points of nfg to the programmer who knows what nfc is 14:40
*what're 14:41
14:41 hummeleB1 left
JimmyZ r: say 'g' - 'c' 14:42
nwc10 NFC doesn't get you to easy 1-1 for all the base character + accent combinations that don't have a single code point. So you still have to explicitly code to avoid splitting graphemes
14:42 hummeleB1 joined
JimmyZ rn: say 'g' - 'c' 14:42
timotimo can i refer to some kind of database to figure out if an nqp:: op has a certain return type?
camelia rakudo f86a1a: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏g' (indicated by ⏏)␤ in method Numeric at src/gen/CORE.setting:12019␤ in sub infix:<-> at src/gen/CORE.setting:4112␤ in sub infix:<-> at src/gen/CORE.setting:4110␤ in s…»
niecza v24-95-ga6d4c5f: OUTPUT«Unhandled exception: Cannot parse number: g␤ at /home/p6eval/niecza/lib/CORE.setting line 1536 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3745 (ANON @ 10) ␤ at /home/p6eval/niecza/lib/CORE.setting line 3747 (NumSyntax.str2num @ 5) ␤ a…»
..rakudo f86a1a: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏g' (indicated by ⏏)␤ in method Numeric at src/gen/CORE.setting:12019␤ in sub infix:<-> at src/gen/CORE.setting:4112␤ in sub infix:<-> at src/gen/CORE.setting:4110␤ in s…»
14:42 hummeleB1 left
timotimo like, can i get from "add_i" to "returns low-level int"? 14:43
14:43 hummeleB1 joined
nwc10 diakopter: but you're right. It's not an obviously easy sell 14:43
Unless you've already hit the problem
FROGGS timotimo: doesnt it have a .returns?
diakopter nwc10: but how often does someone encounter that
what editors let you make such constructs 14:44
nwc10 I'm sure Tom Christiansen thinks he encounters it daily. But I don't know about mortals
yes, I don't know.
timotimo FROGGS: it seems the .returns isn't set for QAST::Op(:op('add_i')) at optimize time; but i also don't know how to figure that out without a complete rebuild 14:45
i stumbled upon a line in reify where a < was not directly resolved to the correct candidate, going through the proto instead 14:46
it was between a my int $foo and nqp::elems(...)-
which really ought to have dispatched directly to the native implementation 14:47
ajr_ @hoelzro and timitimo - it sounds as though you are thinking about some of the same problems as I am; given the enormous mountain of Perl 6, how can I start climbing it without the path being washed away under my feet?
timotimo oh, me?
i just try to be one of the people who build the path to make sure my feet only get wet when i explicitly want them to :P 14:48
diakopter it's less of a mountain and more of an asteroid belt
(the entire orbit) 14:49
ajr_ Would one of the mailing lists be a better forum for discussing this?
diakopter someday it'll be a planet 14:50
ajr_ Someday, I'll be dead.
diakopter lolz
lizmat cycling & dinner& 14:52
14:53 iSlug left
timotimo huh. doesn't seem like the .returns(1) helps inline the < 15:02
or at least i can't see a difference in the --target=optimize
what does an inlined call look like there?
15:04 sqirrel joined
FROGGS timotimo: shouldn't it be .returns(int) ? 15:06
timotimo i don't think you can do that
but i'll try, thanks
FROGGS wait a sec
timotimo perhaps i was confusing the primspec thing? 15:07
you're right
FROGGS $qastcomp.as_post(QAST::Op.new(
:op('callmethod'), :name('get_lex_type'), :returns(int),
$op[0], $op[1]
))
15:08 ajr_ left
timotimo i'm in the optimizer, where i need to .returns(self.find_lexical('int')) 15:08
15:08 ajr_ joined
hoelzro /me .oO( I'm ) 15:09
damn, my macro didn't work =/
timotimo hehe
hoelzro .oO( I'm in the optimizer, optimizing your codez? )
timotimo that kind of describes my activity in perl6land ... 15:10
masak :)
timotimo i'm glad people are not raging at me for premature optimizations all over the place
hoelzro I'm pretty sure they're not premature at this point =)
masak "premature" doesn't refer to how far the project as a whole has taken so far :P 15:12
s/far/long/
timotimo hehe.
my little first attempt is apparently not helping the compile-time inliner do its job 15:13
pmurias timotimo: what is your next target? 15:15
pmurias had a scrolled back irc buffer 15:16
15:17 dmol joined
hoelzro /me .oO( I'm in the optimizer, optimizing your codez? ) 15:17
dammit
hoelzro forgets the whole damn thing
timotimo you have a little command that wraps your text in /me .o( and )? 15:18
hoelzro mhmm
I fixed it...sort of.
hoelzro .oO( I think I fixed it ) 15:20
pmurias timotimo: nqp/src/vm/parrot/QAST/Operations.nqp - has the return info for some ops
hoelzro \o/
PerlJam hoelzro: shouldn't that be just .oO( I fixed it ) ;-)
hoelzro fair enough =)
masak PerlJam: so, you're saying thinking is a monad? :P 15:21
PerlJam masak: how else are we to program our brains? 15:22
timotimo pmurias: the most important question is: does the optimizer understand that info? 15:23
for elems there's just the 'IP' string and :inlinable(1)
masak PerlJam: with my luck, my brain is running on UnsafeIO :P
pmurias timotimo: it takes an object (P) and returns an int (I) 15:24
timotimo yes, i know :)
does the optimizer see that bit of info?
oh, also, that's a non-native int? 15:25
pmurias non-native one, I think it's a parroty one
timotimo mhm
pmurias so it's a native one 15:26
timotimo: I don't think such info is exposed to the optimizer by a clear interface
timotimo that would be good for the core setting, i think 15:27
because that's where lots of nqp:: is used
dalek kudo-js: bd19383 | (Pawel Murias)++ | runtime.js:
Implement isle_s. Add to string conversions.
15:29
kudo-js: 977fcc8 | (Pawel Murias)++ | Makefile:
Fix the order of nqp-compiler.js dependencies.
kudo-js: 7045249 | (Pawel Murias)++ | run_tests:
Avoid running nqp/t/nqp/19-readline.txt as a test.
kudo-js: 6f2af2c | (Pawel Murias)++ | / (2 files):
Take the lexical scope from the correct module when loading the setting multiple times.
kudo-js: 081f5b0 | (Pawel Murias)++ | / (6 files):
Add a ModuleLoader written partially in nqp that does globals merging.

That makes standalone nqp pass all tests up to 31.
15:29 denis_boyun joined
timotimo very cool! :) 15:29
TimToady pmurias++ for persistence 15:30
15:30 geekosaur left
colomon pmurias++ indeed! 15:31
15:32 dylanwh joined 15:33 geekosaur joined
daxim_ pmurias, README.markdown =~ s/ nqp install/ npm install/g 15:33
pmurias daxim_: thanks 15:36
15:38 araujo joined
timotimo it may be enough to teach QAST::Operations to annotate "returns" everywhere. 15:39
also, it seems like that may already be the case 15:40
15:40 FROGGS left
timotimo yes, the return types are already annotated to the ops by Operations 15:41
in that case there must be something stopping the inliner from seeing that, or alternatively from compiling it down to the most efficient form
diakopter is to the point of fighting actual gc bugs 15:43
timotimo in what backend?
diakopter nwc10: turns out a global destruction phase is enormously helpful for revealing all the things your gc miss 15:44
missed
(if you didn't have one prior)
TimToady much like sink context is really great for figuring out when you're throwing away side effects 15:45
diakopter and now that it's actually running every time..... o_O
TimToady er, non-side-effects
dalek kudo-js: 8055716 | (Pawel Murias)++ | README.markdown:
We install node modules using npm instead of nqp ;). daxim++
15:46
TimToady r: +42; 43; 15:47
camelia rakudo f86a1a: OUTPUT«WARNINGS:␤Useless use of "+" in expression "+42" in sink context (line 1)␤»
TimToady r: 42; 43;
camelia rakudo f86a1a: OUTPUT«WARNINGS:␤Useless use of constant integer 42 in sink context (line 1)␤»
TimToady that is how a majority of precedence errors are caught, actually.... 15:48
masak nice.
TimToady and why sink context is not going away
masak .oO( we're certainly not pouring sink context down the... oh wait ) 15:49
diakopter the problem with flooding algorithms is... glug glug glug ___ 15:51
15:51 zakharyas left
TimToady btw, we finally heard back from tchrist, who only got his basement flooded, though two people drowned really close to his house 15:52
masak likes refactors where the number of deletions are > 2x the number of insertions 15:55
it's interesting. the refactor commits themselves are nice when they delete a lot. *after* a refactor, things are the nicest when it's all insertions and no deletions. 15:56
diakopter deletes masak temporarily
TimToady my current feeling on lift is that it's probably going away in favor of something more explicit to declare what has to be copied from the caller (if it's not identical), some kind of implicit parameter roughly equivalent to &infix:<+> = CALLER::<&infix:<+>> 15:57
15:58 domidumont left
TimToady and kinda fitting in with the notion of macros with mixed normal and ASTish args 15:59
only in this case the strange arg is not AST, but an implicit ref to the caller's lexpad 16:00
sort of a shortcut for COMPILING thingies 16:01
haven't made up my mind whether they should be declared on the proto or on/in the multis yet 16:02
16:02 cognominal__ left
TimToady much like we've discussed having an AST token marker like ¤ or some such, we could have a token marker that implied it was from COMPILING 16:03
16:03 Fatalnix is now known as xinlataf
TimToady but then the compiler would have to hoist that info up to the proto to be available at the right time 16:03
masak listens, and thinks 16:06
16:07 xinlataf is now known as fajtalnix 16:08 fajtalnix is now known as Fatalnix
TimToady since protos are nearly always inlined, it's the right place to do the work just before dispatch, if work is needed 16:09
dalek rlito/replito: 171ea16 | (Flavio S. Glock)++ | / (3 files):
Perlito5 - js - next/redo/return in term position
rlito/replito: c701f67 | (Flavio S. Glock)++ | / (4 files):
Perlito5 - grammar - alfanumeric quoting delimiters
rlito/replito: 9f2a707 | (Flavio S. Glock)++ | t5/01-perlito/030-num.t:
Perlito5 - grammar - tests
rlito/replito: 657299a | (Flavio S. Glock)++ | / (3 files):
Perlito5 - grammar - format() tweak
rlito/replito: 0164c28 | (Stanislaw Pusep)++ | / (7 files):
Merge branch 'master' into replito
TimToady there's also something funky in the current model about redispatching to the same candidate list, when we know we really want the concrete semantics after conversion 16:10
though perhaps it's the right way to think of it when type inference can weed out the abstract candidates
TimToady is also wonder how much we'd gain from duplicating some of the hotpath method code into functions for well-known types 16:11
*ders
*dering even
timotimo "replito", eh? 16:12
TimToady kinda silly to do method dispatch for indexing into native arrays of known shape, for instance
16:21 hummeleB1 left 16:26 iSlug joined 16:33 pmurias left 16:35 iSlug left 16:36 spider-mario joined
daxim_ www.reddit.com/r/perl/comments/1mla...op/ccbr5k1 # "Do you think all of that potential flexibility in the language would make it susceptible to The Lisp Curse?" 16:36
16:38 kaleem joined
masak wow, a reddit thread about one of Edument's courses. that's... a weird feeling. 16:38
but in a good way, I think. :)
by the way, I think there's a gigantic under-usage of NQP so far as a compiler development toolchain. 16:39
maybe the availability of this course (and the weekend itself, of course) will change that balance a bit.
TimToady hoelzro: your <3 example should output ❤ or some such to demo Unicode :) 16:43
16:43 abelfourier_ joined 16:47 abelfourier_ left, kaleem left
arnsholt masak: Yeah, I've been wanting to come back to my Prolog project on a modern NQP 16:47
Especially now that I'm more familiar with the internals, some things like the grammar may end up a bit simpler to implement 16:49
timotimo arnsholt: do you want to have a look at why Algorithm::Viterbi is failing its tests? It can be made compile by removing the type constraint on the slurpy arg (which is not really sensible to have, aiui) and then there decode method returns [Any] :( 16:51
(but no pressure, i don't need to use it, iwas just looking at the smoker)
arnsholt I'll give it a look later tonight. I've got some hacking time scheduled =)
16:51 sqirrel left
timotimo (i don't even know what viterbi does :P ) 16:52
arnsholt It's a simple HMM decoder
timotimo oh, markov
arnsholt Hidden Markov Models is a class of statistical model, quite common in NLP and bioinformatics
timotimo yes, i know about it 16:53
arnsholt "The guts tormented implementers made
=D
16:54 wsri joined, denis_boyun left
masak the tormenting made the guts pretty. :) 16:55
at least relatively speaking.
arnsholt is sad he didn't make it to RaNIW 16:56
masak r: my @l = 1 .. 100; @l[5 .. *] = Nil; say @l.perl
camelia rakudo f86a1a: OUTPUT«Array.new(1, 2, 3, 4, 5, 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, Any, Any, Any, Any, Any, A…»
masak how do I truncate a list in Perl 6? 16:57
er, an array.
16:57 ggoebel left 16:58 apejens left
timotimo : my @l = 1 .. 100; @l[5 .. *] = []; say @l.perl 16:58
r: my @l = 1 .. 100; @l[5 .. *] = []; say @l.perl
camelia rakudo f86a1a: OUTPUT«Array.new(1, 2, 3, 4, 5, [], 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, Any, Any, Any, Any, An…»
timotimo even worse :D
TimToady er, splice?
r: my @l = 1..100; @l.end = 5; say @l 16:59
camelia rakudo f86a1a: OUTPUT«Cannot modify an immutable value␤ in block at /tmp/_274Q2bvf2:1␤␤»
16:59 apejens joined
TimToady heh 16:59
r: my @l = 1..100; @l.splice(5); say @l
camelia rakudo f86a1a: OUTPUT«1 2 3 4 5␤»
TimToady masak: ^^ 17:00
masak ah, 'course. :) 17:01
TimToady++
r: my @l = 1..100; @l.splice(5, *, "something borrowed", "something blue"); say @l 17:05
camelia rakudo f86a1a: OUTPUT«Cannot call 'Real'; none of these signatures match:␤:(Mu:U \v: Mu *%_)␤ in method Real at src/gen/CORE.setting:929␤ in sub infix:<<> at src/gen/CORE.setting:4167␤ in sub infix:<<> at src/gen/CORE.setting:4165␤ in method splice at src/gen/CORE.setting:7869␤ …»
masak splice I am dissapoint.
masak submits rakudobug
r: my @l = 1..100; @l.splice(5, 100, "something borrowed", "something blue"); say @l
camelia rakudo f86a1a: OUTPUT«1 2 3 4 5 something borrowed something blue␤»
masak if * isn't spec'd to work in that place, it clearly should be :) 17:06
TimToady plays a voluntary on his pipe organ 17:07
diakopter undeletes masak 17:08
17:10 jeff_s1 joined, jeff_s1 left 17:11 ajr_ left 17:15 ajr joined, ajr is now known as Guest88359, domidumont joined 17:17 Guest88359 is now known as ajr_
timotimo holy ⊂Δℝ∂ℕ 17:17
masak: how would you like a 2x faster ufo?
arnsholt That sounds very interesting. How'd you get it sped up? 17:19
timotimo i figured out that the longest time is spent in dependencies
and then i replaced matching against every line (gather for $file.lines()) with a slurp + comb
17:21 rindolf joined
masak timotimo: ooh 17:21
arnsholt Reading the slides from RaNIW, I'm reminded of the perl6/nqpbook repository
timotimo i'm preparing a patch
arnsholt These slides would make a good starting point for an NQP book, I think 17:22
timotimo people already said that :) 17:23
arnsholt I missed that (not being at the workshop, presumably)
lizmat back from dinner, off to Elysium& 17:24
timotimo masak: gist.github.com/timo/27238331623f70f69455
gotta run now
dalek o: 18a5e5a | (Timo Paulssen)++ | bin/ufo:
speed up dependency calculation by a whole lot.
17:26
masak timotimo: applied; thanks.
17:30 stevan__ left 17:32 daxim_ left 17:33 domidumont left 17:35 sqirrel joined
hoelzro TimToady: I thought I could also create an operator with a Unicode heart, but maybe that's overkill =) 17:35
TimToady well, hipsters relate to <3 17:36
hoelzro heh
TimToady one kinda wants to show both
17:36 xinming left
TimToady and in particular, <3 as an operator demonstrates longest token matching 17:36
timotimo ^ is begin of line right?
TimToady ^ is beg of string 17:37
^^ is beg of line
timotimo otherwise the speedup would be caused by skipping all but the first line
dang, that was a dumb optimisation
can you look if it is still faster with ^^? 17:38
17:38 btyler joined
masak nope. :) 17:38
reverting commit.
timotimo otherwise please let us pretend that never happened 17:39
mind force pushing the previous commit over that? :s
dalek o: 60bb438 | masak++ | bin/ufo:
Revert "speed up dependency calculation by a whole lot."

Turns out it shouldn't have been ^ but ^^. The merits of the optimization are therefore slightly suspect.
This reverts commit 18a5e5a1fa77a58abcf39e0aa008a11cd28e5b94.
masak timotimo: yes, I mind :)
timotimo nooooo my failure to grasp basic regex is on display for all to see! 17:40
masak better pile a bunch of commits on top of it, then...
benabik Hm. Apple "updated" /usr/bin/gcc to clang. I'm sure this will cause no problems anywhere.
timotimo quickly invent new features forbufo! 17:41
17:41 ajr_ left
TimToady benabik: do you mean that when you run /usr/bin/gcc it actually gets you clang? 17:41
timotimo benabik, apple does what everybody wants
benabik TimToady: `gcc -v` gives me "Apple LLVM version 5.0 (clang-500.2.76) (based on LLVM 3.3svn)" 17:42
timotimo or rather, what apple does, everybody wants
17:42 tba left
benabik This is apparently a "feature" of XCode 5. 17:42
TimToady benabik: does it run in a gcc emulation mode?
geekosaur llvm-gcc is gone as of xcode 5
17:42 tba joined
benabik TimToady: No idea. 17:43
geekosaur: "Funny" that `man gcc` still says its llvm-gcc.
geekosaur people have also been noticing that installing xcode5 doesn't autoremove the old command line tools, whereas older versions tend to at least disable them 17:44
timotimo glad i thought to SK
ask about my change...
17:45 stevan_ joined 17:46 stevan__ joined
TimToady .u ᔉ 17:46
yoleaux U+1509 CANADIAN SYLLABICS MOOSE-CREE SK [Lo] (ᔉ)
sjohnson wonders when unicode trollface will appear... 17:47
TimToady .u 🐪 17:48
yoleaux U+1F42A DROMEDARY CAMEL [So] (🐪)
17:49 stevan_ left
sjohnson .u trollface 17:50
yoleaux No characters found
sjohnson =(
benabik .u troll
yoleaux U+1F68E TROLLEYBUS [So] (🚎)
benabik All aboard the Trolly-bus. 17:51
GlitchMr sjohnson, copyright
TimToady .u 🎅
yoleaux U+1F385 FATHER CHRISTMAS [So] (🎅)
TimToady .u 👹 17:52
yoleaux U+1F479 JAPANESE OGRE [So] (👹)
sjohnson ... if they have those...
TimToady still no butterfly 17:54
GlitchMr Carlos Ramirez would sue Unicode if they would add Trollface to Unicode.
TimToady well, unless you count 蝶 17:55
17:55 darutoko left 17:59 pernatiy left
GlitchMr .u 蝶 17:59
yoleaux No characters found
GlitchMr It's butterfly, isn't it? 18:01
I would rather expect something like "troll" instead.
Or invalid Unicode character.
diakopter .u roll 18:02
yoleaux U+1F3A2 ROLLER COASTER [So] (🎢)
U+1F5DE ROLLED-UP NEWSPAPER [So] (🗞)
diakopter .u cinnamon
yoleaux No characters found
GlitchMr .u perl
yoleaux No characters found
diakopter .u masak
yoleaux No characters found
diakopter .u toad
yoleaux ...
GlitchMr lolmasak
diakopter .u toad
yoleaux ...
GlitchMr ...
benabik ... ?
diakopter .u foad
yoleaux No characters found
GlitchMr .u what
yoleaux ...
GlitchMr .u ...
yoleaux U+002E FULL STOP [Po] (.)
timotimo no .u
diakopter .u .u
yoleaux U+002E FULL STOP [Po] (.)
U+0075 LATIN SMALL LETTER U [Ll] (u)
diakopter .u yoleaux 18:03
yoleaux No characters found
diakopter .u character
yoleaux U+0009 CHARACTER TABULATION [Cc] (␉)
U+0088 CHARACTER TABULATION SET [Cc] (<control>)
U+0089 CHARACTER TABULATION WITH JUSTIFICATION [Cc] (<control>)
GlitchMr .u a
yoleaux U+0061 LATIN SMALL LETTER A [Ll] (a)
GlitchMr .u small
yoleaux U+0061 LATIN SMALL LETTER A [Ll] (a)
U+0062 LATIN SMALL LETTER B [Ll] (b)
U+0063 LATIN SMALL LETTER C [Ll] (c)
TimToady ahem
GlitchMr U+0064 LATIN SMALL LETTER D [Ll] (d)
benabik You can use privmsg to play "poke the bot".
TimToady besides, tormenting unicode is more fun than tormenting the bot 18:04
sjohnson **COMPUTING** 18:05
diakopter .u blood
yoleaux U+2F8E KANGXI RADICAL BLOOD [So] (⾎)
diakopter .u bik
sjohnson .u marijuana
yoleaux U+1F459 BIKINI [So] (👙)
No characters found
diakopter oops.
sjohnson you'd think there'd be a pot-leaf by now...
diakopter .u 420
yoleaux No characters found
GlitchMr .u nothing
yoleaux No characters found
GlitchMr .u mu
yoleaux U+00D7 MULTIPLICATION SIGN [Sm] (×)
U+039C GREEK CAPITAL LETTER MU [Lu] (Μ)
U+03BC GREEK SMALL LETTER MU [Ll] (μ)
GlitchMr μ is new Mu in Perl 6! 18:06
s/720/6/
TimToady well, no, Mu is really 無 18:07
GlitchMr .u 無
yoleaux No characters found
GlitchMr Of course I know.
.u moo 18:08
yoleaux U+14A8 CANADIAN SYLLABICS MOO [Lo] (ᒨ)
U+14A9 CANADIAN SYLLABICS Y-CREE MOO [Lo] (ᒩ)
U+1509 CANADIAN SYLLABICS MOOSE-CREE SK [Lo] (ᔉ)
GlitchMr Alternatively, it's U+14A8. 18:09
TimToady no, moo is 牟 18:11
18:11 flussence left
TimToady note the cow radical on the bottom 18:11
sjohnson cow!
GlitchMr .u 牟
yoleaux No characters found
sjohnson TimToady: you seem to have a lot of clout. do you think a unicode comission could be persuaded to add a character in? 18:12
corecatcher what bottom? (of that char)
GlitchMr Unicode? Why? Everybody needs 27 characters anyway (a-z, and space). 18:13
TimToady u cow
.u cow
yoleaux U+2EA7 CJK RADICAL COW [So] (⺧)
U+2F5C KANGXI RADICAL COW [So] (⽜)
U+1008C LINEAR B IDEOGRAM B109F COW [Lo] (𐂌)
masak corecatcher: the bottom four(ish) strokes.
TimToady that part
GlitchMr who uses these unicode characters anyway when you can talk just using spaces and letters
TimToady
benabik Radio has taught me you only need ..--- 18:14
geekosaur ob en.wikipedia.org/wiki/Whitespace_(p..._language)
GlitchMr But don't we already use 0s and 1s.
18:14 flussence joined
TimToady besides, those *are* letters :) 18:14
r: say "無" ~~ /\w/ 18:15
camelia rakudo f86a1a: OUTPUT«「無」␤␤»
TimToady r: say so "無" ~~ /\w/
camelia rakudo f86a1a: OUTPUT«True␤»
GlitchMr r: sub infix:[""]($a, $b) { $a ~ $b }; say "hello" "world"
camelia rakudo f86a1a: OUTPUT«===SORRY!===␤No such method 'ast' for invocant of type 'NQPMu'␤»
GlitchMr NQPMu? Great errors. 18:16
n: sub infix:[""]($a, $b) { $a ~ $b }; say "hello" "world"
camelia niecza v24-95-ga6d4c5f: OUTPUT«helloworld␤»
18:16 ajr joined
GlitchMr www.stroustrup.com/whitespace98.pdf 18:16
18:16 ajr is now known as Guest12202
GlitchMr Why Perl 6 allows overwriting almost any operator other than whitespace? 18:16
TimToady std: sub infix:[""]($a, $b) { $a ~ $b }; say "hello" "world"
18:16 FROGGS joined
camelia std 7c17586: OUTPUT«===SORRY!===␤Null operator is not allowed at /tmp/28HOvVCczV line 1:␤------> sub infix:[""]⏏($a, $b) { $a ~ $b }; say "hello" "world␤Parse failed␤FAILED 00:00 42m␤» 18:16
GlitchMr Yeah, I know it's an error. 18:17
I mean, I checked it one year ago or something.
masak whitespace isn't an operator.
18:17 sqirrel left
GlitchMr Nice to see Rakudo sort of fixing it (but error should be better). 18:17
TimToady it screws up the self-clocking
masak well, except in slangs, like Regex... hm. 18:18
TimToady where, you'll note, people are always getting unexpected results instead of errors
masak that's because "failure is not an option" in regex land. 18:19
GlitchMr In awk, nothing is concatenation. Why Perl 6 cannot have it as concatenation if you really want (and have huge failures when code would accidentally trigger TTIAR).
masak in the sense that the worst that can happen is that the regex doesn't match.
TimToady n: / 'a' 1 .. 3 /
camelia ( no output )
TimToady std: / 'a' 1 .. 3 /
camelia std 7c17586: OUTPUT«ok 00:00 42m␤»
TimToady oops
n: / 'a' ** 1 .. 3 / 18:20
camelia niecza v24-95-ga6d4c5f: OUTPUT«===SORRY!===␤␤Spaces not allowed in bare range at /tmp/bZTzAZqS0b line 1:␤------> / 'a' ** 1 ..⏏ 3 /␤␤Parse failed␤␤»
TimToady that's trying to dwimmily make up for a term vs operator confusion, but it can result in a WAT
GlitchMr r: class LyingStr #`(on the floor) { method Str { die "no" } }; my LyingStr $str .= new; say "abc" =~ / $str / 18:21
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/InmL1g64EY␤Unsupported use of =~ to do pattern matching; in Perl 6 please use ~~␤at /tmp/InmL1g64EY:1␤------> }; my LyingStr $str .= new; say "abc" =~⏏ / $str /␤»
GlitchMr r: class LyingStr #`(on the floor) { method Str { die "no" } }; my LyingStr $str .= new; say "abc" ~~ / $str /
camelia rakudo f86a1a: OUTPUT«no␤ in method Str at /tmp/MQiFSSAHxG:1␤ in block at src/gen/CORE.setting:12294␤ in method reify at src/gen/CORE.setting:7357␤ in method reify at src/gen/CORE.setting:7252␤ in method gimme at src/gen/CORE.setting:7675␤ in method sink at src/gen/CORE.setti…»
GlitchMr Failure is an option.
masak tries to picture a regex slang without juxtaposition as an operator
GlitchMr: way to completely miss my point.
TimToady comma maybe
masak well, I imagine one'd end up with something that looks like nested function calls. 18:22
GlitchMr It's runtime error.
masak or combinators.
sjohnson .u tank
yoleaux No characters found
sjohnson 点 (tank)
TimToady masak: no, the worst is that it matches the wrong way
GlitchMr No, the worst is that the regex engine will trigger undefined behavior, and format your hard drive. 18:23
TimToady well, that's just a bug :)
sjohnson: that would be a four-legged tank 18:25
sjohnson TimToady: ah, no wonder I couldn't find it on .u 18:26
flussence 点 (U+70B9 HORSEBACK ARCHER)
.oO( right next to U+70BB PERCUSSIVE MAINTENANCE and U+70BD SLIDESHOW PRESENTATION )
18:28
TimToady 覀 flying tank with two guns
masak sjohnson: the current meaning of that characer is "dot" or "speck".
GlitchMr .u undef 18:29
yoleaux No characters found
GlitchMr .u beha
yoleaux No characters found
masak TimToady: clearly that's a monster from Space Invaders.
GlitchMr .u c
yoleaux U+0063 LATIN SMALL LETTER C [Ll] (c)
GlitchMr .u ≠ 18:30
yoleaux U+2260 NOT EQUAL TO [Sm] (≠)
GlitchMr .u π
yoleaux U+03C0 GREEK SMALL LETTER PI [Ll] (π)
18:34 iSlug joined
sjohnson masak: tank is cuter! 18:36
18:36 spider-mario left 18:37 spider-mario joined
masak sjohnson: yeah... in the same way я is "cuter" as a reverse R. unless, you know, you read Cyrillic, in which case it's mostly annoying. :) 18:39
18:39 iSlug left
masak I guess I'm a bit too invested in the actual meanings of the hanzi to see then as mere icons at this point. 18:39
that said, at one point I collected hanzi that looked like telephone poles. :) 18:40
arnsholt I have a similar relationship to misuse of Greek and Cyrillic characters in movie posters and the like 18:41
18:41 spider-mario left
arnsholt I can read them, but there's that niggling "but that's wrong!" dissonance 18:41
geekosaur same 18:42
masak arnsholt: my first reading is almost always the actual sounds of the characters. which, needless to say, seldom works. 18:43
arnsholt: I generally don't enjoy graphic embellishments that rely on the reader's ignorance.
18:44 rindolf left, EvanTeitelman joined 18:50 spider-mario joined 18:55 stevan__ left, stevan_ joined
lue hello world o/ 18:58
arnsholt Heh. The OPP is "mildly terrifying"
The PIR version was really terrifying =) 18:59
TimToady well, it's really almost a standard OPP, except it has to concepts like list associativity too 19:01
19:02 stevan_ left
TimToady and most OPPs do the minimum for a given language, rather than trying to stay extensible in the face of new precedence levels or conflicting assiciativities on unaries 19:02
*assoc
19:02 FROGGS left
TimToady I dunno whether anyone has talked about list associativity before; I was ignoring the literature when I came up with that... 19:04
masak TimToady: Python has chaining operators, but it doesn't have a name for that kind of associativity. 19:05
TimToady seems like too useful a concept not to have been invented before...
well, chaining is another one, but lots of languages do that
masak oh? I wasn't aware. 19:06
19:06 EvanTeitelman left
masak I only know of Perl 6 and Python. 19:06
TimToady well, at least they accept the mathish comparisons
19:06 SamuraiJack_ joined
TimToady in the case of Icon, they fake it by separating the concept of success from the return value 19:06
but I always thought that was a fairly user-unfriendly way to do it 19:07
19:07 benabik left 19:09 benabik joined
TimToady BCPL apparently had it 19:10
geekosaur it's not actually separated from the return value; it's a distinct return value, but &fail is a little too eager for direct use :) 19:11
19:13 stevan_ joined
masak to be honest, I use chained comparisons a lot less than I thought I would. 19:14
when you see the feature on paper the first time, the tendency is to go "ooh, that's nice; yes, of course it should work that way". 19:15
and when I use it, it's rather nice.
but the advantages aren't as great as I imagined. nor are the occasions for using chaining.
TimToady well, some of its use has been usurped by ~~ $range
masak aye.
TimToady esp since ranges can exclude either endpoint 19:16
and usually the range data comes in paired up already somehow
so <= < would have to split it up 19:17
nevertheless, 0 <= $n < $max is a very normal thing to see
and makes the mathematicians feel slightly welcome 19:18
oh, Mathematica is another chaining language, I guess
GlitchMr r: 3 ~~ ^3 19:19
camelia ( no output )
GlitchMr r: say 3 ~~ ^3
camelia rakudo f86a1a: OUTPUT«False␤»
GlitchMr r: say 0 ~~ ^3
camelia rakudo f86a1a: OUTPUT«True␤»
GlitchMr r: say 0.5 ~~ ^3
camelia rakudo f86a1a: OUTPUT«True␤»
GlitchMr I probably codegolfed too much.
TimToady chaining also means we can have reductions like [<] 19:20
GlitchMr And there is Ruby, where you can say (0...3) === 3 (with odd order of operations, === isn't associative in Ruby). 19:21
TimToady well, Perl 6 has refrained from borrowing lots of half-though-out features from lots of languages... 19:22
*thought
we have plenty of our own half-thought-out ideas :) 19:23
GlitchMr === is mostly like ~~ in Perl 6, except it accepts operators in different order.
irb(main):001:0> String === "abc"
=> true
TimToady yes, well, that makes an endweight problem
most patterns are longer than the things they're matching against 19:24
GlitchMr Yeah, the triple equals operator in Ruby annoys me.
TimToady kinda wishes that xx were in the opposite order
(sometimes) 19:25
and kinda wishes that regex quantifiers came in the front 19:26
arnsholt I guess the Lispers would appreaciate prefix notation =)
Modulo spelling
masak TimToady: I guess technically you could have reductions without having (syntactically explicit) chaining. 19:27
but having both is more consistent, of course.
TimToady well, we'd have to give up our pseudo-syntactic definition
which is of great pedagogical value 19:28
masak TimToady: just use Rxx ;)
TimToady upon occasion I have :)
GlitchMr I think that === in Ruby only considers (by default, you can overload operators in Ruby) ranges, regular expressions, and classes specifically, otherwise standard == is used (which works like eqv in Perl 6).
TimToady R/ pops up on RC with some regularity :)
19:29 risou is now known as risou_awy
GlitchMr The reason for the strange order is that in Ruby you can only overload first argument. So they to introduce such hack (why not accepts method, or something). 19:29
TimToady the problem with Ruby is not that everything is an object, but that everything is single dispatch :)
and trying to rescue lexical scoping of language tweaks by changing mro on the fly is just a recipe for disaster, I think 19:30
GlitchMr Lexical scope in Ruby (and CoffeeScript which copied it) is a joke. 19:31
19:31 benabik left
GlitchMr Adding irrelevant variable declaration in scope above changes the scope of variable declared in function. 19:31
TimToady is very glad that p6 finally settled on completely isolating function dispatch from method dispatch 19:32
except insofar as method dispatch is really function dispatch if you scratch it hard enough
GlitchMr In my opinion, either declarations should be used, or assignments in scopes should ALWAYS declare new variable.
(I personally prefer declarations) 19:33
TimToady there's a reason Perl has short declarators :)
not as short as C, admittedly :)
GlitchMr With something you type often, even "var" in JavaScript annoys me. 19:34
But it's better than no declarations.
TimToady you're preaching to the choir, or in this case, singing to the preacher 19:35
GlitchMr And I find it annoying that CoffeeScript actually considers lack of variable declarations a feature. 19:36
coffeescript.org/#lexical-scope
Their advice to avoid problems: "be careful".
And there is C#, which does have declarations, and you cannot shadow variables. int variable; { int variable; } is compile time error. 19:37
TimToady .u 💤
yoleaux U+1F4A4 SLEEPING SYMBOL [So] (💤)
19:39 zwut00 joined
masak GlitchMr: implicitly declared variables is a language design feature I'm kinda surprised people don't dislike more. it's really not a good idea. 19:39
19:40 benabik joined
masak GlitchMr: I like the journey that Perl has taken there, from completely non-strict, to recommending 'my'. 19:40
GlitchMr I actually would really want CoffeeScript with 'my'.
I really like CoffeeScript, but the scoping is just broken.
hoelzro prefers explicit declaration 19:42
GlitchMr Also, I wonder why many languages that don't have to compilers cannot detect undeclared variables.
I like how Perl can tell me about undeclared variable compile time.
In Python, I have to wait until code explodes.
masak yes, that's what this is all about. 19:43
huf i think it's a result of DWIM gone horrible :)
the intentions are supposedly good, but .. oh well
masak aye. the corresponding WAT is logical bugs.
and typos going unnoticed. 19:44
GlitchMr ~ $ python -c 'if False: wat'\n'else: print("wat?")'
wat?
I don't think declarations are needed to detect such error. 19:45
Python already knows declared builtins, and wat is not a builtin.
19:45 stevan_ left
GlitchMr Yet, the problem doesn't appear, because wat is in "if False". 19:45
19:45 stevan_ joined
lue What if I modify the grammar of Perl 6 so the sigil of a variable does a my declaration of the name if it doesn't exist before continuing? >:) 19:46
GlitchMr lue, why you want to remove feature that helps detecting bugs.
masak lue: all is fair if you predeclare.
GlitchMr Also, I think it's possible according to Perl 6 specification, by using 'no strict'.
masak lue: just don't expect me to use your module :)
...which is still on by default in -e, IIRC. 19:47
(by spec, I mean)
GlitchMr I actually use -Mstrict for oneliners.
masak me too, most of the time. 19:48
GlitchMr I have a shell function declared that automatically prepends -Mstrict and -w, if Perl is ran with -e or -E flag.
lue
.oO(Bonus points: Make a doubling of the sigil an our declaration. $a = 5 is my $a = 5 and $$a = 42 is our $a = 42. I think I just came up with use Perl6::Corrupted)
GlitchMr Double sigil would be confusing for Perl 5 users. 19:49
lue OK... how about a sigil suffix? $a$ = 42 is our $a = 42 :D 19:50
timotimo and add a twigil $ for good measure
GlitchMr I think macro could do it.
lue The problem with all my module ideas, they always end up requiring slangs :/ 19:51
GlitchMr r: sub postfix:<$>($variable) { quasi { our {{{$variable}}} } }
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/9dg2x_dQa4␤Malformed our␤at /tmp/9dg2x_dQa4:1␤------> ub postfix:<$>($variable) { quasi { our ⏏{{{$variable}}} } }␤ expecting any of:␤ scoped declarator␤»
GlitchMr Or not
I cannot use our in quasi?
19:51 SamuraiJack_ left
lue GlitchMr: try "macro" instead of "sub" 19:51
GlitchMr oh 19:52
lue should perhaps finish reading the NQP slides, and then perhaps someday implement slangs
GlitchMr r: macro postfix:<$>($variable) { quasi { our $::({{{$variable}}}) } }
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/9xQL9r1LTw␤Cannot declare a variable by indirect name (use a hash instead?)␤at /tmp/9xQL9r1LTw:1␤------> able) { quasi { our $::({{{$variable}}})⏏ } }␤»
timotimo marcos aren't easy :( 19:53
lue r: macro postfix:<$>($variable) { quasi { our ${{{$variable}}} } }
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/FNBKwaANDF␤Unsupported use of ${{{$variable}; in Perl 6 please use $({{$variable)␤at /tmp/FNBKwaANDF:1␤------> ($variable) { quasi { our ${{{$variable}⏏}} } }␤»
timotimo haha, wat :D
GlitchMr $({{$variable)
Great hints!
I've a feeling that parsing went wrong.
std: macro postfix:<$>($variable) { quasi { our ${{{$variable}}} } }
camelia std 7c17586: OUTPUT«ok 00:01 54m␤»
GlitchMr wat?
lue $({{$var) ‽ o.o
r: macro postfix:<$>($variable) { quasi { our $({{$variable) } } 19:54
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/iFbPqZAaPK␤Unable to parse expression in block; couldn't find final '}'␤at /tmp/iFbPqZAaPK:1␤------> >($variable) { quasi { our $({{$variable⏏) } }␤ expecting any of:␤ postfi…»
GlitchMr std: macro postfix:<$>($variable) is rw { quasi { $::({{{$variable}}}) } }
camelia std 7c17586: OUTPUT«ok 00:01 58m␤»
GlitchMr std: macro postfix:<$>($variable) is rw { quasi { $::({{{$variable}}}) } }; $lol$ = 42;
camelia std 7c17586: OUTPUT«===SORRY!===␤Variable $lol is not predeclared at /tmp/IN7lOGZR6S line 1:␤------> rw { quasi { $::({{{$variable}}}) } }; ⏏$lol$ = 42;␤Check failed␤FAILED 00:01 59m␤»
lue r: macro postfix:<$>($variable) { quasi { our {{{$variable}}} } } 19:56
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/tmM9yRYIIb␤Malformed our␤at /tmp/tmM9yRYIIb:1␤------> ro postfix:<$>($variable) { quasi { our ⏏{{{$variable}}} } }␤ expecting any of:␤ scoped declarator␤»
GlitchMr std: macro postfix:<$>($variable) { quasi { our {{{$variable}}} } } 19:57
camelia std 7c17586: OUTPUT«===SORRY!===␤Malformed our at /tmp/FcNzAYfP_n line 1:␤------> ro postfix:<$>($variable) { quasi { our ⏏{{{$variable}}} } }␤ expecting any of:␤ name␤ scoped declarator␤Parse failed␤FAILED 00:01 52m␤»
lue r: macro postfix:<$>($variable) { quasi { {{{our $variable}}} } }; $lol$ = 42; say $lol; # so close :) 19:58
camelia rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/tiv2uxomqT␤Variable '$lol' is not declared␤at /tmp/tiv2uxomqT:1␤------> { quasi { {{{our $variable}}} } }; $lol$⏏ = 42; say $lol; # so close :)␤ expecting any of:␤ postfix␤…»
19:58 ksh joined
masak lue: that won't fly -- the parser still wants the variable to be declared at the point it sees it. 20:02
I think eventually you will be able to inject variables into a scope the way you want.
but it definitely doesn't work in Rakudo at this point. 20:03
lue
.oO(And this is where slangs come in handy)
GlitchMr r: sub infix:[/\$\w+\$/] { say "Test" }; $aaaa$ 20:04
camelia rakudo f86a1a: OUTPUT«===SORRY!===␤No such method 'ast' for invocant of type 'NQPMu'␤»
GlitchMr r: sub infix:[/\$\w+\$/] { say "Test" };
camelia rakudo f86a1a: OUTPUT«===SORRY!===␤No such method 'ast' for invocant of type 'NQPMu'␤»
20:08 wtw left
masak no, you can't use [] after infix: 20:11
nwc10 diakopter: :-) 20:12
lue r: sub infix:["@"] ($a, $b) { "$a@$b" }; say "me"@"server" 20:16
camelia rakudo f86a1a: OUTPUT«===SORRY!===␤No such method 'ast' for invocant of type 'NQPMu'␤»
lue std: sub infix:["@"] ($a, $b) { "$a@$b" }; say "me"@"server"
camelia std 7c17586: OUTPUT«ok 00:00 48m␤»
lue std and some of the operator listings in S03 seem to disagree, masak
masak I may be mistaken. 20:18
anyway, feel free to file the LTA error message as a rakudobug.
lue (although I *am* suspect of using a regex in that position) 20:19
It's interesting, but I feel that kind of stuff is already covered by macros and slangs. 20:21
diakopter nwc10: :) 20:22
20:26 cjwelborn joined 20:27 spider-mario left 20:28 gtodd joined
benabik (reading the internals slides) Does QAST::Regex really expect a lexical $ ? Or does it expect $/ or $_ ? 20:37
(Day 2, slide 75)
Ah. The markdown has $¢ 20:39
dalek rl6-roast-data: 6ecfdae | coke++ | / (5 files):
today (automated commit)
20:41
lue benabik: hadn't gotten there yet. Thanks for the unintentional heads-up :)
benabik also submitted an issue. :-) 20:42
Erm. "Greedy matching (\d+:), Frugal (\d+?), Ratchet (\d+:)" Either the first or last is wrong, I think? 20:45
<?alpha> compiles into a zerowidth sub rule of 'ws'? 20:47
lue I don't recall if there was a special token for greedy matching. : definitely makes me think of ratchet as opposed to greediness. (I'm not an expert though) 20:48
diakopter benabik: yeah the first should be ! instead of :
In normal regexes, use *:, +:, or ?: to prevent any backtracking into the quantifier. If you want to explicitly backtrack, append either a ? or a ! to the quantifier. The ? forces frugal matching as usual, while the ! forces greedy matching. 20:49
======= 20:57
20:57 ssutch joined 21:00 skids left 21:01 krokite joined 21:05 berekuk joined 21:10 cognominal joined
dalek kudo/nom: 9658746 | duff++ | docs/release_guide.pod:
minor rewording/reorg
21:12
kudo/nom: c5ba782 | duff++ | docs/release_guide.pod:
de-emphasize Parrot somewhat
kudo/method2sub: aea0349 | (Elizabeth Mattijsen)++ | src/core/ (3 files):
Some small tweaks, not enough to solve the compilation problem though :-(
21:13
21:25 ssutch left 21:26 Teratogen joined
lizmat fg 21:29
diakopter bg
21:34 pmurias joined
lizmat ww 21:34
geekosaur .oO ( you disown %1 ? ) 21:35
21:38 colomon left 21:41 Rotwang1 joined
dalek kudo-js: 62a46b4 | (Pawel Murias)++ | nqp-compiler.nqp:
Pass test 51, replace commented out code to create the compilee_list for multis with something we can handle.
21:51
21:51 colomon joined 22:02 zwut00 left
dalek kudo/method2sub: 25398b8 | (Elizabeth Mattijsen)++ | src/core/ (2 files):
Use "is parcel" everywhere: fixed some ambiguous is rw/is parcel usage
22:06
22:06 btyler left
lizmat method2sub branch still fails to compile: gist.github.com/lizmat/6644568 22:08
giving up for now
gnight #perl6!
22:09 tba left 22:10 crocket joined
crocket Is perl6 still being change? 22:10
Is perl6 still being changed?
lue If I understand correctly, most of the design is stable by this point, but there's still quite a few areas that need some additional brainpower behind them. 22:11
22:14 lichtkind left
crocket lue : Is perl6 ready for production use? 22:16
Or for personal use?
pmurias personal use?
crocket pmurias, I personally maintain softwares. 22:17
Things that don't have to scale. 22:18
lue I wouldn't quite say production use yet (I'm not involved enough to make an informed response, so I'll default to "be weary" for now), but you can definitely use it at home for personal scripts.
diakopter haha weary 22:19
wary, too
lue (Again, the guys who actually do intense work on Perl 6 would be more helpful in telling you what Perl 6 (and particularly Rakudo) is fine for at this point.)
diakopter: I think I probably meant wary instead of weary. You mentioning that made me realize I probably am not using wary when I should be, stupid similar spellings and pronunciations. :) 22:20
diakopter :D
crocket: perl 6 is ready for early adopters to toy around with 22:21
lue
.oO(Also not helping is that wary and weary have almost-identical meanings in my head.)
diakopter plenty of things could be discovered to work well and be relied upon
but generally if you try any particular thing, it probably won't work 22:22
benabik lue: You're wary when you're weary?
22:23 Rotwang1 left
lue benabik: rather weary when I'm wary :) /me also realized here he probably needs to look up "wary" soon 22:23
benabik lue: weary = tired, wary = cautious.
22:24 ssutch joined, dmol left
lue One very rough and somewhat inaccurate guide to what works in Perl 6 is to look at which Synopsis the feature is described. The higher the S-number, the more likely it's not fully stabilized. 22:25
benabik: I think my mind essentially says "When you need to be wary, you'll be weary trying to figure out what passes your suspicions." 22:26
diakopter heh. Synopsis-fatigue 22:29
synopsebot: help
synopsebot diakopter: Sorry, this bot has no interactive help.
diakopter synopsebot: die? 22:30
synopsebot: restart
synopsebot: S6666
synopsebot: S6666:6666
synopsebot diakopter: Link: perlcabal.org/syn/S6666.html#line_6666
lue (so "wary" connotes to me a kind of caution that occurs when you're "tired of all this crap". That connotation probably happened because of the similar spelling and pronunciation in the first place. :D)
TimToady there is an overtone of "been burned before" 22:31
benabik denotations and connotations of those words are definitely more nuanced than I stated. :-D
22:32 benabik left
diakopter gun-shy 22:32
TimToady but "beware" doesn't seem to carry the same overtone, quite
well, maybe for the speaker :)
lue
.oO(Why does connotation have no particular connotation for me, yet denotation has a particular denotation?)
geekosaur wary from aware, which does suggest "aware of past encounters"
whereas *be*ware suggests no (or suspected no) existing awareness 22:33
lue Long story short: Advising someone to "be wary" is the same as advising them to "be weary" in my mind. :)
geekosaur see, but to me weariness suggests potential lack of awareness due to tiredness... 22:34
TimToady to me it's almost the opposite; you have to be in a state of heightened alertness to be ware
lue Maybe I'll just invent the word wæry and be done with. 22:35
s/\./ it./
geekosaur (and then of course there's worry...) 22:36
TimToady well, we don't reject you as a person just because your brane works funny...
lue My 'brane is yours too, according to the theory. 22:37
TimToady Mmm
22:38 pecastro_ is now known as pecastro
lue So: my advice is to be wæry with some of the less-developed features of Perl 6 for now. 22:38
22:39 BenGoldberg joined
BenGoldberg .ud perl 22:39
yoleaux pur'-el (n) 1. Computer programming language used mostly by male virgins, between the ages of 17 and 35, who are also well versed in the Lord Of The Rings stories.Pratical Extraction and Reporting La
crocket diakopter, I'm sad. 22:41
diakopter crocket: sad?
TimToady there are antidepressants for that...
lue I don't think it's very pratical to consult Urban Dictionary ;)
crocket yoleaux, male virgins? ha 22:42
diakopter, Perl6 is not ready for its prime time.
perl5? I don't know.
diakopter perl5 is past its prime :P 22:43
TimToady crocket: Perl 6's prime time will be for the next few decades, we hope.
masak 'night, #perl6
TimToady o/
lue good ♞, masak o/
22:43 pmurias left
BenGoldberg Why is perl6 not ready for it's prime time? 22:44
TimToady mostly, just not fast enough yet 22:45
lue JVM's fine, so long as you don't mind the startup. And I hear MoarVM is eventually supposed to be really fast (at least when compared to the Norwegian Blue) 22:46
BenGoldberg Norwegian Blue?
TimToady shh, it's sleeping
crocket Is MoarVM competing with ParrotVM? 22:47
TimToady in a friendly, duel-to-the-death sort of way
corecatcher Duel of the fates?
crocket TimToady, That's a contradiction 22:48
lue It all depends on what we can get from the Notlob pet shop.
BenGoldberg Once MoarVM is capable of running Rakudo, ParrotVM will probably die.
corecatcher tries with jnthn's INIFile grammar
TimToady crocket: nonsense, you've obviously never read The Three Musketeers
or Steven Brust, for that matter... 22:49
corecatcher .. but I'm having problems on iterating over the match object after it all parsed fine, doing sth like my $sections := $m.ast; but nqp complains about a not-iterable
diakopter BenGoldberg: well, that's a sensitive topic; plenty of people have mixed feelings about it, and lots of time and money and emotions invested and friendships lost
(and gained) 22:50
crocket Why is perl6 taking so long to take off? Are people building the next large hedron collider? 22:51
hadron
TimToady well, it's little like fusion, y'see, except we have more hope of breakeven
diakopter TimToady: we need to add more adamantium to the mix 22:52
lue
.oO(If TimToady threw enough coffee mugs at Perl 5 to kill it for good, perhaps more people would be over here at the moment...)
diakopter sigh.
TimToady we're not in the business of telling people what not to use 22:53
lue "If" lacking the connotation of "If only", of course. I was only making a logical (if somewhat surreal) statement.
TimToady the only way Perl 6 will ever succeed is by being a darn sight better than anthing else around
lue: we already have enough people that want to fight, and sufficient problem keeping them docile 22:54
lue Being a 3m-wide butterfly helps in the visibility department. :)
TimToady: yeah, I didn't mean that statement the way it came out. (This error I noticed quite soon after too :/) 22:55
(specifically the air of contempt for P5 was not meant. Stupid text, lacking proper emotional cues...) 22:56
TimToady having a 3m-wide butterfly as a mascot is just one of the ways that Perl 6 can be better, sure :)
crocket hmm
TimToady but we'd like it to be better in most of the technical ways as well
crocket Is perl6 planned to become the best language in the contemporary time?
corecatcher finally got it working while you had your discourse!
TimToady it already is, except for the running fast part :) 22:57
crocket I'm not sure how it is.
Is it even better than clojure?
TimToady yup :)
lue just fell into the habit again of imagining VM bytecodes becoming instruction sets of Actual CPUs™, this time MoarVM
TimToady but we're known to be prejudiced in the matter
crocket TimToady : Let me see after 5~10 years. 22:58
lue Well, for example, perl6 -e 'say "Hello World!"' takes about 4 seconds, using Parrot as the VM.
22:58 ssutch left
lue & 22:59
22:59 EvanTeitelman joined
TimToady crocket: so you define "better" as "popular"? :P 23:00
TimToady was kinda hoping "better" referred to something slightly more fundamental... 23:01
crocket TimToady : clojure is not popular.
TimToady well, it's got more press at the moment, anyhoo
crocket Clojure's main goals are beauty and practicality.
It's a functional concurrent lisp.
TimToady whereas ours are practicality and beauty 23:02
whereas we're function and concurrent without the lisp part :)
well, lisp syntax, anyway
crocket TimToady : I'm not sure how perl6 is functional.
TimToady how do you define it? 23:03
crocket I can't now. 23:05
TimToady Perl 6 is certainly functional in pretty much all the respects that Lisp is
crocket perl5?
TimToady to a lesser extent, but it's certainly easy to do higher-order programming in perl 5
not as easy as in perl6
if you're thinking more in terms of pattern matching of function signatures, then rosettacode.org/wiki/Pattern_matching#Perl_6 stands up pretty closely to Haskell 23:06
crocket TimToady : When will perl6 be ready for general purposes?
10 years? 23:07
TimToady it's ready for most of them now, as long as one of your general purposes is not speed
see rosettacode.org/wiki/Category:Perl_6 for 625 examples of that
and we're working on the speed part... 23:08
"10 years" means nothing in isolation 23:09
crocket TimToady : When will it be fast enougH? 23:10
At least, it should be faster than python.
diakopter soon enough?
TimToady it's fast enough already, except when it isn't
we would like to get faster than python, sure
might take another year or so 23:11
diakopter "so"== x3-4
TimToady and when you say "python", which one are you referring to? 23:12
they all have different characteristics
crocket Does perl6 have IDE or emacs support?
23:12 jnap left
crocket TimToady : I mean Cython. 23:12
Or jython?
PyPy is just out of question. 23:13
TimToady there's a syntax mode for emacs, though most of us here use vim's perl6 mode 23:14
the Padre IDE did a proof of concept that worked pretty well
crocket Why vim?
No reason?'
TimToady because my pinky finger is too arthritic to use emacs anymore 23:15
plus I already have several other religions to maintain my allegiance to :)
diakopter "most of us here use vim".. well, jnthn & I use Notepad++, and not_gerd uses Notepad2 23:16
TimToady why is PyPy out of the question?
we've certainly entertained the notion of targetting it someday as one of our backends
crocket TimToady : PyPy is slow. 23:17
TimToady has heard otherwise lately, but maybe it's just hype :) 23:18
diakopter crocket: what's slow about it?
crocket diakopter, PyPy runs on python.
Cython runs on native platform.
Jython runs on JVM.
23:19 araujo left
diakopter hmmm speed.pypy.org/ 23:19
crocket: PyPy's JIT doesn't compile to python :P 23:20
23:20 araujo joined
crocket hmm 23:20
23:20 araujo left, araujo joined
TimToady there are many meanings of "on", but that's not one of them in this case 23:20
crocket diakopter, Do you mean only compiler is slower?
diakopter I didn't know the compiler was slower? 23:21
is it?
TimToady I seem to recall that PyPy achieves jit-ness by adding type annotations to Python, so that's also a problem for Pyfolk culturally 23:22
whereas native type annotations are built-in to Perl 6 from the getgo 23:23
23:26 skids joined 23:36 fridim__ joined 23:41 krokite left, krokite joined 23:50 zamolxes joined
crocket TimToady : What's so special about type annotation? 23:59