»ö« 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. |
|||
jnthn | Guess I can read "within its scope" both ways... :) | 00:00 | |
masak | here's the mental model I had of things. | 00:01 | |
jnthn | masak: But see the langauge on a proto's "managed set" later on in S06. | ||
masak | yeah, I'm reading it now. | 00:02 | |
I see 'proto' and 'only' as the same shape of thing. | 00:03 | ||
'multi' is nowadays a kind of subordinate to 'proto'. | |||
so each time you do 'proto' or 'only', you define a new thing, hiding the old thing. | 00:04 | ||
jnthn | right, writing only or proto would always give you one of those | ||
masak | in explaining this, I think I see now why newbee's sub should become a multi :) | ||
00:04
perimosocordiae left
|
|||
masak | (because there's a proto in the setting, so 'only' isn't the default for infix:<+>) | 00:05 | |
jnthn | I'm mostly curious about whether a proto means that all the places that can see it default to multi for that name. | ||
masak | right. I think it might. | ||
in which case I agree fully. | |||
jnthn | Yeah, that's how I'd understood it so far. | ||
masak | that's actually quite nice. | ||
jnthn | Yeah, I think so. | ||
masak | because it'd be what people expect. | ||
basically they can use multis without having to understand protos and multis :) | 00:06 | ||
00:11
mdrc joined
|
|||
mdrc | hello, where to get the sea-cow grammar? | 00:12 | |
Tene | mdrc: eh? | ||
mdrc | the light variety of perl | ||
00:13
risou left
|
|||
mdrc | minus lazy classes etc. | 00:13 | |
Tene | I've never heard of that, and I'm having trouble finding anything about it on google. | ||
mdrc | me to | 00:14 | |
Tene | can you give me a link? | ||
00:14
Moukeddar joined
|
|||
mdrc | only by the name. i don't know if the version is publically available | 00:14 | |
Tene | Where did you hear about this? Can you tell me more about it? | 00:15 | |
mdrc | might have been a dream. at least the probability is there | 00:16 | |
Tene | Probably a dream. :) | ||
What was it in your dream, then? I'm curious now. | |||
mdrc | some stripped version but without the strict parentheses | ||
Tene | Or, could be that you've misremembered the name, and it's a real thing just under a different name. | ||
mdrc | actually i think the bug from perl6 reminded me | 00:17 | |
just visited | |||
masak | we're glad you're here :) | 00:18 | |
mdrc | thanks :) | ||
masak | I'm almost sorry there isn't a sea-cow grammar outside of your dreams... | 00:19 | |
mdrc | might have been a grep script | ||
i don't know | |||
Tene | mdrc: What would that have been? For example, if I *had* answered with "Here you go, it's right here: <link>", what would you have expected to find at the link? | ||
mdrc | some variety of the grammar, generated by a stream of feature strings filtered by the sea-cow | 00:20 | |
like a preset compilation | 00:23 | ||
masak | mdrc: I think you came here to be properly hugged. | ||
masak hugs mdrc | |||
there you go. | 00:24 | ||
mdrc | actually thanks , i was looking for an executable object | ||
masak | you're welcome. | ||
in the postmodern era, I guess we're all executable objects. | 00:25 | ||
00:25
Moukeddar left
|
|||
mdrc | seems to be available, only with whole feature set, from rakudo | 00:25 | |
masak | yeah. | ||
both. | 00:26 | ||
mdrc | haven't actually seen a list of extern symbols for the standard version. would be nice with something simple. | 00:27 | |
masak | mdrc: most of it can be found in the spec, but some parts are slushy. | 00:28 | |
mdrc | the spec seems fine, i mean, how many extern libraries are used? | 00:29 | |
masak | that's dependent on the implementation, I guess. | 00:31 | |
there are some implementations for which the question doesn't make much sense. | |||
mdrc | of course. probably just the stdio interface | 00:32 | |
00:34
xinming_ joined
|
|||
masak | the question feels unwarrantedly C-centric. | 00:36 | |
00:36
Sefnajjer joined
|
|||
mdrc | true. the regular execution environment, you know | 00:36 | |
00:36
Sefnajjer left,
xinming left
00:37
plobsing left
00:40
plobsing joined
00:42
sftp left
00:44
sftp joined
00:45
sftp left
|
|||
masak | 'night, #perl6 | 00:45 | |
00:45
masak left
00:46
pjcj left
|
|||
mdrc | [stdio[rakudo[application]]] alike | 00:47 | |
00:51
pjcj joined
01:06
tinhead joined
01:08
Bucciarati left
01:10
Bucciarati joined
|
|||
newbee | sorry i had to go out but i read your response, masak. So, whan can i do to avoid this "double" definition of + ? | 01:14 | |
s/whan/what/ | |||
or is that i just can't use + inside a definition of an overroded + operator? | 01:15 | ||
oh, never mind | |||
i got it, i should replace sub by multi :) | 01:16 | ||
thanks! :D | |||
rakudo: use v6; class hourmin { has Int $.h is rw; has Int $.m is rw; }; multi infix:<+>(hourmin $h1, hourmin $h2) { my $r = hourmin.new(h=>0,m=>0); $r.h = $h1.h + $h2.h; $r.m = $h1.m + $h2.m; if $r.m > 60 { $r.h += 1; $r.m-=60}; return $r; }; my $H1 = hourmin.new(h=>22,m=>40); my $H2 = hourmin.new(h=>1,m=>21); say $H1.perl; say ($H1+$H2).perl; | 01:20 | ||
p6eval | rakudo 705435: OUTPUT«hourmin.new(h => 22, m => 40)hourmin.new(h => 24, m => 1)» | ||
01:24
whiteknight left
|
|||
mdrc | (should work like the missing chip. well, i guess i have to leave. bye) | 01:30 | |
01:30
mdrc left
01:38
mjreed joined
01:39
mjreed left
01:56
mdrc joined
|
|||
mdrc | hello again, sorry for confusing the sea-cow script. it was an old model for something completely different www.gangsterfreak.com/file:scm.png | 01:57 | |
(just found in the archive) | 01:58 | ||
maybe some other time | 02:00 | ||
02:00
mdrc left
|
|||
Tene | jnthn: really, looks like I want to implement ruby-doc.org/core/classes/Module.html as my first HOW | 02:00 | |
02:04
Moukeddar joined,
Moukeddar left
02:24
jaldhar left
02:25
jaldhar joined
02:39
risou joined
03:04
Chillance left
03:14
jaldhar left
03:15
jaldhar joined
03:20
s1n left
03:22
s1n joined,
hudnix left
03:23
Su-Shee_ joined
03:26
Su-Shee left
03:31
newbee left
03:34
am0c joined
03:39
xinming_ is now known as xinming
03:46
Limbic_Region left
03:54
cotto left
04:03
cotto joined
04:04
cottoo joined,
cottoo left
04:36
ymasory left
04:37
Teedev joined
04:55
Psyche^ joined,
Psyche^ is now known as Patterner
05:06
kaare_ joined
05:11
Patterner left
05:23
Teedev left
05:47
birdwindupbird joined
05:52
imamelia joined
|
|||
imamelia | Will Perl 6 have any more settings for pack and unpack? | 05:53 | |
06:12
dolmen joined
06:24
imamelia is now known as imamelia|Sleep
06:29
imamelia|Sleep left
06:36
xinming left,
xinming joined
06:37
kaare_ left
06:48
Psyche^ joined,
Psyche^ is now known as Patterner
06:53
Patterner left
07:23
am0c left
07:28
tylercur1is is now known as tylercurtis
07:36
envi joined
07:43
Mowah joined
|
|||
tadzik | hello #perl6 | 07:44 | |
07:48
Su-Shee_ is now known as Su-She,
Su-She is now known as Su-Shee
07:54
wamba joined,
agentzh joined,
tomen joined
07:55
tomen left
08:06
anazawa joined
08:16
araujo left
08:23
am0c joined
08:33
justatheory left
08:50
anazawa left
08:59
anazawa joined
09:06
anazawa left,
anazawa_ joined
09:08
awoodland joined
|
|||
moritz | good morning | 09:08 | |
09:21
sftp joined
09:28
cotto left,
wamba left
09:31
SHODAN joined
09:34
tinhead left
09:37
agentzh left
|
|||
tadzik | oh, moritz. I was thinking about the gsoc week #1 today, and I still have no clue about how the tests for Pod classes should look like. How about me writing the tests for the Pod parser itself? They will be needed in a later stage anyway, have no specific date (besides "make sure the test suite covers the whole spec" in the week nth), and will probably reveal some stupid things about the Pod nodes too, | 09:41 | |
what do you think? | |||
For I don't have any good idea for testing the classes themselves, and it's a waste of effort to implement tests for containers just for the sake of writing tests | |||
09:43
llabthgie left
09:44
llabthgie joined
09:58
am0c left
10:06
MayDaniel joined
10:07
araujo joined,
araujo left,
araujo joined
10:09
wamba joined
10:15
risou left
|
|||
ingy | seen shortcircuit | 10:20 | |
aloha | shortcircuit was last seen in #perl6 34 days 7 hours ago joining the channel. | ||
10:25
whiteknight joined
11:02
masak joined
|
|||
masak | greetings, lolhorses. | 11:02 | |
11:06
Su-Shee left
11:07
Su-Shee joined
11:18
mkramer1 joined
11:20
mkramer left
11:21
mkramer joined
11:23
mkramer1 left
11:27
nymacro joined
|
|||
jnthn | Is a lolhorse like a seahorse, but laughing more often? | 11:37 | |
11:40
mkramer left,
mkramer joined
|
|||
masak | right. a close relative to the sea-cow, in fact. | 11:42 | |
tadzik | (: | 11:55 | |
I imagine lolhorses as horses, which instead of "nihihihihi" do "ololololol!" | |||
masak: could you backlog and tell me what you think about the question I asked moritz? | 11:58 | ||
12:03
donri joined
|
|||
masak | tadzik: the one about tests? | 12:12 | |
could it be that the question "what tests should I write?" lacks a bit of context? | 12:14 | ||
after all, you don't write tests just for writing tests. you write tests for making sure the code you're about to write does what you wanted. | 12:15 | ||
tadzik | masak: aye | ||
masak | so... what code do you want to write, and what should it do? :) | ||
tadzik | yes. And a code I am to write is a container. Any test for that is basically testing if the classes and their attributes work | 12:16 | |
the code I'm writing are the classes representing a Pod document, and abstract syntax tree | |||
masak | it could be useful to see if the Pod classes have been populated correctly. | ||
i.e. given this or that Pod input, the Pod nodes come out right. | 12:17 | ||
the way I see it, you have an I/O filter. perfect for testing in all sorts of ways. | |||
the power of testing filters is what ingy exploits in search.cpan.org/~ingy/Test-Base-0.6...st/Base.pm | 12:18 | ||
tadzik: but I'm somewhat evading your question. | 12:23 | ||
tadzik: your problem is that the classes you're about to write are mostly behaviour-less shells, so there's nothing interesting to test. | |||
so, playing Devil's advocate for a while, I ask: why are you writing those classes in the first place? :) | 12:24 | ||
tadzik | so, playing the dumb for a while I answer: because that's what in my proposal, and everyone expects the "write tests" statement after every "write code" :) | 12:26 | |
masak | :P | 12:27 | |
tadzik | so, instead of reporting "tests were not needed", I'm planning to report "tests were not needed, but I wrote the spectests instead, they helped too, and they will be needed anyway" | 12:28 | |
masak | no, I meant, do you expect these classes to be useful in some context, besides testing that their attributes work correctly? | ||
because it's those classes that would be useful. those that use the classes in the context they were intended to. | 12:29 | ||
tadzik | brb, nom | 12:30 | |
okay I'm back there | 12:48 | ||
12:48
hudnix joined
12:49
newbee joined
|
|||
tadzik | masak: the classes are only useful for representing the actual pod document. If it wasn't for convenience, they could be arrays or hashes. Testing them only makes sense if you compare the pod document to the representation you get from it. At the moment we have no way to transform the pod document into its representation, so the Pod classes are only a bunch of sad pandas in the zoo, which everyone can look | 12:50 | |
at and nothing more. Now, I could write tests for the fictional parser, so once it's here (or partly here), the tests will slowly start to work | |||
so, TDD :) | |||
so no tests for Pod classes, but rather tests for what Pod classes will be used for | 12:51 | ||
but they won't be testing anything right now, at the moment of deliverance | 12:52 | ||
newbee | rakudo: class test { has $.x = 0 where {(0..9)} } | ||
masak | let's say you decided to test a serializer that used the Pod classes. then the attributes in the Pod classes would *have* to work as intended, and you wouldn't have to write the boring tests. | ||
p6eval | rakudo 705435: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 22» | ||
jnthn | std: class test { has $.x = 0 where {(0..9)} } | 12:53 | |
p6eval | std 9f27365: OUTPUT«===SORRY!===Two terms in a row at /tmp/peTAuzXIHk line 1:------> class test { has $.x = 0 ⏏where {(0..9)} } expecting any of: bracketed infix infix or meta-infix statement modifier loopParse failedFAILED 00:01 117m» | ||
jnthn | std: class test { has $.x where {(0..9)} = 0 } | ||
p6eval | std 9f27365: OUTPUT«ok 00:01 116m» | ||
tadzik | masak: yes | ||
the thing is, at the moment of writing the tests, I have no serializer, so the tests don't show anything | 12:54 | ||
newbee | rakudo: class test { has $.x where {(0..9)} = 0 } | ||
p6eval | rakudo 705435: OUTPUT«===SORRY!===Unable to parse blockoid, couldn't find final '}' at line 22» | ||
jnthn | newbee: Pretty sure Rakudo doesn't know how to do that yet. | ||
newbee | oh well... i can use subsets in the meantime. | 12:55 | |
rakudo: subset Digit of Int where (0..9); class test { has Digit $.x = 0 } | 12:57 | ||
p6eval | rakudo 705435: ( no output ) | ||
masak | newbee: be aware that attributes aren't typechecked in Rakudo at the moment. | ||
rakudo: subset Even of Int where { $_ %% 2 }; class A { has Even $.e }; say A.new(:e(5)).e | |||
p6eval | rakudo 705435: OUTPUT«5» | ||
masak | rakudo: subset Even of Int where { $_ %% 2 }; class A { has Even $.e }; say A.new(:e("OH NOES")).e | 12:58 | |
p6eval | rakudo 705435: OUTPUT«OH NOES» | ||
masak | myself, I'm consciously avoiding attribute typing right now, because I know how hard my apps would break when it came online if I used them everwhere :P | ||
newbee | subset Digit of Int where (0..9); class test { has Digit $.x is rw = 0 } | 12:59 | |
tadzik | masak: so, did we get to any conclusion? | ||
jnthn | masak: nom will almost certainly have it. | ||
masak: You've chosen wisely ;) | |||
newbee | i think that this syntax is too complicated, should be subset Digit of Int where (0..9); class test { has Digit $.x = 0 is rw } | ||
13:00
benabik left,
benabik joined,
benabik left
|
|||
jnthn | newbee: But the 0 isn't rw. The attribute is. | 13:00 | |
newbee | has Digit $.x is rw = 0 v/s has Digit $.x = 0 is rw | ||
ahmmm i see | 13:01 | ||
jnthn | I find "has Digit $.x is rw = 0" clearer, but maybe that's just me. :) | ||
newbee | i read "is rw = 0" like saying "rw is false" | 13:02 | |
i know that perl6 does not work like that but reading it fast sounds like that | |||
13:02
MayDaniel left
13:03
noganex_ joined
|
|||
jnthn | Ah, I see. | 13:03 | |
13:05
noganex left
|
|||
masak | tadzik: good question :) | 13:05 | |
13:05
MayDaniel joined,
anazawa joined
|
|||
masak | tadzik: don't write tests just for testing's sake. write tests that will help you move forward with implementing functionality. | 13:06 | |
13:07
anazawa_ left,
fglock joined
|
|||
fglock | hmm - Perlito bootstrap was taking 5min instead of 1min, I was looking for a bug - it turned out the MacBook Air was overheating, and slowed down | 13:09 | |
putting some ice under the computer fixed it | |||
masak | :D | 13:12 | |
newbee | rakudo: class Point{has $.x is rw = 0; has $.y is rw = 0}; my $p1 = Point.new; say $p1.perl; | ||
p6eval | rakudo 705435: OUTPUT«Point.new(x => 0, y => 0)» | ||
newbee | rakudo: class Point{has $.x is rw = 0; has $.y is rw = 0}; my Point $p1; say $p1.perl; | 13:13 | |
p6eval | rakudo 705435: OUTPUT«Point» | ||
newbee | why the different outputs? | ||
masak | newbee: the first is an instance, the second is the type object Point. | ||
newbee | you mean that in the 2nd, $p1 is like a "clone" of the Point class? | 13:14 | |
rakudo: class Point{has $.x is rw = 0; has $.y is rw = 0}; my Point $p1; my $p2 = $p1.new; say $p2.perl; | 13:15 | ||
p6eval | rakudo 705435: OUTPUT«Point.new(x => 0, y => 0)» | ||
13:15
benabik joined
|
|||
newbee | rakudo: class Point{has $.x is rw = 0; has $.y is rw = 0}; my Point $p1; $p1.x = 10; my $p2 = $p1.new; say $p2.perl; | 13:16 | |
p6eval | rakudo 705435: OUTPUT«Type objects are abstract and have no attributes, but you tried to access $!x in main program body at line 22:/tmp/EJrgoLi8zG» | ||
masak | newbee: not really a "clone", more like a Point object that represents the Point class itself. an uninstantiated Point object. | 13:17 | |
13:17
Chillance joined
|
|||
newbee | now i understand that error message :) | 13:17 | |
masak | :) | ||
newbee | thanks to all again :) going back to code some more..... | ||
masak | rakudo: class A { has $.b }; my $a = A.clone; $a.b = 42; say "alive" | 13:18 | |
p6eval | rakudo 705435: OUTPUT«Type objects are abstract and have no attributes, but you tried to access $!b in main program body at line 22:/tmp/SlbryIPzhK» | ||
masak | rakudo: class A { has $.b }; say A === A.clone | ||
p6eval | rakudo 705435: OUTPUT«Bool::True» | ||
newbee | mmm so, how does Int work then? You don't have to say my $x = Int.new | 13:20 | |
masak | you could say that Int is a bit special-cased, since the literal syntax creates Int instances for you. | 13:21 | |
but it's slightly more involved than that, what with unboxed values and so on. | |||
newbee | rakudo: class Point{has $.x is rw = 0; has $.y is rw = 0}; class Line { has Point $p1 is rw = (x=>0, y=>0); has Point $p2 is rw = (x=>0, y=>0) }; my $L = Line.new; say $L.perl; | 13:24 | |
p6eval | rakudo 705435: OUTPUT«Line.new(p1 => ("x" => 0, "y" => 0), p2 => ("x" => 0, "y" => 0))» | ||
newbee | rakudo: class Point{has $.x is rw = 0; has $.y is rw = 0}; class Line { has Point $p1 is rw = (x=>0, y=>0); has Point $p2 is rw = (x=>10, y=>10) }; my $L = Line.new; say $L.perl; | ||
p6eval | rakudo 705435: OUTPUT«Line.new(p1 => ("x" => 0, "y" => 0), p2 => ("x" => 10, "y" => 10))» | ||
newbee | cool :) | ||
13:27
MayDaniel left
|
|||
mikemol | ingy: I'm around | 13:29 | |
I just don't speak much. :) | |||
13:34
p6eval left
|
|||
newbee | rakudo: class hourmin {has Int $.h is rw; has Int $.m is rw;}; multi infix:<+>(hourmin $h1, hourmin $h2) {my $r=hourmin.new(h=>0,m=>0); $r.h=$h1.h+$h2.h; $r.m=$h1.m+$h2.m; if $r.m>60 {$r.h+=1; $r.m-=60}; return $r;}; my $H1=hourmin.new(h=>22,m=>40); my $H2=hourmin.new(h=>1,m=>21); my $H3=$H1+$H2; | 13:34 | |
13:35
p6eval joined,
ChanServ sets mode: +v p6eval
|
|||
newbee | rakudo: class hourmin {has Int $.h is rw; has Int $.m is rw;}; multi infix:<+>(hourmin $h1, hourmin $h2) {my $r=hourmin.new(h=>0,m=>0); $r.h=$h1.h+$h2.h; $r.m=$h1.m+$h2.m; if $r.m>60 {$r.h+=1; $r.m-=60}; return $r;}; my $H1=hourmin.new(h=>22,m=>40); my $H2=hourmin.new(h=>1,m=>21); my $H3=$H1+$H2; | 13:35 | |
13:36
wamba left
|
|||
p6eval | rakudo 705435: ( no output ) | 13:36 | |
13:36
birdwindupbird left,
newbee left
|
|||
tadzik | masak: I read that as "I agree" :) | 13:39 | |
fglock: speaking of MacBook, how annoying is the heat problem in a machine like that? | 13:40 | ||
ingy | mikemol: you changed nicks? | ||
masak | tadzik: yes, I think I do. :) | 13:41 | |
13:41
newbee joined
|
|||
newbee | hi again :D | 13:41 | |
masak | welcome back. :) | ||
newbee | i have a + operator defined inside a pm (inside a class) | ||
mikemol | ingy: Ah. Yeah, I forgot about that. :) | ||
newbee | i did a test and i can't use the operator in it | 13:42 | |
mikemol | ingy: Now using my real name for my nick, since that's what I do just about everywhere else, now. | ||
ingy | mikemol: join #ingy again for a bit | ||
masak | newbee: sub declarations are lexically scoped. so it'll only be visibble inside the class if you define it there. | ||
newbee | i can only use it if i move the + definition from the .pm to the .t file | ||
i defined as a multi | |||
ahh i see | |||
so i should use "method infix:....." | 13:43 | ||
masak | no. | ||
you should place the sub declaration where it's visible from where you use it. | |||
rakudo: class A {}; multi sub infix:<+>(A, A) { "OH HAI" }; say A.new + A.new | 13:44 | ||
p6eval | rakudo 705435: OUTPUT«OH HAI» | ||
masak | rakudo: class A { multi sub infix:<+>(A, A) { "OH HAI" } }; say A.new + A.new | ||
p6eval | rakudo 705435: OUTPUT«Cannot take numeric value for object of type A in 'Any::Numeric' at line 1482:CORE.setting in 'infix:<+>' at line 7651:CORE.setting in main program body at line 22:/tmp/umUksggfP_» | ||
newbee | that's the error message i'm getting | 13:45 | |
13:47
imamelia|Sleep joined
|
|||
benabik | Wouldn't an infix method take one of the params as an invocant? So it would be infix:<+>(A) or (A: A)? | 13:50 | |
13:52
noganex joined
13:53
imamelia|Sleep is now known as imamelia
13:54
Moukeddar joined
|
|||
Moukeddar | Hello :) | 13:54 | |
masak | o/ | ||
Moukeddar | how are you doing Sir? | ||
masak | good, thanks. | 13:55 | |
and you? | |||
13:55
noganex_ left
|
|||
Moukeddar | doing Fine , thank you | 13:55 | |
masak | benabik: it would; but the operator isn't translated into a method call, it's translated into a sub call. | ||
rakudo: class A { method infix:<+>(A, A) { "OH HAI" } }; say A.new + A.new | |||
p6eval | rakudo 705435: OUTPUT«Cannot take numeric value for object of type A in 'Any::Numeric' at line 1482:CORE.setting in 'infix:<+>' at line 7651:CORE.setting in main program body at line 22:/tmp/8iMgcjd1G7» | 13:56 | |
masak | (doesn't work, because the method is never called) | ||
Moukeddar | rakudo : What? | ||
rakudo: What? | |||
p6eval | rakudo 705435: OUTPUT«===SORRY!===Confused at line 22, near "What?"» | ||
Moukeddar | masak, i wanted your opinion , | 13:57 | |
me and my friends are about to build a website | |||
kinda like this : dotnet.dzone.com/ | |||
13:57
whiteknight left
|
|||
Moukeddar | and we were agueing wether we should Use the MVC architectur or not | 13:58 | |
what do you think ? | |||
13:58
wamba joined
|
|||
masak | Moukeddar: I think it sounds slightly off-topic for #perl6. mind if we take it through privmsg? | 13:58 | |
Moukeddar | ok :) | 13:59 | |
14:07
fglock left
14:16
dual left
14:18
am0c joined
14:21
Moukeddar left
|
|||
dalek | kudo/nom: 4128e6a | jnthn++ | / (4 files): Toss some PMCs that we'll no longer need. |
14:30 | |
kudo/nom: 7e411b3 | jnthn++ | src/Perl6/Metamodel/EXPORTHOW.pm: Correct HOW exports. |
|||
kudo/nom: b659333 | jnthn++ | / (3 files): Add lexpad and lexinfo PMCs. Copies of the NQP ones, but I expect we'll end up with a bit more in the Rakudo ones. |
14:46 | ||
kudo/nom: 6664726 | jnthn++ | src/Perl6/SymbolTable.pm: Make sure we always do the LexPad => Perl6LexPad mapping. |
|||
kudo/nom: 7ab4a55 | jnthn++ | src/pmc/perl6lexinfo.pmc: Simplify static lexical installation. |
|||
kudo/nom: 3eb5ba0 | jnthn++ | src/Perl6/SymbolTable.pm: Compile-time lexical installation. |
|||
14:50
[Coke] left
14:53
molaf joined
14:55
nymacro left
15:02
kaare_ joined
15:03
[Coke] joined
15:08
p6eval left
15:09
p6eval joined,
ChanServ sets mode: +v p6eval
|
|||
newbee | rakudo: use v6; class Point { has $.x is rw = 0; has $.y is rw = 0; }; multi sub infix:<+>(Point $P1, Point $P2) {my $R = Point.new; $R.x = $P1.x + $P2.x; $R.y = $P1.x + $P2.x; return $R;} use v6; use Test; my $P1=Point.new(x=>5 ,y=>5); my $P2=Point.new(x=>10,y=>10); my $P3=$P1+$P2; ok($P3.x==15 && $P3.y==15, "Add points"); | 15:09 | |
15:09
[1]imamelia joined
|
|||
p6eval | rakudo 705435: OUTPUT«===SORRY!===Confused at line 22, near "multi sub "» | 15:10 | |
15:11
imamelia left,
[1]imamelia is now known as imamelia
|
|||
sorear | newbee: what are you trying to do? you seem to have been stuck on the same stuff for a week. | 15:14 | |
newbee: "use v6" is unnecessary with Rakudo, also, there's a bug which requires operator overloads to be declared "our multi sub" | 15:15 | ||
newbee: you need a ; after the sub-ending } | |||
dalek | kudo/nom: b56c1b3 | jnthn++ | src/Perl6/SymbolTable.pm: Add a way to track stub packages that we need to check get defined at some point. |
15:18 | |
kudo/nom: 097725c | jnthn++ | src/Perl6/Grammar.pm: Install lexical packages. |
|||
kudo/nom: 630af7d | jnthn++ | src/Perl6/Actions.pm: Toss existing package_def action and start to fill it out with compile time meta-object handling and other basic bits. |
|||
kudo/nom: ea005f4 | jnthn++ | src/Perl6/Actions.pm: Typo. |
|||
15:19
hatsefla1s is now known as hatseflats
15:22
s1n left,
s1n joined
15:40
birdwindupbird joined
|
|||
masak | rakudo: multi sub infix:<+>(Rat $a, Rat $b) { "OH HAI" }; say 2.5 + 2.5 | 15:42 | |
p6eval | rakudo 705435: OUTPUT«Ambiguous dispatch to multi 'infix:<+>'. Ambiguous candidates had signatures::(Rat $a, Rat $b):(Rat $a, Rat $b) in main program body at line 22:/tmp/Wok6SJmL1Y» | ||
masak | sorear: no, it seems to work without the 'our'. | 15:43 | |
rakudo: multi sub infix:<+>(Str $a, Str $b) { $a ~ $b }; say "OH" + " " + "HAI" | |||
p6eval | rakudo 705435: OUTPUT«OH HAI» | ||
masak | sorear: it's just some other things that don't work without it, such as metaoperators. | ||
rakudo: multi sub infix:<+>(Str $a, Str $b) { $a ~ $b }; say [+] "OH", " ", "HAI" | 15:44 | ||
p6eval | rakudo 705435: OUTPUT«0» | ||
masak | rakudo: our multi sub infix:<+>(Str $a, Str $b) { $a ~ $b }; say [+] "OH", " ", "HAI" | ||
p6eval | rakudo 705435: OUTPUT«OH HAI» | ||
15:45
PhatEddy joined
|
|||
PhatEddy | rakudo: class A { has $.b;}; class B is A { proto method b{}}; | 15:47 | |
p6eval | rakudo 705435: ( no output ) | ||
PhatEddy | rakudo: class A { has $.b; proto method b{}}; | 15:48 | |
p6eval | rakudo 705435: OUTPUT«===SORRY!===A method named 'b' already exists in class 'A'. It may have been supplied by a role.» | ||
PhatEddy | masak: do you have a moment to chat about rt #76298 ? | 15:49 | |
15:53
dual joined,
justatheory joined
|
|||
moritz | tadzik: I'd be fine with you writing tests for combined parser + pod classes first, and spend some effort on getting the first test pass early | 15:54 | |
even if that's a small deviation from the schedule | |||
tadzik | good | 15:55 | |
moritz: it's nothing wrong if I modify the classes designed in the week #1 later on, while implementing stuff? | |||
I think I already asked that | |||
moritz | tadzik: setting things in stone early on is considered harmful | 15:56 | |
tadzik | yeah. The spec is not frozen either | 15:57 | |
moritz | exactly | 15:58 | |
or to put it another way, working code in the end is more important than particular milestones or than sticking to early results | |||
newbee | sorry, i was afk.. | 15:59 | |
rakudo: class Point { has $.x is rw = 0; has $.y is rw = 0; }; our multi sub infix:<+>(Point $P1, Point $P2) {my $R = Point.new; $R.x=$P1.x+$P2.x; $R.y =$P1.y+$P2.y; return $R;}; my $p1 = Point.new(x=>30,y=>0); my $p2=$p1; ;my $P3=$p2 + $p1; say $P3.perl; | 16:00 | ||
p6eval | rakudo 705435: OUTPUT«Point.new(x => 60, y => 0)» | ||
newbee | this works well... but | ||
if i kame two files like that: | |||
s/kame/name/ | |||
file Point.pm : class Point { has $.x is rw = 0; has $.y is rw = 0; }; our multi sub infix:<+>(Point $P1, Point $P2) {my $R = Point.new; $R.x=$P1.x+$P2.x; $R.y =$P1.y+$P2.y; return $R;}; | |||
file Test.pl : use Point; my $p1 = Point.new(x=>30,y=>0); my $p2=$p1; ;my $P3=$p2 + $p1; say $P3.perl; | |||
i got this error: "Cannot take numeric value for object of type Point" | 16:01 | ||
16:01
cotto joined
|
|||
moritz | newbee: you didn't export your infix:<+> | 16:02 | |
newbee: and even if you did, I think exporting of overloaded operators in very fragile in rakudo :( | 16:03 | ||
16:03
Alias joined
|
|||
newbee | export? mmmm like an EXPORT array at the beggining of Point.pm ? | 16:04 | |
moritz | multi infix:<+>(...) is export { ... } | 16:05 | |
newbee | didn't work either,, i guess i'll stick to "normal" subs for the moment :( | 16:06 | |
thanks moritz :) | |||
masak | PhatEddy: yes, sure. | 16:07 | |
PhatEddy | rakudo: class A { has $.b; method b{}}; | 16:08 | |
p6eval | rakudo 705435: OUTPUT«===SORRY!===A method named 'b' already exists in class 'A'. It may have been supplied by a role.» | ||
newbee | sorear: I'm trying to do a "TimeOfDay" class. Hours minutes and seconds, completely unrelated to the day. | ||
masak | PhatEddy: that's wrong too, AFAIU. | ||
rakudo: class TimeOfDay { has $.hour; has $.minute; has $.second }; say "done" | 16:09 | ||
jnthn | maybe. | ||
p6eval | rakudo 705435: OUTPUT«done» | ||
PhatEddy | It doesn't just seem to be about proto's and if you back up a bit on the channel you might notice that I have a workaround based on inheritance. | ||
masak backs up a bit | |||
newbee | i want to add Durations and other "TimeOfDay" instances, that's why i olverload operators | 16:10 | |
PhatEddy | rakudo: class A { has $.b;}; class B is A { method b{}}; | ||
p6eval | rakudo 705435: ( no output ) | ||
masak | jnthn: shouldn't 'has $.b' only generate an accessor method if there isn't already one in the class declaration? | ||
jnthn | masak: Probably, yes | 16:11 | |
16:11
am0c left
|
|||
masak | I even seem to recall reading that in some synopsis somewhere. | 16:11 | |
jnthn | Though you could use has $!b; then :) | ||
masak | :) | ||
jnthn | That'd seem like the simple workaround if you want to write your own accessor. | 16:12 | |
masak | aye. | ||
jnthn | Will try and remember to add that check when implementing the attribute meta-object in nom, anyway. | ||
masak | \o/ | ||
16:14
imamelia left
|
|||
tadzik | why is #= currently Rakudo-illegal? | 16:15 | |
jnthn | tadzik: I thought it was no longer in the spec? | 16:16 | |
masak | tadzik: it's #=[] | ||
or some other set of parenthetical characters. | |||
PhatEddy | Is there really a point in allowing the override of the accessor if declaring private and your own accessor is just as good? | 16:17 | |
tadzik | it's in the S26 | ||
jnthn | Oh, I thought we were taking about {*} #= open in a regex. | ||
Mostly because I tossed one of the few remaining usages of it a couple of days ago in package_def... :) | |||
tadzik | :) | 16:18 | |
jnthn | PhatEddy: Things that want to see has_accessor being true when doing introspection would benefit from it. | ||
tadzik | so, what about #=? | ||
16:18
colomon left
16:19
Alias left
|
|||
PhatEddy | Thanks everyone ... | 16:19 | |
masak | tadzik: I'll look into it. | 16:20 | |
16:24
am0c joined,
leprevost joined
|
|||
masak | tadzik: oh, you're right. | 16:24 | |
tadzik: by the way, I have a pending addition to S26 concerning exactly this feature. | 16:25 | ||
tadzik | changing #= to #=[]? | ||
16:25
MayDaniel joined
|
|||
masak | no. | 16:25 | |
dalek | kudo/nom: 4aab825 | jnthn++ | NOMMAP.markdown: Update NOMMAP. |
16:26 | |
kudo/nom: f2dd8a5 | jnthn++ | src/Perl6/Metamodel/ (4 files): A bit more fleshing stuff out in the metamodel. |
|||
kudo/nom: eacc9e9 | jnthn++ | src/Perl6/ (2 files): {YOU_ARE_HERE} handling fixes. |
|||
kudo/nom: ddeadfd | jnthn++ | src/CORE.setting/BOOTSTRAP.pm: Simplify BOOTSTRAP.pm so it's something we can at least produce code for now. |
|||
kudo/nom: 31a098b | jnthn++ | src/Perl6/ (2 files): Check for undefined package stubs. Compiling CORE.setting now complains (correctly) about these. |
|||
kudo/nom: 7767bf4 | jnthn++ | / (3 files): Stub in natives. |
|||
masak | tadzik: I believe both exist already. | ||
tadzik: no, the change is to replace the magical attachment behavior of #= with two constructs: #= and #^ | 16:28 | ||
16:29
mberends joined
16:31
newbee left
|
|||
masak | tadzik: please read this: irclog.perlgeek.de/perl6/2010-06-18#i_2453615 | 16:31 | |
tadzik: up until 14:28 or so. | 16:32 | ||
tadzik | oh, I think I remember sorear talking about this | ||
masak | hm, seems the two alternatives we settled on were #= and #| | ||
16:33
Moukeddar joined
|
|||
Moukeddar | Heyoo | 16:33 | |
why the compiler is called rakudo? | 16:34 | ||
japanses? | |||
japanese* | 16:35 | ||
PhatEddy | Quick though on paperwork - does it make sense to add a reference to the discussion here to rt76298 - fine with me to do it ... | 16:36 | |
tadzik | I see | 16:37 | |
masak | Moukeddar: the name 'rakudo' is derived from the Japanese phrase 'rakudado', meaning 'the way of the camel'. | 16:44 | |
Moukeddar: 'rakudo' itself means 'paradise'. | |||
16:47
r0b86 joined,
Moukeddar left
16:49
Su-Shee_ joined
16:52
Su-Shee left,
Su-Shee_ is now known as Su-Shee
16:54
leprevost left
|
|||
masak | ok, I tried changing S26 into #| and #= | 16:59 | |
17:00
wamba left
|
|||
masak | it's not as trivial as just putting them there, because much of the explanation that's there now is spent clarifying the silly system of attaching doc comments to the right declaration. | 17:00 | |
a slightly bigger rewrite is needed. | 17:01 | ||
tadzik | (: | 17:02 | |
well, my second mentor... | |||
I can do it if you're not in a hurry | |||
masak | hey, thanks! :) | 17:03 | |
tadzik | (: | ||
but I suppose that's not until July :P | |||
for .WHY is quite far on my list | 17:04 | ||
and there's plenty of things not so far | |||
17:04
mj41 joined
|
|||
moritz returns and backlogs | 17:11 | ||
jnthn | std: sub foo is bar$('wtf') { } | 17:12 | |
p6eval | std 9f27365: OUTPUT«ok 00:01 113m» | ||
sorear | phenny: tell Moukeddar mail.pm.org/pipermail/chicago-talk/...04726.html | 17:20 | |
phenny | sorear: I'll pass that on when Moukeddar is around. | ||
17:23
Limbic_Region joined
|
|||
masak | tadzik: ok, I might beat you to it, but no promises either way :) | 17:28 | |
tadzik | :) | 17:29 | |
jnthn | TimToady: Since we need to evaluate trait parameters at parse/compile time, is there any reason at all to just parse some generic circumfix that could contain just about anything for the parameter? Can we not somehow parse a far more restrictive set of things? | 17:36 | |
17:36
ymasory joined,
[Coke] left
|
|||
jnthn | Like, literal values and type names... :) | 17:36 | |
moritz | why not just wrap an implicit BEGIN block around it, and allow arbitrary expressions? | 17:37 | |
jnthn | meh | ||
could do | |||
moritz | ok, wouldn't make your life easier :-) | ||
17:37
[Coke] joined
|
|||
jnthn | Well, it'll make everyone's life slower too | 17:38 | |
And it's not so simple because of circularity issues | 17:39 | ||
It'd probably "work" though, I guess. | 17:40 | ||
jnthn starts to realize that the whole thing is ridiculously circular. | 17:41 | ||
You can't define inheritance hierarchy until you can call a trait, which needs multi-dispatch. But you can't do multi-dispatch until you have an inheritance hierarchy in place. :) | 17:43 | ||
moritz | so, time for our circularity chainsaw, which can define inheritance without traits | 17:44 | |
jnthn | Yeah | ||
I think I'm just going to make Mu/Any etc initially exist and be related by doing a bunch of manual meta-object calls. | 17:45 | ||
17:51
envi left
17:57
am0c left
|
|||
PhatEddy | Synopsis 12 says: Every dot declaration also declares a corresponding private exclamation storage location, and the exclamation form may be used only in the actual class, not in derived classes. | 18:00 | |
rakudo: class A { has $.b;}; class B is A { method set_p_b{ $!b = 'x'}; method say_p_b{say $!b}}; my $b = B.new; $b.set_p_b; $b.say_p_b; | |||
p6eval | rakudo 705435: OUTPUT«x» | ||
PhatEddy | Is the sample I just ran a (new?) bug? | ||
jnthn | It's not a new bug, it's one of the oldest ones in rT. | 18:01 | |
PhatEddy | Sorry - I did check rt and missed it. | 18:02 | |
jnthn | nqp: class A { has $.b; }; class B is A { method set_p_b() { $!b := 'x' } } | ||
p6eval | nqp: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 1current instr.: 'nqp;Regex;Cursor;FAILGOAL' pc 3863 (src/Regex/Cursor.pir:239)» | ||
moritz | rt is not easy to search for | ||
jnthn | nqp: class A { has $!b; }; class B is A { method set_p_b() { $!b := 'x' } } | 18:03 | |
p6eval | nqp: OUTPUT«Attribute '$!b' not declared at line 1, near " := 'x' } "current instr.: 'nqp;HLL;Grammar;panic' pc 26292 (src/stage2/gen/NQPHLL.pir:7011)» | ||
jnthn | That's how it should work. | ||
sorear | jnthn: You're only just realizing the circularity? :) | 18:04 | |
jnthn | sorear: Just having to deal with different bits of it. :) | 18:05 | |
sorear: When your compilation model is Perl 6 in ==> PIR out, it's kinda easier. ;) | 18:06 | ||
When it's Perl 6 in ==(build the world)==> PIR out that uses objects built during compilation, there's some new things to worry about. :) | |||
sorear | niecza solves that problem by building the world in compilerspace | 18:07 | |
though this is likely to become a problem when I implement trait_mod | |||
jnthn | Yes. | ||
sorear | How do you plan to handle separate compilation + BEGIN interaction in ctmo? | 18:08 | |
jnthn | And all the BEGIN fun in general, I guess. | ||
18:08
mj41 left
|
|||
jnthn | The only thing a BEGIN block can reach is either symbols in the dynamic scope or symbols in the current understanding of GLOBAL | 18:09 | |
sorear | that's the #1 blocker for BEGIN in Niecza; I can't afford to lose separate compilation when it takes 20 seconds just to build a setting 1/6 the size of Rakudo's | ||
jnthn | (Note, not using Parrot namespaces any more, so not tied to any single view of what is GLOBAL). | ||
I had to fix that so NQP could actually keep on bootstrapping itself and I could statically resolve symbols | |||
Was getting into situations where it was linking symbols against the compiler, not the the ones beloning to the thing being compiled. Then you ran the compiled output and it was like "oh noes, where are my symbols" :) | 18:10 | ||
That took days to untangle. :/ | 18:11 | ||
sorear | What would you do for something like use A; my $x; BEGIN { $x = $A::y; $x.[0] = 42 } ? | ||
jnthn | If you do that by just compile-n-run it'd probably end up OK, but you're hosed if you do that with --target=pir and then expect $A::y to show up differently when running that. | 18:12 | |
It's no different to BEGIN { $A::y.[0] = 42 } | 18:13 | ||
Potentially you'd screw up the whole separate compilation thing too, but only within the current process. | 18:15 | ||
18:15
MayDaniel left
|
|||
jnthn | Dunno what we can really do about that, short of a load of extra copying, which'll cause other issues. | 18:16 | |
Or trying to track object changes or something | |||
But...it's silly. | |||
Can only go so far to stop people shooting themselves in the foot. | |||
And BEGIN kinda is a shotgun. :) | 18:17 | ||
18:18
Moukeddar joined
|
|||
sorear has vague desires of being able to run Niecza on Rakudo/Yapsi someday | 18:18 | ||
heh, I guess | 18:19 | ||
Have you figured out how to do away with the sc field yet? Adding an extra pointer to P6any just for separate compilation+BEGIN does not amuse me | |||
jnthn | Well, it's for bounded serialization too | 18:20 | |
I didn't work out how to do away with it but I'm not really planning to either. | 18:21 | ||
sorear | Bounded serialization "too"? | ||
jnthn | heh. That was the primary motivation. :) | 18:22 | |
For now I'm getting most of the stuff in line to actually do some kind of "real serialization" | 18:23 | ||
18:23
imamelia joined
|
|||
jnthn | But I'll probably go on with the current stop-gap until after rakudo/nom. | 18:23 | |
Want to give folks at least some of the new nice stuffs. :) | 18:24 | ||
dinner, bbl | |||
sorear | What is "the current stop-gap"? | 18:27 | |
What is "real serialization" | |||
18:29
Moukeddar left
18:30
toto joined,
toto is now known as Guest6918
18:32
Mowah_ joined
18:33
wamba joined
18:36
Guest6918 left
18:37
birdwindupbird left
18:40
mj41 joined
18:43
benabik left
|
|||
masak | rakudo: say "OH HAI @a<" | 18:53 | |
p6eval | rakudo 705435: OUTPUT«OH HAI @a<» | ||
masak | rakudo: say "OH HAI @a[" | ||
p6eval | rakudo 705435: OUTPUT«===SORRY!===Unable to parse postcircumfix:sym<[ ]>, couldn't find final ']' at line 22» | ||
sorear | hi masak! | ||
masak | why is < OK but not [ ? | ||
oh hai sorear | |||
sorear | std: say "OH HAI @a<" | ||
p6eval | std 9f27365: OUTPUT«===SORRY!===Unable to parse quote-words subscript; couldn't find right angle quote at /tmp/SFvtOOnNLU line 1:------> say "OH HAI @a<⏏" expecting escapeParse failedFAILED 00:01 114m» | ||
masak submits rakudobug | 18:54 | ||
18:59
lichtkind joined
|
|||
masak already found a use for .base in real-world code | 19:03 | ||
though in this case .fmt('%b') wouldn't worked too ;) | |||
imamelia | Will pack() get changed at all in Perl 6? | 19:04 | |
masak | imamelia: yes, a little bit. | 19:05 | |
imamelia: mostly because we now have Str and Buf, not just Str. | |||
imamelia: but all the changes I've seen have been about that. | |||
imamelia | Hm. | 19:06 | |
I don't recall hearing about any new developments for that, but... | |||
masak | I started on it last summer during GSoC. | ||
imamelia | The fact that it has no option for 24-bit character strings has come up a couple of times. | ||
19:06
benabik joined
|
|||
masak | hm, back up a bit. :) | 19:07 | |
what has no option for 24-bit character strings? | |||
imamelia | The pack and unpack functions. | ||
n and v are 16-bit, N and V are 32-bit...but there's nothing for 24-bit. | |||
masak | huh. | ||
imamelia | And using C* or the like forces big-endian mode. | 19:08 | |
masak | this is the first time I've heard that complaint about pack and unpack. | ||
imamelia | Huh. | ||
sorear | me too | ||
masak | have you discussed this with the Perl 5 people? | ||
imamelia | What Perl 5 people? | ||
I've mentioned in on #perl, and at least one other person knows about it... | |||
Currently, I've just been using the 32-bit one and adding or removing a leading \x00, but that seems rather...workaround-ish? | 19:09 | ||
(Nothing bigger than 32-bit either, but that hasn't come up yet anyway.) | 19:10 | ||
*mentioned it | |||
But would it be useful enough to have in Perl 6, I guess... | 19:12 | ||
Maybe a special character sequence for any character length in either big- or little-endian mode? That would be the most flexible option. | 19:13 | ||
Might be useful for more people. | |||
masak | noted. | 19:14 | |
given a list of zeroes and ones, how do I get a list of the indices with ones? | 19:16 | ||
19:17
Moukeddar joined
|
|||
masak | this is the shortest I can come up with: | 19:18 | |
rakudo: my @a = 0, 1, 1, 0, 1, 0, 1; say (map *.key, grep *.value == 1, @a.pairs).perl | |||
p6eval | rakudo 705435: OUTPUT«(1, 2, 4, 6)» | ||
masak | oh wait. | ||
rakudo: my @a = 0, 1, 1, 0, 1, 0, 1; say (grep *.value == 1, @a.pairs)>>.key.perl | |||
p6eval | rakudo 705435: OUTPUT«(1, 2, 4, 6)» | ||
sorear | ; my @a = 0,1,1,0,1,0,1; say @a.pairs>>.invert.hash.[1] | 19:19 | |
rakudo: my @a = 0,1,1,0,1,0,1; say @a.pairs>>.invert.hash.[1] | |||
p6eval | rakudo 705435: ( no output ) | ||
sorear | rakudo: my @a = 0,1,1,0,1,0,1; say @a.pairs>>.invert.perl | ||
p6eval | rakudo 705435: OUTPUT«(0 => 0, 1 => 1, 1 => 2, 0 => 3, 1 => 4, 0 => 5, 1 => 6)» | ||
sorear | rakudo: my @a = 0,1,1,0,1,0,1; say @a.pairs>>.invert.hash.perl | 19:20 | |
p6eval | rakudo 705435: OUTPUT«{"0" => 5, "1" => 6}» | ||
masak | sorear: one has to push the values onto a hash. | ||
sorear | rakudo: my @a = 0,1,1,0,1,0,1; say @a.pairs.hash.invert.perl | ||
masak | I make that mistake a lot. | ||
p6eval | rakudo 705435: OUTPUT«(0 => "0", 1 => "1", 1 => "2", 0 => "3", 1 => "4", 0 => "5", 1 => "6")» | ||
masak | rakudo: my @a = 0,1,1,0,1,0,1; say {}.push(@a.pairs.invert) | ||
p6eval | rakudo 705435: OUTPUT«Method 'invert' not found for invocant of class 'List' in main program body at line 22:/tmp/iaew_5UI9N» | 19:21 | |
masak | rakudo: my @a = 0,1,1,0,1,0,1; say {}.push(@a.pairs.hash.invert).perl | ||
p6eval | rakudo 705435: OUTPUT«{"0" => ["0", "3", "5"], "1" => ["1", "2", "4", "6"]}» | ||
masak | rakudo: my @a = 0,1,1,0,1,0,1; say {}.push(@a.pairs.hash.invert)[1].perl | ||
sorear | rakudo: my @a = 0,1,1,0,1,0,1; say @a.pairs.classify(*.value).[1] | ||
masak | sorear++ | ||
p6eval | rakudo 705435: OUTPUT«undef» | ||
rakudo 705435: OUTPUT«1 1 1 2 1 4 1 6 1» | |||
masak | rakudo: my @a = 0,1,1,0,1,0,1; say {}.push(@a.pairs.hash.invert)<1>.perl | ||
p6eval | rakudo 705435: OUTPUT«["1", "2", "4", "6"]» | ||
sorear | rakudo: my @a = 0,1,1,0,1,0,1; say @a.pairs.classify(*.value).[1].perl | ||
p6eval | rakudo 705435: OUTPUT«"1" => [1 => 1, 2 => 1, 4 => 1, 6 => 1]» | ||
sorear | rakudo: my @a = 0,1,1,0,1,0,1; say @a.pairs.classify(*.value)<1>.perl | ||
p6eval | rakudo 705435: OUTPUT«undef» | 19:22 | |
benabik | p6golf | ||
sorear | rakudo: my @a = 0,1,1,0,1,0,1; say @a.pairs.classify(*.value).hash<1>.perl | ||
p6eval | rakudo 705435: OUTPUT«[1 => 1, 2 => 1, 4 => 1, 6 => 1]» | ||
sorear | rakudo: my @a = 0,1,1,0,1,0,1; say @a.pairs.grep(*.value)».key.perl | 19:23 | |
p6eval | rakudo 705435: OUTPUT«(1, 2, 4, 6)» | ||
19:23
Moukeddar left
|
|||
masak | rakudo: my $n = 5; for 0 ..^ 2 ** $n -> $bitmask { my @r = ({}.push($bitmask.fmt('%0' ~ $n ~ 'b').flip.comb.pairs.hash.invert)<1> // []).list; say @r } | 19:27 | |
p6eval | rakudo 705435: OUTPUT«01012021201230313013230231230123404140142402412401243403413401342340234123401234» | 19:28 | |
masak | all possible subsets of the set {0, 1, 2, 3, 4, 5}. | ||
19:32
whiteknight joined
|
|||
sorear | niecza: .say for &[X~](('', '0'), ('', '1'), ('', '2'), ('', '3'), ('', '4'), ('', '5')) | 19:35 | |
p6eval | niecza v5: OUTPUT«===SORRY!===Non-simple variables NYI at /tmp/gSm0pmwb8O line 1:------> .say for &[X~]⏏(('', '0'), ('', '1'), ('', '2'), ('', 'Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line 413 (CORE die @ 2) at | ||
../ho… | |||
sorear | niecza: .say for ('', '0') X~ ('', '1') X~ ('', '2') X~ ('', '3') X~ ('', '4') X~ ('', '5') | 19:36 | |
p6eval | niecza v5: OUTPUT«544533534345225242452323523423451151414513135134134512125124124512312351234123450050404503035034034502025024024502302350234023450101501401450130135013401345012012501240124501230123501234012345» | ||
masak | :) | ||
sorear | this would work even better if I had a working || | ||
needs more lols | 19:40 | ||
jnthn | sorear: Real as in data driven. Current stop-gap is "all compile time meta-object actions are events, and the "serialization" is running through that event stream. | ||
tadzik wonders if 12 pages is enough for S26 | 19:45 | ||
any ideas how many lines does lp(1) print on one page? | |||
TimToady | usually about 60 (out of 66) | ||
on an old fashioned line printer | 19:46 | ||
sorear | people still use lp? | ||
TimToady | on a modern printer, depends on the font size | ||
sorear | I guess it's like how in high school I did all my English-class submissions using troff | 19:47 | |
19:47
birdwindupbird joined,
mj41 left
|
|||
tadzik | I quite like the archaism in the act of printing a text file in the command line. I only need a pipe and a... | 19:48 | |
phenny: "melonik"? | |||
phenny | tadzik: Language guessing failed, so try suggesting one! | ||
tadzik | phenny: pl "melonik"? | ||
phenny | tadzik: "bowler" (pl to en, translate.google.com) | ||
flussence | rakudo: my @a = 0,1,1,0,1,0,1; say (0..@a Z=> @a).classify(*.value).pop.value.hash.keys.perl # I couldn't make it shorter, but I can make it horrible no problem :) | ||
p6eval | rakudo 705435: OUTPUT«("1", "2", "4", "6")» | ||
TimToady | ^@a would work just as well | 19:49 | |
sorear | tadzik: hat? | ||
TimToady | @a.pairs | ||
tadzik | sorear: yes | ||
bleh, OOWriter wants to print me this on 108 pages | |||
sorear | tadzik: have you tried using pod2man and groff -Tps ? | 19:51 | |
tadzik | sorear: I don't think pod2man will help with pod6 | ||
I guess I'll just visit a xero point | 19:52 | ||
sorear | jnthn: What do you mean when you say that (the purpose of SerializationContext is not BEGIN)? | 19:56 | |
19:58
SHODAN left
|
|||
jnthn | sorear: Well, depends if you mean "stuff that happens at begin time" or just BEGIN explicitly. If you mean "stuff that happens at BEGIN time" then yes, that's primarily what it's for. | 19:58 | |
20:03
zer0o joined
|
|||
lue | hello world! o/ | 20:05 | |
masak | \o | ||
tadzik | hello lue1 | 20:06 | |
1 | |||
damn this, shift | |||
moritz | \o | ||
tadzik | hello lue! | ||
masak | tadzik: it's slightly ironic that you're now performing a step (printing Pod6) that would benefit by your GSoC work ;) | ||
s/by/from/ | |||
tadzik | masak: yeah, that's this bootstraping problem :) | ||
I see the pod 6 source, but I have no idea how it should really look about :) | 20:07 | ||
sorear | jnthn: I mean BEGIN specifically | 20:10 | |
masak | tadzik: :) | ||
sorear | jnthn: stuff that happens at BEGIN time can be serialized with non-bounded and otherwise ad-hoc methods. Niecza uses JSON to serialize class meta objects | ||
masak | tadzik: Damian proudly asserts that S26 is written in Pod6. in his CPAN module, he bitterly laments that the documentation has to be written in plain ol' POD. :) | 20:11 | |
tadzik | masak: yeah, I saw that :) | ||
masak | he names it "cruel irony" or something like that... | ||
tadzik | "The Cruel Irony", or something | ||
hehe :) | |||
sorear | jnthn: BEGIN itself seems to want to be bounded though, if we want BEGIN { $x = Num } to work well | ||
benabik | I thought BEGIN was "start of program" not "compile time" | ||
sorear | benabik: you're thinking of INIT | ||
excuse me - BEGIN { $x = Num }; ok $x === Num | 20:12 | ||
lue gets the idea he should continue work on SUPERNOVA, when he has time. | |||
masak | I've come to think of BEGIN as "as early as possible", which often means at compile time. | ||
moritz | it should really be called ASAP | 20:13 | |
20:14
kaare_ left
|
|||
lue | tadzik: ooc, what is your GSoC project? | 20:14 | |
tadzik | lue: we may be able to combine manpower regarding my GSoC project | ||
sorear | hmm, it just occurred to me that rakudo-ng = event sourcing, rakudo-nom = data sourcing | ||
sorear blows the masak-whistle | |||
tadzik | tee-hee. The Pod parser for Rakudo :) | ||
tadzik wonders whose whistle makes the "beeeer!" sound | 20:15 | ||
lue | do you even have to ask? It's jnthn's of course :) | ||
masak | sorear: :) | 20:18 | |
benabik | sorear: Ah. I thought BEGIN was INIT and COMPILE was BEGIN. BEGIN seems like an odd name for it, but I'll get used to it. :-) | ||
masak | sorear: I think "state sourcing" is a more apt term. | ||
moritz | benabik: hysteric raisins, and all that | ||
benabik | moritz: ... ? | 20:19 | |
20:19
bluescreen10 left
|
|||
masak | well, as early as possible might as well be called BEGIN :) | 20:19 | |
20:19
bluescreen10 joined
|
|||
benabik didn't get anywhere near enough sleep. | 20:19 | ||
moritz | benabik: "historic reasons", a bit misspelled | 20:20 | |
masak | benabik: see www.jargondb.org/soundalike_slang | ||
benabik | moritz: Oh! My grandma says "hysterical buildings" all the time... I'm too tired. | ||
20:20
imamelia left
20:23
Mowah left
|
|||
lue | I feel your GSoC project is Pod6 related... /me investigates further | 20:24 | |
tadzik | lue: 2214 tadzik | tee-hee. The Pod parser for Rakudo :) | 20:25 | |
lue: www.google-melange.com/gsoc/proposa...1/tadzik/1 | 20:26 | ||
moritz | std: 'a' =~ /a/ | 20:32 | |
p6eval | std 9f27365: OUTPUT«===SORRY!===Unsupported use of =~ to do pattern matching; in Perl 6 please use ~~ at /tmp/vQylQfDv5v line 1:------> 'a' =~⏏ /a/Parse failedFAILED 00:01 113m» | ||
sorear | std: my $x; $x=~1; | ||
p6eval | std 9f27365: OUTPUT«===SORRY!===Unsupported use of =~ to do pattern matching; in Perl 6 please use ~~ at /tmp/cksxAqn4XX line 1:------> my $x; $x=~⏏1;Parse failedFAILED 00:01 114m» | ||
20:35
imamelia joined
|
|||
lue | tadzik: looks cool, esp. considering there are some things about Pod6 I'll be purposely delaying (e.g. #=<> declarator blocks) or not doing without decent arguments (e.g. all the Pod6:: classes S26 implies are necessary.) | 20:35 | |
dalek | ecs: 15b1a49 | moritz++ | S32-setting-library/Exception.pod: [S32/Exceptions] add a few syntax errors |
20:37 | |
sorear | Normally I see people make commits like "Remove a few syntax errors"/ | ||
. | |||
masak: Why is event sourcing a good thing for web apps but bad for Perl 6? | 20:38 | ||
moritz | what's a nice way to supply the default error message programmatically? | ||
sorear | moritz: What do you mean by default error message? | 20:39 | |
moritz | if I do a "has $.message = 'default string';", I'll get a conflict with X::Base | ||
sorear: X::Syntax::Obsolete.message should default to 'Unsupported use of $<old>;$<when> please use $<new>' | 20:40 | ||
tylercurtis | BUILD? | ||
moritz | BUILD is an idea, yes | ||
tadzik | lue: my project does not aim for a complete Pod 6 implementation | ||
sorear | I think you want to override new() for this | ||
moritz | why new and not a BUILD? | 20:41 | |
masak | sorear: huh? I didn't say it was. | ||
sorear | masak: YOU didn't, JNTHN does | ||
masak | oh! | ||
that's funny, only yesterday jnthn described the things he's doing with serialization as event-based. | 20:42 | ||
lue | ah. So it only does as much as it needs to be useful as a part of Rakudo? | ||
sorear | What Rakudo does now is event-based | ||
jnthn | sorear: Not really... | 20:43 | |
sorear: Not in a formal way. | |||
masak | I'm afraid I don't know enough about the Rakudo internals to have an opinion... | ||
jnthn | sorear: nom is still event-driven but with a bunch of cross-referencing already worked out. | ||
It's half way to being data-driven. | |||
Becasue going all the way is another hard chunk of work that I don't want to take on just yet. :) | 20:44 | ||
tadzik | lue: it aims to be a base on which it will be more like a LHF than a hellofahardwork to implement something Pod-related. Also the most exciting bit is of course the .WHY :) | ||
moritz | WHY? :-) | ||
lue | .oO(say .WHEREFORE # 'art thou Romeo?') |
20:46 | |
tadzik | I feel that we have an alias .BECAUSE :) | ||
oh that will be something reversed | 20:47 | ||
it could add the explanations in runtime :) | |||
20:47
bluescreen10 left
|
|||
lue | That reminds me of a why/because conditional I've thought about (e.g. why {$x += $y; say $z;} because $q = 5) which would just be a reverse if/then. | 20:48 | |
tadzik | augment class Tea { has $.more.BECAUSE('I can') } | ||
20:48
Mowah_ left
20:49
bluescreen10 joined
20:50
birdwindupbird left
|
|||
moritz | event sourcing might a good idea for a time-traveling debugger | 20:54 | |
masak | that's basically what Tardis does. | 20:57 | |
oh wait. no, it isn't. | |||
:) | |||
so yes, that would be a good place to apply it. :) | |||
lue | .oO(IIUC event sourcing from what I've just looked up, then Tardis would actually use event editing) |
20:59 | |
21:00
bluescreen100 joined,
donri left
|
|||
masak | lue: events are append-only. | 21:03 | |
but I guess with a time-traveling debugger, one could choose to "restart" from some point in the event stream, discarding all the events after that point as belonging to a false future. | 21:04 | ||
21:05
imamelia is now known as imamelia|Away,
imamelia|Away left
|
|||
masak | 'night, #perl6 | 21:11 | |
21:11
masak left
21:13
p6eval left
21:15
p6eval joined,
ChanServ sets mode: +v p6eval
21:31
Su-Shee_ joined
21:34
Su-Shee left
21:37
cotto left
21:38
cotto joined
21:41
gottreu joined
|
|||
PhatEddy | rakudo: my @a = (1); @a ||= (); say @a | 21:43 | |
p6eval | rakudo 705435: ( no output ) | ||
PhatEddy | rakudo: my @a = (1); @a ||= (); say ~@a | 21:44 | |
p6eval | rakudo 705435: OUTPUT«(timeout)» | ||
21:45
bluescreen__ joined
|
|||
PhatEddy | if anyone is around to second and no objection maybe a bug report? | 21:47 | |
21:49
zer0o left
|
|||
PhatEddy | rakudo: my @a = (); say @a.perl; @a ||= (); say @a.perl | 21:52 | |
p6eval | rakudo 705435: OUTPUT«[][()]» | ||
tadzik | rakudo: my @a = (1); @a ||= (); say @a.perl | 21:56 | |
p6eval | rakudo 705435: OUTPUT«maximum recursion depth exceeded in 'Block::count' at line 6342:CORE.setting in 'Block::count' at line 6342:CORE.setting in 'Any::join' at line 1 in 'Array::perl' at line 3161:CORE.setting in <anon> at line 3161:CORE.setting in 'Any::join' at line 1 in | ||
..'Array::perl' a… | |||
22:02
silent_h_ joined
22:07
gottreu left
22:20
arnsholt left,
arnsholt joined
22:22
dju joined
22:24
dju left
22:25
dju joined
22:26
risou joined
22:27
anazawa left
22:32
dolmen left
22:43
risou_ joined
22:44
risou left
22:45
Moukeddar joined
22:52
Sefnajjer joined,
Sefnajjer left
22:54
colomon joined
22:57
benabik left
22:59
Moukeddar left
|
|||
dalek | kudo/nom: fc60b90 | jnthn++ | src/Perl6/ (2 files): Rip out existing traits handling, as it needs to be done very differently. Get natives to parse/compile. |
23:20 | |
kudo/nom: a8702a4 | jnthn++ | / (2 files): Start sketching out circularity-sawing object system bootstrap. |
|||
kudo/nom: b2fea87 | jnthn++ | src/Perl6/Metamodel/MultipleInheritance.pm: Fix inheritance bug. |
|||
kudo/nom: e020635 | jnthn++ | / (6 files): Start fleshing out the setting a bit. Doesn't build - getting it to do so is the next target. |
|||
23:20
wamba left
|
|||
jnthn | sleep & | 23:25 | |
23:26
lichtkind left
23:28
PhatEddy left
23:29
fridim_ left
23:32
silent_h_ left,
benabik joined
23:34
molaf_ joined
23:37
molaf left
23:39
spinclad left
23:44
risou_ left
23:49
spinclad joined
|