»ö« 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).ords␤␤Parse 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«Str␤Str␤Str␤Str␤»
masak rn: enum A <a b c d>; say .^name for A.enums 13:27
p6eval rakudo 4fe23e, niecza v19-13-g442e075: OUTPUT«Pair␤Pair␤Pair␤Pair␤»
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:1␤␤use of uninitialized variable $_ of type Any in numeric context in block <anon> at /tmp/jYbRD55qyN:1␤␤use 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 our␤at /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/bar␤blah␤
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 declared␤at /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␤ trait␤Parse failed␤FAILED 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