»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
00:21
takadonet left
00:41
tokuhiro_ joined
00:49
tokuhiro_ left
00:53
Coleoid joined,
scott__ joined
01:19
lichtkind left
01:20
colomon joined
|
|||
colomon | o/ from northern ontario! | 01:20 | |
rn: "hello".tclc | 01:21 | ||
p6eval | niecza v19-13-g442e075: OUTPUT«Unhandled exception: Unable to resolve method tclc in type Str at /tmp/yneFmwJKmG line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3918 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3919 (module-CORE @ 562)  at /home/p… | ||
..rakudo 4fe23e: ( no output ) | |||
colomon | rn: say "hello".tclc | ||
p6eval | niecza v19-13-g442e075: OUTPUT«Unhandled exception: Unable to resolve method tclc in type Str at /tmp/JlgTEDPPry line 1 (mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3918 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3919 (module-CORE @ 562)  at /home/p… | ||
..rakudo 4fe23e: OUTPUT«Hello» | |||
colomon | phenny: tell sorear I'll tackle tc.* tonight. Already seem to have basic code point to title case working. Probably will be able to check in for a few days, though. | 01:22 | |
phenny | colomon: I'll pass that on when sorear is around. | ||
01:42
colomon left
01:44
drbean left,
drbean joined
02:02
crab2313 joined
02:07
tokuhiro_ joined
02:08
orafu left,
orafu joined
02:21
tokuhiro_ left
02:36
Psyche^ joined
02:37
quietfanatic joined,
lue left
02:39
Patterner left,
Psyche^ is now known as Patterner
02:55
awwaiid left
03:06
awwaiid joined
03:24
cognominal left,
cognominal joined
03:53
skids left
|
|||
crab2313 | p: say q | 04:10 | |
p6eval | pugs: OUTPUT«*** No such subroutine: "&q" at /tmp/mBi09tIjjE line 1, column 5 - line 2, column 1» | ||
crab2313 | r: say q | ||
p6eval | rakudo 4fe23e: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&q' called (line 1)» | ||
sorear | n: say q | ||
phenny | sorear: 01:22Z <colomon> tell sorear I'll tackle tc.* tonight. Already seem to have basic code point to title case working. Probably will be able to check in for a few days, though. | ||
p6eval | niecza v19-13-g442e075: OUTPUT«===SORRY!===No delimiter found at /tmp/ysCfo6qyXw line 1 (EOF):------> say q⏏<EOL>Parse failed» | ||
crab2313 | toqast: q | 04:12 | |
p6eval | toqast : OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&q' called (line 1)» | ||
sorear | crab2313: new here? | ||
crab2313 | sorear: yes, only servaral months | 04:13 | |
sorear | heh. | 04:14 | |
I guess you're newer than me :p | |||
I've just somehow failed to notice you before today | |||
crab2313 | sorear: sure | ||
sorear: sure. When the first time I join this channel, you have asked me the same question :) | 04:50 | ||
sorear | oops | ||
TimToady | pmichaud: the answer to irclog.perlgeek.de/perl6/2012-07-08#i_5797225 is pretty obvious if we're to move in the direction of the OKness proposal. Such a match should return something that can be recognizably a final answer to a smartmatch, so that it doesn't try to rematch against the data | 04:58 | |
so I'd say Match of Match, unless we have some way of making a list OK | 04:59 | ||
and I'm still thinking a failed match is just Nil, assumig Nil and Match are special to smartmatch in the way that True/False currently are | 05:00 | ||
moritz | \o | ||
TimToady | o/ | 05:01 | |
and Failure | 05:03 | ||
whether or not we go as far as to unify Nil and Failure as the OKness proposal proposes | 05:04 | ||
moritz | jnthn: fwiw the socket tests still fail in the toqast branch ("Unaligned end in utf8 string") | 05:10 | |
05:25
kaleem joined
05:27
crab2313 left
05:34
birdwindupbird joined
05:49
odoacre joined
|
|||
tadzik | can has test results! | 05:55 | |
56 modules ok, 50 not ok (106 total) | |||
NativeCall still fails | |||
MIME::Base64 blocks LWP::Simple | 05:56 | ||
moritz | does MIME::Base64 use NativeCall? | 05:57 | |
or is that a separate failure? | |||
tadzik | separate, I think | 05:58 | |
Failed building lib/MIME/Base64.pm6 | |||
it's using Parroty stuff under the hood, iirc | |||
moritz | ah | 06:02 | |
toqast is more picky about pir signatures | |||
a four-character patch fixes it | 06:04 | ||
github.com/snarkyboojum/Perl6-MIME...e64/pull/1 | 06:07 | ||
06:13
SamuraiJack joined
|
|||
quietfanatic | Personally I'd rather have a failed Match act like Nil then have matching return Nil on failure. | 06:18 | |
especially if the failed Match object can convey information about why and where the match failed. | |||
06:23
crab2313 joined
06:25
crab2313 left
06:40
xinming left,
crab2313 joined
06:44
sergot joined
|
|||
sergot | hi o/ | 06:44 | |
TimToady | you shouldn't call it a Match if it didn't. Carrying failure information is the province of the Failure type, where Nil is just the least informative form of failure (and won't throw in sink context) | 06:45 | |
quietfanatic | In that case, I hope it'll at least return a specialized Failure subtype. Returning Nil throws away information in a Premature Optimization. | 06:51 | |
diakopter | std: $! | 06:52 | |
p6eval | std d5bea92: OUTPUT«ok 00:00 40m» | ||
TimToady | well, I think the default should be not caring why it failed, since there may well not be a single reason, and most of the time the info would be thrown away anyway | 06:53 | |
might be reasonable to have an option for some kind of cockpit recorder though | 06:54 | ||
diakopter | highwater mark would be helpful | ||
quietfanatic | Hm. | ||
It could be lazily-generated information. | |||
diakopter | first rule that hit the high water mark | ||
quietfanatic | well | ||
TimToady | and in most compilers, you're figuring out the reason explicitly anyway | ||
quietfanatic | that might be asking to much from the regex engine | ||
TimToady | STD actually uses a high-water mark to decide where to put the ⏏ | 06:55 | |
quietfanatic | Failures are false, right? | 06:56 | |
TimToady | yes, and undefined | ||
quietfanatic | just making sure :) | ||
TimToady | otherwise the // die idiom wouldn't work | ||
diakopter | the 5-dimensional type system... | ||
quietfanatic | Falsehood would be for the archaic || die idion. | 06:57 | |
'//' works on undefinedness | |||
(Meant to say those in the other order, but I forgot / is a metachar) | |||
also, *idiom | |||
diakopter | idion. singular of idia. | 06:58 | |
quietfanatic has been emitting too many idia recently | |||
06:58
crab2313 left
|
|||
TimToady | Failure is really an undefined wrapper for a defined Exception | 06:58 | |
kind of a ticking time bomb | 06:59 | ||
or more like an impact fuse | |||
quietfanatic | Interesting. | ||
I was working on the model that faliures and exceptions were the same objects, just with the former at rest and the latter in motion. | |||
moritz | in rakudo currently a Failure is a container for an Exception | 07:00 | |
one that makes it blow up when used in most contextes | |||
TimToady | quick, call the // squad | 07:01 | |
quietfanatic | I guess it kinda makes sense to abstract the fuse out of the payload | ||
Just one more layer of indirection though | |||
diakopter | I'll see your Failure and raise you an Exception | 07:02 | |
TimToady | the idea is to optimize the common path so that you only ever have to check for definedness of the result most of the time | ||
diakopter | Fold. | 07:03 | |
07:03
brrt joined
|
|||
TimToady | always assuming you want your Failures reported in-band; if not, there's 'use fatal'; | 07:04 | |
quietfanatic | I like the unthrown exceptions idea | ||
I'm just not convinced the extra layer of indirection is worth the extra layer of indirection. | |||
TimToady | I like not introducing weird control flow eagerly | 07:05 | |
quietfanatic | No, I mean | ||
07:06
imarcusthis left
|
|||
quietfanatic | The Failure is thrown if you try to send it to a place that can't handle it or if you use it in void context. | 07:06 | |
It seems to me that the only reason to have it contain a seperate Exception object | |||
is so that you don't have to handle it as carefully inside an exception handler. | |||
and that part is what I'm not sure is worth the extra layer. | 07:07 | ||
TimToady | well, that seems important to me too; once you've thrown an exception, it's trying to succeed, not fail | ||
succeed in being thrown/caught | 07:08 | ||
07:08
imarcusthis joined
|
|||
quietfanatic | When even return is an exception, I can see how that would be. | 07:09 | |
TimToady | well, control exceptions are special, insofar as they must be optimized much more than errors, which are supposed to be rare | ||
quietfanatic | The word 'exception' itself indicates it should be rare. | 07:10 | |
TimToady | yes, 'control exceptions' is perhaps a bit of a hijacking of the term | ||
but they are at least exceptional enough that they aren't as common as normal control flow | 07:11 | ||
diakopter | popcorn from the peanut gallery: can an error exception be lost in a Failure that never gets used? How many unthrown exceptions can build up? | ||
quietfanatic | They're all just various forms of goto :) | ||
but are they supposed to create an Exception object? | |||
TimToady | well, depending on whether you're goto is smart enough to unwind the stack | ||
moritz | but not all forms of goto are created equal | ||
quietfanatic | Can you store a 'return' in a Failure? | 07:12 | |
07:12
hoelzro|away is now known as hoelzro
|
|||
TimToady | control exceptions would hopefully be fairly static | 07:12 | |
quietfanatic | I propose that they ought to be treated differently more than the same, for partly this reason | 07:13 | |
diakopter | can an error exception be lost in a Failure that never gets used? How many unthrown exceptions can build up? | ||
quietfanatic | and partly for the naming reason. | ||
07:13
cognominal left
|
|||
TimToady | control exceptions are a seperate mechanism, really | 07:13 | |
moritz | diakopter: and how many angels fit on a needle? | ||
07:13
cognominal joined
|
|||
TimToady | *separate, gah | 07:13 | |
diakopter | moritz: I wasn't trying to make a point. :| I was literally asking a question. | 07:14 | |
quietfanatic | Different things should be different. | ||
07:14
cj left
|
|||
moritz | diakopter: you can stuff away arbitrarily many unthrown exceptions in an array, and never process it. If that's what you want to do. | 07:14 | |
quietfanatic | I probably should have spoken up much earlier, when I first heard that control flow and exceptions were going to be the same | ||
but for some reason I was much younger then. :) | |||
TimToady | they aren't the same | 07:15 | |
moritz | it's just intercepting them that is unified | ||
TimToady | except insofar as they both look up the stack for something that tells them how far to unwind the stack | ||
quietfanatic | They actually aren't? I had heard it from yourself that they were several years back | ||
hm | |||
TimToady | moritz: not even that | ||
CATCH vs CONTROL | |||
moritz | TimToady: "unified" in the sense that you use isomorphic constructs, not that use you use the same constructs | 07:16 | |
quietfanatic | I hope returning doesn't have to peruse the stack usually | ||
TimToady | control exceptions will tend to be a small set, and a "handler" may well be optimized to a bit in the call fram | ||
frame | |||
07:16
cj joined
|
|||
TimToady | well, whether it has to peruse the stack or not depends on how you handle continuations | 07:17 | |
but continuations aren't exactly 0 overhead either | 07:18 | ||
diakopter | does a Failure-wrapped error exception need to hold a reference to its whole static frame chain so it can access closed-over variables and its whole dynamic frame chain so it can display a stack trace? | ||
quietfanatic | In ASM, a continuation is automatically pushed to the stack on a subrouting call. | 07:19 | |
TimToady | also, normal exceptions are completely dynamically scoped, while control exceptions are often lexotic | ||
quietfanatic | Assuming Perl 6 ever reaches the ASM level. | ||
hm | |||
diakopter: Regarding ignoring exceptions, the only case I can see where ignoring an exception would be a problem is if you store the result of closing a filehandle in a variable and never use the variable. | 07:21 | ||
Well, this is far too much for me to be able to understand at once. | |||
diakopter | ah, I was just about to ask whether you know the answer to my next quesiton | ||
quietfanatic | I'll stop being a problem child for a little while :) | ||
diakopter: regarding failure-wrapped exceptions: For the static part, depends on how smart your closure generator is. For the dynamic part...I don't know. Probably. | 07:22 | ||
TimToady | diakopter: is not much different than the overhead of keeping a closure aroud | ||
*around | |||
diakopter | (I'm asking because I've been thinking about the implementation of a debugger) | 07:23 | |
TimToady | I'm not sure we need to keep a backtrack with the failure, as long as there's some indication where the original error was | ||
might be a pragma to keep it | 07:24 | ||
quietfanatic | I think that's a point where efficiency concerns dictate a pragma | ||
...I was just about to say until TimToady++ said it first | |||
TimToady | but a backtrace of where it was actually thrown will probably indicate where it came from most of the time | ||
moritz | well, we need two backtraces | ||
one for the original location | 07:25 | ||
and one for the point where it was thrown from | |||
quietfanatic | ...and why don't we provide a log of the entire program up to the point of failure while we're at it. :) | ||
diakopter | hopefully they share at least a few frames | ||
moritz | a backtrace isn't so much information | 07:27 | |
diakopter | I think an exception should be able to be inspected in a debugger without throwing it | ||
moritz | it doesn't need to keep lexicals around | ||
diakopter: sure | 07:28 | ||
quietfanatic | Well, I had probably better go comatose for a few hours. That'll make me a little less of a snipe. | 07:29 | |
TimToady | I don't think any amount of rest will make me less of a snipe. :) | 07:30 | |
diakopter | I was taken on a snipe hunt once. we didn't find anything. | 07:31 | |
quietfanatic | Good night, whoever happens to share my timezone. | 07:33 | |
and several to the west :) | |||
TimToady | o/ # oh wait | ||
zzzx & | |||
^ snored myself awake there | 07:34 | ||
07:46
kresike joined
|
|||
kresike | good morning all you happy perl6 people | 07:46 | |
07:49
xinming joined
07:55
kaare_ joined
08:03
atrodo left
08:20
sisar left,
rurban left
08:25
grondilu joined
08:30
am0c joined
08:31
sergot left
08:33
cognominal left,
cognominal joined
08:34
rurban joined
08:35
dakkar joined
|
|||
jnthn | hello, #perl6 | 08:45 | |
tadzik | hello jnthn | ||
jnthn: 56 modules passing, 50 failing now; NativeCall still broken | 08:46 | ||
jnthn | tadzik: I saw... And moritz++ already sent a patch for MIME::Base64 | ||
tadzik | ayep | ||
jnthn | OK, so we're down to Zavolaj and moritz also sees failures in the socket tests | 08:47 | |
moritz: I've just run the socket test several times and it passes reliably. | 08:49 | ||
moritz: So I'm guessing something platform specific, but it's a bit hard for me to track down. | |||
moritz: I dunno if subbuf is used anywhere; I did change that. | 08:50 | ||
08:51
cognominal_ joined,
cognominal left
08:53
sisar joined
08:55
mustapha joined
09:00
fhelmberger joined
09:03
fhelmberger left
09:04
fhelmberger joined
09:12
daxim joined
09:17
pmurias_ joined
09:18
bbkr joined
|
|||
masak | good antenoon, #perl6 | 09:18 | |
the modules that fail -- is any effort being done to take the failing stuff and make spectests out of it? | 09:19 | ||
dalek | kudo/toqast: 135013d | jnthn++ | src/Perl6/Actions.pm: Harden a check. |
09:20 | |
kudo/toqast: ba93c1d | jnthn++ | src/Perl6/ (2 files): Port something to QAST that somehow got missed. Fixes Zavolaj. |
|||
jnthn | masak: Well, pir::foo stuff doesn't belong in spectest. | 09:21 | |
masak: And probably nor does native calling stuff just yet. | |||
tadzik | \o/ | 09:22 | |
masak: on qbootstrap, after the spectests were clean there were no module regressions either | |||
(iirc) | |||
jnthn | Yeah, that's my recollection too | 09:23 | |
The module space regressions left over here are about things that we'd not expect the spectests to cover. | |||
And the rest of the modules seem to work, iiuc. | |||
(everyone who contributes to spectest)++ | |||
09:26
crab2313 joined
09:38
DarthGandalf left
|
|||
masak | sounds good. | 09:38 | |
09:39
awoodland joined,
crab2313 left
09:42
longqinsi joined
|
|||
dalek | kudo/toqast: 7efa992 | jnthn++ | src/Perl6/Actions.pm: Fix another place Op was wrongly assumed. |
09:46 | |
kudo/toqast: d4435ab | jnthn++ | src/Perl6/ConstantFolder.pm: Don't leave constant folding failure to chance. |
|||
p/toqast: aa69d06 | jnthn++ | src/QAST/ (7 files): First pass through optimizing the QAST node structures, which saves some time and some memory. |
|||
longqinsi | I'm trying to run perl6 on windows. I have installed parrot rakudo 4.5.0. I can start perl6 in cygwin without any parameter. But when I do the same thing in cmd , I get error:PARROT VM: Could not load bytecode Could not load oplib `nqp_ops'. Who can tell me why? | ||
09:47
mustapha left
|
|||
jnthn | longqinsi: Maybe differences in the path between the two environments? | 09:47 | |
longqinsi | Maybe. Do you know how to get the path of cygwin? | 09:49 | |
jnthn | echo $PATH maybe | ||
jnthn doesn't know much about cygwin at all | |||
longqinsi | I have found it : printenv PATH | 09:52 | |
moritz | I think echo %PATH% might work on cmd too | 09:53 | |
09:58
crab2313 joined
10:01
grondilu left
10:03
MayDaniel joined
10:10
kaleem left
10:13
crab2313 left
|
|||
dalek | c: 514fae0 | moritz++ | lib/Str.pod: [Str] follow spec titlecase refactor |
10:14 | |
10:18
MayDaniel left
10:22
scott__ left
|
|||
dalek | c: 56b73a4 | moritz++ | lib/Str.pod: [Str] more updates |
10:22 | |
10:23
MayDaniel joined
10:27
kaleem joined
10:28
kaleem left,
M_o_C joined,
kaleem joined
10:30
DarthGandalf joined
10:32
MayDaniel left
|
|||
masak | r: sub is-palindrome($s) { my $just-lc-letters = $s.comb.grep(/\w/).join.lc; $just-lc-letters eq $just-lc-letters.flip }; say is-palindrome "A man, a plan, a canal... Panama!" | 10:33 | |
p6eval | rakudo 4fe23e: OUTPUT«True» | ||
masak | \o/ | ||
r: sub is-palindrome { $_ eq .flip given $^s.comb.grep(/\w/).join.lc }; say is-palindrome "A man, a plan, a canal... Panama!" | 10:34 | ||
p6eval | rakudo 4fe23e: OUTPUT«True» | ||
moritz | masak: I'd call the variable $just-letters-lc | ||
masak | in retrospect, yes. | ||
moritz | masak: cause it's not "just lc letters" from the string | ||
masak | aye. | ||
tadzik | $java-lang-data-enterprise-letters-lowercase-only | ||
masak | oh, what's the name of such adjectives? | ||
"all the visible stars" vs "all the stars visible"? | |||
moritz | jnthn: gist.github.com/3175472 that's my analysis of the socket failure | 10:35 | |
jnthn: the problem is related to the fact that IO::Socket.recv doesn't do any real decoding. It seems to receive binary parrot strings, and simply hands them on | 10:36 | ||
at least I think that's what's going on | |||
$!buffer ~= nqp::p6box_s($!PIO.recv()) if $!buffer.bytes <= $bufsize | |||
jnthn | moritz: I wonder how on earth we got away with it before... | ||
tadzik | :) | 10:37 | |
jnthn | The only thing that's really changed is subbuf, which did some odd things. | ||
moritz | jnthn: by looking the other way REALLY HARD | ||
jnthn | Whan a pain in the neck. | 10:38 | |
moritz | jnthn: fwiw whiteknight++'s io_cleanup1 branch fixes this by adding an .encoding attribute to socket.pmc | ||
10:42
GlitchMr joined,
crab2313 joined
|
|||
moritz | jnthn: trying a patch now | 10:44 | |
10:47
MayDaniel joined
10:48
am0c left
|
|||
moritz | much better | 10:50 | |
10:50
erkan joined
|
|||
moritz | now that changes the argument to recv to mean characters instead of bytes | 10:50 | |
which is rather sane, I think | 10:51 | ||
but makes a test fail | |||
10:57
crab2313 left
|
|||
daxim | pug ⊆ pug s3-ec.buzzfed.com/static/enhanced/w...533-76.jpg | 11:01 | |
11:02
fhelmberger left
|
|||
masak | daxim: and both manage to look sad about it. | 11:02 | |
dalek | ar: f8f66ac | moritz++ | skel/docs/announce/2012.07: more deprecation notices: recv and IO::File/IO::Dir |
11:03 | |
11:03
erkan left
|
|||
GlitchMr | print_r(array_count_values(str_split(implode("", array_map("file_get_contents", array_slice($argv, 1)))))); | 11:04 | |
I've feeling it would be simpler in Perl 6 | |||
masak is thrown into a sudden depression by seeing PHP :( | 11:06 | ||
Timbus | wait are you joining a scring and then.. splitting it again? | ||
dalek | kudo/toqast: 0392a80 | moritz++ | src/core/IO/Socket.pm: switch IO::Socket.recv to character semantics this makes the tests not abort on linux, but the tests need adapting |
11:07 | |
jnthn | masak: ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>. # bf program to make you feel better :) | ||
Timbus | >.< | 11:08 | |
masak | thanks, that helped :) | ||
what does it do, print 'hello world'? | |||
GlitchMr | It counts letters in every ARGV file | ||
masak | today's mini-challenge: run jnthn's above bf program on p6eval! :) | 11:09 | |
moritz | r: say '++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.' # won! | ||
p6eval | rakudo 4fe23e: OUTPUT«++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.» | ||
Timbus | ffff beaten | ||
GlitchMr | > ++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>. # bf program to make you feel better :) | ||
Preceding context expects a term, but found infix > instead | |||
masak | no no no | ||
you're deliberately misunderstanding... :) | 11:10 | ||
GlitchMr | Sure | ||
jnthn | masak: Yes, hello world :) | ||
masak | run jnthn's above bf program *on a bf interpreter* written in Perl 6, on p6eval. *sigh* | ||
I'm surrounded by aspies who listen to what I say, not what I mean... :P | |||
masak knows he's going to eat his hat for that comment the next time he's obnoxious himself, though | 11:11 | ||
11:11
awoodland left
|
|||
masak | in related news, I've reverted back to my old (AFK) behavior of answering "yes" to "... or ..."-type questions. | 11:12 | |
flussence | r: note @*ARGFILES».slurp.join.comb.classify(*.ord) | ||
p6eval | rakudo 4fe23e: OUTPUT«Dynamic variable @*ARGFILES not found in method <anon> at src/gen/CORE.setting:9599 in <anon> at src/gen/Metamodel.pm:2304 in any find_method_fallback at src/gen/Metamodel.pm:2302 in any find_method at src/gen/Metamodel.pm:843 in method dispatch:<hyper> a… | ||
masak | though after a short pause I usually provide the correct alternative as well, as a kind of public service. | ||
flussence | blargh. | ||
r: note @*ARGS».slurp.join.comb.classify(*.ord) | 11:13 | ||
p6eval | rakudo 4fe23e: OUTPUT«Nil» | ||
flussence | the php translates to something like that anyway. | ||
dalek | ast/toqast: 333ca4c | moritz++ | S32-io/IO-Socket-INET. (2 files): update Socket tests to assume character semantics in .recv |
11:15 | |
moritz | jnthn: ok, in the roast/toqast the socket tests pass again | ||
jnthn | \o/ | ||
moritz++ | |||
11:16
M_o_C left
|
|||
moritz | URI also passes all tests here (though I've tested it without precompilation) | 11:20 | |
flussence | I wrote a thing, does it look useful to anybody? github.com/flussence/Pod-Iterator | 11:21 | |
arnsholt | Once again, spectests are awesome | ||
I'm not entirely incredulous at the idea that my refactorings actually work | 11:22 | ||
masak | flussence: nice! | ||
11:26
JimmyZ joined
|
|||
JimmyZ | masak: 说到 PHP,我最近在用 PHP 做 BDD 测试 | 11:27 | |
jnthn | r: (->$c,@a?{my ($ptr,$pc,$l,@p)=0,0,0,$c.comb;while @p[$pc++] {{'['=>{ @a[$ptr] ?? ($l = $pc - 1) !! (1 until @p[$pc++] eq ']') },']'=>{$pc=$l},'>'=>{$ptr++},'<'=>{$ptr--},'+'=>{@a[$ptr]++},'-'=>{@a[$ptr]--},'.'=>{print(chr(@a[$ptr]))}}{$^i}()} })('++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.'); | 11:28 | |
p6eval | rakudo 4fe23e: OUTPUT«Hello World!» | ||
kresike wonders if jnthn is human or not | 11:31 | ||
JimmyZ | kresike: see jnthn.net :) | 11:33 | |
masak | jnthn++! | 11:35 | |
jnthn: that is the awesomes thing I've seen today. and I'm on the Internet, so that's saying quite a lot. | |||
awesomest* | |||
jnthn | :) | 11:36 | |
kresike | JimmyZ, I have seen videos of his talks about perl6, but still, I think he's an alien or a robot or something :) Humans don't do these kind of things ... | ||
jnthn figures he'll go for a rechar^W^W^Wtake lunch :) | |||
masak | r: say chars q/(->$c,@a?{my ($ptr,$pc,$l,@p)=0,0,0,$c.comb;while @p[$pc++] {{'['=>{ @a[$ptr] ?? ($l = $pc - 1) !! (1 until @p[$pc++] eq ']') },']'=>{$pc=$l},'>'=>{$ptr++},'<'=>{$ptr--},'+'=>{@a[$ptr]++},'-'=>{@a[$ptr]--},'.'=>{print(chr(@a[$ptr]))}}{$^i}()} })('++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.');/ | 11:37 | |
p6eval | rakudo 4fe23e: OUTPUT«361» | ||
masak | doesn't quite fit in a tweet... :) | ||
JimmyZ | kresike: that remind me of bacek .... | 11:38 | |
kresike | JimmyZ, never heard of her/him/it ... | 11:39 | |
11:40
colomon joined
|
|||
colomon | o/ | 11:41 | |
kresike | hello colomon o/ | ||
masak | JimmyZ: 我可以想像 BDD 让愉快甚至使用 PHP | ||
that was probably wildly wrong, but I bet the sense came through. | 11:42 | ||
JimmyZ | kresike: he is the guy who implemented gms GC in parrot | ||
GlitchMr | jnthn.net/cgi-bin/photo_large.pl?id=3783 | 11:43 | |
dalek | ast: 42450a0 | (Solomon Foster)++ | S32-str/substr.t: Add substr tests which will throw UTF-16 implementations which are acting like UCS-2. |
||
JimmyZ | masak: 是的,不通顺。 | 11:44 | |
GlitchMr | Why Perl 6 implementation would use UCS-2 internally? | ||
tadzik | oh, so that was php... I thought it's some CPAN module for weird function names | ||
colomon | masak: I'm still in north ontario, can you subject the niecza bug those new tests show? | ||
JimmyZ | there are some same things in CPAN, which named cucumber too | 11:45 | |
masak | colomon: in what way do they fail? | ||
colomon | masak: it looks like substr is operating on 2-byte words rather than UTF-16 code points. | 11:46 | |
GlitchMr | perl6: print "\x10000".chars | 11:47 | |
p6eval | rakudo 4fe23e: OUTPUT«1» | ||
..niecza v19-13-g442e075: OUTPUT«2» | |||
colomon | n: say (0x10426, 0x10427).chrs.substr(0,1).ords | ||
p6eval | niecza v19-13-g442e075: OUTPUT«===SORRY!===Confused at /tmp/Yt_FMM5uMV line 1:------> say (0x10426, 0x10427).chrs⏏.substr(0,1).ordsParse failed» | ||
masak | there's your subject, then. "substr is operating on 2-byte words, not UTF-16 code points". | ||
colomon: you got an escape char in there. | 11:48 | ||
.chrs (something weird) .substr | |||
colomon | masak: yeah, thought it must be | ||
masak | by the way, I still dislike .chrs -- that feels like PHP to me, too. | ||
colomon | I'm on satellite internet from the middle of nowhere, and I need to get out fishing... | ||
masak | or at least the same kind of tendency. | ||
colomon: I'll submit the issue for you. | 11:49 | ||
masak submits nieczue | |||
colomon | masak++ | ||
tadzik | hahaha | 11:50 | |
nieczue sounds like nieczułe | |||
phenny: pl en "nieczułe"? | |||
phenny | tadzik: "insensitive" (pl to en, translate.google.com) | ||
tadzik | : | ||
:> | |||
masak | 哈哈哈 | 11:51 | |
masak will start calling it 'nieczułe', then :) | |||
colomon | phenny: tell sorear I've got working .tc, .tclc, .tcuc modulo the substr bug, but my implementations are ugly. | 11:53 | |
phenny | colomon: I'll pass that on when sorear is around. | ||
12:04
Coleoid left
|
|||
arnsholt | Fun. My changes to Actions/World.pm make the setting compilation segfault | 12:06 | |
12:09
colomon left
|
|||
JimmyZ | you breaks the World | 12:11 | |
tadzik | Some men just like to watch the World segfault | ||
arnsholt | =D | ||
But fixing it has to wait for later | 12:12 | ||
travel & | |||
masak | tadzik++ # :D | 12:15 | |
moritz | flussence: Pod::To::HTML now also has a pod iterator, though more functional style | 12:16 | |
12:17
xinming left
12:19
xinming joined
|
|||
masak | rn: constant X = 0..14; say X.WHAT | 12:22 | |
p6eval | rakudo 4fe23e, niecza v19-13-g442e075: OUTPUT«Range()» | ||
masak | rn: constant X = |(0..14); say X.WHAT | 12:23 | |
p6eval | niecza v19-13-g442e075: OUTPUT«Unhandled exception: Unable to resolve method Capture in type Range at <unknown> line 0 (ExitRunloop @ 0)  at /tmp/IveLM9IsTx line 1 (X init @ 2)  at <unknown> line 0 (ExitRunloop @ 0)  at /home/p6eval/niecza/src/NieczaBackendDotnet.pm6 line 76 (do… | ||
..rakudo 4fe23e: OUTPUT«===SORRY!===Could not find sub &prefix:<|>» | |||
masak | rn: constant X = list 0..14; say X.WHAT | ||
p6eval | rakudo 4fe23e, niecza v19-13-g442e075: OUTPUT«List()» | ||
GlitchMr | r: say pir::lcm__iii(4, 5) | 12:25 | |
p6eval | rakudo 4fe23e: OUTPUT«No such method 'gist' for invocant of type 'Integer' in sub say at src/gen/CORE.setting:7000 in block <anon> at /tmp/Y9c3FY0Pbo:1» | ||
12:25
benabik left
|
|||
GlitchMr | r: say +pir::lcm__iii(4, 5) | 12:25 | |
p6eval | rakudo 4fe23e: OUTPUT«20» | ||
GlitchMr | I start to like Parrot :) | ||
moritz likes to start parrot | 12:27 | ||
flussence | moritz: that one looks a lot better than my attempt... but I'll keep going with this and see how it turns out when I try to actually use it :) | ||
GlitchMr | Of course, it's 4 lcm 5 in Perl 6, but well, Parrot is more lowlevel | ||
But, it seems more dynamic than C for example | 12:28 | ||
masak | that's the idea. | 12:30 | |
"Parrot: more dynamic than C, for example" | |||
brrt | GlitchMr: finally! | 12:31 | |
somebody still likes parrot over here :-) | |||
tadzik | :) | ||
masak | awww :) | ||
masak hugs brrt | |||
brrt: I like Parrot too. I wish it well. | |||
GlitchMr | No memory management :) | 12:32 | |
brrt hugs masak back | |||
masak | I see it struggling, and don't know what to do about it. | ||
brrt | parrot is awesome | ||
GlitchMr | (well, manual memory management) | ||
tadzik hugs Parrot | |||
masak | the *vision* of Parrot is awesome. | ||
brrt | .. true | ||
masak | I want to live in a world where it has come true. | ||
brrt | what happened to parrot as far as i can tell | ||
is it got old | |||
masak | quickly. | ||
brrt | yes, unfortunately | ||
and whats more | 12:33 | ||
masak | it got old while it was still beta. | ||
or alpha, even, perhaps. | |||
brrt | 'other' vms have made huge advances since its start | ||
masak | aye. | ||
tadzik | what I see as a problem, is that at one point in time everything you heard at #parrot was: "this subsystem is shit". "That subsystem is shit" | ||
masak | it's harder today than back in 2001 to carve oneself a niche among VMs-that-do-dynamic stuff. | 12:34 | |
tadzik | then Parrot went "Redesign ALL THE THINGS!" | ||
GlitchMr | Actually, perhaps I should try making very simple language in Parrot | ||
tadzik | GlitchMr: do, it's a lot of fun | ||
masak | I wouldn't recommend anyone to try to create a dynamic VM today, unless they *really* knew their stuff. | ||
brrt is thinking on toying with m0 to make a small interpreter | |||
masak | tadzik: ambitious redesign isn't so much the core problem as the symptom, though. | 12:35 | |
tadzik | the problem is that I think it lacked manpower for all it wanted to do | ||
now m0 is stalled, or at least seems so | 12:36 | ||
GlitchMr | I can make grammars in Parrot, am I right? | ||
brrt | PGE | ||
tadzik | yes, with nqp | ||
brrt | oh, nqp is probably better | ||
tadzik | it's still the old nqp, nqp-rx | ||
(I think) | |||
12:37
jaldhar left
|
|||
flussence | wait, I have an idea! let's take all the parrot devs who want to rewrite everything all the time, and make them work on PHP instead! :) | 12:39 | |
GlitchMr | I don't think that PHP could be made better without changing everything | ||
flussence | that's the idea :) | 12:40 | |
moritz | GlitchMr: but "changing everything" isn't so uncommon in PHP land | ||
GlitchMr | I mean, if you would make better PHP, it would be incompatible with PHP | ||
flussence | maybe they should just be marketing parrot itself as a PHP alternative... it's probably a nicer language already | 12:41 | |
(well, with a nqp-ish wrapper around it. I can't imagine anyone wanting to write general purpose programs in a VM pseudo-asm language...) | 12:43 | ||
brrt | winxed is nicer than php | ||
and comes with a 'standard library' in the form of Rosella | |||
flussence | I keep hearing about this winxed thing but I have absolutely no idea what it is | 12:44 | |
JimmyZ likes parrot too | 12:45 | ||
well, I think nqp is nicer than winxed ;) | |||
brrt | winxed is a language that looks and smells like javascript | ||
but is totally parrot underneath | |||
12:45
birdwindupbird left
|
|||
brrt | so it has classes and namespaces and continuations and multiple return values an all that | 12:46 | |
most of that works out really well | |||
moritz | winxed is like a much nicer syntax for PIR | ||
brrt | some things don't | ||
moritz | NQP on the other hand only does the intersection of what parrot easily provides and what Perl 6 wants to be | 12:47 | |
12:49
jerome left
|
|||
jnthn | OK, so with native call fixed and moritz++ having patched the sockets issue - what do we feel is left for the merge? | 12:51 | |
moritz | Nil? | 12:52 | |
are all the optimizations back? | |||
jnthn | moritz: Inlining of routines isn't restored yet, but the other optimizations are. | 12:53 | |
moritz: I'll work on that, but I don't think it need block the merge. | 12:54 | ||
moritz | then I'm +1 on merging now | ||
jnthn | That optimization needs a re-do rather than some tweaks, since it can be done in a radically better way now. | 12:55 | |
OK, I'll merge this evening, unless somebody finds a reason not to before then. | |||
(Plus I'm meant to be doing $dayjob stuff at the moment. :-)) | |||
12:55
sisar left
13:02
tokuhiro_ joined
13:04
PacoAir joined
13:12
hoelzro is now known as hoelzro|away
13:19
skids joined
|
|||
[Coke] | ingy: (up to date) \o/ | 13:23 | |
13:26
lumi_ left
|
|||
masak | rn: enum A <a b c d>; say A.enums.keys | 13:26 | |
p6eval | rakudo 4fe23e, niecza v19-13-g442e075: OUTPUT«a b c d» | ||
masak | rn: enum A <a b c d>; say .^name for A.enums.keys | ||
p6eval | rakudo 4fe23e, niecza v19-13-g442e075: OUTPUT«StrStrStrStr» | ||
masak | rn: enum A <a b c d>; say .^name for A.enums | 13:27 | |
p6eval | rakudo 4fe23e, niecza v19-13-g442e075: OUTPUT«PairPairPairPair» | ||
13:29
lumi_ joined,
hoelzro|away is now known as hoelzro
|
|||
pmichaud | perlcabal.org seems to be down :-( | 13:30 | |
masak | was just gonna say. | ||
luckily, there's github.com/perl6/specs/blob/master...bjects.pod | |||
rn: enum A <a b c d>; say b.^name | 13:31 | ||
p6eval | rakudo 4fe23e, niecza v19-13-g442e075: OUTPUT«A» | ||
masak | what's the way to get a list of these values out of A? | ||
moritz | rn: enum A <a b c d>; say A.enums.perl | ||
p6eval | niecza v19-13-g442e075: OUTPUT«EnumMap.new(...)» | ||
..rakudo 4fe23e: OUTPUT«("a" => 0, "b" => 1, "c" => 2, "d" => 3).hash» | |||
moritz | perlcabal.org back up again | ||
rn: enum A <a b c d>; say A.enums.values | 13:32 | ||
p6eval | rakudo 4fe23e, niecza v19-13-g442e075: OUTPUT«0 1 2 3» | ||
masak | moritz: S12 says | ||
CoinFace.enums.[1] # Tails => 1 | |||
13:32
zhutingting joined
|
|||
masak | Tails, not "Tails". | 13:32 | |
I think Rakudo doesn't do that. | |||
moritz | rn: enum A <a b c d>; say A.enums[0].perl | 13:33 | |
p6eval | rakudo 4fe23e: OUTPUT«("a" => 0, "b" => 1, "c" => 2, "d" => 3).hash» | ||
..niecza v19-13-g442e075: OUTPUT«"a" => 0» | |||
moritz | masak: Tails => 1 autoquotes Tails | ||
rn: my %h = a => 1, b => 2; say %h[0].perl | |||
p6eval | niecza v19-13-g442e075: OUTPUT«"a" => 1» | 13:34 | |
..rakudo 4fe23e: OUTPUT«("a" => 1, "b" => 2).hash» | |||
moritz | hm | ||
I don't think it's a good idea to allow positional indexing into an unordered construct | |||
rn: my %h = a => 1, b => 2; say %h[1].perl | |||
p6eval | rakudo 4fe23e: OUTPUT«Failure.new(exception => X::OutOfRange.new(what => "Index", got => 1, range => 0..0, comment => Any))» | ||
..niecza v19-13-g442e075: OUTPUT«"b" => 2» | |||
jnthn | rn: enum A <a b c d>; say A.enums.pairs[0].perl | 13:35 | |
p6eval | rakudo 4fe23e, niecza v19-13-g442e075: OUTPUT«"a" => 0» | ||
jnthn | rn: enum A <a b c d>; say A.enums.pairs[1].perl | ||
p6eval | rakudo 4fe23e, niecza v19-13-g442e075: OUTPUT«"b" => 1» | ||
flussence | is there a method like .WHAT but returns just the ident part of the class name? | 13:36 | |
pmichaud | flussence: .WHAT.perl, IIRC | 13:37 | |
masak | moritz: +1 | ||
pmichaud | r: say 1.WHAT; say 1.WHAT.perl; | ||
p6eval | rakudo 4fe23e: OUTPUT«Int()Int» | ||
flussence | oh, thanks. I miss something obvious again :) | ||
masak | moritz: so, how *do* I get the enum *objects* (in order) out of the enumeration? | ||
moritz | flussence: .^name | 13:38 | |
flussence | ooh, that's even better | ||
PerlJam | greetings #perl6 people | 13:39 | |
moritz | rn: say (enum :: <a b c >).enums.values.perl | 13:40 | |
p6eval | niecza v19-13-g442e075: OUTPUT«[0, 1, 2].list» | ||
..rakudo 4fe23e: OUTPUT«===SORRY!===ResizablePMCArray: Can't pop from an empty array!» | |||
13:40
jerome joined
|
|||
masak | PerlJam! \o/ | 13:40 | |
PerlJam | masak: you are in a room that is bigger on the inside but is not the tardis. :) | 13:41 | |
masak | indeed. | 13:42 | |
masak .oO( #perl6: bigger on the inside ) | |||
jnthn | rn: enum Beer < ale stout porter >; say Beer::.keys | 13:43 | |
p6eval | niecza v19-13-g442e075: OUTPUT«0» | ||
..rakudo 4fe23e: OUTPUT«ale stout porter» | |||
PerlJam | masak: btw, naming the game "crypt" may start a myth about Perl 6 being dead ;) | ||
jnthn | rn: enum Beer < ale stout porter >; say Beer::.pairs.perl | ||
p6eval | niecza v19-13-g442e075: OUTPUT«(0 => Stash.new(...), ).list» | ||
..rakudo 4fe23e: OUTPUT«("ale" => Beer::ale, "stout" => Beer::stout, "porter" => Beer::porter).list» | |||
jnthn | moritz: Like that. | ||
13:45
thou joined,
mucker joined
|
|||
masak | jnthn: thanks. | 13:46 | |
13:46
kaleem left
|
|||
masak | rn: enum Beer < ale stout porter >; say Beer::.pairs>>.value | 13:47 | |
p6eval | niecza v19-13-g442e075: OUTPUT«Stash.new(...)» | ||
..rakudo 4fe23e: OUTPUT«ale stout porter» | |||
pmichaud | going through the package/stash to get to the keys seems ... not right | ||
masak | agreed. | ||
pmichaud | I mean, it may work in rakudo, but it doesn't feel "spec" | 13:48 | |
masak | it feels too heavy-handed, too. | ||
13:48
bluescreen10 joined
|
|||
pmichaud | r: enum Beer <ale stout porter>; say Beer.^parents(:local) | 13:49 | |
p6eval | rakudo 4fe23e: OUTPUT«Int()» | ||
13:49
zhutingting left
|
|||
jnthn | Well, the question was how to do it, not what'd be a nice way to do it :) | 13:49 | |
pmichaud | oh; I'm interested in "What's the Perl 6 way to do it" | 13:50 | |
jnthn | Even less spec but nicer: | ||
masak too | |||
jnthn | r: enum Beer < ale stout porter >; say Beer.^enum_values.perl | ||
p6eval | rakudo 4fe23e: OUTPUT«("ale" => 0, "stout" => 1, "porter" => 2).hash» | ||
jnthn | Or as a list | 13:51 | |
r: enum Beer < ale stout porter >; say Beer.^enum_value_list.perl | |||
p6eval | rakudo 4fe23e: OUTPUT«(Beer::ale, Beer::stout, Beer::porter)» | ||
jnthn | Anyway, it's all there in meta-space whichever sugar we pick :) | ||
pmichaud | yeah, using Beer::.pairs seems wrong because I could (theoretically) bind subs and other things into the Beer package that aren't really part of the enumeration. | 13:52 | |
jnthn | pmichaud: Yes, indeed. | 13:53 | |
pmichaud: But it is at least spec that this should work, whereas the meta-model way ain't (yet) spec. | |||
pmichaud: That is, "work" :-) | |||
13:53
longqinsi left
|
|||
pmichaud | r: enum Beer < ale stout porter >; say Beer.enums.perl | 13:54 | |
p6eval | rakudo 4fe23e: OUTPUT«("ale" => 0, "stout" => 1, "porter" => 2).hash» | ||
pmichaud | *there* | ||
that's spec. | |||
It's in the first sentence of S12's "The Enumeration Type" :-P | 13:55 | ||
r: enum Beer < ale stout porter >; say Beer.enums.keys.perl | |||
p6eval | rakudo 4fe23e: OUTPUT«("ale", "stout", "porter").list» | 13:56 | |
jnthn | pmichaud: I'm not sure what's what moritz was after, fwiw. | ||
pmichaud | oh, probably not. | ||
masak | what masak was after. | 14:01 | |
no, I don't want strings there. | 14:02 | ||
I want the *enum* values. | |||
they're nicer to pass around than strings. | |||
(and I half-suspect that the spec means them to be enum values, not strings) | |||
(but as moritz rightly pointed out, the indication I found for that being so was actually a false lead because auto-quoting of pair keys) | 14:03 | ||
jnthn | afk for a little bit | 14:04 | |
pmichaud | Offhand, I think that .enums should return them. | ||
instead of the ints. | |||
14:06
brrt left
|
|||
[Coke] | still only one yapc::eu perl6 talk that isn't really. | 14:08 | |
masak | pmichaud: instead of the strings, surely? | 14:11 | |
pmichaud: the ints are what the enums are associated with. | |||
pmichaud | the enums *are* the ints, though. | 14:12 | |
pmurias_ | [Coke]: the perlito5 one? | ||
pmichaud | I wouldn't expect Beer::ale => 0 | ||
I would expect 'ale' => Beer::ale, maybe. | 14:13 | ||
r: enum Beer < ale stout porter >; say Beer::ale + 3; | |||
p6eval | rakudo 4fe23e: OUTPUT«3» | ||
pmichaud | r: enum Beer < ale stout porter >; say Beer::porter + 3; | 14:14 | |
p6eval | rakudo 4fe23e: OUTPUT«5» | ||
pmichaud | see, it's an Int already. :-) | ||
[Coke] | pmurias_: no, it's masak's autopun LT. | ||
pmichaud | despite what S12 currently says, I'd expect: | 14:15 | |
Beer.enums.keys # ('ale', 'stout', 'porter') | 14:16 | ||
Beer.enums.values # (Beer::ale, Beer::stout, Beer::porter) | |||
GlitchMr | Just wondering. I declare operators B and C which are tighter than operator A. Is operator B equiv to C? | ||
pmichaud | GlitchMr: as things currently stand, yes. | 14:17 | |
PerlJam | GlitchMr: should be. | ||
GlitchMr | ... oh, I think I understand... when I declare C, I already have operator B which is tighter than A | 14:18 | |
So, C is looser than B | |||
pmichaud | GlitchMr: they should be equiv | ||
GlitchMr | But doesn't :tighter means slightly tigher than this operator, but not too tight | 14:19 | |
[Coke] | r: enum Pets < cat dog bun >; say Pets::dog.Int | ||
p6eval | rakudo 4fe23e: OUTPUT«1» | ||
masak | pmichaud: ok, I think I agree. | ||
pmichaud | also, seeing this now (I've never really understood enums til seeing this code), I think it's a mistake for EnumMap to be the base class of Hash. | ||
masak | pmichaud: but if it *is* the enum, it should .perl as "ale" => ale, I think. | ||
pmichaud: \o/ | 14:20 | ||
I've said for *ages* that it's a mistake for EnumMap to be a base class for Hash. | |||
pmichaud | EnumMap really wants to be an ordered list of pairs | ||
masak | aye. | ||
pmichaud | if we want a base class for Hash, it should be Mapping | ||
masak | and not be called that. | ||
PerlJam | GlitchMr: B is tighter(A) and C is tighter(A) make B and C equiv (and tighter than A) | ||
masak | pmichaud: +Inf | ||
pmichaud | what .enums returns should be an ordered list of pairs that understands both .[] and .{} to dtrt | 14:21 | |
I think it should .perl as "ale" => Beer::ale | 14:22 | ||
masak | aye. | 14:23 | |
wfm. | |||
pmichaud | essentially, the values of an enumeration are the actual Enumeration objects, not their base class thingies | ||
if you want those, you use >>.Numeric or >>.Int | 14:24 | ||
tadzik | fun fact: "Ale" means "but" in Polish | 14:25 | |
14:25
wtw left
|
|||
GlitchMr | but... | 14:25 | |
fun fact: "But" means "shoe" in Polish... oh wait | |||
masak | tadzik: I'm having trouble explaining to myself why this fact feels absolutely obvious to me... | 14:26 | |
it's as if pl:"ale" *must* mean en:"but". | |||
GlitchMr | Seriously, you should expect this with every short word | ||
masak | you should expect every short word to mean "but"? :P | 14:27 | |
PerlJam | masak: or shoe | ||
GlitchMr | I've checked "lol" for fun... it turned out that it means "fun" in Dutch | ||
Nothing special. It's very short word, so well... | |||
PerlJam | GlitchMr: but was that a pre-existing meaning or one that's only recently come to be? :) | ||
GlitchMr | en.wiktionary.org/wiki/lol | 14:28 | |
"Of uncertain origin. Found in publications from as early as 1560. Probably derived from the onomatopoeia 'lollen', originally meaning 'to snooze'. Compare English loll." | |||
If it was found in 1560... well | |||
14:29
tokuhiro_ left
|
|||
GlitchMr | As for but: en.wiktionary.org/wiki/but | 14:29 | |
14:29
tokuhiro_ joined
|
|||
GlitchMr | And of course en.wiktionary.org/wiki/ale | 14:30 | |
pmichaud | "too" is short, too, but does "too" also mean "but"? | 14:32 | |
masak ends up with a method with six (!) small subroutines, each building on the previous ones, and wonders if this is a good thing | |||
14:32
tokuhiro_ left
|
|||
tadzik | pmichaud: "too" is pronounced "tu", which means "here" :) | 14:35 | |
14:36
brrt joined
|
|||
pmichaud | masak: S02 also says: | 14:36 | |
EnumMap Associative Positional Iterable | |||
moritz | erm, what. | ||
pmichaud | ...and I think we had decided that hash arguments should not bind to array parameters | ||
which means that EnumMap is either not Positional or not the base class for Hash | |||
moritz | and Hash isa EnumMap | ||
yes, something's fishy here | 14:37 | ||
GlitchMr | "The only way creating a new language compiler could be easier is if these files created themselves." | ||
ok | |||
moritz | japhb: btw I've written a small script that compares the MRO of classes in rakudo and in type-graph.txt | ||
japhb: there were just three or four disagreement. Will paste them later when I'm at the other machine | 14:38 | ||
masak | pmichaud: right, seems we've muddled two orthogonal intents until now. | ||
jnthn | back | 14:39 | |
GlitchMr | This language could be nice starting point :) | 14:41 | |
jnthn | tadzik: (ale) same in Slovak :) I probably managed to pun badly on it at some point... | 14:42 | |
14:43
atrodo joined
14:46
pmurias_ left
14:47
pmurias joined
14:48
xinming left
14:50
xinming joined
14:56
fgomez left
14:58
fgomez joined
15:02
pmurias left
|
|||
moritz | r: say Nil.^name | 15:05 | |
p6eval | rakudo 4fe23e: OUTPUT«Nil» | ||
[Coke] | r: say Inf.Int; | ||
p6eval | rakudo 4fe23e: OUTPUT«Cannot coerce Inf to an Int in method gist at src/gen/CORE.setting:9594 in sub say at src/gen/CORE.setting:7000 in block <anon> at /tmp/ZKBuymk059:1» | 15:06 | |
[Coke] | huh. rt.perl.org/rt3 now mentions niecza. (but not pugs) | ||
kresike | bye all | 15:07 | |
15:07
kresike left
|
|||
hoelzro | hey Perl6 folk | 15:07 | |
let's say there were a module for importing a Perl 5 module into Perl 6 | 15:08 | ||
what would be a good syntax for specifying this? | |||
15:08
mucker left
|
|||
hoelzro | I was thinking 'use perl5 => "Module::Name"' | 15:08 | |
flussence | use Module::Name :from<perl5> | 15:09 | |
tadzik | yep | 15:10 | |
we did have that working at some point | |||
hoelzro | oh, really? | 15:11 | |
how did it work? | 15:12 | ||
moritz | by magic | ||
[Coke] | pugs: use File::Spec :from<perl5> | 15:13 | |
p6eval | pugs: OUTPUT«pugs: *** Unsafe function 'use' called under safe mode at /tmp/vgQWfGRdXa line 1, column 1» | ||
daxim | [17:04] <abraxxa> php runs in the browser: phpjs.hertzen.com/ | ||
diakopter | flussence: "I can't imagine anyone wanting to write general purpose programs in a VM pseudo-asm language..." some of us like pain | ||
15:13
daxim left
|
|||
flussence | you've got me there. | 15:14 | |
hoelzro | so let's say I have a new method of a Perl5 class that accepts arbitrary params | 15:16 | |
ex. Rob->new(foo => 17, bar => 18) | |||
[Coke] | r: my Int $a = Inf; | ||
p6eval | rakudo 4fe23e: OUTPUT«Type check failed in assignment to '$a'; expected 'Int' but got 'Num' in block <anon> at /tmp/HUzKu7NNLT:1» | ||
hoelzro | how would one call that from Perl 6? | ||
moritz | the perl 5 method just expects a list | 15:17 | |
so you give it a list | |||
masak | makes sense. | ||
moritz | Rob.new('foo', 17, 'bar', 18) | ||
japhb | moritz++ # Continued cleanup of type-graph.txt | 15:18 | |
hoelzro | ok | ||
moritz | or maybe we can teach it to flatten out pairs in argument lists | ||
hoelzro | I figured that; there's no way to make that "prettier"? | ||
moritz | japhb: remaining discrepancies are: type-graph.txt says Signature is Cool, Rakudo disagrees | ||
hoelzro | moritz: but how would I then do Rob->new({ ... })? | ||
mhasch | a library with lots of magic might want to employ an orang-utan librarian (sorry I could not resist) | ||
hoelzro | explicit hash in perl 6? | ||
moritz | hoelzro: Rob.new({ ...}) | 15:19 | |
japhb | Thank you moritz; I'd intended to do a similar cross-check myself, but $work-week intruded. :-/ | ||
moritz | japhb: I'll just commit the script | ||
and | |||
Stash | |||
masak | mhasch: heh :) | ||
moritz | rakudo says it inherits from Hash | ||
type-graph doesn't | |||
I guess I'll just fix up the type graph | |||
tadzik | every time I hear "discrepancy" in my head I hear "involving a semi-tonal discrepancy" | 15:20 | |
so I decomutee, and you have fun singing the song in your heads :) | 15:21 | ||
[Coke] | r: (1..3).map({$_ => $_*$_}).perl.say #RT 68298 | ||
p6eval | rakudo 4fe23e: OUTPUT«use of uninitialized variable $_ of type Any in numeric context in block <anon> at /tmp/jYbRD55qyN:1use of uninitialized variable $_ of type Any in numeric context in block <anon> at /tmp/jYbRD55qyN:1use of uninitialized variable $!key of type Any in string c… | ||
15:22
fgomez left
|
|||
moritz | that's the old hash vs. block dichtonomy | 15:22 | |
dalek | c: bf9c66f | moritz++ | type-graph.txt: [type-graph.txt] fix up entries for Stash and Signature |
||
c: 06d1593 | moritz++ | util/check-type-graph.pl6: add a script that cross-checks MRO of type-graph.txt with Rakudo |
|||
15:22
felher left
|
|||
japhb | Ah, I see the problem with Signature ... BOOTSTRAP says it's Any, but Signature.pm has 'is Cool' in a comment at the top (I used naive grepping to do the first pass collection of data for type-graph.txt) | 15:23 | |
moritz | well, signatures are cool, but Signature is not Cool :-) | 15:24 | |
masak | ;) | ||
japhb | moritz, True. Just need to fix the comments in Signature.pm. ;-) | ||
mhasch wonders what a Cool module would do | |||
dalek | kudo/nom: 7c87dcb | moritz++ | src/core/Signature.pm: remove misleading comment, japhb++ |
||
[Coke] | r: say 612-81 | 15:25 | |
p6eval | rakudo 4fe23e: OUTPUT«531» | ||
diakopter | mhasch: Cool is a Perl 6 thingy. that's about all I remember. | 15:26 | |
japhb | r: say Stash.^mro; | ||
p6eval | rakudo 4fe23e: OUTPUT«Stash() Hash() EnumMap() Iterable() Cool() Any() Mu()» | ||
15:27
erkan joined
|
|||
moritz | good thing we have docs now: doc.perl6.org/type/Cool | 15:27 | |
[Coke] | r: our Str a; #RT#76830 | 15:29 | |
p6eval | rakudo 4fe23e: OUTPUT«===SORRY!===Malformed ourat /tmp/UfrCAUT0Im:1» | ||
moritz | that looks like a pretty good error message | ||
GlitchMr | token quote:sym<"> { <?["]> <quote_EXPR: ':qq'> } | 15:30 | |
Where I can find documentation for quote_EXPR in nqp? | |||
15:30
fgomez joined
|
|||
japhb wonders how he missed the Stash is Hash entry. Ah well ... | 15:30 | ||
15:30
felher joined
|
|||
moritz | GlitchMr: I'd look in HLL::Grammar | 15:30 | |
GlitchMr | ok :) | 15:31 | |
japhb | moritz, I understand why you removed some of the Rakudo-specific parts of type-graph.txt, but some of them surprised me. Why is class WrapHandle gone? Is it deprecated but not gone yet? | ||
moritz | r: say WrapHandle | 15:33 | |
p6eval | rakudo 4fe23e: OUTPUT«===SORRY!===CHECK FAILED:Undefined routine '&WrapHandle' called (line 1)» | ||
moritz | japhb: it's only defined lexically within another scope, not user-visible | ||
15:33
JimmyZ left
|
|||
japhb | Hmmm, can you get it as a return? Meaning, might the user end up receiving a WrapHandle? | 15:34 | |
moritz | r: sub f() { }; say &f.wrap({}).WHAT | ||
p6eval | rakudo 4fe23e: OUTPUT«Nominal type check failed for parameter '&wrapper'; expected Callable but got Hash instead in method wrap at src/gen/CORE.setting:1661 in block <anon> at /tmp/1okwNFMRv_:1» | ||
moritz | r: sub f() { }; say &f.wrap({$_}).WHAT | 15:35 | |
p6eval | rakudo 4fe23e: OUTPUT«WrapHandle()» | ||
moritz | hm, you can | ||
so either that need to change, or we need to expose and spec WrapHandle | |||
japhb | I thought so ... | ||
nodnod | |||
15:36
pmurias_ joined
|
|||
diakopter pmurias_ hi | 15:36 | ||
15:38
daxim joined
|
|||
diakopter | heh | 15:38 | |
TimToady | r: my $_ = 'abc'; when m:g/./ -> @x { say @x } | 15:39 | |
p6eval | rakudo 4fe23e: OUTPUT«===SORRY!===Redeclaration of symbol $_at /tmp/E86BizvlVf:1» | ||
TimToady | r: $_ = 'abc'; when m:g/./ -> @x { say @x } | ||
p6eval | rakudo 4fe23e: ( no output ) | ||
japhb | r: sub f() { }; my $handle = &f.wrap({$_}); say &f.^mro; | ||
p6eval | rakudo 4fe23e: OUTPUT«Sub+{Wrapped}() Sub() Routine() Block() Code() Any() Mu()» | ||
japhb | So role Wrapped is visible too | ||
mhasch | moritz++: thanks for doc.perl6.org and p6doc. I feel like xmas has come early this year :-) | 15:45 | |
masak | \o/ | 15:46 | |
moritz++ | |||
mhasch: please let us know how we can make it even better for newcomers. | |||
(and experts) | |||
15:46
thelazydeveloper joined,
thelazydeveloper left
|
|||
masak found a parsing bug: rt.perl.org/rt3/Ticket/Display.html?id=114256 | 15:49 | ||
15:52
thelazydeveloper joined
|
|||
mhasch | the headlines seem to lack <a name=...> tags, offhand. But I certainly will give more feedback later. Today's tuits go to my yapceu talk. There is a deadline looming... | 15:53 | |
japhb | moritz, also, why remove module PROCESS and package Metamodel? Just getting rid of everything that is not a role or class? | 15:57 | |
15:57
seldon joined
15:58
aindilis joined
|
|||
masak | I don't think we should do <a name=..> any more. the id=".." attribute does the same thing, has other advantages, and no drawbacks. | 15:58 | |
15:59
bbkr left
16:01
brrt left
|
|||
mhasch | Masak: I stand corrected. I thought that was the reason for some intra-page links not working, but apparently my browser has an issue with %20 in ids. | 16:03 | |
jnthn | moritz: (WrapHandle) the spec only says what it can be used for. We can spec and expose the type too, but not doing so was the conservative thing. | ||
OK, nobody filed objects to the toqast merge and the evening is here. So... :) | 16:04 | ||
16:08
nightlord joined
|
|||
diakopter | jnthn: is it ok if there are still mentions of PAST:: in the source? | 16:08 | |
I'm not saying there are; I'm just curious | |||
mhasch | masak: on second thought, I think not the brwoser is at fault; %20 in URLs means blank and in IDs means %20, does it not? the html should read <h1 id="foo bar"> rather than <1 id="foo%20bar"> IMO. | ||
jnthn | diakopter: Yes, and there will be for a little bit. | 16:09 | |
16:09
hoelzro is now known as hoelzro|away
|
|||
jnthn | QAST::Regex still wraps things up in PAST::Node in places. That's gonna have to wait until I work on moving NQP to QAST. | 16:09 | |
Well, maybe not, but it was more than I wanted to bite off right away. | 16:11 | ||
16:11
fhelmberger joined
|
|||
diakopter wonders whether rakudo will still load the past parrot library afterwards | 16:12 | ||
16:13
Coleoid joined
|
|||
jnthn | We'll stop doing that eventually, after NQP is also converted. | 16:14 | |
timotimo | mhasch: it seems like names must'n contain spaces: ID and NAME tokens must begin with a letter ([A-Za-z]) and may be followed by any number of letters, digits ([0-9]), hyphens ("-"), underscores ("_"), colons (":"), and periods ("."). | 16:16 | |
www.w3.org/TR/html4/types.html#type-name <- at least in html4 | |||
masak | mhasch: I think we should be able to do without spaces in IDs. | 16:18 | |
mhasch | even better, yes | ||
16:19
fhelmberger left
|
|||
dalek | Heuristic branch merge: pushed 207 commits to nqp by jnthn | 16:20 | |
Heuristic branch merge: pushed 188 commits to rakudo/nom by jnthn | |||
16:22
nightlord left
16:25
am0c joined
|
|||
jnthn | pmichaud: toqast landed. Happy hacking on all the things! :) | 16:28 | |
masak | \o/ | 16:30 | |
jnthn++ | |||
...and I have a Perl 6 day tomorrow. how convenient. :) | |||
[Coke] | jnthn: aw, just missed the daily spectest run. | 16:32 | |
jnthn | Do quasi placeholders! | ||
masak | that's my plan. | ||
[Coke] | jnthn++ | ||
japhb | jnthn++ | 16:33 | |
jnthn | [Coke]: I don't think we win more tests. | ||
japhb | Now time to rebuild all the things | ||
jnthn | Oh, actually | ||
There are I think some passing todos. | |||
gfldex | timotimo: in any html or you foobar CSS. There is no quoting for name/id/class in CSS. | ||
[Coke] | jnthn: I know. Perhaps I was just trying to keep up the presence of the daily run. ;) | 16:34 | |
jnthn | "The daily run" sounds like some exercise thing :P | ||
[Coke] | ew. | ||
masak | it exercises the spectests. :) | ||
16:35
kaleem joined
|
|||
[Coke] | Thank goodness I didn't call it the daily runs. | 16:35 | |
Coleoid | jnthn++ ! | 16:39 | |
dalek | ecs: 89b9891 | pmichaud++ | S07-lists.pod: Add initial draft of S07-lists.pod, the new Synopsis 7. |
16:46 | |
moritz | jnthn: did you merge the roast branch too? | 16:47 | |
pmichaud | if someone wants to update perlcabal.org to point to the new S07-lists.pod document (or tell me how to do it), that would be excellent. | 16:48 | |
questions, comments, patches welcomed, of course. | |||
masak looks | |||
pmichaud++ | |||
pmichaud | it's definitely not complete yet, because there are still some semantics we have to work out. | ||
moritz | pmichaud: docs/feather/syn_index.html in the perl6/mu repo | 16:53 | |
pmichaud | moritz++ # thanks | ||
I'm afk for a few minutes -- bbiab | |||
diakopter | moritz: will the smartlinks script pick up the new file? | ||
moritz | hm, there might be some trouble with having two S07-*.pod files | 16:54 | |
jnthn | moritz: I...didn't know there was one. :) | ||
pmichaud | I'm fine with removing the old S07. | ||
moritz | jnthn: it's where I adapted the socket tests to deal with character-based .recv | ||
16:55
kaleem left
|
|||
masak | "finiteness isn't currently known" giving Mu. feels ickish in the same way as wantarray() giving back three possible values, two of which are boolean. which everyone forgets. but I see the problem and don't have a better solution. :/ | 16:55 | |
moritz | enum Finity <Finite Infinite Unknown>; | ||
masak | better. | ||
there's also a curious parallel with a possible three-value solution to halting problem algorithms. "halts", "doesn't halt", "dunno, too complicated". | 16:56 | ||
moritz: also, I really like the name "Finity" :) | |||
Coleoid | There is an S07-iterators.pod. And the current smartlink script special-cases perl6 docs to lose the portion after S\d\d. So I believe moritz is right about the problem. | ||
17:02
cognominal joined,
cognominal_ left
|
|||
dalek | ecs: 75e74e0 | moritz++ | S07-iterators.pod: there can be only one S07 |
17:03 | |
tadzik | yay, toqast is here! | 17:04 | |
masak | yay! | ||
tadzik | jnthn++, contributors++ | ||
awesomeness | |||
moritz wonders what a toq-AST is :-) | |||
masak | an AST for the Toposa language, duh. :) | 17:05 | |
dalek | kudo/nom: 48fdb9e | jnthn++ | src/Perl6/ (2 files): Switch many type checks to a more optimal construct, based on profiler feedback. Cuts the time spent in the optimizer to a third (!!!) of what it once was; on my machine we shave ~5s off CORE.setting build and > 10s off spectest run. |
||
masak | en.wikipedia.org/wiki/Toposa_language -- "Language codes: ISO 639-3 toq" | ||
tadzik | woot | ||
17:06
GlitchMr left
|
|||
tadzik | 10s on jnthn's spectests run is probably about 10 minutes on mine :P | 17:06 | |
masak | jnthn++! | ||
jnthn | oops, I lost a commit in the merge... | ||
dalek | kudo/nom: 0392a80 | moritz++ | src/core/IO/Socket.pm: switch IO::Socket.recv to character semantics this makes the tests not abort on linux, but the tests need adapting |
||
kudo/nom: ed269f7 | jnthn++ | src/core/IO/Socket.pm: Merge branch 'toqast' into nom |
|||
jnthn | Tehre we are | ||
dalek | ast: 333ca4c | moritz++ | S32-io/IO-Socket-INET. (2 files): update Socket tests to assume character semantics in .recv |
17:07 | |
ast: 89d4c66 | moritz++ | S32-io/IO-Socket-INET. (2 files): Merge remote branch 'origin/toqast' Switches $socket.recv to consistent character semantics |
|||
pmichaud | I don't want Finity to be an enum. | 17:08 | |
or if it is an enum, I want it to have the values True, False, and Mu :-) | 17:09 | ||
it's far far too convenient to be able to say ! $x.infinite and get the correct result for both False and Mu | 17:10 | ||
17:11
am0c left
|
|||
pmichaud | not to mention that not knowing an object's finiteness means its finiteness is somehow "undefined" :-) | 17:11 | |
dalek | : 6f132f2 | pmichaud++ | docs/feather/syn_index.html: Update syn_index.html to point to new S07 document. |
17:16 | |
17:17
dakkar left
17:21
leprevost joined
|
|||
diakopter | TimToady: in the P6-ish code I'm writing, I have a need for a contextual that acts like a prototype-based javascript object, where I need to text for existence of keys in the hash and all its parent hashes. I can emulate this with a stack (which I can iterate) of hashes and pushing/popping where I would otherwise my %*contextual... but ... is there a better way to do this? | 17:29 | |
[TimToady or anyone, I mean....] | 17:31 | ||
TimToady | if you don't really need a hash, then you have an XY problem :) | ||
why do you need a hash? | |||
diakopter | well I've used inheriting javascript objects that way quite a few times for symbol tables and caches | 17:32 | |
here it's for a symbol table of sorts | |||
TimToady | do you need to be able to add slots after you've created the inner object? | ||
diakopter | yes, but only to the current one | 17:33 | |
tadzik | any windows user around? | ||
TimToady | one could do it with inheritance from the outer, or with delegation, and add slots with a mixin | ||
diakopter | tadzik: me | ||
TimToady | but it's true that I've wanted shadowing hashes also occasionally | 17:34 | |
tadzik | diakopter: could you test panda on on offline-bootstrap branch? | ||
dalek | nda/offline-bootstrap: a5814af | moritz++ | bootstrap.pl: [bootstrap.pl] avoid a warning if $PERL6LIB is not set |
||
nda/offline-bootstrap: 04b6755 | moritz++ | bootstrap.pl: make bootstrap.pl more robust do not add ext/ to lib once ext/ is installed |
|||
nda/offline-bootstrap: b6104c9 | tadzik++ | bootstrap.pl: Merge branch 'master' into offline-bootstrap Conflicts: bootstrap.pl |
|||
tadzik | moritz: I tried to merge your changes to bootstrap.pl with mine, this time with no rebase magic. Could you tell me if it works fine on your box now? | 17:35 | |
moritz | tadzik: will do | 17:36 | |
[Coke] | +# 07/25/2012 - rakudo++ (22899); niecza (89.96%); pugs (41.04%) | ||
rakudo is failing 65 tests, niecza 3. | |||
diakopter | tadzik: hrm | ||
[Coke] | S32-str/substr.rakudo aborted 63 test(s) | ||
S32-str/substr.niecza 29-30 failed. | 17:37 | ||
TimToady | diakopter: there are likely also ways of doing .^add_attribute or some such if the representation doesn't freeze that at compose time | ||
jnthn | Some of the Rakudo fails may be down to the moritz++ patch that I missed in the merge | ||
diakopter | TimToady: instead of a stack, I guess I could emulate it with a contextual hash, but that also stashes a reference to its outer contextual hash under some magically key, then the search routine traverses the parents | 17:40 | |
17:40
Coleoid left,
colomon joined
|
|||
tadzik | yay, I can see NativeCall passing in emmentaler :> | 17:40 | |
TimToady | you could derive from Hash and wrap FETCH to do the delegation, I suppose | ||
jnthn | tadzik: yay | 17:41 | |
TimToady | the tricky part of a decent hierarchical hash is making a way for an inner hash to say that a key is deleted from the outer hash, but maybe that's not a problem for you | 17:42 | |
masak | when would you ever need that? | 17:47 | |
sounds like that would go against the flow of the dependency. | |||
TimToady | only if you have a Liskovian problem | 17:48 | |
case in point, suppose you want a temp %*ENV that deletes some entries as well as adds some | 17:49 | ||
17:49
kaare__ joined,
colomon left
|
|||
TimToady | but delegates the keys you don't care about to the outer %*ENV | 17:49 | |
17:50
kaare_ left
|
|||
TimToady | currently the only way to do that is by copying the whole outer %*ENV | 17:50 | |
more generally, temporizing is for making hypotheses, and sometimes you want to hypothesize the absence of something | 17:51 | ||
17:52
kaare__ is now known as kaare_
|
|||
diakopter | tadzik: I've never tried panda. | 17:53 | |
17:54
p6eval left
|
|||
TimToady | so it seems to me that the inner hash must at least support an element type of Nil, to say "There's no value under this key, and don't bother trying my ancestral hash" | 17:55 | |
diakopter | seen in enterprise software trying to be smart: "Story223 - an User Story" (where User Story is a named type of something) | 17:56 | |
aloha | in enterprise software trying to be smart: "Story223 - an User Story" (where User Story is a named type of something) was last seen in 15546 days 17 hours ago . | ||
timotimo | :D | ||
flussence | wat. | ||
17:56
PerlJam left
|
|||
TimToady | speaking of "trying to be smart" | 17:56 | |
17:57
PerlJam joined
|
|||
timotimo | seen schrödingers cat, alive | 17:57 | |
aloha | schrödingers cat, alive was last seen in 15546 days 17 hours ago . | ||
timotimo | seen schrödingers cat, dead | ||
aloha | schrödingers cat, dead was last seen in 15546 days 17 hours ago . | ||
timotimo | well, that's somewhat expected, but also somewhat surprising | ||
tadzik | diakopter: cool. Do you want to? :) | ||
diakopter | I'll show you anuserstory.. | 17:58 | |
tadzik: will you be online 9 hours from now? | 17:59 | ||
tadzik | diakopter: I don't think so | 18:00 | |
diakopter | I might be able to do it without help | ||
tadzik | if it doesn't Just Work with 'perl6 bootstrap.pl', then it means I've failed, and that's a valueable information | ||
18:01
p6eval joined,
ChanServ sets mode: +v p6eval
|
|||
diakopter | tadzik: wait, offline-bootstrap branch of what? | 18:01 | |
tadzik | diakopter: panda. github.com/tadzik/panda | ||
diakopter | ohh; I assumed rakudo | ||
diakopter clones | |||
tadzik | 59 modules ok, 47 not ok (106 total) | 18:02 | |
yay | |||
there are few regressions compared to pre-toqast; I'll try to crank out a tool which will compare two resultsets | |||
tjs.azalayah.net/index.html | 18:03 | ||
diakopter | I get two copies of the error: ===SORRY!=== | ||
Could not find Shell::Command in any of: , , C:\Users\mwilson/.perl6/lib, C:/Par | |||
rot/lib/parrot/4.6.0-devel/languages/perl6/lib | |||
18:03
uvtc joined
|
|||
moritz | I guess MIME::Base64 doesn't have my patcha pplied yet | 18:03 | |
diakopter: did you run bootstrap.pl? | 18:04 | ||
diakopter | that was from running bootstrap.pl | ||
tadzik | that means I've screwed up :) | ||
moritz | oh | ||
any of: , , | |||
looks like there are some empty elements in there | |||
diakopter: are there any warnings before that? | |||
diakopter | no, just two copies of that error | ||
tadzik | it should contain at least 4 elements | ||
uvtc | At doc.perl6.org/type/Cool , I notice that, in the listing of of built-in types that inherit from Cool, among them is "Baggy". What is a Baggy? | 18:05 | |
tadzik | (see github.com/tadzik/panda/blob/offli...ap.pl#L22) | ||
quietfanatic | Something that's "like" a Bag? | ||
moritz | uvtc: a common base type for Bag and KeyBag | ||
iirc | |||
diakopter | oh wait. | ||
the second copy of that error has only one comma where the first has , , | 18:06 | ||
uvtc | It seems out of place there. I think "baggy" is an adjective, but "baggie" is the noun. | ||
moritz: thanks. | |||
diakopter | oh wait. | ||
and different paths. | |||
moritz | tadzik: offline-bootstrap.pl works for me | ||
tadzik | great | ||
diakopter | tadzik: gist.github.com/3177595 | 18:07 | |
tadzik | diakopter: is it any better on master? | ||
quietfanatic | Is there any place Bags are used in the standard setting? | 18:08 | |
tadzik | I don't think so | ||
diakopter | tadzik: gist.github.com/3177604 | ||
quietfanatic | so basically, they're there in case somebody wants them | ||
if that's so, can I have Vectors? :) | 18:09 | ||
sorear | good * #perl6 | ||
moritz | quietfanatic: yes, in modules :-) | ||
phenny | sorear: 11:53Z <colomon> tell sorear I've got working .tc, .tclc, .tcuc modulo the substr bug, but my implementations are ugly. | ||
sorear | phenny: tell colomon cool! | ||
phenny | sorear: I'll pass that on when colomon is around. | ||
quietfanatic | then why aren't Bags in a module? <-- is playing troublemaker again | 18:10 | |
moritz | quietfanatic: I'd be all for it | ||
uvtc | phenny, tell TimToady noticing Baggy listed at doc.perl6.org/type/Cool , isn't "baggy" an adjective and, with "baggie" being the (er, possibly-trademarked?) noun? | ||
phenny | uvtc: I'll pass that on when TimToady is around. | ||
quietfanatic | I may be biased because of my areas of interest, but I have seen a lot more real code using vectors than bags. | ||
tadzik | so it gets further on master. Thanks diakopter, I'll try to figure out what's happening | ||
oh | 18:11 | ||
diakopter | tadzik: I can install wget if you like | ||
tadzik | diakopter: that'll help, yes | ||
diakopter downloads from users.ugent.be/~bpuype/wget/ | 18:13 | ||
tadzik | uh-oh | ||
may that be that windows wants / to be \? :/ | |||
moritz | that wouldn't explain why the first @*INC entry is empty | 18:14 | |
diakopter | actually I think paths passed to windows api will take / too, but paths in the shell need \ | ||
flussence | r: qp{/foo/bar} | ||
p6eval | rakudo ed269f: OUTPUT«===SORRY!===Unable to parse postcircumfix:sym<{ }>, couldn't find final '}' at line 2, near "/foo/bar}"» | ||
flussence | r: q:p{/foo/bar} | 18:15 | |
p6eval | rakudo ed269f: OUTPUT«===SORRY!===Colons may not be used to delimit quoting constructs at line 2, near ":p{/foo/ba"» | ||
TimToady | Vectors are likely to fall out of a real implementation of S09 | ||
phenny | TimToady: 18:10Z <uvtc> tell TimToady noticing Baggy listed at doc.perl6.org/type/Cool , isn't "baggy" an adjective and, with "baggie" being the (er, possibly-trademarked?) noun? | ||
flussence | :( | ||
n: q:p{/foo/bar} | 18:16 | ||
p6eval | niecza v19-13-g442e075: ( no output ) | ||
flussence | n: say (q:p{/foo/bar}).perl | ||
p6eval | niecza v19-13-g442e075: OUTPUT«"/foo/bar".IO» | ||
flussence | niecza++ | ||
diakopter | tadzik: gist.github.com/3177655 | 18:17 | |
(master) | |||
flussence | n: say q:p:to{blah} /foo/barblah | ||
p6eval | niecza v19-13-g442e075: OUTPUT«" /foo/bar\n".IO» | ||
quietfanatic | TimToady: including behvior such as dot products, getting the magnitude and angle of vectors, and things like that? | ||
[Coke] | pmichaud++ | ||
quietfanatic | TimToady: I mean spatial vectors, not vectors that are actually just arrays. | ||
flussence | n: say q:p:win{c:\foo\bar} | 18:18 | |
TimToady | I know | ||
p6eval | niecza v19-13-g442e075: OUTPUT«===SORRY!===Unrecognized quote modifier: win at /tmp/peO4wiC6dT line 1:------> say q⏏:p:win{c:\foo\bar}Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 1402 (die @ 5)  at /ho… | ||
TimToady | but they're still multidimensional, which is S09 | ||
moritz | flussence: I don't think anybody does qp, except the spec | ||
TimToady | I suppose spatial vectors can be emulated with a single dimension | 18:19 | |
quietfanatic | A vector is implemented by just a one-dimensional list of numbers | ||
but it has a lot of extra behavior | |||
TimToady | anyway, the only reason it's not there is because of low demand (so far) | ||
quietfanatic | Have you had any demand for Bags? | ||
TimToady | sure, was looking at an RC task today that wants Bags | 18:20 | |
rosettacode.org/wiki/Dutch_national_flag_problem | |||
a terribly practical problem, as you can see :) | 18:21 | ||
quietfanatic | right | ||
18:21
je joined
|
|||
quietfanatic | what about the problem of every mathematics, physics, graphics, and game library implements their own vectors and they're all incompatible? | 18:22 | |
C++ has this problem way up the wazoo. | |||
In C++ the only solution is to create your *own* vector type that supersets and subsets them all. | |||
TimToady | despite moritz++'s taunting, I'm all for having Vector as a builtin | ||
a role, perhaps | 18:23 | ||
quietfanatic | hm | ||
TimToady | fits in with my notion that universal math doesn't belong behind a 'use Math' | ||
quietfanatic | Despite all the complaining I've just done, I apparently have made little real thought about a solution. :) | 18:24 | |
TimToady hates languages that make you say 'use Math' or some such | |||
tadzik | diakopter: ok, thansk | ||
quietfanatic | Probably it'd have to be a parametric role taking a number of dimensions as an argument | ||
tadzik | that means that your prove is too old, ftr | ||
Juerd | TimToady: *All* of math should be built-in? | 18:25 | |
It's a rather broad subject | |||
quietfanatic | except cross-product only works on Vec3s... | ||
diakopter | tadzik: me? | ||
moritz | including symbolic calculations please | ||
tadzik | yep | ||
I think so, at least | |||
quietfanatic | For the record, I wouldn't mind saying use Vectors; if it's in the standard library. | ||
TimToady | note, vectors are also in RC: rosettacode.org/wiki/Vector_products#Perl_6 | ||
diakopter | hm, I just downloaded this perl from activestate yesterday | ||
skids | pmichaud: note that removing the old S07 removes the material on coroutines, and that is referenced from S17 as being in S07. | ||
tadzik | maybe I'm wrong then | ||
oh, -p | 18:26 | ||
not -e | |||
masak | quietfanatic: cross products working on Vec3s is a kind of categorical error turned into a feature. :) | ||
quietfanatic: the result should really be a 3x3 array... | |||
tadzik | I don't know what's going on then | ||
TimToady | which is why we want S09 | ||
quietfanatic | masak: How does that get turned into a 3-dimensional (pseudo-)vector? | 18:27 | |
flussence | r: enum NL <red white blue>; my @things = NL.enums.keys.roll(20); say @things.sort({ NL::{$_}.value }).perl; # golf please :) | ||
p6eval | rakudo ed269f: OUTPUT«("red", "red", "red", "red", "red", "red", "red", "red", "white", "white", "white", "white", "white", "white", "blue", "blue", "blue", "blue", "blue", "blue")» | ||
quietfanatic | TimToady: S09 for PDLish things? | 18:28 | |
18:28
icwiener_ joined
|
|||
quietfanatic | TimToady: I think Vectors tend to like to be compact and fast. | 18:28 | |
TimToady | for anything multi-dimensional, including PDL | ||
well, compact is orthogonal to S09 mostly, but yes | |||
quietfanatic | TimToady: Also if you do any GPU programming, you may begin to think that vectors should even be native types. | 18:29 | |
TimToady | I guess compact stuff is discussed in S09 as well | ||
masak | quietfanatic: like this: upload.wikimedia.org/wikipedia/en/...179d13.png | ||
TimToady | I can't begin to think that, since I thought it long ago :P | ||
quietfanatic | masak: Agh, my background is dark and the image is transparent | 18:30 | |
diakopter | hm, this activeperl's cpan is totally broken; what a surprise | ||
masak | heh :) | ||
quietfanatic | brb | ||
masak .oO( the night is dark and filled with terrors ) | 18:31 | ||
quietfanatic | Not only that, it's antialiased for a white background and the antialiasing is non-transparent | 18:32 | |
making the transparent background all but useless | |||
jnthn | pmichaud: At a first pass through your S07 commit, it looks good. | ||
quietfanatic | Actually, even in CPU-land there are SIMD registers and instructions that make native vectors make a lot of sense. | 18:34 | |
GPUs even have native matrices though. That's just a little too much IMO :) | |||
moritz very much liked that a GPU sped up his simulations by a factor ~60 | 18:35 | ||
TimToady | well, hypers are meant to map normal parallelism onto GPUs and such, so you could do a bunch of those little GPU matrices in parallel | ||
quietfanatic | Unless you're doing a lot of computations with them, the overhead of sending the to and from the GPU wouldn't be worth it. | 18:36 | |
and trying to detect whether it's worth it is a very brave optimization strategy | |||
flussence is reading the current S16 and slowly, horribly realises it seems to be trying to implement most of libnss | 18:37 | ||
18:37
SamuraiJack left
|
|||
TimToady | a good place for a hotspot analyzer to try it both ways and see which is faster | 18:38 | |
masak | flussence: all careful readings of the current S16 will lead to slow, horrible realizations. | ||
quietfanatic | Assuming it knows the size of the usage in advance. | ||
s/size/scale | 18:39 | ||
TimToady | hypers generally know the size of what they're dealing with, since they're not generally used over lists, for which X and Z are more appropriate | 18:40 | |
quietfanatic | But the size has to be known all the way back at optimization time even. | ||
TimToady | hotspot optimization is JIT | 18:41 | |
quietfanatic | huh | ||
I see... | |||
TimToady | but even for a normal optimizer, we try to keep the sizes declarative by default | ||
quietfanatic | Oh, right. That's why it can try it both ways, because it actually is doing the calculation at the same itme | 18:42 | |
*time | |||
I misunderstood that. | |||
TimToady | might even implement it with .race :) | ||
well, a race contextualizer, which might or not make sense as a method | 18:43 | ||
quietfanatic | I see. It's pretty nice when your programming languages are as intelligent as humans. | 18:44 | |
TimToady | we're not going for minimalism here, in any case :) | ||
quietfanatic | The computer might even be able to run some other programs in the background. | ||
diakopter | all your cores... | ||
quietfanatic will try to stop being pessimistic now | 18:45 | ||
TimToady is pessimistic about that :) | |||
18:51
Chillance joined
|
|||
[Coke] | who owns mildew? | 18:53 | |
sorear | pmurias | ||
[Coke] | (looks like we have fudges for kp6, mildew, pugs, rakudo, niecza). | 18:55 | |
wondering if the mildew/kp6 fudges are still needed. | |||
moritz | flussence: ignore S16, S32::IO is the real deal | 19:02 | |
flussence: ie the one I'm actually trying to implement | |||
19:02
je left
|
|||
moritz | S16 is doomed to starvation by simply being ignored by those people who matter (ie those who actually implement stuff) | 19:02 | |
19:05
leprevost left
|
|||
[Coke] | moritz: ... so let's remove it? | 19:08 | |
moritz | [Coke]: I'm not quite bold enough to do that | ||
[Coke] | <b>moritz</b> | 19:10 | |
how about now? | |||
moritz | now my nick is bolder. | ||
anyway, if there's a big majority in here for 'git rm S16-io.pod', I'll do it | 19:11 | ||
masak | there's something to be said for it. the spec would be less confused as a result. | ||
moritz | but it's a case where I ask for permission rather than forgiveness | ||
I count that as +1 from each <masak moritz [Coke]> | 19:12 | ||
masak | though I'd rather it be replaced by an empty document than removed altogether. | ||
moritz | ok | ||
TimToady | before doing that, I would treat it as an RFC, and ask what pain points it's trying to address | ||
moritz | "please see S32::IO" | ||
TimToady | and do we have a story on those pain points | ||
other than "we're a Unix shop, go jump" | 19:13 | ||
moritz | as long as we don't do it on p6l, I'm fine with it | ||
flussence | the bottom half of it can be abbreviated to "is native('libnss')" | ||
TimToady | in any case, we can certainly mark large chunks it as conjectural, or worse | ||
moritz | btw, perlcabal.org/syn/S07.html has picked up the new S07 | 19:14 | |
[Coke] | is there a list of valid syn states? baked > conjectural > other baked? | 19:15 | |
flussence | .oO( baked > half-baked > burnt... ) |
||
moritz | airy (like S16), fluid, slushy, solid | 19:16 | |
19:16
vmspb joined
|
|||
TimToady | S16 seems highly charged, so plasma maybe | 19:16 | |
19:17
fhelmberger joined
19:20
daxim left,
daxim joined
19:25
rurban left
19:26
daxim left
|
|||
moritz | ok, algorithm question | 19:28 | |
I have two array, @a and @b | |||
19:29
fhelmberger left
|
|||
moritz | and I want to order those elements of @a that appear in @b in the same order as they appear in @b | 19:29 | |
the elements in @a but not in @b can be ordered in any way, doesn't matter | |||
how do I best do that? | 19:30 | ||
masak | ooh, never heard that one before. | ||
moritz | hm, maybe my %b = @b.kv.reverse; @a.sort({ %h{$_} // 0 }) | ||
masak: it's for p6doc's htmlify.pl | |||
masak | ok. | 19:31 | |
moritz | masak: I want to process the type docs in MRO | ||
masak | right. | ||
sorting with an appropriate function sounds like a good start. | |||
remember that you can sort several times, too. | |||
dalek | p: 6238e27 | jnthn++ | src/ (4 files): Implement multi-dispatch cache in NQP. It was fairly fast without this anyway, but this helps a bit more; we do a lot of multi-dispatch when compiling QAST. Also fixes a memory leak. |
19:32 | |
mhasch | fwiw, I like the user/group roles in S16 but not the quoting syntax stuff. File names should be data, not program text. | 19:35 | |
19:38
nodmonkey left
19:40
raiph joined
|
|||
flussence | I'm not sure who thought a function to add entries to /etc/passwd baked into the language was a good idea | 19:42 | |
moritz | different time, different universe :-) | 19:43 | |
mhasch | I agree; write seems excentric... | ||
sorear | eccentric? | 19:44 | |
TimToady | not at the center anymore, in any case :) | ||
flussence tried to find something comparable in the php func reference, but ended up finding out something worse: it has no $0 equivalent! argh! | 19:47 | ||
masak | :( | 19:48 | |
flussence | not technically true; it does, but it's *a separate extension*. For one function. | 19:49 | |
moritz | dazzling new depths indeed | ||
masak | r: my @a = 1, 2, 3, 4, 5, 6; my @b = 5, 4, 3; say @a.sort({ index_of(@b, $_) }); sub index_of(@x, $e) { return (my $i)++ if $_ === $e for @x; return -1 } | 19:52 | |
p6eval | rakudo ed269f: OUTPUT«1 2 6 3 4 5» | ||
masak | oh. | ||
r: my @a = 1, 2, 3, 4, 5, 6; my @b = 5, 4, 3; say @a.sort({ -index_of(@b, $_) }); sub index_of(@x, $e) { return (my $i)++ if $_ === $e for @x; return -1 } | |||
p6eval | rakudo ed269f: OUTPUT«3 4 5 1 2 6» | ||
masak | moritz: there. :) | ||
huh, wait :) | 19:53 | ||
moritz | that doesn't look right :-) | ||
masak | r: my @a = 1, 2, 3, 4, 5, 6; my @b = 5, 4, 3; say @a.sort({ -index_of(@b.reverse, $_) }); sub index_of(@x, $e) { return (my $i)++ if $_ === $e for @x; return -1 } | ||
p6eval | rakudo ed269f: OUTPUT«3 4 5 1 2 6» | ||
masak | I got them to float to the beginning, but not in the right order... | ||
moritz | r: my @a = <1 2 3 4 5 6>; my @b = <5 3 4>; my %h = @b.kv.reverse; say @a.sort: { %h{$_} // -1 }; | 19:54 | |
p6eval | rakudo ed269f: OUTPUT«3 4 5 6 1 2» | ||
masak | heh :) | ||
r: my @a = 1, 2, 3, 4, 5, 6; my @b = 5, 4, 3; say @a.map({ index_of(@b, $_) }); sub index_of(@x, $e) { return (my $i)++ if $_ === $e for @x; return -1 } | |||
moritz | r: my @a = <1 2 3 4 5 6>; my @b = <5 3 4>; my %h = @b.kv.reverse; say %h.perl | ||
p6eval | rakudo ed269f: OUTPUT«-1 -1 0 0 0 -1» | 19:55 | |
rakudo ed269f: OUTPUT«("2" => "4", "1" => "3", "0" => "5").hash» | |||
masak | hm. | ||
I think that's a Rakudobug. | |||
moritz | r: my @a = <1 2 3 4 5 6>; my @b = <5 3 4>; my %h = @b.kv.flat.reverse; say %h.perl | ||
masak | r: my @a = 1, 2, 3, 4, 5, 6; my @b = 5, 4, 3; say @a.map({ index_of(@b, $_) }); sub index_of(@x, $e) { my $i; return $i++ if $_ === $e for @x; return -1 } | ||
diakopter | hm | 19:56 | |
moritz | somehow p6eval is very slow | ||
masak | so it would seem. | ||
p6eval | rakudo ed269f: OUTPUT«("4" => 2, "3" => 1, "5" => 0).hash» | ||
rakudo ed269f: OUTPUT«-1 -1 0 0 0 -1» | 19:57 | ||
masak | huh. | ||
moritz | r: my @a = <1 2 3 4 5 6>; my @b = <5 3 4>; my %h = @b.kv.flat.reverse; say @a.sort: { %h{$_} // -1 }; | ||
masak | oh, right :) | ||
no, it's me. I'm silly. | |||
moritz submits masakbug | |||
p6eval | rakudo ed269f: OUTPUT«1 2 6 5 3 4» | ||
masak | r: my @a = 1, 2, 3, 4, 5, 6; my @b = 5, 4, 3; say @a.map({ index_of(@b, $_) }); sub index_of(@x, $e) { return $_ if $x[$_] === $e for ^@x; return -1 } | ||
moritz | anyway, I like that solution better, and it works :-) | ||
that = mine | 19:58 | ||
p6eval | rakudo ed269f: OUTPUT«===SORRY!===Variable $x is not declaredat /tmp/M2x2cbybj3:1» | ||
masak | fair enough :) | ||
r: my @a = 1, 2, 3, 4, 5, 6; my @b = 5, 4, 3; say @a.map({ index_of(@b, $_) }); sub index_of(@x, $e) { return $_ if @x[$_] === $e for ^@x; return -1 } | |||
p6eval | rakudo ed269f: OUTPUT«-1 -1 2 1 0 -1» | ||
19:58
daniel-s__ left
|
|||
masak | moritz: I think your solution is doing with a hash what mine is doing with a function. | 19:58 | |
r: my @a = 1, 2, 3, 4, 5, 6; my @b = 5, 4, 3; say @a.sort({ -index_of(@b, $_) }); sub index_of(@x, $e) { return $_ if @x[$_] === $e for ^@x; return -1 } | |||
moritz | masak: so it seems | ||
p6eval | rakudo ed269f: OUTPUT«3 4 5 1 2 6» | ||
masak | dangit! :) | 19:59 | |
moritz | masak: you sort by -index_of | 20:00 | |
masak: that's why it reverses the order | |||
20:00
Bucciarati left,
_daniel-s__ joined
|
|||
dalek | c: 873f1b2 | moritz++ | htmlify.pl: [htmlify] generate type docs in MRO order this does not really improve anything, but it will make it easier to include docs for methods from superclasses and roles |
20:02 | |
moritz | r: my @a = 1, 2, 3, 4, 5, 6; my @b = 5, 4, 3; say @a.sort: &index_of; sub index_ok($e) { return $_ if @b[$_] === $e for ^@b; -1 } | 20:03 | |
p6eval | rakudo ed269f: OUTPUT«No such method 'Nil' for invocant of type 'Parcel' in <anon> at src/gen/BOOTSTRAP.pm:808 in <anon> at src/gen/BOOTSTRAP.pm:805 in any <anon> at src/gen/BOOTSTRAP.pm:800 in block at src/gen/CORE.setting:5512 in method sort at src/gen/CORE.setting:5506 i… | ||
moritz | r: my @a = 1, 2, 3, 4, 5, 6; my @b = 5, 4, 3; say @a.sort: &index_of; sub index_of($e) { return $_ if @b[$_] === $e for ^@b; -1 } | ||
p6eval | rakudo ed269f: OUTPUT«1 2 6 5 4 3» | ||
moritz | finally | ||
masak | there we are. | ||
and if you want them first, | |||
20:04
birdwindupbird joined
|
|||
masak | r: my @a = 1, 2, 3, 4, 5, 6; my @b = 5, 4, 3; say @a.sort: &index_of; sub index_of($e) { return $_ if @b[$_] === $e for ^@b; Inf } | 20:04 | |
p6eval | rakudo ed269f: OUTPUT«5 4 3 1 2 6» | ||
masak | \o/ | ||
diakopter | anyone know what's the nqp equivalent of pir::delete(%hash, 'key') | ||
moritz | nqp::deletekey | 20:06 | |
20:06
Bucciarati joined
|
|||
diakopter | excellent; thanks | 20:06 | |
masak | [Coke]: I think you just got competition: gist.github.com/3034482 | 20:09 | |
masak .oO( more competition! ) | 20:10 | ||
20:10
bruges_ joined
|
|||
[Coke] | masak: can we get an official count in that gist? ;) | 20:11 | |
20:12
bruges left
|
|||
flussence | ooh, gcc 4.7 has hyperoperators (sorta). gcc.gnu.org/gcc-4.7/changes.html → Language specific improvements → C family | 20:12 | |
moritz | masak: for interactive programs as crypt (or the one I'll maintain for $new_work soon :-) I think it would be nice to record all user-provided commands, and then have a 'trace' command (or so) to print them back to the user (more) | 20:14 | |
thou | gotta say that S07 doc is really nice to read. thanks pmichaud++! | ||
moritz | masak: and then a command line option which accepts such a trace, and reproduces the same behavior as if you'd entered it manually | 20:15 | |
masak: it's probably overkill for crypt, but something I'd do in any heavy-used, semi-interactive command line program | 20:16 | ||
masak | [Coke]: it's not the *number* of bugs, it's "The most insane, creative, simply up-the-wall fruit-bat bananas mis-use of the game". :) | ||
[Coke] | ahhh. | ||
masak | [Coke]: so far your "add disk to win" bug was that one. | ||
now I think you tie with Bruce on... something. | 20:17 | ||
moritz: yes, that does sound nice. | |||
[Coke] | feather1's installed perl6: | ||
This is Rakudo Perl 6, version 2010.08 built on parrot 2.7.0 | |||
masak | bit old, no? | 20:18 | |
moritz | "bit" :-) | ||
is that alpha? | |||
flussence | installed as in package-managey-installed? | ||
moritz | probably not. Feather is a mess :-) | ||
[Coke] | flussence: no. | ||
moritz | $ which perl6 | 20:19 | |
/usr/local/bin/perl6 | |||
[Coke] | as in "make install", no doubt. | ||
moritz | oh, we still have /usr/local/bin/incredibly_ugly_hack_to_restart_apache | ||
flussence | (most distro-packaged rakudos seem to be ancient from what I've seen...) | 20:20 | |
20:20
pyrimidine left
|
|||
uvtc | Current practice for both Rakudo and Rakudo Star is to run `make install`, which installs `perl6` somewhere into the current project directory, correct? | 20:20 | |
sorear | correct | 20:21 | |
moritz | uvtc: it installs into ./install unless you configured it with a different --prefix | ||
uvtc | sorear: moritz : gotcha. Thanks. | ||
moritz | which seems to be a saneish default | ||
uvtc | I agree. I like for it to live in its own world in ~/opt/rakudo. | 20:22 | |
flussence | (wow, someone in gentoo is on the ball. rakudo is only 1 month out of date and it's correctly split into rakudo/nqp/parrot pkgs now) | ||
uvtc | My understanding was that a given release of Rakudo has a specific release of Parrot it's supposed to be used with. | 20:24 | |
So, having them live together under one roof | |||
seemed to make sense. | |||
That is to say, if you upgraded Parrot but not Rakudo (or vice versa), something might go amiss. | 20:25 | ||
[Coke] | yes, but that's a common issue with packaging, no? | ||
given you might have multiple things installed that depend on parrot. | 20:26 | ||
uvtc | Yes, a common issue. Also, I agree that you might have multiple things which depend upon Parrot. I recall a while back when I was trying out Rakudo, | 20:27 | |
I built parrot first, in a separate directory, | |||
but then it was pointed out to me that it's easier to use --gen-parrot. | 20:28 | ||
20:29
lichtkind joined
|
|||
moritz | well, the last three rakudo releases all worked on the same parrot revision | 20:29 | |
so we do try to ease the pain of the packagers | |||
TimToady | uvtc: Baggy is a role, so the adjectival form is appropriate | 20:35 | |
uvtc | TimToady: Oh, I see, thanks. | 20:36 | |
Just grabbed the latest rakudo and tried to build, but it failed somewhere into the `perl Configure.pl --gen-parrot --gen-nqp` stage. | 20:39 | ||
Have never tried building from HEAD, but saw this perl6maven.com/tutorial/perl6-installing-rakudo | |||
and thought I'd give it a try. | |||
The error I get is: | |||
make: *** [src/stage1/NQPCORE.setting.pbc] Error 1 | |||
Command failed (status 512): make | |||
Command failed (status 512): /usr/bin/perl Configure.pl --with-parrot=/home/john/opt/rakudo/install/bin/parrot --make-install | |||
[Coke] | utvc can you gist a few dozen lines before that? | 20:40 | |
uvtc | sure: gist.github.com/3178556 | 20:42 | |
moritz | eeks, that the old GC-gone-wild thing :( | 20:44 | |
flussence | .oO( why is it always a single char? ) |
||
moritz | r: say Int ~~ Cool | 20:45 | |
p6eval | rakudo ed269f: OUTPUT«True» | ||
20:46
clkao left
|
|||
moritz | ah, the Cool docs don't have a proper list of methods yet | 20:46 | |
moritz has a patch that includes methods from superclasses and roles in the HTML output | |||
masak | moritz++ | ||
dalek | c: eee7a83 | moritz++ | htmlify.pl: [htmlify] Include methods from superclasses, roles Also removes some debugging output |
20:48 | |
moritz | and the surprising thing is: it took me only about a quarter of an hour | ||
and htmlify still runs in <5min on my slow machine | |||
masak | unacceptable! go back and do it slower! :P | ||
moritz | doc.perl6.org/type/Int | 20:49 | |
for example | |||
or doc.perl6.org/type/Array | |||
moritz -> sleep | 20:50 | ||
masak | guten n8, moritz. dream of superclasses and roles in the HTML output. | 20:53 | |
20:56
kaare_ left
20:59
benabik joined
|
|||
masak | do cars have floors? what do they have? | 21:00 | |
21:01
cotto left
21:02
cotto joined
|
|||
uvtc | They have an over-undercarriage. | 21:02 | |
flussence | carpets | ||
benabik | floors, on which they have floor mats | ||
masak | excellent. thanks. | ||
huf | random americans and canadians i asked said floor(|board) | ||
masak | this is for the game descriptions. | ||
I'm putting water in the car. | |||
flussence | that'll ruin the upholstery! | ||
huf | surely it's down.. | 21:03 | |
21:03
uvtc left,
uvtc joined
|
|||
masak | thinking I'll go with "What doesn't discolor the seats collects in miserable little puddles on the floor mats." | 21:03 | |
masak likes having a miniature narrative universe to play around in :) | 21:04 | ||
21:06
skids left
|
|||
masak | 2**7 tests in crypt! \o/ | 21:07 | |
lichtkind | raiph: hai | 21:09 | |
masak | phenny: no en "hai"? | 21:10 | |
phenny | masak: "shark" (no to en, translate.google.com) | ||
raiph | lichtkind: lo | ||
phenny | raiph: 22 Jul 05:52Z <moritz> tell raiph that he now has direct commit access to perl6/doc on github. Welcome! | ||
geekosaur | shark with norovirus? | ||
masak | geekosaur: norovirus and a "lazer" on its head. :) | 21:11 | |
and it's having a bad day. | |||
21:12
birdwindupbird left
21:21
uvtc left
21:32
Coleoid joined
|
|||
TimToady | new RC entry: rosettacode.org/wiki/Dutch_national...lem#Perl_6 | 21:51 | |
the Bag entry is a bit suboptimal because I didn't discover how to get replication directly from a Bag | 21:53 | ||
maybe I should read the documentation... | |||
masak | if it isn't spec'd, we should probably spec it. | ||
TimToady | rn: say bag(<a a b b b c>).list | 21:55 | |
p6eval | rakudo ed269f, niecza v19-13-g442e075: OUTPUT«a b c» | ||
TimToady | rn: say bag(<a a b b b c>).flat | 21:56 | |
p6eval | rakudo ed269f: OUTPUT«a 2 b 3 c 1» | ||
..niecza v19-13-g442e075: OUTPUT«a b c» | |||
TimToady | rn: say bag(<a a b b b c>).elements | ||
p6eval | rakudo ed269f: OUTPUT«No such method 'elements' for invocant of type 'Bag' in block at /tmp/VEs5aeT4pt:1» | ||
..niecza v19-13-g442e075: OUTPUT«Unhandled exception: Unable to resolve method elements in type Bag at /tmp/HLwUzzieOE line 1 (mainline @ 4)  at /home/p6eval/niecza/lib/CORE.setting line 3918 (ANON @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 3919 (module-CORE @ 562)  at /ho… | |||
TimToady | maybe I should read the code, horrors | ||
dalek | p: 54df5ca | jnthn++ | src/QAST/ (2 files): Make the code refs list generation a bunch more efficient. Shaves a little more off CORE.setting compilation. |
||
TimToady | rn: say bag(<a a b b b c>) | 21:58 | |
p6eval | rakudo ed269f, niecza v19-13-g442e075: OUTPUT«bag("a" => 2, "b" => 3, "c" => 1)» | ||
masak | .elements? when all other classes do .elems? | ||
TimToady | rn: say bag(<a a b b b c>).elems | ||
p6eval | rakudo ed269f, niecza v19-13-g442e075: OUTPUT«6» | ||
TimToady | I'm trying to get <a a b b b c> back out of it | ||
masak | .pairs | 21:59 | |
rn: say bag(<a a b b b c>).pairs | |||
p6eval | rakudo ed269f: OUTPUT«a 2 b 3 c 1» | ||
..niecza v19-13-g442e075: OUTPUT«"a" => 2 "b" => 3 "c" => 1» | |||
jnthn | r: say bag(<a a b b b c>).pairs.map(*.key xx *.value) | 22:00 | |
p6eval | rakudo ed269f: OUTPUT«No such method 'Int' for invocant of type 'WhateverCode' in sub infix:<xx> at src/gen/CORE.setting:5638 in block at /tmp/fc1D00u0t1:1» | ||
jnthn | ah, xx doesn't do that, does it... | ||
r: say bag(<a a b b b c>).pairs.map({ .key xx .value}) | |||
p6eval | rakudo ed269f: OUTPUT«a a b b b c» | ||
jnthn | Feels like there should be a method that does that for you though. | ||
TimToady | .list used to do that, but when we made bags not flatten in list context, we didn't add a way to do that | ||
how'bout .xx | 22:01 | ||
jnthn | ;) | ||
Temptingly cute (today) :) | |||
masak | feels like a category mistake :) | ||
pmichaud | I suspect that .list could still do that | ||
masak | aye. | ||
TimToady | it really clobbers up your sets of sets if they flatten too eagerly | ||
pmichaud | flattening is (currently) determined by being Iterable; not by the return/presence of .list (more) | 22:02 | |
for example, match objects have .list but don't flatten either | |||
TimToady | well, just so set( set(@a), set(@b) ) ends up with 2 elements | 22:03 | |
jnthn | Wow...the optimize phase went from 7.49% of CORE.setting compile time down to 2.52%. | ||
pmichaud decides to build the new qasted rakudo | |||
TimToady | .xx makes less sense on a set, I'll grant | ||
.members maybe | 22:04 | ||
pmichaud | .values could work, too. | ||
TimToady | not on a bag | ||
both sets and bags are specced to behave like Hash for hashy functions | 22:05 | ||
pmichaud | okay. | ||
TimToady | so keys returning <a b c> is correct for the bag above | ||
TimToady just wonders if .members is a bit long huffmanwise | 22:06 | ||
thing is, .keys works fine on a set | 22:08 | ||
it's only a bag that needs to distinguish, so maybe .keys vs .xx is okay | |||
it's just if you use .xx on a set, it's only going to have 0 or 1 on the right :) | 22:09 | ||
masak | .keys Zxx .values # :) | 22:10 | |
22:10
lue joined
|
|||
lue | hello world o/ | 22:10 | |
masak | lue! \o/ | ||
22:11
thou left
|
|||
lue | did you catch my pull request? | 22:13 | |
22:15
Entonian joined
|
|||
masak | oh! no, but I will now. | 22:15 | |
masak is notoriously bad at keeping up with github notifications | 22:16 | ||
22:16
icwiener_ left
|
|||
lue | me too (got around 96 or so, because I haven't bothered deleting them) | 22:16 | |
masak | lol, I blogged! \o/ strangelyconsistent.org/blog/july-2...t-the-fire | 22:19 | |
22:21
vmspb left
22:23
bluescreen10 left,
Entonian left
|
|||
diakopter | TimToady: I ended up using cloning then iterating keys and comparing with the parent at the end stage of each level | 22:25 | |
lue | oh, masak: I can't examine the items in my inventory at the moment. | 22:26 | |
masak cherry-picks in lue++'s commit | |||
pmichaud | I get a spectest failure in nom (in substr.t) | ||
No such method 'chrs' for invocant of type 'Parcel' in block at t/spec/S32-str/substr.rakudo:68 | 22:27 | ||
jnthn | Hmm...when'd that creep in | ||
masak | lue: correct, I haven't prioritized the 'inventory' command. it's not in the critical path of winning the game. | ||
lue: I plan to put it in before the month is over. | |||
lue | "> put helmet on me \n You cannot put things on the me." | ||
masak | :) | 22:28 | |
lue | understandable, it really isn't critical in this game. | ||
masak | lue: I'll note that as a clever mis-use of the game. (which should clearly be implemented.) | ||
lue: congratulations, you're also now eligible for a book. | |||
(keep the bugs coming!) | |||
lue | I just like the "on the me" part of that sentence :) | 22:29 | |
masak | yeah, that's cute. | ||
(and wrong) | |||
jnthn | r: (0x10426, 0x10427).chrs | 22:30 | |
p6eval | rakudo ed269f: OUTPUT«No such method 'chrs' for invocant of type 'Parcel' in block at /tmp/pxt1Gxkc9D:1» | ||
jnthn | t: (0x10426, 0x10427).chrs | ||
p6eval | toqast : OUTPUT«No such method 'chrs' for invocant of type 'Parcel' in block at /tmp/zorjTNhUaQ:1» | ||
jnthn | n: (0x10426, 0x10427).chrs | ||
p6eval | niecza v19-13-g442e075: ( no output ) | ||
lue found another one, putting on gist... | |||
diakopter | what's chrs | ||
timotimo | would it turn integers into characters? | ||
jnthn | pmichaud: Likes like a new test added by colomon | ||
diakopter | maybe he meant chars? | 22:31 | |
jnthn | *Looks | ||
Well, niecza accepts it/runs it. | |||
masak | diakopter: .chrs does .chr on each character in the string. | ||
diakopter shuts up | |||
jnthn | Either that means it's spec and we should fudge this new test for Rakudo until we implement this, or it's not spec and the test shouldn't be there. | ||
masak: No, .chr goes from code point (integer) to string | 22:32 | ||
r: say 69.chr | |||
p6eval | rakudo ed269f: OUTPUT«E» | ||
lue | gist.github.com/3179112 # And here I thought I'd report the yo dawg error message falsely implied I successfully put the helmet in the helmet | ||
jnthn | r: say "lol".ords | ||
p6eval | rakudo ed269f: OUTPUT«108 111 108» | ||
jnthn | I'm guessing the idea is chrs is the opposite of .ords | ||
r: say [0x10426, 0x10427].chrs | 22:33 | ||
p6eval | rakudo ed269f: OUTPUT«𐐦𐐧» | ||
22:33
seldon left
|
|||
jnthn | Looks like it may be implemented in the wrong place or not in Cool in Rakudo. | 22:33 | |
22:33
seldon joined
|
|||
pmichaud | if it's an operation on an array/list, it typically goes into Any | 22:36 | |
(see .join, .sort, etc.) | 22:37 | ||
lue | masak: I put another game error in the gist above | ||
pmichaud | n: say (65, 69, 76, 76, 79).chrs | ||
p6eval | niecza v19-13-g442e075: OUTPUT«AELLO» | ||
22:38
obra joined
|
|||
sorear | o/ obra | 22:38 | |
jnthn | pmichaud: aye | ||
OK, time for some rest. | |||
If I can sleep :/ | |||
'night, #perl6 | |||
pmichaud | jnthn++ # merging new qast implementation into nom | 22:39 | |
masak | lue: oh! | ||
lue: well, 'examine helmet' is wrong independently of what you did with it before that. | |||
lue: I've simply forgotten to add the description for it in game-data/descriptions. | 22:40 | ||
fixing right away. lue++ | |||
lue | well, then in that case the yo dawg error message implies that I get the object in the object anyway (not that it matters too much though). | ||
22:41
PacoAir left
|
|||
pmichaud | afk, soccer | 22:41 | |
bbl | |||
masak | lue: what should it say, in your opinion? | ||
I thought it was common knowledge that you can't actually put things in themselves :P | |||
lue | I don't think there's a better message, my brain was being a bit too nitpicky. | 22:42 | |
(my favorite form of the meme however is "Yo dawg, I heard you like $objects, so I put an $object in your $object so you can $action while you $action") | 22:44 | ||
22:46
whiteknight joined
|
|||
sorear | This is a potion bottle, not a Klein bottle! | 22:46 | |
That would be an interesting topological exercise. | |||
22:47
whiteknight is now known as Guest14054
|
|||
masak | lue: yes, but there's no good way to autogenerate $action :) | 22:47 | |
sorear! \o/ | |||
lue considers creating an "object tree" viewer in the game and then disabling the YoDawg error to see what the game's object tree looks like afterward | |||
sorear | are there any other recovering nethack addicts in the channel? | ||
masak | I've delved into Nethack occasionally, though I never got hooked on it. | 22:48 | |
Angband, however. oh boy. | |||
sorear | yes, well | ||
angband does not have containers. | |||
masak | it has chests. | 22:49 | |
sorear | so I can't give you the container-in-self error message from there | ||
22:49
kst left
|
|||
sorear | you can't put stuff _in_ chests though | 22:49 | |
masak | troo. | ||
lue | .oO(I've played both, angband more seriously than nethack) |
||
sorear | the game cheats - a chest is a once-usable item generator | ||
masak | aye. | ||
sorear | have you played a version of angband recent enough to have my name on the credits? | 22:50 | |
masak | probably. though I haven't looked for your name there. | ||
what'd you do? | |||
sorear | cage cleaning and assorted minor features | 22:52 | |
I forget all | |||
22:52
crab2313 joined
|
|||
masak | ok. | 22:53 | |
22:59
raiph left
23:09
mucker joined
23:10
MayDaniel left
23:11
pmurias_ left
23:16
thelazydeveloper left
|
|||
[Coke] | OOC, anyone else here diabetic? | 23:18 | |
diakopter | pre- | ||
lue | I can't start the names of modules and classes with numbers, can I? | 23:20 | |
masak | lue: identifiers in general must start with an alphabetic or an underscore. not a digit. | 23:21 | |
lue | :( [ 6502::Assembler is the best name I can come up with though ] | ||
diakopter | :P | 23:22 | |
[Coke] | Assembler:6502 makes more sense. ;) | ||
seldon | MOS6502::Assembler? | ||
masak | Assembler::SixtyFiveOhTwo | ||
lue | ooh! (MOS6502) | 23:23 | |
dalek | gs.hs: f0f0053 | coke++ | / (3 files): ucfirst is gone, replaced by tc. |
||
23:24
Chillance left
|
|||
lue | although, if a lot of assemblers were to come out in Perl 6, Assembler::6502 might make more sense | 23:24 | |
lue checks CPAN for guidance from the past | |||
seldon | I once had to find a classname for 30/360. | 23:26 | |
diakopter | BSOUT = $FFD2 | ||
masak | lue: I plan to make an implementation of the untyped lambda calculus. | 23:27 | |
somewhat easier to name. | |||
look forward to using greek letters in some of the method names, though :) | |||
lue | The format in P5-land seems to be Asm::cpu. I think I'll go with Asm::6502, at least for now. | 23:28 | |
(I briefly considered _6502::Assembler after getting my question about identifiers answered) | |||
masak | std: module Asm::6502; | 23:29 | |
p6eval | std d5bea92: OUTPUT«===SORRY!===Unable to parse module definition at /tmp/_crXkdoRuL line 1:------> module Asm::⏏6502; expecting any of: name traitParse failedFAILED 00:00 40m» | ||
masak | you can't. | ||
lue | .emotion("NO!", :big); | 23:30 | |
std: module Asm::_6502; | 23:31 | ||
p6eval | std d5bea92: OUTPUT«ok 00:00 40m» | ||
diakopter | std: module Asm6502 | 23:32 | |
p6eval | std d5bea92: OUTPUT«Use of uninitialized value $x in pattern match (m//) at STD.pm line 66582.Use of uninitialized value $x in concatenation (.) or string at STD.pm line 66621.===SORRY!===Unable to parse module definition at /tmp/8f1fGg1hvD line 1 (EOF):------> [3… | ||
diakopter | std: module Asm6502; | ||
p6eval | std d5bea92: OUTPUT«ok 00:00 40m» | ||
seldon | masak: Do you mean to make something like $λx.α(x => y) ? | ||
masak | seldon: something like that, yes. | 23:34 | |
seldon | I look forward to reading your code, then. | ||
masak | I'll probably put arithmetic expressions in, with infix:<+> and infix:<*> and infix:<**>. and implement it first with Int, and then with Church numerals, just to show it's possible. | 23:35 | |
23:36
kst joined
|
|||
seldon | Much of that can be done with * though, can't it? | 23:36 | |
masak | the wikipedia page -- en.wikipedia.org/wiki/Lambda_calculus -- makes it seem like there are lots of degrees of freedom when it comes to reduction strategies. | ||
seldon: what do you mean? | |||
seldon | Assembly of anonymous function objects. | ||
masak | yes, but that's not the point. :) | 23:37 | |
the lambda calculus is purely *string* manipulation. | |||
it's parsing a string in a certain way, and then allowing a small set of operations on the data structure that results. | |||
and each operation results in a new string, a new legal lambda expression. | 23:38 | ||
seldon | And you want to be able to prove that function f and g are equivalent, that sort of thing? | 23:39 | |
masak | no, I just want to implement the lambda calculus. | ||
seldon | You'd end up being able to do it, though, which intrigues me. | 23:40 | |
masak | well, you can prove that f and g are α-equivalent or β-equivalent, I guess. | ||
I don't really grok η-conversion yet, I'm afraid. | 23:42 | ||
23:43
cognominal left
|
|||
seldon | That's the most interesting one, if I have my greek letters right. | 23:43 | |
masak | :) | 23:44 | |
it would seem to me that η-equivalence would by necessity run up against the Halting Problem. | 23:45 | ||
sorear | beta is the one that gets you into halting trouble | ||
masak | oh. | ||
sorear | (\x.xx)(\x.xx) beta-reduces to itself | 23:46 | |
masak | aye. | ||
sorear | eta-reduction is just turning sub foo($x) { bar($x) } --> &bar | ||
masak | oh, it's *just* that. then I grok it. | ||
beta-reduction feels like "turn the crank one step". | 23:47 | ||
sorear | scoping is where the lambda calculus really gets gnarly | ||
masak | yeah. | ||
I expect to have lots of tests concerning that. :) | |||
α-conversion seems to be mostly there to create appropriate equivalence classes. | 23:48 | ||
so that you can talk about different β-reductions leading to "the same" result. | |||
sorear | remember that beta-reduction can move terms around in such a way that they see different scopes, and you have to be careful not to create a shadowing | 23:49 | |
have you encountered de Bruijn numbering yet? | |||
masak | no, but a quick glance gives me the impression that it's something I'll have a use for. | 23:50 | |
they basically eliminate the need for α-conversion, it seems. | |||
ok, I see how it works. neat. | 23:51 | ||
it feels in some way like a better way to write lambda calculus expressions. | 23:52 | ||
of course, this way doesn't allow free variables at all, I guess. | |||
[Coke] | you need to $ for them. | 23:54 | |
masak | :) | ||
any-λ. | |||
'night, #perl6 | 23:55 | ||
sorear | night | ||
seldon | 'night is a good idea. | ||
23:55
seldon left
|
|||
[Coke] | anyone mind if I s/ucfirst/tc/ in roast ? | 23:56 |