»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by masak on 12 May 2015. |
|||
00:09
jordman joined
00:14
jordman left,
vendethiel left
00:24
jordman joined
00:36
vendethiel joined
00:55
colomon left
00:58
mtj_- joined,
vendethiel left
01:01
colomon joined
01:09
BenGoldberg joined
01:11
llfourn joined
01:19
rmgk_ joined,
rmgk is now known as Guest62902,
Guest62902 left,
rmgk_ is now known as rmgk
01:22
mtj_ joined
01:30
llfourn left
01:32
telex left
01:34
telex joined
01:39
Ben_Goldberg joined
01:43
BenGoldberg left
02:08
noganex joined
02:10
leedo joined
02:11
noganex_ left
02:15
raiph left
02:16
raiph joined
|
|||
AlexDaniel | how can I print to stderr? Cannot find it | 02:24 | |
geekosaur | note "foo", or printing to *ERR (IIRC) | 02:26 | |
02:26
cognominal left
|
|||
AlexDaniel | note :o | 02:26 | |
geekosaur | it's the level below "warn" :) | 02:27 | |
AlexDaniel | geekosaur: thanks | ||
02:30
cognominal joined
02:36
yqt left
|
|||
PerlJam | m: note "This goes to stderr" | 02:37 | |
camelia | rakudo-moar 48c0ba: OUTPUT«This goes to stderr» | ||
PerlJam | oh, /me needs to read faster and scroll down more | ||
02:38
average joined
|
|||
average | github.com/jaffa4/Dependency-Sort/...y/Sort.pm6 | 02:38 | |
guys... | |||
what happened there ? | |||
i looked at the source of that.. i was like "wow, I never thought topological sorting could be sooo complicated" | 02:39 | ||
am I just stupid or is that code convoluted ? | |||
PerlJam | no, you're not stupid :) | 02:40 | |
jercos | well it is... | ||
average | hm | ||
jercos | m: (1+2i, 1+1i, -1+1i).sort | ||
camelia | ( no output ) | ||
jercos | m: (1+2i, 1+1i, -1+1i).sort.say | ||
camelia | rakudo-moar 48c0ba: OUTPUT«-1+1i 1+1i 1+2i» | ||
jercos | sort of Complex | ||
average | webdocs.cs.ualberta.ca/~contest/co...cal_sort.c | 02:41 | |
topo_dfs | |||
it's not big | |||
02:41
gfldex left
|
|||
average | and it looks ok, people can understand it | 02:41 | |
compare that to Sort.pm6 above.. | |||
something seems wrong | |||
PerlJam | average: irclog.perlgeek.de/perl6/2015-07-17#i_10914788 | 02:42 | |
average | PerlJam: i see, so i'm not the first one to notice this | 02:43 | |
"the fun part of the topo sort on p6 modules is taking into account multiple package names inside the same file" | |||
"otherwise you end up coloring the same module multiple times while inside a single file" | 02:44 | ||
i don't find that fun .. honestly | |||
ugexe: ^^ | |||
I would be scared to work on things where people would define "fun" like this ^^ | |||
PerlJam | fun == challenging == non-obvious == makes you stretch your brain | 02:45 | |
average | well yes | 02:46 | |
so my thoughts on that are | |||
there is sufficient complication where it can't be avoided. if you add unneeded complication, things will undoubtedly get out of hand. | |||
02:48
llfourn joined
|
|||
PerlJam | average: are you going to send jaffa4 a PR for a better topo sort? :) | 02:48 | |
02:49
raiph left
02:50
nys left
02:53
raiph joined
|
|||
AlexDaniel | m: say 'test' loop; | 02:57 | |
camelia | rakudo-moar 48c0ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/nUjh0zvIDRTwo terms in a rowat /tmp/nUjh0zvIDR:1------> 3say 'test'7⏏5 loop; expecting any of: infix infix stopper postfix statement end st…» | ||
AlexDaniel | hmmm | ||
it is kinda weird that you can put "for" on the right side but can't do the same thing with "loop" | 02:59 | ||
not too weird though | |||
03:00
Ben_Goldberg left
|
|||
PerlJam | Why is that weird? | 03:01 | |
average | presumably AlexDaniel is refering to consistency of features that basically do the same thing ("for" and "loop") | ||
AlexDaniel | average: yep | 03:02 | |
03:02
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
PerlJam | That would be a foolish consistency IMHO. | 03:02 | |
average | PerlJam: why ? | ||
AlexDaniel | "foolish consistency" :) | ||
wasn't it "strangely consistent" | 03:03 | ||
average: well, that would mean that you are allowed to write stuff like: say 'test' loop (my $i = 0; $i <= 5; $i++); | 03:04 | ||
geekosaur | there's strangely consistent, and there's the hobgoblin of little minds... :) | ||
PerlJam | average: firstly, it doesn't read well. secondly, there's a reason the C-style loop isn't called "for" anymore; it's because they more different than the same. | ||
but ... if TimToady disagrees, I'll happily accept a loop statement modifier. :) | 03:05 | ||
average: and thirdly, it makes the logic more convoluted. | 03:07 | ||
.oO( The initializer comes *after* the body of the loop? Crazy! ) |
03:08 | ||
average | design.perl6.org/S04.html#The_gener..._statement | ||
loop ($i = 0; $i < 10; $i++) { } | |||
loop {...} | 03:09 | ||
03:09
jack_rabbit joined
|
|||
average | loop (;;) {...} | 03:09 | |
these are the 3 forms of loop that I was able to find | |||
the 1st and 3rd are the same as the C-style loop "for" | |||
the 2nd one seems pretty much the same as the 3rd one | |||
while(1) {} would do the same thing as 2nd and 3rd | 03:10 | ||
(in C) | |||
PerlJam | no, that would error :) | ||
average | what would the error be ? | ||
PerlJam | m: while(1) { say "hi" } | 03:11 | |
camelia | rakudo-moar 48c0ba: OUTPUT«5===SORRY!5===Word 'while' interpreted as 'while()' function call; please use whitespace instead of parensat /tmp/zF33atdhaJ:1------> 3while7⏏5(1) { say "hi" }Unexpected block in infix position (two terms in a row)at /tmp/zF33atdha…» | ||
AlexDaniel | ... | ||
average | m: while 1 { say "hi" } | ||
PerlJam | that one is fine. | 03:12 | |
camelia | rakudo-moar 48c0ba: OUTPUT«(timeout)hihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihihi…» | ||
AlexDaniel | you can also just put a whitespace in between | ||
average | I'm still wondering what the killer-features of Perl6 are | 03:13 | |
it's due for official release at the end of the year | |||
AlexDaniel | average: grammars and multiple dispatch? | ||
average | I'm an foolishly a 'very' polyglot programmer. I would like to use Perl6, but I'm just not sure where the advantage would be. What can I leverage it for ? | 03:14 | |
multiple dispatch is already present in mainstream languages en.wikipedia.org/wiki/Multiple_dispatch | 03:15 | ||
the grammars are already covered by bison/lex/antlr/lemon/spirit | |||
PerlJam | Perl has always taken the best ideas and combined them into "one" language. | 03:16 | |
average | somehow, i'm not sure how Perl6's grammars compare to the industrial-grade ANTLR | ||
claiming "the best ideas" is kindof demanding proof | 03:17 | ||
03:18
amurf joined
|
|||
AlexDaniel | multi foo(Str $ where 'somestring') { ‘is it true that mainstream languages can do this?’ } | 03:18 | |
that is, subtypes | |||
PerlJam | AlexDaniel: what's a "mainstream language"? | 03:19 | |
I mean, Haskell can do that with ease. Is haskell mainstream? | |||
AlexDaniel | PerlJam: I don't know, I just quoted him | ||
average | PerlJam: I think Haskell is more popular than Perl6 | ||
sorry, AlexDaniel ^^ | |||
PerlJam | average: could be. | ||
AlexDaniel | average: true | ||
average | AlexDaniel: and there are other mainstream languages that can pull that off | 03:20 | |
AlexDaniel | average: just wondering, which ones? | ||
average: because I've never actually seen that in some real code, maybe I'm just blind | |||
average | what does that method do ? if the parameter has "somestring" in it, then that method is selected to be used ? | ||
foo("ABC somestring DEF"); | 03:21 | ||
that would call the method | |||
but | |||
foo(""); | |||
what would that call ? ^^ | |||
AlexDaniel | foo('somestring') will call that, everything else wont | ||
average | would that cause an error ? | ||
foo(""); | 03:22 | ||
AlexDaniel | depends on other signatures | ||
03:22
amurf left
|
|||
average | well, imho you can do that sort of thing easily in C++ .. and the check for 'somestring' can be part of the function body, it doesn't have to be in the declaration. | 03:23 | |
i don't find multiple dispatch as a killer feature | |||
for grammars, it's very hard to beat a production & industrial-grade parser generator such as ANTLR | |||
AlexDaniel | m: multi foo(Str $ where 'somestring') { 'hi' }; multi foo(Str $) { 'hello' }; say foo 'somestring'; | ||
camelia | rakudo-moar 48c0ba: OUTPUT«hi» | ||
AlexDaniel | m: multi foo(Str $ where 'somestring') { 'hi' }; multi foo(Str $) { 'hello' }; say foo 'somestring111'; | 03:24 | |
camelia | rakudo-moar 48c0ba: OUTPUT«hello» | ||
AlexDaniel | multi foo(Str $ where 'somestring') { 'hi' }; multi foo(Str $) { 'hello' }; say foo 25; | ||
average | not sure how much people were inspired by ANTLR when they wrote Perl6's grammars.. | ||
AlexDaniel | m: multi foo(Str $ where 'somestring') { 'hi' }; multi foo(Str $) { 'hello' }; say foo 25; | ||
camelia | rakudo-moar 48c0ba: OUTPUT«Cannot call foo(25); none of these signatures match: (Str $ where { ... }) (Str) in block <unit> at /tmp/9XP9J527NL:1» | ||
average | to me, Haskell and Ocaml seem like the bleeding edge of language design | 03:25 | |
Perl6 does not seem to be in that vein | 03:26 | ||
PerlJam | weird | ||
AlexDaniel | average: well, then you can use assembly and write any feature yourself, why not | ||
PerlJam | why does haskell or ocaml seem like the bleeding edge to you? | ||
average | PerlJam: Haskell has something I've always wanted | 03:27 | |
PerlJam | which is? | ||
average | PerlJam: you can properly represent abstract data structures in it | ||
you will never be able to do that in Perl5 | |||
I doubt(but I may be wrong) that you can do that in Perl6 | |||
03:28
raiph left
|
|||
average | Ocaml can do it too | 03:28 | |
PerlJam | I haven't thought much about it, but I'm pretty sure you're wrong about Perl 6 :) | ||
average | can you represent a group in Perl6 properly ? | 03:29 | |
the group from group theory | |||
with identity element | |||
all the axioms | |||
AlexDaniel | I haven't thought much about it too, but is there any reason why this should be baked into the language? | 03:30 | |
average | yes | 03:31 | |
Perl6 has types, that's a great advancement from Perl5 | |||
Perl5 is basically shit, excuse my french but.. yeah. It's great for scripts but beyond that it's just crap. | |||
Perl6 actually has types | |||
PerlJam | Perl 5 hs types too. They're on CPAN and come in all sorts of shapes and sizes. :) | ||
average | when you get types, you start thinking about type safety and "if i pass this thing there, will it break" and that sort of thing | 03:32 | |
AlexDaniel | average: not that you have to use them | ||
m: multi foo($ where 'somestring') { 'hi' }; multi foo($) { 'hello' }; foo 'somestring'; | |||
camelia | ( no output ) | ||
AlexDaniel | m: multi foo($ where 'somestring') { 'hi' }; multi foo($) { 'hello' }; foo 'somestring'; | 03:33 | |
camelia | ( no output ) | ||
AlexDaniel | oops | ||
PerlJam | AlexDaniel: often you *Want* to use them though. | ||
AlexDaniel | m: multi foo($ where 'somestring') { 'hi' }; multi foo($) { 'hello' }; say foo 'somestring'; | ||
camelia | rakudo-moar 48c0ba: OUTPUT«hi» | ||
AlexDaniel | PerlJam: and often I don't. That's why I like gradual typing | 03:34 | |
PerlJam | yeah. me too. | ||
average | I really think the world is converging in the direction of Haskell/Ocaml | 03:35 | |
they're almost mainstream | |||
but not quite.. | |||
the hype is there but the talent is not | |||
the risk and time investment for someone learning Haskell/Ocaml is high | |||
the reward is sketchy and hard to estimate | |||
in terms of money | |||
in terms of personal knowledge it's high | 03:36 | ||
PerlJam | well, like anything, you learn new concepts that you might be able to apply in other languages. | ||
average | if I knew Haskell/Ocaml really well, I would definitely use them in projects | 03:37 | |
PerlJam: I would argue that learning certain concepts in the wrong language is extremely harmful | 03:38 | ||
for example threads. learning them in Perl5 is a huge waste of time and prone to huge misunderstandings | |||
PerlJam | yep, I'll voilently agree with you there :) | ||
average | even sockets | 03:39 | |
PerlJam | of like learning OOP in C++ and then get exposure to smalltalk or java. You'll have lots of things to unlearn. | ||
s/of/or/ | |||
average | C++ and Java, yes there are things to unlearn, but not that many. Generally, the best decision is to stick to one. | 03:42 | |
If you're at some interview and you're sketchy about operator precedence | |||
or the exact details of how polymorphism works in C++/Java(depending on the type of job) | |||
that's like the language foundation | 03:43 | ||
if you mess that up.. then.. yeah, your investment in that language is pretty much s**t i would say | |||
you've basically lost all your time for nothing | |||
I don't know of anyone writing smalltalk to be honest | |||
except for Randall Schwartz who can do whatever he wants with his prestige and charisma | 03:44 | ||
like "I'm Randal and I write in smalltalk for a living" . Yeah right, because you're Randall and you have I dunno how many books published, everyone knows you and you're really popular. | |||
geekosaur | smalltalk is mostly the domain of business applications | ||
average | the guy could write in COBOL and he'd still be fine. | 03:45 | |
geekosaur | although it's being replaced by java, slowly | ||
IBM was heavily into smalltalk for business apps | |||
but people never see that side of IBM | |||
TEttinger | operator precedence: if you honestly rely on knowing every detail of this and hope someone can read your code without your gracing them with explicit grouping, you should not be hired | ||
average | TEttinger: trust me.. | 03:46 | |
tests are tests | |||
TEttinger | readability is more important than rote memorization | ||
average | you give a test, you get 3 operator precedence questions | ||
and there are 100 candidates | |||
you fail maybe 2 more questions, that you also consider to be worthless because of their low importance | 03:47 | ||
you will fail the test | |||
you will not get the job | |||
#epicfail | |||
AlexDaniel | but you will get a better job | ||
average | how do you know ? | ||
btw all online tests for pretty much all languages have operator precedence questions in them | 03:48 | ||
and not just online tests | |||
real-life job interviews have them too | |||
AlexDaniel | well, maybe not, but at least you will not be working in a group of freaks who feel that it's ok to leave parens out everywhere... | 03:49 | |
TEttinger | fine, in java what will this return: 013 << 2 & 16 | 03:50 | |
average | i have no idea | ||
i would fail that test | |||
013 is octal iirc | |||
TEttinger | it's a very very tricky question. the answer is 0 but you'd expect 1 | ||
yes | |||
that's why | 03:51 | ||
average | 013 << 2 is 013 * (2^2) | ||
TEttinger | & goes last yep | ||
average | & 16 is the last 5 bits of that number | ||
TEttinger | err yes not 0 and 1 | ||
the answer is 0 but you'd expect 16 | |||
and no | |||
not the last 5 bits | |||
average | which bits then ? | 03:52 | |
TEttinger | it's only the 5th bit | ||
average | oh, you're right | ||
last 5 would've been & (2^5 - 1) | |||
TEttinger | and if you have to program with people who don't document that stuff you will at least wish you weren't hired | ||
AlexDaniel | TEttinger: I'd say that this code will return a new git commit | ||
PerlJam | "operator precedence" is not deep knowledge. I wouldn't care if someone didn't get that stuff right unless they claimed to live and breathe the language. | ||
TEttinger | yeah, deep knowledge of Java is horrible stuff like design patterns | 03:53 | |
AbstractSingletonFactoryBean | |||
geekosaur | (btw, IBM's policy of playing the Smalltalk card very close to its chest is why it's switching to Java; they finally realized that they screwed themselves, because there are no Smalltalk programmers to be had as a result...) | ||
s/its/their/ | |||
average | geekosaur: I wonder if IBM really thinks of it as a tragedy | 03:54 | |
i think IBM is basically making money at an inconceivable pace | |||
ShimmerFairy | This is incidentally why I'm not a fan of the "superstitious parens" idiom that floats around Perl 6; making it clear what your code does is incredibly useful, and to me more important that minimizing the number of parens you use. | ||
average | so high that they couldn't care less about what language Smalltalk dies or which one survives | ||
geekosaur | to the extent that they can't find Smalltalk programmers to maintain business apps any more, yes | ||
PerlJam | ShimmerFairy: unless the parens happen to change the meaning of the code, I agree with you :) | 03:55 | |
geekosaur | no, they do care. because the companies they peddled it to are not happy to pay IBM the big bucks --- and these companies very much ARE the big bucks for IBM --- if IBM cannot maintain their code | ||
average | IBM can probably rewrite everything they have in whatever other language they want | ||
in comparison however | |||
geekosaur | ... | ||
TEttinger | deep knowledge of Java also may encompass really nasty stuff depending on what company you're working with, like the crypto APIs that it doesn't even ship with by default | ||
average | the risk is much higher for the programmer in relation to which technologies he learns | ||
the risk is extremely high actually | 03:56 | ||
geekosaur | you've never encountered change control in a Fortune 50, I see | ||
ShimmerFairy | PerlJam: that's what they're supposed to do :P I just don't like when someone cries out "superstitious parens!!" in stuff like 2 + (3 * 5) , as a simple example. | ||
average | that's why Perl5 programmers today should get paid tons of money | ||
because nobody wants to touch Perl5 | |||
except there are also few Perl5 jobs | |||
PerlJam notes that IBM was the company touting ASCII *and* EBCDIC platforms simultaneously in the 1960s | |||
average | and if you're living where I live(Romania), Perl5 are not only scarce, but they also have very very shitty salaries | ||
like extremely shitty salaries | |||
and they're those kinds of outsource projects led by Indian managers | 03:57 | ||
*outsourced | |||
ShimmerFairy | PerlJam: IBM _still_ is very invested in EBCDIC systems, judging by their complaining at C++ removal of trigraphs (finally, geez) :) | ||
geekosaur points up at remark about change control | 03:58 | ||
PerlJam | ShimmerFairy: that might just be because of all the legacy systems out there still using EBCDIC | ||
geekosaur | seriously, most programmers "out here" have no conception of how it works there. or how much money is involved in it | ||
average | 06:56 ( geekosaur) you've never encountered change control in a Fortune 50, I see | ||
geekosaur: maybe expand on the change control ? | |||
geekosaur | let me put it this way: it's why IBM still needs to worry about EBCDIC | 03:59 | |
average | because it's too expensive to rewrite all the s*it in order to get rid of EBCDIC ? | ||
geekosaur | they are not going to replace existing systems just because EBCDIC is inconvenient | ||
PerlJam | ShimmerFairy: I mean ... there are tons of financial institutions and at least one big blue company that still has to worry about finding COBOL programmers too :) | ||
geekosaur | the amount of changes and resulting downtime is, yes | ||
ShimmerFairy | PerlJam: yeah, that's what it is, legacy stuff. | 04:00 | |
geekosaur | there is legacy stuff. a lot of it. and it's not going ANYWHERE | ||
ShimmerFairy | But as far as I'm concerned, if you're still running a system that can't handle basic ASCII characters, it's your own fault. | ||
geekosaur | as long as it works | ||
geekosaur has only been on the outermost periphery of that world, but has some understanding of how it works. and that it flat out does not care about your opinions of how the world should work | 04:01 | ||
it works its way | |||
PerlJam | There was a federal computer system that I had to login to download data from. The only interface was via modem. Later, that system got put on the internet. They just hooked a serial cable from the original system to another such that you could now telnet and get the same stuff as you would via modem. | 04:04 | |
That old system did its job and kept running. It may still be running now for all I know. | |||
"If it ain't broke, don't fix it" | 04:05 | ||
(though, I had a contract with a federal agency last year to convert a mass of fortran code to java because they apparently were already having trouble finding fortran programmers to maintain it) | 04:06 | ||
average wonders how that Fortran job went | 04:08 | ||
PerlJam | it went well. They want to do it again (but this time with VB code). They're standardizing on Java I guess. | 04:09 | |
The most frustrating thing about the fortran project was that none of the people I was in contact with were the actual users of the code, so I would ask them stuff and they would say things like "we'll have to get Bob to weigh in on that" only Bob wasn't ever around. | 04:13 | ||
average | sod id you automate your Fortran -> Java conversion in some way ? | ||
Bob was dead | 04:14 | ||
or retired | |||
or had died in fires | |||
PerlJam | Sure ... I had a student worker hand convert the code. It was completely automated for me :) | ||
average | really ? interesting | ||
so .. what did you _do_ for that job ? | |||
were you a manager ? | |||
PerlJam | But I did write a little test framework so that we could make sure that the java subroutines did the same thing as the equivalent fortran subroutines. | 04:15 | |
yeah, I was a "manager". I wrote the test stuff, I communicated quite a bit, and I wrote a good bit of a report | 04:16 | ||
average | I should definitely try to get out of the whole programming thing | ||
04:16
khw left
|
|||
average | sounds like nobody wants to do it these days | 04:16 | |
PerlJam | actually, I'd like to do more programming and less ... non-programming. It's fun. | ||
04:18
coffee`_ joined
04:26
cognominal left
04:37
vendethiel joined
04:53
kaare_ joined
05:07
amurf joined
|
|||
dalek | kudo-star-daily: 23fd793 | coke++ | log/ (8 files): today (automated commit) |
05:07 | |
rl6-roast-data: 6002473 | coke++ | / (9 files): today (automated commit) |
|||
05:12
amurf left
05:16
aborazmeh left
05:17
atroxaper joined
05:22
atroxaper left
|
|||
Woodi | hallo #perl6 :) | 05:34 | |
first: I don't think Beans counts as design patter | 05:35 | ||
second: Go4 book have overmhelming (for me) amount of Smalltalk examples... | 05:36 | ||
third: design patterns are not something that born with Java... rather they are "patterns" _discovered_ in real code. somewhere before 1998... it's exactly like with algoritms: Hey, I saw that sequence of actions before, hmm... Yeah, it's a pattern there! | 05:39 | ||
anyone considers algos harmful ? | 05:40 | ||
05:43
AlexDaniel left
05:53
vendethiel left
05:56
vendethiel joined
05:58
diana_olhovik_ joined
06:12
szabgab joined
|
|||
szabgab | hi | 06:13 | |
when loading a module with "use" is perl6 calling any 'import' function implemented in the module ? | 06:14 | ||
06:15
cognominal joined
06:18
vendethiel left
06:24
FROGGS joined
|
|||
lizmat | timotimo++ # P6W | 06:27 | |
szabgab: if this just about exporting subs, mark the subs with the "is export" trait | 06:33 | ||
06:34
szabgab left
06:36
vendethiel joined
06:44
skids left
06:51
nebuchadnezzar left
06:53
nebuchadnezzar joined
06:55
dalek left
06:56
dalek joined,
ChanServ sets mode: +v dalek
06:59
vendethiel left
07:04
Mhoram joined
07:12
ilogger2 joined,
ChanServ sets mode: +v ilogger2
07:13
ilogger2 joined,
ChanServ sets mode: +v ilogger2
07:19
rurban joined
07:41
vendethiel joined
08:04
darutoko joined
08:26
jaffa4 joined
|
|||
jaffa4 | hi all | 08:27 | |
How can I see an understandable mar assembly of a Perl6 code? | |||
08:32
RabidGravy joined
|
|||
FROGGS | jaffa4: moar --dump Foo.moarvm | 08:35 | |
08:36
atroxaper joined
08:37
szabgab joined
|
|||
szabgab | it is about some custom code Bailador has in its import function github.com/tadzik/Bailador/blob/ma...dor.pm#L11 | 08:38 | |
currently AFAIK I need to run Bailador::input() after use Bailador for that to run | |||
08:40
atroxaper left
|
|||
FROGGS | szabgab: yes, I think I had to call import too in my app | 08:41 | |
szabgab | FROGGS: do you have a Bailador based app? Can you give the URL? | 08:42 | |
08:45
amurf joined
08:49
amurf left
08:51
espadrine_ joined
|
|||
FROGGS | szabgab: github.com/perl6/cpandatesters.per...ter/app.pl | 08:51 | |
szabgab: though that is not used anymore, since we generate static html pages for performance reasons | 08:52 | ||
masak | good antenoon, #perl6 | 08:55 | |
FROGGS | o/ masak | 08:57 | |
nine | PerlJam: why would we not want daemons written in Perl 6 to make life easier to their users by allowing to differentiate them in ps output? I see absolutely no reason to forbid changing $*PROGRAM-NAME while it has been used for good many times. | ||
szabgab | FROGGS: may I add it to the readme of github.com/tadzik/Bailador ? | ||
09:00
spider-mario joined
|
|||
masak | I'm with nine on this one. | 09:03 | |
(which also means I did the right thing in my case, assigning to a new variable and using/changing that) | 09:04 | ||
09:06
szabgab left
|
|||
masak reads the night's backlog with average | 09:11 | ||
RabidGravy | on Linux at least you could make something with pthread_setname_np without troubling the core | 09:12 | |
jaffa4 | masak: what is the current direction of development? | 09:13 | |
masak | jaffa4: the... direction? definitely forwards, I'd say. :) | ||
jaffa4 | What is being improved in general? | 09:14 | |
masak | well, I wrote quite a lot of Perl 6 yesterday. | ||
it was for a script at $work. so that got improved quite a lot. | |||
jaffa4 | Who uses Perl6 now? | 09:15 | |
masak | me! | ||
little known secret: they made this language so that masak can use it. other people can use it too, because masak is nice that way. | |||
jaffa4: if you're asking what currently happening in Rakudo space wrt development, may I recommend p6weekly.wordpress.com/ ? | 09:17 | ||
jaffa4: and 6guts.wordpress.com/ | |||
jaffa4: but, in short, GLR is happening (in fits and starts), and compact arrays are happening. a lot of bugs are getting fixes. | 09:18 | ||
RabidGravy | I spent all day writing perl6 yesterday, a little patch here, a fix there. I did conclude one thing - I'm going to invent a terminator and send it back in time to off the person who though chunked transfer encoding was a good idea | 09:19 | |
masak | ah, chunked transfer encoding. | ||
been there, done that :) | |||
RabidGravy | hopefully it works proper in HTTP::UserAgent now | ||
09:20
bjz joined
|
|||
masak | is it the kind of thing where a Unicode character may end up straddling two chunks? is there a test for that? | 09:21 | |
nine | For me the answer to the P6 killer feature question is definitely, that you won't find anything radically new in Perl 6, but you get all those nice features of other languages in a cohesive whole. Except maybe the builtin ability to evolve. You won't need to invent a new language for the new killer feature. You can add it to Perl 6. | 09:23 | |
jaffa4 | compact arrays? How does it dffer from normal arrays? | ||
masak | jaffa4: they use natives as their representation, so they take up very little space. | ||
nine | jaffa4: compact arrays are like the ones you find in C or Pascal. | 09:24 | |
jaffa4 | you mean it is an optimisation | ||
masak | a space optimization, yes. and slightly faster, too, I guess. | ||
jaffa4 | of arrays | ||
masak | jaffa4: something like my `my int @measurements[100;100]` | ||
RabidGravy | and I guess making crossing the P6 - native barrier easier without so much copying | 09:25 | |
masak | jaffa4: allocates 10_000 ints for you in memory. | ||
jaffa4 | So it happends only when you specify type | ||
masak | jaffa4: yes. | ||
nine: I think you are right about lack of killer feature. and I think that's OK. | |||
nine: there are many things (like junctions and metaops) that pull you in and make you go "whoooooa" at the start | 09:26 | ||
nine: but then they sort of fade into the background as you start using the language for real | |||
nine: and you kind of notice that any production code is always 99% ordinary statements and conditionals and loops and subs and methods and classes, just like in other languages | 09:27 | ||
RabidGravy | remember it's not a proper language until someone writes a mailling list manager | ||
jaffa4 | IS this going to work for all backends? | ||
masak | nine: and that's not, mind you, because you're *doing it wrong* and should put more metaops and junctions in your production code | ||
nine: it's because you're responsible and using the right tool for the job | 09:28 | ||
nine: (also, in the remaining 1%, you're very happy to have those junctions and metaops) | |||
jaffa4: if by "all backends" you mean MoarVM and the JVM, then yes. | |||
09:28
domidumont joined
|
|||
masak | RabidGravy: I wonder how the MVP for a mailing list manager would look. | 09:29 | |
RabidGravy | 'orrible - they always look 'orrible ;-) | ||
09:30
virtualsue joined,
virtualsue left
|
|||
masak | :) | 09:30 | |
RabidGravy | maybe I'll knock one up next week, not that many yaks to shave | ||
masak .oO( no, don't knock up a yak! ) | 09:32 | ||
jaffa4 | what about parrot? | ||
masak | jaffa4: what about it? | 09:33 | |
jaffa4: it doesn't have any developers. | |||
09:34
domidumont left
09:35
domidumont joined
|
|||
RabidGravy | I think I made some patches to parrot in like 2002-3 | 09:38 | |
masak | the last commit on the Parrot repo was the release last month. June 15. | 09:39 | |
jaffa4: pmichaud explains it better than I can: pmthium.com/2015/02/suspending-rakudo-parrot/ | 09:42 | ||
RabidGravy | does someone with commit on panda want to take a look at github.com/tadzik/panda/pull/184 | ||
right now gen-meta no worky | |||
masak | reading through the git log of Parrot, I realize that I made an unfair exaggeration saying the project doesn't have any developers. | 09:44 | |
it has one. | |||
09:45
domidumont left
|
|||
RabidGravy | :) | 09:46 | |
masak | or did, back in January. | 09:47 | |
RabidGravy | is it every likely to catch up again? | 09:48 | |
masak | anything's possible, I guess. | 09:49 | |
likely? not for me to say. | |||
09:51
vendethiel left
09:53
vendethiel joined
|
|||
masak | ShimmerFairy: please don't take the "superstitious parens" thing as a put-down. the point is exactly that it isn't wrong to put them in, just... slightly redundant. | 09:56 | |
ShimmerFairy | masak: I've always read it as a pejorative sort of thing, though. | ||
masak | ShimmerFairy: so the comment is less meant as "you're doing it wrong!" and more as "hey, you could've saved yourself some trouble there, because the language already does that for you" | 09:57 | |
ShimmerFairy: I would probably suggest the same if someone injected, say, redundant statements or redundant class declarations into their code. | |||
so it's less about parens and more about redundancy. | |||
ShimmerFairy | I think it's the use of the word "superstitious" that makes it sound very negative to me. | 09:59 | |
masak | well, superstitions are patterns of behavior that people have picked up that don't have any measurable effect on the world. | 10:02 | |
that's what those parentheses do, too. | |||
ShimmerFairy | masak: well, 1) when they help with readability that's not exactly "don't have any measurable effect", and 2) you can't make me see the word "superstition" differently :P . If I had been the one to coin the term, I would've gone with "unnecessary parens" or something. | 10:06 | |
masak | Woodi: [backlog] of course Bean counts as a design pattern. it's just not a very good one :P | ||
nine | masak: yes, most code really is just boring and that's a good thing :) Most of the magical possibilities of Perl have historically been used by module authors to provide neat interfaces for their specific domains. Those are then just used by mortal programmers. | 10:14 | |
10:16
xinming joined
|
|||
nine | masak: a bit of it I've already used in Inline::Perl5. My users don't even have to know what magic I used. But I for sure am very glad that it's there when I need it :) | 10:16 | |
RabidGravy | yeah, if you're forced to do "magic" in a script someone has done something wrong | 10:17 | |
masak | nine: that's a nice way to view it. power features are double-edged swords. in the long run, they should be encapsulated, contained. their destructive power is too great. | 10:19 | |
kind of like the Infinity Stones in Guardians of the Galaxy. | 10:20 | ||
RabidGravy | :) | ||
10:22
llfourn joined
|
|||
RabidGravy | it's like the thing about people wanting feature X in the language where in fact for the most part with a sufficiently cunning implementation it could be just in the ecosystem | 10:22 | |
I often find myself thinking when I'm doing something particularly black art-ish whether it has more general applicability and be released seperately | 10:25 | ||
which is how e.g. AccessorFacade failed | |||
masak | AccessorFacade? | 10:26 | |
RabidGravy | er s/failed/came about/ | ||
github.com/jonathanstowe/AccessorFacade | |||
masak | aha. | 10:27 | |
RabidGravy | rule of three innit ;-) | 10:29 | |
masak | heh. | 10:30 | |
I had a piece of code I was working on where I went, "hm, this feels like maybe it could be generalized into a template system and packaged up as a module..." | |||
*looks at code* | |||
"...no." :) | |||
RabidGravy | (or in this case rule of thirty) | ||
Ulti | ShimmerFairy what about parens which dont make sense mathematically regardless of precedence like 1 + ((2 - 3) + 5) I see that all the time and if it's variables rather than constants it just makes me wonder wtf is in the variable and if the operators are overloaded, like in JS (blah + foo) - 2 could be string concatenation then -2 off of the interp number | 10:31 | |
masak | RabidGravy: with goodenuf macros, I could see how you could just name the subs consistently, and the macro would hook them up on its own. | ||
RabidGravy | my brane rebels against magic naming thingies - for myself I actually prefer the explicitness (in this case) of the traits | 10:33 | |
Ulti | ooc with those parens would the Perl 6 compiled code be the same with and without? | ||
timotimo | i thought you'd usually only get told "superstitious parens!" when you do something like if ($condition) { ... } in perl6 | 10:39 | |
nine | timotimo: #perl6 sometimes gives more strict warnings ;) | 10:42 | |
itz | I want to experiment with evaling rakudo in a browser (probably server-side rather than a JS VM). Is anyone aware of a more recent attempt than www-stud.rbi.informatik.uni-frankfu...ry-rakudo/ ? | ||
masak | itz: pmurias++' work | 10:43 | |
itz | that uses a JS backend doesn't it? | 10:44 | |
Ulti | itz github.com/moritz/try.rakudo.org ? | ||
itz | ah | 10:45 | |
Ulti | I tried to get the wheels turning on that a year ago but gave up without really trying very hard | 10:46 | |
itz | ok I'll fork and try booting the engine | 10:47 | |
10:48
diana_olhovik joined
|
|||
jaffa4 | Is there a way to see generated jit code? | 10:49 | |
timotimo | the last attempt i did at this thing was when proc::async was still pretty shaky | ||
10:49
virtualsue joined
|
|||
timotimo | jaffa4: yes, check out moar --help for environment variables you can set for that purpose | 10:49 | |
Ulti | itz there is also Farabi6 which is an editor but it does have a repl server | 10:50 | |
itz | ah | 10:51 | |
timotimo | right, farabi6 is a good target for some love from additional developers :) | 10:56 | |
Woodi | RabidGravy: thing like AccessorFacade could be used to construct native objects when CPointer is a *struct :) | 11:00 | |
jaffa4 | Current Rakudo start windows does not work for me | 11:04 | |
I cannot install anything | |||
11:07
RabidGravy left,
RabidGravy joined
|
|||
RabidGravy | Woodi, indeed | 11:09 | |
itz | wow farabi is rather impressive | 11:16 | |
11:16
camelia joined
11:17
ChanServ sets mode: +v camelia
|
|||
itz | azawawi++ | 11:18 | |
11:29
diana_olhovik left
|
|||
jaffa4 | WHat is sync context? | 11:30 | |
masak | jaffa4: a made-up term? | 11:34 | |
jaffa4 | sink context | 11:36 | |
masak | jaffa4: sink context is when the value of an expression is not used. | ||
jaffa4: like, `my $x = foo();` -- here `foo()` is *not* in sink context. | 11:37 | ||
jaffa4: but in `foo(); 1`, it is. | |||
jaffa4 | so why do you keep track of sinc context if it is not used? | ||
masak | you mean "zink context". | ||
jaffa4: well, things have different behavior in or out of sink context. | 11:38 | ||
jaffa4: also, an optimizer could sometimes avoid doing a extra work (creating objects, etc) that then just gets thrown away. | |||
jaffa4 | it does not happen often | 11:39 | |
masak | oftener than you'd think. | ||
`for` loops tend to be in sink context, for example. | |||
jaffa4 | SO can you give me a typical example? | 11:40 | |
masak | I thought I just did above? | ||
what specifically do you want? | |||
jaffa4 | for for, where is the sink? | ||
RabidGravy | I think what is meant that "for" is a statement that has a return value, but it rarely gets used | 11:41 | |
anyway off out | 11:42 | ||
masak | jaffa4: for more information, read "Loops at the statementlist level vs the statement level" in S04. | ||
jaffa4 | you mean last statements in blocks and loops | ||
masak | m: do { say "A"; last; say "B" } | 11:44 | |
camelia | rakudo-moar 48c0ba: OUTPUT«Alast without loop construct in block <unit> at /tmp/aBngaOgIG7:1» | ||
masak | TimToady: S04 says "C<do> is considered a one-time loop" -- is that a fossil? that's not how I think of `do` these days. | ||
TimToady: S04:703 | 11:45 | ||
synbot6 | Link: design.perl6.org/S04.html#line_703 | ||
11:46
RabidGravy left
|
|||
flussence | m: { say "A"; last &?BLOCK; say "B" } | 11:47 | |
camelia | rakudo-moar 48c0ba: OUTPUT«ACannot call last(Block); none of these signatures match: () (Label:D \x) in block <unit> at /tmp/TksmCUYIa1:1» | ||
flussence | m: do { say "A"; last &?BLOCK; say "B" } | ||
camelia | rakudo-moar 48c0ba: OUTPUT«ACannot call last(Block); none of these signatures match: () (Label:D \x) in block <unit> at /tmp/p0hY84PljB:1» | ||
flussence | -ETRYINGTOBETOOCLEVER | ||
masak | it wants a label, not a block. | 11:48 | |
m: FOO: do { say "A"; last FOO; say "B" } | |||
camelia | rakudo-moar 48c0ba: OUTPUT«ANo exception handler located for last_label» | ||
masak | m: FOO: do { say "A"; leave FOO; say "B" } | ||
camelia | rakudo-moar 48c0ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/fshKCdCh1ZUndeclared routine: leave used at line 1» | ||
masak | oh... I thought we had leave now. still in a branch? | ||
flussence | .oO( perl6 is one of the very rare languages where I have a decent success rate trying crazy things like that ) |
11:49 | |
masak | flussence: well, it does make some sense what you tried to do. | ||
flussence: but even if it worked with the block/label confusion, it would still fail (IMO) because `do` is not a loop. | 11:50 | ||
flussence | "leave" is closer to what I meant, thinking about it... | ||
masak | aye. | ||
flussence | m: do { say "A"; &?BLOCK.leave; say "B" } # I wonder if this form's implemented? | ||
camelia | rakudo-moar 48c0ba: OUTPUT«AMethod 'leave' not found for invocant of class 'Block' in block <unit> at /tmp/DgCOsJ6fOb:1» | ||
flussence | aww. | 11:51 | |
11:51
kaare__ joined
|
|||
jaffa4 | m: goto b; b: say "hello"l | 11:52 | |
camelia | rakudo-moar 48c0ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/1NlwHE6_UaTwo terms in a rowat /tmp/1NlwHE6_Ua:1------> 3goto b; b: say "hello"7⏏5l expecting any of: infix infix stopper postfix statement end …» | ||
jaffa4 | m: goto b; b: say "hello" | ||
camelia | rakudo-moar 48c0ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/XIeVzSXcduVariable '&b' is not declaredat /tmp/XIeVzSXcdu:1------> 3goto 7⏏5b; b: say "hello"» | ||
tadzik | oh gawd | 11:53 | |
11:53
bjz left
|
|||
tadzik | seen skids? | 11:53 | |
hrm | |||
11:54
bjz joined
|
|||
jnthn | After much thinking and pondering over O(months), I've got a bunch of things (mostly additions) for S17 that I think take us to a better place. It's not a very short read; feedback is welcome, but please try and focus on semantics rather than bikeshedding naming. gist.github.com/jnthn/a56fd4a22e7c43080078 | 11:54 | |
flussence | m: do once { say 'A'; } # good way to confuse the unwary :) | ||
camelia | ( no output ) | ||
tadzik | I think rakudobrew is slowly becoming the new neutro | 11:55 | |
a quick hack that everyone adopted as The Thing, and becoming the monstrosity that needs to be Properized somewhat | |||
11:56
kaare__ left
|
|||
masak | tadzik: that was an endemic problem with proto, too. | 11:57 | |
flussence | last night I was thinking we ought to have Something Better for modules too. panda is great when it works, but it doesn't look fun to hack on. | ||
masak | jnthn: asking people not to focus on bikeshedding naming? you optimist, you! :P | ||
masak gives it a read | |||
jaffa4 | m: goto b; b: ; say "hello"l | 11:58 | |
camelia | rakudo-moar 48c0ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/iW9nbZjOmFTwo terms in a rowat /tmp/iW9nbZjOmF:1------> 3goto b; b: ; say "hello"7⏏5l expecting any of: infix infix stopper postfix statement end …» | ||
jaffa4 | m: goto b; b: ; say "hello"; | ||
camelia | rakudo-moar 48c0ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/keUfxpNWafVariable '&b' is not declaredat /tmp/keUfxpNWaf:1------> 3goto 7⏏5b; b: ; say "hello";» | ||
masak | that one could use a better error message. | ||
std: goto B; B: say "hello" | |||
camelia | std 28329a7: OUTPUT«5===SORRY!5===Illegally post-declared type: 'B' used at line 1Check failedFAILED 00:00 135m» | ||
masak | right. | ||
masak submits LTA rakudobug | |||
12:03
itz_ joined
|
|||
tadzik | flussence: I think part of it is the fact that modules are very complicated :) | 12:04 | |
I think the main thing about panda failing to do what it's doing most of the time is because it's trying to be a module manager *and* a precompilation manager, as masak pointed out | 12:05 | ||
the latter being very, very complex, very error prone and horrendously not fun to hack on | |||
panda has been through a phase of "I ain't touching none of that, therein lies madness!", but has since returned to its roots simply because it's necessary to the users | 12:06 | ||
even if done correctly only half the time :) | |||
masak | tadzik: what would happen if you just ripped the precompilation parts out of panda, saying "recent studies show that this belongs in a different project" ? | 12:11 | |
tadzik: would that increase the reliability of panda? | |||
tadzik | masak: oh, definitely | ||
I mean, the consensus for the last few years has been 'precompiled bytecode is a cache and should be managed by rakudo itself' | 12:12 | ||
masak | I think you should do it. | ||
maybe also lay out some plans for a precompilation manager, based on the experiences gained from panda. | |||
timotimo | jnthn: "asycnrhonous" is a peculiar word :) | 12:13 | |
tadzik | cuncorrency | ||
masak | hey, no bikeshedding on jnthn's spelling! :P | ||
tadzik | masak: the downside is that we leave all panda users with slow code | ||
timotimo | sorry, i forgot about that rule! ;) | 12:14 | |
masak | tadzik: naming suggestion for the precompilation manager: redpanda :) | ||
tadzik | panda doing precompilation is not doing what's right, it's doing what's needed :/ | ||
masak: well volunteered :P | |||
masak | tadzik: at the expense of breaking all the time, and making users unhappy. | ||
tadzik | true | ||
masak | tadzik: I think I would use panda more if it *didn't* do precompilation, actually. | ||
tadzik: I'm sick of having to re-install all my modules after rebuilding rakudo (which I do a lot). | 12:15 | ||
it has made me conclude that I'm not in the target group for panda, most of the time. | |||
sometimes I just give up and *copy* the (un-precompiled) module into a temporary lib/ directory somewhere, so I can keep coding. | |||
tadzik | yes, historically panda has not been a tool of choice for rakudo developers themselves | 12:16 | |
12:17
brrt joined
|
|||
ShimmerFairy | +∞ panda is why I don't update my rakudo repo all that often; I want my modules to not be broken every update. | 12:18 | |
12:18
gfldex joined
|
|||
ShimmerFairy | I'd be willing to sacrifice (alleged) speed for a better panda :) | 12:18 | |
tadzik | amazing what a little chat with the community can do :) | 12:19 | |
sjn | bleedpanda | ||
masak | tadzik: other naming suggestion: polarbear | ||
tadzik | if it bleeds we can refactor it! | ||
masak: because it hibernates? :) | 12:20 | ||
masak | yes! | ||
tadzik | like the bytecode, leave it for too long and it becomes useless :P | ||
timotimo | jnthn: on my first read-through, i like what you wrote | ||
sjn | å | 12:21 | |
masak | also, precompiled code is "frozen" | ||
ShimmerFairy | panda (modules) + bear (precomp) = pandabear! | ||
tadzik | oooo | 12:22 | |
masak | ShimmerFairy: I like how you think | ||
panda (modules) + express (precomp) = panda express! :D | |||
sjn | precomp = prepared modules for actual use, right? | ||
12:22
amurf joined
|
|||
masak | sjn: you can use them either way. | 12:22 | |
tadzik | sped up | ||
sjn | it's like making stew | ||
timotimo | sjn: modules will also work when not precompiled | ||
sjn | pandastew | ||
masak | sjn: but precomp takes away the compilation cost when you run things. | 12:23 | |
tadzik | you may just not live long enough to see it :D | ||
ShimmerFairy | masak: I think a long time ago I imagined a GUI frontend for panda named "bear" for the same reason, but it's clear I'm never going to actually do it, so I don't mind "giving up" that name :P | ||
masak | tadzik: is that... a threat? :P | ||
timotimo | but you could have a BEGIN block in your module that you want to only run once during installation; if you don't pre-comp, you'll run it every time a script runs that uses the module | ||
tadzik | it was a bit too grim :) | ||
pre-comp should happen once | |||
masak | tadzik: "it's a nice module you got there. would be a shame if something were to... happen to it." | ||
tadzik | hmm | 12:24 | |
to explain myself I need to make an image macro | |||
masak | this happens a lot with you ;) | ||
tadzik | memegenerator.net/instance2/807348 | 12:25 | |
timotimo | yup, tadzik is like that | ||
tadzik | no, still grim | ||
masak | :P | 12:26 | |
tadzik: I sense some bitterness. | |||
12:26
amurf left
|
|||
masak | tadzik: maybe another good question to ask: how should we best position the ecosystem so that Rakudo, once it's time, can take over the task of precompiling modules? | 12:26 | |
like, assuming the world is just and that making architecturally good long-term decisions is actually possible. | 12:27 | ||
tadzik | it could do that any day, I guess | ||
I think I might preserve a precompiler as a plugin | 12:28 | ||
masak | sounds about right. | ||
tadzik | I'm tempted to also abandon it and specifically say that I'm not a maintainer of it | ||
but that never works | |||
I tried | |||
masak | maybe have the plugin default to "off"? | ||
tadzik | yeah | 12:29 | |
I mean, not install it by default | |||
masak | could *install* it by default, but maybe not use it by default. | ||
JimmyZ | jnthn: the new S17 looks much better | 12:32 | |
12:33
rurban left
|
|||
jnthn | JimmyZ: It's not a whole new S17, just some additions and suggestions of some removal/change :) | 12:33 | |
The largest part of which is much better syntactic relief for async programming. :) | 12:34 | ||
JimmyZ | I was hoping we have something like akka.io :P | 12:36 | |
timotimo | the bad thing about having most cool stuff in core is that we can't get a bunch of hip sounding .io domains to advocate our "features" | ||
JimmyZ | or subset of it ;) | 12:37 | |
tadzik | . o O ( wth is Panda::DepTracker :o ) | 12:38 | |
jnthn | JimmyZ: That much certainly belongs in module space | ||
tadzik | this animal has grown beyond my comprehension :) | ||
jnthn | JimmyZ: What we can provide is really nice things to build it out of. OO::Actors shows part of the way there too :) | 12:39 | |
JimmyZ | I would not mind it is a module haha, only if it exists :P | 12:40 | |
masak | jnthn: first time I see a "make a for loop and then immediately die in it" pattern. I like. | 12:42 | |
JimmyZ | though it is much more like another perl 6 big projects | ||
tadzik | /home/tadzik/.rakudobrew/bin/perl6: line 2: /home/tadzik/.rakudobrew/bin/perl6: Argument list too long | 12:43 | |
well that's new :o | |||
masak | `my class DepTracker is CompUnitRepo` -- that sounds like a type error reified as code... :) | 12:44 | |
jnthn | masak: It's not so useful in the synchronous world :P | 12:45 | |
12:48
aborazmeh joined
|
|||
vendethiel | jnthn: the supply block in your gist reminds me of our "gather" (but finite), and of generators in other languages | 12:48 | |
12:49
aborazmeh left,
aborazmeh joined,
domidumont joined
|
|||
jnthn | vendethiel: Oh, it's very much like a gather in a sense, it's just that it produces a supply (observable) rather than a list (enumerable) | 12:49 | |
But it's essentially an async gather | |||
Also, it needn't be finite | |||
12:50
FROGGS joined
|
|||
jnthn | (Of course the initial run through the supply block may be, but the supply it produces can go on forever | 12:50 | |
) | |||
masak | jnthn: no, it could be. I'm referring to the (pseudo) implementation of `sub await` | 12:51 | |
jnthn: of course, only the first `die` would ever run. | |||
jnthn: but the point is that of there are no offending elements, no `die` runs. | 12:52 | ||
jnthn: so it's basically a pretty neat way to say "die on the first element" | |||
"(if any)" | |||
jnthn | masak: ah, true :) | ||
masak | I really like the `supply` block. that feels right. | 12:53 | |
kind of analogous to a `gather` block. | |||
ohb | I was surprised when i find out that I can't just update a pm6 to debug it, because it was precompiled. I don't mind the precompilation per se, but it seems cumbersome when it's panda doing it upfront, instead of rakudo "jit" (and checking if the pm6 is changed) | ||
masak | jnthn: "same rules as gather and take" -- so it's dynamically scoped, too? | ||
jnthn | masak: I forgot about that bit and thought you were talking about another thing :) | 12:54 | |
masak: Um...I'd say so ;) | |||
masak | jnthn: which means that `emit`, `done`, and `quit` can occur anywhere in code, as long as there's a `supply` dynamically in the call stack? | ||
just checking. I think it's a good idea. | |||
vendethiel | jnthn: what's the return type of supply? "Supply"? | 12:55 | |
jnthn | masak: The supply block itself maybe won't be, but *something* will be | ||
vendethiel: Yes | |||
masak | `supply`/`emit` really feels like the reactive version of `gather`/`take` | ||
jnthn | Where the something represents the target supply | 12:56 | |
masak | oh, a `QUIT` phaser? | 12:58 | |
is there also a `DONE` phaser? | |||
jnthn | masak: That's just LAST, 'cus whenever is a loop :) | 12:59 | |
vendethiel | jnthn: so, "next" skips the current "whenever" iteration? | ||
also means that "whenever" couldn't be user-implemented, right? it has to be "magical"? | |||
masak | whenever is a *loop*!? | ||
snakes are *sentient*!? | 13:00 | ||
vendethiel | (I guess the TTIAR makes it a special construct by definition) | ||
timotimo | "whenever" is more like a subscription to a supply; tapping it, so to speak | ||
jnthn | masak: It's right there when I introduce it. "For consuming supplies, there is an asynchronous looping construct, known as whenever." | ||
timotimo | so yeah, it's loop-like | ||
masak | jnthn: then why isn't QUIT simply CATCH or something? | 13:01 | |
it's kind of a reactive loop. | |||
vendethiel | m: do sub f { say 1 } | ||
camelia | ( no output ) | ||
jnthn | masak: Interesting question. I wanted to keep CATCH about synchronous exceptions, I guess. So a CATCH in your whenever is all about what you are doing to process the value. | 13:02 | |
vendethiel | .oO( Perl 5 called, they want their do back :P ) |
||
masak | jnthn: I'll have to mull over that. but that might make sense. | ||
jnthn | masak: It was one of the things I spent a while pondering over. I may be missing something nice that's possible and still unconfusing. | 13:04 | |
vendethiel: Well, you can catch control exceptions in user-land too | 13:05 | ||
vendethiel | jnthn: right, but I mean -- implementing whenever | ||
masak | well, I think this still counts as bikeshedding over semantics, not syntax :) | ||
jnthn: I really dig the name `whenever`, by the way. definitely the right one. | |||
vendethiel thinks he might like that S17 stuff be under a "use" | 13:07 | ||
masak | jnthn: would a `last` in a `whenever` mean `done`, or `quit`? | ||
or neither? | |||
jnthn | masak: Neither, it means "unsubscribe from (or in Perl 6 terms, close the tap on) the supply we are reacting to" | 13:08 | |
masak | I see now that this is addressed further down. | ||
jnthn | nod | ||
masak | I should finish reading :) | ||
jnthn | ;) | ||
jnthn goes to nom lunch, now it's done cooking :) | |||
bbl | |||
masak | it looks like a really powerful construct. | 13:09 | |
I can't recall seeing syntax for this in any other language. | |||
I keep reading the examples and going "oh, so this is what reactive programming in native syntax looks like" | |||
vendethiel | the whenever Promise.in looks really powerful :D | 13:14 | |
it somewhat looks like a EDSL on top of our current S17 | 13:15 | ||
masak | yes, exactly. | 13:18 | |
generalizing, this is probably how languages ought to evolve. | |||
first you get the types, the methods, and the relationships. | |||
then, later, you come up with better syntax. | 13:19 | ||
13:21
domidumont left,
zakharyas joined
13:36
AlexDaniel joined
13:38
virtualsue left,
lucasb joined
|
|||
masak | walk & | 13:40 | |
13:42
RabidGravy joined
13:46
FROGGS left
13:52
telex joined
13:58
brrt left
14:00
llfourn left,
FROGGS joined
14:02
araujo joined
14:03
araujo left
14:06
yqt joined,
aborazmeh left
14:08
newbie joined
14:09
newbie is now known as Guest85195
14:10
zakharyas left,
araujo joined
14:11
yqt left
14:12
yqt joined
14:13
raiph joined,
skids joined,
Guest85195 left
14:15
llfourn joined
|
|||
dalek | kudo/nom: ca6cdb4 | jnthn++ | src/Perl6/Actions.nqp: Fix error for useless accessor generation. |
14:26 | |
ast: f0dcafa | jnthn++ | S12-attributes/class.t: Tests for RT #125625. |
14:27 | ||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=125625 | ||
14:30
domidumont joined,
yqt left
14:45
yqt joined
14:46
nys joined
|
|||
lucasb | jnthn: you repeated 'our $.a' in both tests | 14:47 | |
jnthn | oh? | ||
d'oh | |||
lucasb | :) | ||
dalek | ast: 03d13c1 | jnthn++ | S12-attributes/class.t: Fix copy-pasta in test; lucasb++. |
14:48 | |
kudo/nom: a9136d2 | jnthn++ | src/core/Exception.pm: Fix Exception.gist when there's no message. If the VM-level exception was missing a message, then Exception.gist would crash. Refactored a little to avoid a duplicate isconcrete check to make the code little tidier. |
14:49 | ||
AlexDaniel | m: our $.a = 5; | 14:50 | |
camelia | rakudo-moar 48c0ba: OUTPUT«Potential difficulties: Useless declaration of a has-scoped method in mainline (did you mean 'my a'?) at /tmp/LHCmeHZC9E:1 ------> 3our 7⏏5$.a = 5;» | ||
dalek | ast: 0853325 | jnthn++ | S32-exceptions/misc.t: Test covering RT #125620. |
||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=125620 | ||
AlexDaniel | jnthn: hm, shouldn't this error be similar to the one that you see when doing $!a? | 14:52 | |
"Cannot use ! twigil on our variable" | |||
oh, probably not | 14:53 | ||
right | |||
jnthn | You're allow to use . on a my or our, it's just sometimes useless | 14:54 | |
14:54
szabgab joined
|
|||
jaffa4 | jnthn: How can I see the jiteed code of Perl program? Does jitting happen always? | 14:57 | |
14:57
yqt left
|
|||
jaffa4 | Does it it depend on the sze of code? | 14:58 | |
jnthn | jaffa4: Happens on x64 and depends on many factors, of which code size is one | 14:59 | |
jaffa4: There's an environment variable that you can set that will dump the generated machine code, iirc, which you can disassemble | 15:00 | ||
jaffa4 | but it is not always generated, right? | ||
jnthn | No, that'd be a waste of time. | ||
We only generate it for hot code | |||
jaffa4 | I mean even if I set, it may be emptyu | ||
jnthn | May be, but unlikely | 15:01 | |
Because some parts of the compiler even for a trivial program get hot enough to JIT | |||
jaffa4 | hot code = cycle is needed | ||
15:01
khw joined
|
|||
AlexDaniel | jnthn: so jit is x64 only? | 15:02 | |
jnthn | AlexDaniel: yes | 15:03 | |
jaffa4: Yeah, or recursion | |||
AlexDaniel: On other platforms you still get a bunch of optimization done, but then it interprets the optimized bytecode | |||
jaffa4 | jnthn: Do you optimise floating point operations? | 15:04 | |
jnthn | In what sense? | 15:05 | |
The JIT compiler knows how to turn them into machine code. | 15:06 | ||
jaffa4 | Does the type need to be given at declaration? | ||
jnthn | If you write code using native nums, you can avoid a lot of boxing etc, but you need to do it consistently | 15:07 | |
And we'll produce better code statically | 15:08 | ||
If you don't give type info, you can still get a bunch of optimization done on MoarVM | |||
Since it looks at what types actually show up at runtime and produces optimized versions of the code assuming those types | 15:09 | ||
It's capable of speculatively running an optimized version also; if it finds out it shouldn't be, it falls back to the interpreted version | 15:10 | ||
Possible re-writing the call stack to undo any inlining it's now discovered invalid. | |||
*Possibly | 15:11 | ||
15:11
szabgab left
|
|||
jaffa4 | I wonder if it i is so, why nbody problem ran very slowly for me | 15:11 | |
ShimmerFairy | This should be closed, but unfortunately I can't do it: rt.perl.org/Ticket/Display.html?id=71356 | ||
AlexDaniel | is there any difference between ... and !!! ? | 15:12 | |
15:13
TimToady joined
|
|||
PerlJam | AlexDaniel: ... returns a failure, but !!! dies | 15:14 | |
jnthn | ShimmerFairy: Um...but the test in question seems to fail? | ||
ShimmerFairy | Oh, it does? Hm. | ||
m: class A { has $!b is readonly = "foo" }; A.new | |||
camelia | rakudo-moar ca6cdb: OUTPUT«Potential difficulties: useless use of 'is readonly' on $!b at /tmp/Y4i1jI_sT3:1 ------> 3class A { has $!b is readonly7⏏5 = "foo" }; A.new» | ||
ShimmerFairy | ^ warning but no error, which made me think it's resolved | ||
jnthn | rt.perl.org/Ticket/Display.html?id=124121 is interesting | 15:15 | |
S14 says "$fido does (Sentry, Tricks, TailChasing, Scratch);" | |||
AlexDaniel | PerlJam: why would somebody want to return a failure? | ||
just wondering | |||
or maybe the question should be other way round. I'm just a bit confused, don't know which one I want | 15:16 | ||
skids | Ergh. Have to figure out now how to deal with a merge conflict on PR#470 with that last change. And I'm not much of a git pro. | ||
(nevermind git + github) | 15:17 | ||
PerlJam | AlexDaniel: so the caller can decide what to do about it. | 15:18 | |
ShimmerFairy | jnthn: is "is readonly" supposed to be the opposite of "is rw", i.e. "no, you can't do $instance.attr = 42", or is it supposed to prevent the class from changing the attribute too? | 15:19 | |
jnthn | ShimmerFairy: I'm not sure off hadn | ||
*hand | |||
ShimmerFairy | jnthn: the "useless use" would suggest to me it's supposed to be the opposite (because then the "useless use" is telling you that affecting outside usage on a private attribute is useless). If not, then I'd suggest constants instead of variables :) | 15:20 | |
m: class A { has $!b is rw }; A.new; | 15:21 | ||
camelia | rakudo-moar ca6cdb: OUTPUT«Potential difficulties: useless use of 'is rw' on $!b at /tmp/iVj9bCLPRA:1 ------> 3class A { has $!b is rw 7⏏5}; A.new;» | ||
skids | jnthn: or are you looking at PR#470 and that's why you did that change and I should not worry about it? | 15:23 | |
vendethiel | m: sub long-computation() { 5 + 5 };say $_ if long-computation() -> $_; | ||
camelia | rakudo-moar a9136d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/_JwmfdyqrHUnexpected block in infix position (missing statement control word before the expression?)at /tmp/_JwmfdyqrH:1------> 3) { 5 + 5 };say $_ if long-computation()7⏏5 -> $_; expecting…» | ||
jnthn | skids: Which change? But now, not looking at it...should I? :) | ||
vendethiel | m: sub long-computation() { 5 + 5 }; -> $_ { say $_ } if long-computation(); | ||
camelia | ( no output ) | ||
skids | The Exception.gist fix. | ||
jnthn | Oh... | 15:24 | |
skids | I thik it might already have been fixed differently in there. | ||
AlexDaniel | m: my @a = 5, 9, 2, 8; for @a <- 25, 30 { say "$^a $^b" } say @a; | 15:25 | |
camelia | rakudo-moar a9136d: OUTPUT«5===SORRY!5=== Error while compiling /tmp/4u6sFlNpYvStrange text after block (missing semicolon or comma?)at /tmp/4u6sFlNpYv:1------> 032, 8; for @a <- 25, 30 { say "$^a $^b" }7⏏5 say @a;» | ||
AlexDaniel | m: my @a = 5, 9, 2, 8; for @a <- 25, 30 { say "$^a $^b" }; say @a; | ||
camelia | rakudo-moar a9136d: OUTPUT«False 305 9 2 8» | ||
skids | Yeah actually if you could give it a look and advise, that would be much appreciated. I could make a new PR, or cherrypick some things out of it first before I do or whatnot. | ||
ShimmerFairy | looks like 'readonly' is used in parameter lists (and is apparently the default), and keeps the sub itself from modifying that parameter. I'm not sure if that should be the case for class attributes, though... | ||
15:26
oetiker joined
|
|||
AlexDaniel | what is this "<-" thing? | 15:26 | |
dalek | kudo/nom: b3ba1b3 | (Lucas Buchala)++ | src/RESTRICTED.setting: Add Proc to RESTRICTED setting |
||
kudo/nom: 2cb9230 | jnthn++ | src/RESTRICTED.setting: Merge pull request #474 from lucasbuchala/temp2 Add Proc to RESTRICTED setting |
|||
skids | jnthn: but I was on my way out the door, so I'll check irc log later. | 15:27 | |
jnthn is a native speaker and never heard the word "Inchoate" :P | |||
geekosaur | it's not the most common word | 15:28 | |
ShimmerFairy | m: say 5 <- 10 | 15:29 | |
camelia | rakudo-moar a9136d: OUTPUT«False» | ||
vendethiel | m: say 5 < -10; | ||
camelia | rakudo-moar a9136d: OUTPUT«False» | ||
vendethiel | ShimmerFairy: ;-) | ||
jnthn | m: say - 10 | ||
camelia | rakudo-moar a9136d: OUTPUT«-10» | 15:30 | |
jnthn | :) | ||
ShimmerFairy | AlexDaniel: <- isn't anything, your thing was interpreted as for (@a < -25), 30 { ... } | ||
vendethiel | "@a < -25" checks that @a.elems is < -25 | ||
15:30
lizmat joined
|
|||
AlexDaniel | oohh, well | 15:30 | |
jnthn sees a Perl 6 secret operators talking coming :P | |||
vendethiel | hehehe | ||
RabidGravy | jnthn, rest easy I did a degree in English Literature and I don't think I've ever actually using | ||
er used it | |||
AlexDaniel | Well, the thing is that -> is a valid operator, <-> is as well | ||
ShimmerFairy | jnthn: for that talking, consider: +^@a (not to be confused with ^+@a) | ||
AlexDaniel | so I thought, why don't I try <- | ||
vendethiel | AlexDaniel: right, but neither -> nor <-> are ambiguous with < and - | 15:31 | |
15:31
skids left
|
|||
ShimmerFairy | If <- were anything, it would be "write-only", which would be... interesting, but likely useless :) | 15:31 | |
AlexDaniel | vendethiel: yea | ||
vendethiel | ShimmerFairy: write-only can be interesting, but certainly in limited contexts... | ||
ShimmerFairy | vendethiel: I can't help but wonder how often you could emulate the write-only support you want by just ignoring the part where you can read it too :P | 15:32 | |
RabidGravy | I did have a use for write only the other day funnily enough | ||
I went for always returning a type object on read | 15:33 | ||
vendethiel | m: my $backing; my $a := Proxy.new(FETCH => { ... }, STORE => { $backing = $_ }); $a = 5; say $backing; say $a; | ||
camelia | rakudo-moar a9136d: OUTPUT«Too many positionals passed; expected 0 or 1 arguments but got 2 in block <unit> at /tmp/woCyZUFDm8:1» | ||
RabidGravy | coo, first live playout failure on the radio station this year | 15:36 | |
15:36
beastd joined,
mr-foobar joined
15:39
petercommand joined
15:52
rurban joined
16:00
amurf joined
16:02
zakharyas joined
16:05
amurf left
|
|||
llfourn | hey guys, FYI with the help I was given here a few weeks ago I made: github.com/LLFourn/perl6-slang-dotty | 16:05 | |
so thanks! | |||
dalek | kudo/nom: 75c5e17 | jnthn++ | src/ (2 files): Fix does/but confusion/issues with many-roles form. |
16:06 | |
ast: 0cee736 | jnthn++ | S14-roles/mixin.t: Tests for RT #124121. |
|||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=124121 | ||
masak | llfourn: nice! | 16:08 | |
llfourn: first time I see someone overriding dotty. | 16:09 | ||
llfourn | I actually started out trying to do it in perl5 but it was too hard : stackoverflow.com/questions/3041441...erl-parser | ||
ShimmerFairy | how do I use a Signature object as the signature for a block of code? Ideally something like: | 16:10 | |
m: my &foo = -> :(Int) { say "made it!" }; &foo(1) | |||
camelia | rakudo-moar 2cb923: OUTPUT«Too few positionals passed; expected 1 argument but got 0 in sub-signature in block <unit> at /tmp/ZjOucE1l6g:1» | ||
ShimmerFairy | (the example given in S02 for Signature objects doesn't work, and isn't quite what I want anyway) | ||
llfourn | masak: Wasn't too bad :). There were a few gotchas but got there in the end. | ||
16:11
kaare__ joined
|
|||
jnthn | ShimmerFairy: -> |c where :(Int) { } # maybe :) | 16:11 | |
Though -> |c (Int) { } works too | |||
I hope... :) | 16:12 | ||
Whee, down to 1031 tickets | |||
ShimmerFairy | It doesn't, but :() form appears to work | ||
jnthn | m: my $x = -> |c (Int) { 'ok' }; say $x(1); say $x(4.5) | 16:13 | |
camelia | rakudo-moar 2cb923: OUTPUT«okcannot stringify this in block <unit> at /tmp/MAfke12UDv:1» | ||
jnthn | Innerestin' failure mode, but... ) | ||
ShimmerFairy | m: my $a = :(Int, Int); my &foo = -> |c where $a { say c.perl }; &foo(1, 2) | ||
camelia | rakudo-moar 2cb923: OUTPUT«\(1, 2)» | ||
ShimmerFairy | Now I just need to figure out how to generate that Signature, and then I can maybe actually fix a ticket :) (this one: rt.perl.org/Ticket/Display.html?id=71544 ) | 16:14 | |
m: say (1,2,3,4,5).map(-> *@a { @a.perl }) # I have to say, I wasn't expecting this outcome | 16:17 | ||
camelia | rakudo-moar 2cb923: OUTPUT«[1]<> [2]<> [3]<> [4]<> [5]<>» | ||
jnthn | Oh, a non-literal signature. | 16:18 | |
ShimmerFairy: ah, hmm...not sure that's going to be the best way to do it. | 16:19 | ||
ShimmerFairy | jnthn: yeah, the solution that first came to me feels weirdly tricky. | ||
jnthn | well, maybe we can do it like | 16:20 | |
ShimmerFairy | the grep method currently just uses 'map' with a single $_ parameter in the block. Messing with Signatures was how I figured you could get the right number of args to pass on, instead of just one. | ||
dalek | kudo/nom: 4337b2a | (Stefan Seifert)++ | src/core/control.pm: Use 'Perl5' as consistent name for EVAL and use :from |
||
kudo/nom: 0bed6c5 | lizmat++ | src/core/control.pm: Merge pull request #473 from niner/nom Use 'Perl5' as consistent name for EVAL and use :from |
|||
jnthn | ShimmerFairy: Well, or we could just take a generic block like -> |c { $filter($c) } and mix a role into it with the count/arity :) | 16:21 | |
uh |c on the $filter(...) call too | |||
Since that's what MapIter pays attention to | 16:22 | ||
o/ lizmat :) | |||
lizmat | o/ jnthn | ||
only barely awake enough to click "merge" :) | 16:23 | ||
llfourn | that reminds me: If you make slang by applying a role to your %*LANG, how do you EVAL using your slangified land rather than vanilla p6? | 16:26 | |
jnthn | llfourn: I made it a while ago so you can override EVAL to match on a different :lang(...) | 16:27 | |
llfourn: So if you do it that way it should just be exporting a multi EVAL | |||
That...does whatever's needed ) | |||
llfourn | jnthn: so I call EVAL :lang(%*Lang) 'some code'? | 16:28 | |
ShimmerFairy | jnthn: your idea to mix in a role seems to work out, at least in testing. I'll start working on making sure there are tests and the fix itself :) | 16:29 | |
m: sub foo($a, $b) { $a + $b }; my &bar = -> |c { foo(|c) }; my @a = 1,2,3,4; say @a.map(&bar but role { method count(Code:D:) { 2 } }) | |||
camelia | rakudo-moar 75c5e1: OUTPUT«3 7» | ||
jnthn | ShimmerFairy: OK. I'd make it a role CheatArity { has $.arity; has $.count; }, and then mix that in, and then set them | 16:30 | |
ShimmerFairy: Then we hit the multi-cache nicely :) | |||
llfourn: No, more that you'd need to implement an EVAL that knows what to do with code in your lanuage | |||
*language | |||
llfourn: Simplest case, that's just prepending a "use Your::Slang" I guess | 16:31 | ||
llfourn | jnthn: Ah so I should export an EVAL from my slang? | ||
ShimmerFairy | jnthn: OK, I was just considering that, since the Code class has a method count(Code:D:), it'd be nice to replicate that. Should that role be defined within the grep method, or outside of any other class? | ||
jnthn | llfourn: Yeah | ||
llfourn | jnthn: kk thanks | ||
ShimmerFairy | Oh, and if you want to set them after mixin, shouldn't they have is rw on them? :) | ||
jnthn | ShimmerFairy: Define it as a lexical (my) role inside the grep method for now, we can widen it if we see a need. | ||
ShimmerFairy: Hm, true :) | 16:32 | ||
16:32
JimmyZ_ joined
|
|||
ShimmerFairy | or, a sneaky method set-cheat($arity, $count) { ... } in the role too, if you'd rather not give MapIter rewritable attributes :) | 16:32 | |
jnthn | True ;) | 16:37 | |
ShimmerFairy | I think I'll prefer the safe route and not let MapIter easily change those attributes (so if it does try to, it'll fail with and without the mixin) | 16:39 | |
16:44
rindolf joined
16:46
zakharyas left
|
|||
lizmat | m: say ("a" x *)(42) # is this intended behaviour ? | 16:46 | |
camelia | rakudo-moar 75c5e1: OUTPUT«aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa» | ||
lizmat | jnthn: shouldn't that, in time, create a Cat object ? | 16:47 | |
ShimmerFairy | Depends on if "a" x * is supposed to generate a WhateverCode object :) | ||
lizmat | the, "a" x * bit, I mean | ||
well, it does create a WhateverCode object now, which bypassed a <x>($s, Whatever) candidate I just made | 16:48 | ||
to fix #125628 | |||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=125628 | ||
jnthn | lizmat: Dunno, the whatever code variant is quite useful, but it's odd to have it on x but not xx | ||
lizmat | jnthn: where would it be useful? In a substr or so ? | 16:49 | |
jnthn | lizmat: Generally the direction has been to add whatever-thunking more than to remove it (e.g. * ~~ Foo) | ||
But it's a lang design question so wants running by TimToady++ really | |||
lizmat | m: say "a" x * # not what I expect | ||
camelia | rakudo-moar 75c5e1: OUTPUT«WhateverCode.new» | ||
jnthn | m: say "a" ~ * # and this? | 16:50 | |
camelia | rakudo-moar 75c5e1: OUTPUT«WhateverCode.new» | ||
lizmat | ok, I'll just push the fix and we'll discuss later | ||
ShimmerFairy | The current behavior feels like a very Haskell-y thing to me (and that is purely because I've been reading a Haskell tutorial lately :P) | ||
jnthn | lizmat: What is "the fix" ooc? | ||
lizmat | m: say ("a" ~ *)("foo") | ||
camelia | rakudo-moar 75c5e1: OUTPUT«afoo» | ||
lizmat | multi sub infix:<x>($s, Whatever) { fail X::NYI.new(:feature('Cat object')) } | ||
jnthn | But...do we ever hit that? | 16:51 | |
m: say ('a' x *)(3) | |||
camelia | rakudo-moar 75c5e1: OUTPUT«aaa» | ||
lizmat | no, we don't | ||
jnthn | Then it's adding dead code? :) | ||
Well | |||
It's reachable late-bound I guess | |||
lizmat | m: say "a" xx * | 16:52 | |
camelia | rakudo-moar 0bed6c: OUTPUT«a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a ...» | ||
lizmat | m: say "a" x * | ||
camelia | rakudo-moar 0bed6c: OUTPUT«WhateverCode.new» | ||
TimToady | arguably, that's just another reason for distinguishing xx from x | ||
ShimmerFairy | Hm. I'm not sure if I want xx * to be WhateverCode too, or want x * to do the string equivalent of an infinite/lazy list (i.e. Cat) | 16:53 | |
TimToady | I suspect it's fine to make people work harder to create an infinite string, if we ever find a use for one | 16:54 | |
ShimmerFairy leans towards WhateverCode in both cases, since there's always x Inf and xx Inf ... | |||
lizmat | ok, I'll just fix the "a" x Inf case | ||
16:55
domidumont left
|
|||
TimToady | people do want an infinite list a lot more often than they want to curry xx | 16:56 | |
lucasb | What is the unicode char for the infinity sign? That horizontal "8". I wish that char was in ASCII, then the issue would have been solved :) | ||
jnthn | hm, point :) | ||
dalek | kudo/nom: 059dac9 | lizmat++ | src/core/ (2 files): Partially fix #125628 Did not fix the '"a" x *' case, as per discussion at: irclog.perlgeek.de/perl6/2015-07-18#i_10918034 |
||
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=125628 | ||
ShimmerFairy | m: say "∞".uniname | ||
camelia | rakudo-moar 0bed6c: OUTPUT«INFINITY» | ||
ShimmerFairy | unexpectedly simple :) | ||
lucasb | ShimmerFairy: yeah :D | ||
I had to see it in the browser, because my terminal is not configured | 16:57 | ||
TimToady | so just add a .ASCII and you'll have the char you want :P | ||
ShimmerFairy | TimToady: fair enough, I just think it'd be nice/cool for * to generate a curryable thing in that case, esp. since we already have a handy term for "infinite", namely Inf :) | 16:58 | |
16:59
rindolf left
|
|||
dalek | kudo/nom: 9eb336f | jnthn++ | src/core/Variable.pm: Implement does trait on variables. |
17:00 | |
TimToady | we should add some more * characters to ASCII while we're at it | ||
dalek | line-Perl5: 077b844 | (Stefan Seifert)++ | / (3 files): Use 'Perl5' as consistent name for EVAL and use :from Fixes GH #28 Thanks to hoelzro++ for reporting! |
||
ast: 4f22909 | jnthn++ | S14-roles/mixin.t: Unfudge test for does trait on variables. |
|||
jnthn | That was the last fudged tset in S14-roles/mixin.t :) | 17:01 | |
ShimmerFairy | We'll have to add more bits to ASCII first :) | ||
jnthn | And back down to 1030 RTs. Guess I'm allowed dinner now :) | 17:02 | |
TimToady | we could steal some of those control chars that nobody ever uses | ||
ShimmerFairy | What was that one control sequence that introduced an "alternate" thing? | 17:03 | |
geekosaur | SO / SI? | ||
(welcome back to BAUDOT >.> ) | 17:04 | ||
TimToady | m: say &[x].assuming("a")(42) | 17:06 | |
camelia | rakudo-moar 0bed6c: OUTPUT«aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa» | ||
TimToady | and it's not like it's all that hard to do partial application without * | 17:07 | |
ShimmerFairy | sure, that's why I said "would be nice/cool" instead of "is really important" :) | 17:08 | |
TimToady | we could, I dunno, make \* always autoprime, or some such | 17:09 | |
jnthn | lizmat: Dunno if you backlog, but if not: I posted an S17 thingy earlier today | 17:10 | |
jnthn goes to find the bankomat 'cus he decided to order takeout to avoid going out in the hot weather only to realize he needs money to pay for it... | 17:11 | ||
bbiab | |||
ShimmerFairy | Oh, TimToady, does is readonly on a class attribute mean not even the class can modify it (like when used on parameters in subs/methods), or is it simply the opposite of is rw (i.e. the default for public attributes) | ||
17:12
JimmyZ_ left
|
|||
ShimmerFairy | Right now, it behaves as if it's the opposite of is rw , but a test in roast expects the other thing. | 17:12 | |
TimToady has no clue what 'is readonly' would do, never having wanted it | |||
ShimmerFairy | TimToady: me neither; when I saw the (quite old) ticket, my first thought was "oh, was this before is rw and default-ro attributes or something?" | 17:13 | |
The ticket: rt.perl.org/Ticket/Display.html?id=71356 | 17:14 | ||
TimToady | having such an attribute implies to me that a class has got way too big, if parts of it don't trust the other parts of it... | ||
otoh it could be a message to maintainers, I suppose | |||
otgh, we tried to get rid of 'is readonly' by defining ::= instead | |||
ShimmerFairy | It seems to me it should be the opposite of rw (and currently warns with 'useless use' on private attrs, just like rw) | 17:15 | |
Yeah, I can't help but think why you couldn't use constants and/or not use is rw :) | |||
TimToady | m: my $x ::= 42; say $x++ | ||
camelia | rakudo-moar 0bed6c: OUTPUT«Cannot assign to an immutable value in block <unit> at /tmp/NQO95OqGW1:1» | ||
TimToady | m: my $x ::= 42.item; say $x++ | ||
camelia | rakudo-moar 0bed6c: OUTPUT«Cannot assign to an immutable value in block <unit> at /tmp/ThUxP29elD:1» | ||
TimToady | m: my $x ::= Scalar(42); say $x++ | ||
camelia | rakudo-moar 0bed6c: OUTPUT«Cannot find method 'Scalar' in block <unit> at /tmp/nCDbWPmF4n:1» | ||
TimToady not awake enough yet | 17:16 | ||
ShimmerFairy | I hope you had a good test at the doctor's yesterday, btw. (Though I'm guessing the results will take some time.) | 17:17 | |
TimToady | well, they did find a constriction, and ballooned it, but yeah, gotta wait for biopsy results, so I'm kinda feeling my mortality today | 17:18 | |
ShimmerFairy | Sorry to hear that. I hope it ends up being nothing serious, of course. | 17:19 | |
lizmat | jnthn: "$*AWAITER environment variable" environment ?? | 17:23 | |
17:23
yqt joined
17:24
spider-mario left
|
|||
lizmat | jnthn: whenever Supply.interal(1) { # I guess "interval" ? | 17:27 | |
17:29
domidumont joined
|
|||
timotimo | nope, intercal | 17:31 | |
nine | jnthn: I cannot help but think of an async database interface reading about whenever. | ||
17:36
yqt left
|
|||
dalek | ast: 256d6a9 | PerlJam++ | / (4 files): Update tests to reflect empty leading and trailing elements See RT#112868 |
17:38 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=112868 | ||
17:40
konsolebox joined
|
|||
dalek | kudo/nom: 4b5e196 | PerlJam++ | src/core/Str.pm: Fix for RT#112868 |
17:40 | |
synbot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=112868 | ||
dalek | ast: a8ce6fb | (Stefan Seifert)++ | S01-perl-5-integration/ (13 files): Use 'Perl5' as consistent name for EVAL and use :from |
17:41 | |
ast: 564b3b6 | (Stefan Seifert)++ | / (7 files): Merge branch 'master' of github.com:perl6/roast |
|||
jnthn | lizmat: I meant dynamic, not environment. And fixed the other typo; thanks :) | 17:43 | |
17:45
rurban left
|
|||
lizmat | "for @awaitables.grep(* !~~ Awaitable) {" I would probably would have done a if @awaitables.first(...) { die... } | 17:45 | |
jnthn | lizmat: Dangerous :) | 17:46 | |
lizmat: Remember Promise.Bool :) | |||
lizmat | ah, hmmm... | 17:47 | |
then "for @awaitables.first(...) { die }" ? | |||
jnthn | You could if defined @awaitables.first(...) if you want, but it's longer :P | 17:48 | |
lizmat | I mean, no need to look for further failures when you found the first one | ||
afk for a bit& | |||
flussence | .oO( slightly worrying: Supply.intercal doesn't sound like *that* much of a typo... ) |
||
17:48
spider-mario joined
|
|||
jnthn | lizmat: It's lazy anyway ;) | 17:49 | |
17:50
amurf joined
17:53
domidumont left
|
|||
jnthn bbl | 17:53 | ||
17:54
amurf left
|
|||
jaffa4 | What is happening to Pugs? | 17:57 | |
Why is it not here perl6.org/compilers/features? | |||
geekosaur | pugs hasn't been maintained in years | 17:58 | |
basically, only au++ understands it well enough to do anything with the code (some of us with Haskell experience have tried...) and au is busy | 17:59 | ||
timotimo | every few months someone brings it up to buildability again when something breaks | ||
jaffa4 | What about niecza? | 18:03 | |
timotimo | hasn't been worked on for a long while, sadly | 18:04 | |
TimToady | it bit-rotted wrt mono | 18:05 | |
timotimo | :( | ||
isn't .net very backwards compatible or something? | |||
18:06
beastd left
|
|||
japhb | .ask flussence Did you manage to find the cause of that segfault in the Text-Tabs-Wrap tests? | 18:14 | |
yoleaux | japhb: I'll pass your message to flussence. | ||
flussence | japhb: something to do with threads, so it's way out of my league. The only workaround I know of is forcing 1 thread max, but then it takes forever to run tests :( | 18:15 | |
yoleaux | 18:14Z <japhb> flussence: Did you manage to find the cause of that segfault in the Text-Tabs-Wrap tests? | ||
japhb | flussence: Oh, eww. | 18:16 | |
18:16
yqt joined
|
|||
flussence | (and the whole reason it tries to be parallel in the first place is... because those tests take forever. *sigh*) | 18:17 | |
jaffa4 | does any have the latest niecza.zip? | 18:30 | |
any = anyone | 18:31 | ||
RabidGravy | dunno, I was a big mono fan ten years ago haven't really tracked it recently] | 18:33 | |
18:44
domidumont joined
18:53
llfourn left
|
|||
TimToady | it wasn't just bitrot, there were some design corners that got themselves painted into; these days it probably makes more sense to target an nqp backend to the clr | 18:57 | |
vendethiel | TimToady: I've heard that several times, but no one has been able to tell me more than "it got caught cheating". do you happen to know which part cheated, say? | 18:58 | |
jaffa4 | bitrot? | ||
TimToady | vendethiel: I'm mostly quoting sorear++ on that | 18:59 | |
it didn't really support multi dispatch, for one | 19:00 | ||
and there were some type issues that may or may not have been helped by the GLR | 19:01 | ||
but we weren't ready for that | |||
masak | TimToady, ShimmerFairy: I can see a use case for `has $!attr is readonly = init-val();` for having a kind of "constant attribute", initialized once at construction and then never changing. I don't think "big class" and "mistrust" are the only causes. | ||
flussence | istr niecza did some things *very* well compared to rakudo... but some others not at all | ||
TimToady | there was certainly a lot of good art there | 19:02 | |
m: class Indiana { has $.pi ::= 3 }; say Indiana.new.pi | |||
camelia | rakudo-moar 4b5e19: OUTPUT«5===SORRY!5=== Error while compiling /tmp/FXWlrnIrT7Cannot use ::= to initialize an attributeat /tmp/FXWlrnIrT7:1------> 3class Indiana { has $.pi ::= 3 7⏏5}; say Indiana.new.pi» | 19:03 | |
19:03
yqt left
|
|||
ShimmerFairy | I still personally think "is readonly" should be the opposite of "is rw", if it even stays around. | 19:03 | |
TimToady | that oughta be made to work | ||
jaffa4 | timbunce: unsolvable? | ||
masak submits NYI rakudobug | |||
TimToady | tab completion is unsolvable, yes :P | 19:04 | |
jaffa4 | TimToady: no, niecza problems? | ||
TimToady | where there's a will, there's a way | ||
but so far, there's no will | 19:05 | ||
jaffa4 | agree | ||
TimToady | there's plenty of "will" here, but it's mostly aimed at getting something out by Christmas | 19:06 | |
and MoarVM is the only one we've promised to target by then | 19:07 | ||
jaffa4 | Sorry not September? | 19:08 | |
TimToady | September is beta | ||
or "birthday" :) | |||
jaffa4 | Is it now beta now? | ||
TimToady | it's "advent", er, alpha now | ||
beta implies we pretty much have the language nailed down, and we can't say that till after the GLR | 19:09 | ||
errands & | |||
19:22
khw left
19:35
domidumont left
|
|||
AlexDaniel | there is not much time till September though | 19:41 | |
ShimmerFairy | While I'm thinking about it, I'm curious as to why people here tend to use Markdown instead of Pod6 (or even POD); I wonder if any of said reasons are things that can be improved upon for Pod6. | 19:42 | |
AlexDaniel | ShimmerFairy: does github support pod6? | ||
ShimmerFairy | nope | ||
AlexDaniel | isn't it the reason? | 19:43 | |
vendethiel | ShimmerFairy: I don't need something complicated :) | ||
ShimmerFairy | AlexDaniel: that could certainly be one of the reasons, but it's too easy to come up with :P | 19:44 | |
vendethiel | ref regarde le talk ;D | 19:45 | |
masak | ShimmerFairy: if you ask me, the best thing that could happen to Pod6 would be if it became Markdown. :) | 19:46 | |
ShimmerFairy | masak: I'm actually not a fan of Markdown though; not enough power to it :) | ||
b2gills | I have grown accustomed to Markdown from all of the answers I wrote on StackOverflow ( I know of quite a few tricks to get it to format the way I want it too ) | 19:50 | |
mst | ingy's KWIM is interesting | ||
since it's basically the result of him using markdown for a while and then getting angry at the missing features | 19:51 | ||
b2gills | Actually [I][] really like that [you][I] can do this with Markdown, and be able to update all of the links at once.[I]: example.com "tooltip" | 19:52 | |
Which you can't in POD | |||
19:55
bin_005 joined
|
|||
b2gills | I also tend to write it in emails, and if you paid attention you would note that I even do some of that here with `code blocks` | 19:56 | |
19:57
kaare__ left
19:58
kaare__ joined
|
|||
flussence | I've tried using AsciiDoc and ReStructuredText too, but there's too many weird minor details to take in | 19:58 | |
(sometimes I'd rather give up and write abbreviated HTML) | 19:59 | ||
b2gills | Really for quick throw some text up with some minor formatting Markdown is quite usable. ( It also supports a subset of HTML, which I have had to use for some MetaStackExchange posts ) | 20:00 | |
nebuchadnezzar like org-mode o/ | 20:01 | ||
b2gills | I would like to see POD6 be well supported as well of course. | 20:02 | |
DrForr | Shrug, I'm still old-school enough that I'd like to see LP revived :) | 20:07 | |
timotimo | LP? when i read that i either think vinyl or Let's Play | 20:08 | |
20:11
Sqirrel joined
20:14
darutoko left
20:19
kaare__ left
|
|||
masak looks up kwim | 20:26 | ||
"Due to a certain unfortunate homonym, Kwim has been replaced by (renamed to) Swim." | |||
I... see. | |||
masak looks up Swim | 20:27 | ||
I don't immediately see what in Swim is supposed to make me like it better than Markdown. | 20:32 | ||
it converts to many formats. well, thanks to pandoc++, so does Markdown. | |||
20:39
inokenty joined
20:43
rurban joined
|
|||
japhb | .tell tadzik I think you broke Panda.pm with commit 0e2cda5ae9723920dd93103511a98419dd53e800 ($p is now undeclared in that method) | 20:44 | |
yoleaux | japhb: I'll pass your message to tadzik. | ||
20:50
llfourn joined
|
|||
masak | .tell tadzik PR'd you with a fix: github.com/tadzik/panda/pull/187 | 20:54 | |
yoleaux | masak: I'll pass your message to tadzik. | ||
masak | (pls check that it's right -- I just did the obvious thing) | ||
20:54
llfourn left
21:04
jaffa4 left
21:13
atroxaper joined
21:17
atroxaper left
21:27
amurf joined
|
|||
tadzik | ooops | 21:31 | |
yoleaux | 20:44Z <japhb> tadzik: I think you broke Panda.pm with commit 0e2cda5ae9723920dd93103511a98419dd53e800 ($p is now undeclared in that method) | ||
20:54Z <masak> tadzik: PR'd you with a fix: github.com/tadzik/panda/pull/187 | |||
21:32
amurf left
|
|||
tadzik | I think it is | 21:32 | |
masak | yeah, it looked right. | 21:33 | |
RabidGravy | boom | 21:37 | |
lucasb | tadzik, masak: Two more mentions of the $p variable remained | 21:54 | |
21:59
lucasb left
|
|||
tadzik | argh | 21:59 | |
grrr | 22:01 | ||
flussence | .oO( note to self: remove ungreppable variable names from own code ) |
22:02 | |
hoelzro | tadzik: I fixed those in #188 | ||
I can reopen, if you'd like | |||
AlexDaniel | "Modules interact with each other through named entities called symbols. The operation that makes symbols from a module available to another module is called import while the operation of using such a name is called import." | ||
copy-pasta? | 22:03 | ||
"is called import" twice, it seems like the first one should be "export" ? | |||
22:05
Sqirrel left
22:08
spider-mario left
|
|||
masak | AlexDaniel: looks like. | 22:10 | |
japhb | .tell jnthn Happened to see the link to your S17 supply/whenever proposal. I like it in general -- which is to say, I'd probably need to code a bit with it to find the holes if any. | 22:12 | |
yoleaux | japhb: I'll pass your message to jnthn. | ||
japhb | Any other big proposals this week? I was mostly-to-completely AFK for several days. | 22:13 | |
*proposals/changes | |||
22:13
Sqirrel joined
|
|||
masak proposed to japhb several times during the week, but took the complete silence as a big snub :P | 22:13 | ||
22:13
rurban left
22:15
khw joined
|
|||
masak | but yes, gist.github.com/jnthn/a56fd4a22e7c43080078 looks very exciting. | 22:17 | |
masak also loves how `race` and `hyper` fit into the `whenever` picture | 22:26 | ||
22:29
sivoais joined
|
|||
tadzik | hoelzro: wihc those? | 22:32 | |
er | 22:33 | ||
which 188? | |||
masak | this is why we url | ||
22:35
TEttinger joined,
RabidGravy left
22:41
MilkmanDan left,
espadrine_ left
|
|||
timotimo | let's all url | 22:45 | |
what were we talking about? | 22:48 | ||
22:50
Ben_Goldberg joined
|
|||
tadzik | this is how we url | 22:52 | |
22:57
yqt joined
22:58
telex left
23:00
telex joined
|
|||
hoelzro | tadzik: github.com/tadzik/panda/pull/188 | 23:00 | |
just reopened | |||
23:01
atroxaper joined
23:02
xiaomiao joined
23:05
atroxaper left
23:14
jo_ joined
23:15
jo_ left
23:16
xiaomiao left
23:19
xiaomiao joined
|
|||
tadzik | thanks! :) | 23:36 | |
23:39
Ben_Goldberg left
|
|||
hoelzro | no problem! | 23:50 | |
23:51
llfourn joined
23:55
mattp_ joined
23:56
llfourn left
|
|||
hoelzro | tadzik: another PR for you: github.com/tadzik/panda/pull/189 | 23:58 |