»ö« 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«97773717997937917797737717397337317197137117"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«97773717Nil» | ||
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}, 97773717997937917797737717397337317197137117"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«97773717997937917797737717397337317197137117"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/A2Nxca2XFPCannot 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/cU1DfZJi7xCannot 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/i7AEUxpdf5Cannot 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/mygTg3ljl1Two terms in a rowat /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/JneoskI1HaUnable 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/qzxDAFdBuzUnexpected 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/Tb30qQWaXJUnexpected 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«00.10.20.30.40.50.60.70.80.91» | ||
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" "worldParse failedFAILED 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/InmL1g64EYUnsupported 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_dQa4Malformed ourat /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/9xQL9r1LTwCannot 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/FNBKwaANDFUnsupported 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/iFbPqZAaPKUnable 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 failedFAILED 00:01 59m» | ||
lue | r: macro postfix:<$>($variable) { quasi { our {{{$variable}}} } } | 19:56 | |
camelia | rakudo f86a1a: OUTPUT«===SORRY!=== Error while compiling /tmp/tmM9yRYIIbMalformed ourat /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 declaratorParse failedFAILED 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/tiv2uxomqTVariable '$lol' is not declaredat /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 |