»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo: / pugs: / std: , or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend! Set by diakopter on 25 January 2010. |
|||
00:14
ilogger2 joined
00:16
Gothmog_ joined,
kraih_sri joined
00:17
broquaint joined
00:19
colomon joined
00:20
mathw joined
|
|||
diakopter | archtech: spokesbug as opposed to spokesperson or mascot. | 00:23 | |
archtech | diakopter, that's not what I mean :P | ||
I mean why is perl6's page targeting the 2 to 6 year old demographic | 00:24 | ||
TimToady | get 'em while they're young | ||
archtech | :P | 00:25 | |
TimToady | also, to discourage curmudgeons who are too set in their ways to adapt. :) | 00:26 | |
we're trying to discourage the formation of the type of high-priesthood that has developed in other communities | 00:27 | ||
archtech | TimToady, it depends what you need to adapt to. | ||
I'm not convinced Teletubbies is the right image for Perl 6. | 00:28 | ||
But good luck with it | |||
TimToady | and it's not just 2 to 6 year old demographic, but the half of the population that aren't into chest thumping games | ||
diakopter | I see it more as anime-ish | 00:29 | |
than teletubbish | |||
TimToady | teletubbies are ugly | 00:30 | |
archtech | Not to mention associating Perl6 with bugs :P | 00:31 | |
diakopter | that's the self-deprecating humor | ||
reverse psychology, irony, whichever. | |||
archtech | The problem is, this self-deprecating humor leaves impression that you have bugs and that's funny. | 00:32 | |
diakopter | but ... those things are both true. | ||
(some bugs are quite funny) | |||
archtech | It is ... | 00:33 | |
Well I don't know what to say, maybe check framing in linguistics. | |||
I can't explain well this type of stuff. | |||
TimToady | basically, in anthropological terms, we want to fix some of the bugs in current hacker culture too | ||
we want to move away from being a Vulnerability as Weakness culture into more of a Vulnerability as Strength culture. | 00:34 | ||
archtech | TimToady, to me, something Perl 6 could use in its image is, slick, modern look. | ||
Because the common perception is that Perl is arcane and ancient. | |||
TimToady | but that's what everyone else is doing. :) | ||
archtech | And this page looks a bit like a home page from 1997 | ||
Which supports this image. | |||
TimToady | simple is okay; we don't need flashy | 00:35 | |
archtech | modern/slick != flashy | ||
diakopter | mmm, slickness. like that gradient highlight that adds a "sheen" to many logos. | ||
archtech | I guess we put different meaning into slickness | ||
TimToady | anyway, we want to communicate simplicity | ||
there's already far too much slick in the world | 00:36 | ||
00:36
lue joined
|
|||
archtech | Well, good luck with it. | 00:36 | |
TimToady | we'll do okay :) | ||
snarkyboojum | it's really quite different to something from 1997 - just check perl.org from 1997 or something at archive.org | 00:37 | |
diakopter | speaking of, 2019 called; they want a Perl 7 implementation. | 00:38 | |
snarkyboojum | let me check the wayforwardmachine | 00:39 | |
says Perl6 is still state of the art :P | |||
lue | I've got The Docter on speed-dial! | 00:40 | |
lue is talking to The Docter | |||
...eh, Doctor | 00:41 | ||
diakopter | hmm. wondering whether I should admit I typoed my last msg (meant to type Perl 6) | ||
snarkyboojum | ah :) | 00:42 | |
TimToady | nah, the ghost of Tolkien claims that large sequels only take 14 years | 00:44 | |
though the ghost of Moses keeps saying "I thought you said 40 years" | 00:45 | ||
lue | The Doctor says perl 6 came out in the '10s... | ||
00:46
ash__ joined
00:48
ash__ left,
ash__ joined
|
|||
TimToady | well, Perl 6 will be 16 in 2016, which is the usual age for a coming-out party... | 00:48 | |
though perhaps we could schedule a bat mitzvah in 2012 | 00:49 | ||
lue | So Perl was found in Israel? | 00:50 | |
It's written in Hebrew? | |||
diakopter | Aramaic | 00:51 | |
lue | The Doctor tells me Perl 6 will have an "official" implementation February 16, 2011, around tea. | 00:53 | |
diakopter | lue: that would be impressive... (since "official" merely means "implementing the whole spec correctly") | 00:55 | |
lue | as in the "perl" program is updated. | ||
colomon | diakopter: the whole story: at around lunch time, February 16, 2011, a bunch of us are going to go in and take everything Rakudo 2011 doesn't implement out of the spec. :) | 00:56 | |
lue | You're talking to the Doctor too!? That's who the third voice is. | ||
TimToady | well, just mark it all as "post 6.0" | ||
diakopter | colomon: but what about the features other implementations implement but Rakudo doesn't (by then)? | 00:59 | |
lue | what other implementations? :) | ||
diakopter | >: | 01:00 | |
lue | Ooh, should'nt have said that. (sorry Doctor!) | 01:01 | |
colomon | diakopter: I'm sure someone will revert the spec within a couple of days. :) | ||
once the slashdotting wears down. | |||
diakopter | |:| | ||
ash__ | which spec is 'use' in? | 01:02 | |
mberends | S09 | 01:05 | |
01:06
drbean joined
01:07
patspam joined
01:24
am0c joined
|
|||
TimToady | er, S11, actually | 01:29 | |
mberends | <oops> I read S11 and typed S09 </oops> | 01:37 | |
TimToady | fired off those old octal neurons, did it? :) | ||
diakopter | you musta thought S09 was octal | ||
hm | |||
TimToady | other way around | 01:38 | |
diakopter | yar | ||
mberends | no, musta just been half asleep | ||
TimToady | the night is yet young | 01:39 | |
diakopter | I love how S09 is top-ranked on google for "S09" | ||
S08 is fourth | |||
01:40
ruoso joined
|
|||
diakopter | same with S07 | 01:40 | |
S06 is 2nd | |||
and S05 and S04 | |||
S03 is top | |||
TimToady | some people are easily amused | 01:41 | |
mberends is :-) | 01:42 | ||
diakopter | ok, maybe "love" was too strong | ||
TimToady | we can give you some great deals on S09! | 01:43 | |
mberends | lorl | ||
lue | Do I get Oxiclean if I order my own copy of S09 with a credit card? | 01:45 | |
TimToady | only if you do it with the credit card we give you | 01:46 | |
diakopter | std: my %%%3 | 01:47 | |
p6eval | std 29700: OUTPUT«ok 00:01 107m» | ||
diakopter | riddle me that. | 01:48 | |
TimToady | (my %) % %3 probably | ||
diakopter | std: my % % % 3 | 01:49 | |
p6eval | std 29700: OUTPUT«===SORRY!===Anonymous variable requires declarator at /tmp/uUSmkdZcZg line 1:------> my % % %⏏ 3 expecting twigilFAILED 00:01 106m» | ||
diakopter | std: my % % %3 | ||
p6eval | std 29700: OUTPUT«ok 00:01 107m» | ||
TimToady | er | ||
my *is* a declarator... | |||
oh, it's the second one | |||
er, third? | |||
depending on how you count | |||
diakopter | ok, but what does %3 mean | ||
TimToady | presumably something like %($3) | 01:50 | |
diakopter facestab | |||
mberends | it's so useful to have a human online who can think like a parser | ||
diakopter | or even like STD | ||
TimToady | well, STD doesn't actually care | 01:51 | |
it just assumes \d+ is a legal name to go after a sigil | |||
lue | STD just gives you a crummy number. | ||
std: say "hello"; | |||
p6eval | std 29700: OUTPUT«ok 00:01 105m» | ||
TimToady | well, it gives you a parse tree, but those don't ircify very well | 01:52 | |
you can get the parse tree if you run STD yerself | |||
mberends | the best feature is the user-context-sensitive help | ||
it seems to "know" what you're "thinking" | 01:53 | ||
or even what you "need", that's cool | |||
diakopter | std: my & & & | 01:54 | |
TimToady | interesting, it returns the 3 as 'index' | ||
p6eval | std 29700: OUTPUT«===SORRY!===Anonymous variable requires declarator at /tmp/2UJbwi7pDV line 1:------> my & & &⏏<EOL> expecting any of: infix noun twigilFAILED 00:02 128m» | ||
diakopter | but I *did* declare & | ||
(pronounced "unnhh") | |||
TimToady | yes, but you declared it as anonymous, so you have to declare it again | 01:55 | |
diakopter | o | ||
TimToady | std: my & & my & | ||
p6eval | std 29700: OUTPUT«===SORRY!===Illegal redeclaration of routine '' (from line 1) at /tmp/mMpXxmp0d1 line 1:------> my & & my &⏏<EOL> expecting any of: infix noun twigilFAILED 00:01 128m» | 01:56 | |
diakopter | std: my & && my & | ||
p6eval | std 29700: OUTPUT«===SORRY!===Illegal redeclaration of routine '' (from line 1) at /tmp/IkfSG99sKG line 1:------> my & && my &⏏<EOL> expecting any of: infix noun twigilFAILED 00:01 128m» | ||
TimToady | fnerk | ||
wow, a real STD buglette | |||
diakopter | buglers are in high demand | 01:57 | |
TimToady | so are taps, at the end of the day | 01:58 | |
diakopter | std: my (&*; %, $; int &a;); | 02:00 | |
p6eval | std 29700: OUTPUT«ok 00:01 110m» | ||
02:01
nbrown joined
|
|||
diakopter | std: my ($ where $) | 02:02 | |
p6eval | std 29700: OUTPUT«===SORRY!===Unsupported use of $) variable; in Perl 6 please use $::EGID at /tmp/fr9mogIA1u line 1:------> my ($ where $)⏏<EOL>FAILED 00:01 108m» | ||
TimToady | std: my ($) | 02:03 | |
p6eval | std 29700: OUTPUT«ok 00:01 106m» | ||
TimToady | std: my ( $ where $ ) | ||
p6eval | std 29700: OUTPUT«===SORRY!===Anonymous variable requires declarator at /tmp/rM21s2O1of line 1:------> my ( $ where $⏏ ) expecting twigilFAILED 00:01 108m» | ||
TimToady | that message could be improved | 02:04 | |
diakopter | std: my $ is is is is | ||
p6eval | std 29700: OUTPUT«ok 00:01 106m» | ||
diakopter | use speeth_imphedimenths; | 02:05 | |
std: my (IS $) | 02:08 | ||
p6eval | std 29700: OUTPUT«===SORRY!===Invalid typename IS at /tmp/qOgHWbou66 line 1:------> my (IS⏏ $)FAILED 00:01 108m» | ||
diakopter | std: my IS $ | ||
p6eval | std 29700: OUTPUT«===SORRY!===In "my" declaration, typename IS must be predeclared (or marked as declarative with :: prefix) at /tmp/sf4acPdyRs line 1:------> my IS⏏ $FAILED 00:01 105m» | ||
02:09
hidx joined
|
|||
dalek | kudo/ng: b14892b | pmichaud++ | src/Perl6/Grammar.pm: Add NYI messages for := and ::= bindings. |
02:25 | |
lue hears an echo of EXTERMINATE! | 02:28 | ||
colomon | ng: say split("", "forty-two"); | 02:32 | |
p6eval | ng c0f4cc: OUTPUT«Could not find non-existent sub &splitcurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
lue | I want to do a raised eyebrow smiley for that result... | 02:35 | |
TimToady | actually, it couldn't find an existent sub | 02:36 | |
or it found a non-existent sub | |||
but I'd settle for a simple "Couldn't find &split" | 02:38 | ||
colomon | I was just working on writing split. :) | ||
But I suppose the error message is LTA. | 02:39 | ||
pugs_svn | r29701 | lwall++ | [STD] don't carp about duplicate anonymous routine declarations | 02:42 | |
r29701 | make undeclared type message the same for parameters as for other declarations | |||
r29701 | clarify the message about anonymous variables | |||
r29701 | don't report a $) variable where ) is the $*GOAL | |||
r29701 | and in general, diakopter++ for tormenting STD | 02:43 | ||
dalek | kudo/ng: 97e5506 | (Solomon Foster)++ | src/core/Rat.pm: Clean up ugly bit in GCD now that list assignment works again. |
02:59 | |
kudo/ng: f0a4366 | (Solomon Foster)++ | src/core/Any-str.pm: Add sub versions of split. |
|||
TimToady | std: $ | 03:03 | |
p6eval | std 29701: OUTPUT«===SORRY!===Non-declarative sigil is missing its name at /tmp/2UBSoTgoHF line 1:------> $⏏<EOL> expecting twigilFAILED 00:01 107m» | ||
TimToady | std: my (IS $) | ||
p6eval | std 29701: OUTPUT«===SORRY!===In parameter declaration, typename 'IS' must be predeclared (or marked as declarative with :: prefix) at /tmp/Iyv9OMXEPB line 1:------> my (IS⏏ $)FAILED 00:01 108m» | ||
TimToady | std: my ($ where $) | ||
p6eval | std 29701: OUTPUT«===SORRY!===Non-declarative sigil is missing its name at /tmp/9D7Z9jkIB3 line 1:------> my ($ where $⏏) expecting twigilFAILED 00:01 108m» | ||
TimToady | std: my & && my & | 03:05 | |
p6eval | std 29701: OUTPUT«ok 00:01 127m» | ||
03:05
hidx left
03:13
tylerni7 left
03:22
tylerni7 joined,
tylerni7 left,
tylerni7 joined
|
|||
k23z__ | is berlios offering private svn ? | 03:30 | |
dalek | kudo/ng: 88f0181 | (Solomon Foster)++ | src/core/Num.pm: Pull in Num.Rat from master. |
03:34 | |
pugs_svn | r29702 | colomon++ | [t/spec] Unfudge three tests that work now. | ||
lue is listenting to the Milk Bar song from Majora's Mask on a loop | 04:09 | ||
colomon is watching fiddlers he knows in the Olympic opening ceremony (a few minutes behind real time). | 04:11 | ||
lue thinks that colomon has a TV in his office (or a computer in his living room) | 04:14 | ||
lue or has figured out quantum physics | |||
colomon | my wife and I both have our laptops out. | ||
lue | I'm on my laptop, but the battery lasts only 50 minutes (old laptop) | 04:15 | |
colomon | We're both plugged in, too. :) | 04:16 | |
I get 2 - 3 hours of battery, depending on how often I recompile (or run spectests). | 04:17 | ||
lue | If I got two new batteries, and swapped my cd drive with the 2nd, I have the power of most modern laptops! | ||
It's an old PowerBook G3 Wallstreet. | |||
colomon | OS X, at least, I hope? | 04:18 | |
lue | Nah, Linux. Switched because OS X for this laptop wouldn't be supported anymore. | ||
colomon | ah, Yellow Dog (?) is probably a fine choice. | 04:19 | |
just so you're not running OS 9 or whatever. (okay, I'm a relative newcomer to the Mac.) | |||
lue | Fedora. Chose Gentoo first, then Ubuntu, then switched to OpenSuSE, then Fedora. | 04:20 | |
PPC Linux is BLOODY difficult, compared to Intel. | |||
colomon | My wife has a PPC Mac in our basement, which at this point we keep around mostly so I can test my code on PPC if need be. | 04:22 | |
I keep on thinking I should replace it with a Playstation 3. :) | |||
lue | I got this laptop as a free gift. It was given to get rid of it, but hey, Free Mac (they're expensive). | 04:23 | |
colomon | I know, I'm on a MBP. :) | 04:24 | |
Really well worth the cost, though, drastically better machine than my old Windows laptops. | |||
lue | O.o Shiny! What I would do for that (not much) o.O | 04:25 | |
... Milk Bar theme never gets old :D | 04:27 | ||
colomon | holy smokes, I just had 992 tests run (and I think pass) in my very slightly hacked sin.t! | 04:31 | |
lue | you created a test for sins? (getting a little HEAVENLY, are we?) | 04:33 | |
colomon | dude, I have like 1700 tests for sin. | 04:34 | |
ng: sin(Inf) | 04:35 | ||
p6eval | ng 88f018: OUTPUT«too many positional arguments: 2 passed, 1 expectedcurrent instr.: 'sin' pc 219906 (src/gen/core.pir:4769)» | ||
lue | my salute to puns! | 04:36 | |
colomon | ng: say Inf.WHAT | ||
p6eval | ng 88f018: OUTPUT«Num()» | ||
04:37
Chillance joined
04:38
Chillance left
|
|||
lue | ng: say Inf.WHICH | 04:46 | |
p6eval | ng 88f018: OUTPUT«Inf» | ||
TimToady | it's possible that Inf should not be in any of Int/Num/Rat, but be a subtype of Numeric | 04:47 | |
lue | ng: say Inf+5 | ||
p6eval | ng 88f018: OUTPUT«Inf» | ||
lue | good. Nothing weird. :) | ||
TimToady | it's currently Num for historical reasons having to do with IEEE floaters | ||
but p6 is supposed to extend the idea of Inf to all numeric types (that aren't native) | 04:48 | ||
colomon | Hmmm, subtype of Numeric or subtype of Real? | 04:50 | |
lue | Inf can be argued to not be a number at all. (I don't argue this, btw) | ||
TimToady | mostly, we need to put it where it can be dispatched sanely without having a lot of strange 'if' statements here and there | 04:51 | |
lue | (ahh, perl6, the only language to care about what Infinity is...) Is it a real number? | ||
TimToady | but there's an argument that any values are allomorphic | ||
42 is an integer, a real, a rational, etc. | 04:52 | ||
lue | hmm, looking at wikipedia about infinity... this is now a quest for the truth (get our philosophy caps on!) | 04:54 | |
colomon | But if it's a subtype, you can be real slick with it, eh? multi sub infix:<+>(Infinity $x, Real $y) { return $x; } | ||
TimToady | don't want slick, I want cute :P | ||
we can also dispatch on specific values | 04:55 | ||
lue | but is cute -Ofun? I think slick is. | 04:56 | |
TimToady | otoh, values are consider an extra constraint, so doesn't dispatch only on the nominal type | ||
(whatever that type is) | |||
colomon | I think having Infinity be its own type is definitely -Ofun, whether you call it cute or slick. | 04:57 | |
TimToady | just thinking maybe the nominal type of a constant might be possibly be a role like Numeric without committing to a storage type, as long as all such values are distinguishable without consulting the storage type | 04:58 | |
lue | but then what good would be assigning a value to the variable of that type be? | ||
Ah, the wonders of infinity... | |||
TimToady | a variable must have a storage type | 04:59 | |
but these are constants | |||
colomon | But we need to have pos / neg Infinity, that's two values... guess it could be two types, but that doesn't feel instinctively right to me. | ||
lue | Maybe something like: my Infinity $a = +; my Infinity $b = -; | 05:00 | |
according to dr. math, infinity is NaN. (mathforum.org/dr.math/faq/faq.large...bers.html) | 05:02 | ||
colomon | I'm really liking this idea, though. All the special cases become simple easy to understand functions... | ||
Infinity.sin() { NaN; } | 05:03 | ||
TimToady | I don't have any fixed ideas on this, but it seems like something worth considering | ||
colomon | NaN might make sense as a type as well... | ||
lue | it's a concept, NaN :) | ||
colomon | I will keep this in the back of my mind. | ||
lue | I hold on to my belief that (x/0)=Infinity and (x/Infinity)=0 | 05:04 | |
I don't care if Infinity is NaN, IMO, it's its NaN-ness that makes it work. | 05:07 | ||
(you should ask me about my crazy theories sometime :D ) | |||
TimToady | is Inf-time sometime? | ||
colomon | It's when you go to Milliways. | 05:08 | |
lue | It's probably all time and no time, at the same time >:D | 05:09 | |
(bah, but time's an illusion (lunchtime doubly so)) | |||
TimToady | as for the bucket, NaNtucket. | ||
the lunch bucket, that is | 05:10 | ||
lue | infinity is measured in NaNometers :) | 05:11 | |
05:12
gfx joined
|
|||
colomon | ng: say asin(1.0); | 05:12 | |
p6eval | ng 88f018: OUTPUT«1.5707963267949» | ||
colomon | ng: say sin(asin(1.0)); | 05:13 | |
p6eval | ng 88f018: OUTPUT«too many positional arguments: 2 passed, 1 expectedcurrent instr.: 'sin' pc 219906 (src/gen/core.pir:4769)» | ||
lue wants to go to the Milliways Milk Bar :D | |||
colomon | ng: say sin(1.5707963267949) | 05:14 | |
p6eval | ng 88f018: OUTPUT«No applicable candidates found to dispatch to for 'infix:<div>'current instr.: 'perl6;Rat;new' pc 287232 (src/gen/core.pir:0)» | ||
colomon | ng: my $a = asin(1.0); say $a; say asin($a); | 05:15 | |
p6eval | ng 88f018: OUTPUT«1.5707963267949too many positional arguments: 2 passed, 1 expectedcurrent instr.: 'asin' pc 220247 (src/gen/core.pir:4871)» | ||
colomon | ng: my $a = asin(1.0); say $a; say sin($a) | ||
p6eval | ng 88f018: OUTPUT«1.5707963267949too many positional arguments: 2 passed, 1 expectedcurrent instr.: 'sin' pc 219906 (src/gen/core.pir:4769)» | ||
colomon | say sin(1.6) | ||
ng: say sin(1.6) | 05:16 | ||
p6eval | ng 88f018: OUTPUT«0.999573603041505» | ||
colomon | too tired to figure this out tonight... | 05:20 | |
lue | 21:20 over here. I'm beginning to feel it too. | 05:21 | |
TimToady | of course, if IEEE floaters do the right thing with these NaNnies, then maybe we can just go ahead and use Num for mixed-mode operations when it's needed | ||
lue | how do you write a recurring decimal in p6? | ||
TimToady | and then we dont have to write anything special for 'em | ||
colomon | lue: say 1/3 | ||
TimToady | yes, Rats | 05:22 | |
colomon | ng: say 1/3 | ||
p6eval | ng 88f018: OUTPUT«0.333333333333333» | ||
colomon | ng: say (1/3).perl | ||
p6eval | ng 88f018: OUTPUT«1/3» | ||
colomon | ng: say (1/3).WHAT | ||
p6eval | ng 88f018: OUTPUT«Rat()» | ||
TimToady | ng: say (1/3).perl | ||
p6eval | ng 88f018: OUTPUT«1/3» | ||
lue | what about .999... and .111...? I wanted to try something with them... | 05:23 | |
of course, .999... = 1 and .111... = 0. Just want to see if p6 knows this. | 05:24 | ||
colomon | ng: say 1/9 | ||
p6eval | ng 88f018: OUTPUT«0.111111111111111» | ||
lue | ng: say 1/9 = 0; | ||
p6eval | ng 88f018: OUTPUT«0.111111111111111Cannot assign to readonly valuecurrent instr.: '&infix:<=>' pc 15452 (src/builtins/Junction.pir:113)» | ||
RandalSchwartz | since when is .111111 = 0 ? | ||
colomon | ng: say (1/9)*9 | ||
TimToady | ng: say 9 * 1/9 | ||
p6eval | ng 88f018: OUTPUT«1» | ||
colomon | RandalSchwartz: since never. :) | ||
lue | or whatever .111... is equal to. | ||
I know .999... is equal to 1. | 05:25 | ||
RandalSchwartz | I'd say .11111... is equal to itself | ||
colomon | I don't think there's a way to say .9999.... in perl. Yet. | ||
(I mean, as distinct from 1 or .11111.... times 9) | |||
lue | 3/3 is both .999... and 1. | 05:26 | |
1/3=0.333...*3=1 | |||
1/3=0.333...*3=.999... | 05:27 | ||
(1/3)*3=1 | |||
colomon | afk # off to bed | ||
05:29
patspam left
|
|||
TimToady | ng: say "yes" if 1/3 * 3 == 1 | 05:30 | |
p6eval | ng 88f018: OUTPUT«yes» | ||
05:30
patspam joined
|
|||
TimToady | don't try that one in Perl 5 | 05:30 | |
lue | Heh, fun with numbers! Does P6 have the power to write π as a ratio? (π/1 doesn't count) | 05:33 | |
s1n | TimToady: seems to work for me (perl -e 'print "yes\n" if 1/3 * 3 == 1') | 05:34 | |
TimToady | bet it doesn't work for other fractions | 05:35 | |
s1n | lue: how would you express pi as a ratio given it's irrational? | ||
TimToady | we don't have an IrRat type | ||
lue | that's the point >:) | ||
s1n | TimToady: perl -e 'print "yes\n" if 7/16 * 16 == 7' | ||
TimToady | powers of 2 should always work | 05:36 | |
s1n | ahh, that's the requirement, it breaks when i do 2342345/45234214 | ||
wait, whoops | 05:37 | ||
nope, still works | |||
TimToady | maybe someone installed a fuzz onto == comparisons since I last looked | 05:38 | |
s1n | dunno, but i can't craft a number that breaks | ||
TimToady | maybe they got tired of that FAQ :) | ||
lue | hm, maybe I can invent the number ∏ for the sole purpose of the ration π/∏ ... | 05:39 | |
oops ratio | |||
ANFSCD... I want to make myself a 4 dimension person so I can "walk" through the timeline as I please. | 05:43 | ||
05:46
rv2733 joined
05:49
rv2733 left
05:50
rv2733 joined
|
|||
lue | I believe the statement that 4D *can not, in any way, possibly ever be TIME,* is (quite frankly) ignorant. | 05:50 | |
05:51
athenot joined
05:52
drbean left
05:54
rv2733 left
06:24
k23z__ joined
06:32
athenot left
06:47
simcop2387 joined,
iblechbot joined
06:49
lue left
06:56
TiMBuS joined
07:14
drbean joined
07:28
Su-Shee joined
|
|||
Su-Shee | good morning | 07:29 | |
phenny: tell vamped yes, I'm talking the art of electronics. this summer, it seems. | 07:32 | ||
phenny | Su-Shee: I'll pass that on when vamped is around. | ||
07:35
kaare joined,
kaare is now known as Guest54390
08:18
vamped joined
|
|||
vamped | hello Su-shee | 08:19 | |
phenny | vamped: 07:32Z <Su-Shee> tell vamped yes, I'm talking the art of electronics. this summer, it seems. | ||
vamped | lol. like clockwork. | ||
Su-Shee: AOE has been rumoured for 4 years. Was there anything semi-official that you saw? | 08:20 | ||
Su-Shee | vamped: it's flagged as pre-order at amazon for half a year now and wikipedia says it's comming in 2010. | 08:24 | |
vamped: I already considered hooking up all those makers and arduino freaks to send fanmail to the author. ;) | 08:26 | ||
vamped | Yes. Well the author "is working on it" and it will "take a long time." I suppose I want it done right, and not just another re-release that is not much different from the original. | 08:31 | |
Su-Shee | vamped: that's the same with this computer graphic's bible and the meyer-oo book and we never see new stevens' bibles again.. | 08:33 | |
08:36
synth joined
|
|||
vamped | same with "Programming Perl" :D - it's been 10 years since last release. | 08:36 | |
08:37
vamped left
09:00
gfx left
09:34
Chillance joined
09:46
Chillance left
09:50
fridim joined,
Chillance joined
09:51
drbean left
|
|||
colomon | ng: say 2.Num.Num | 10:00 | |
p6eval | ng 88f018: OUTPUT«2» | ||
colomon | ng: say 2.1.Num.Num | ||
p6eval | ng 88f018: OUTPUT«2.1» | ||
colomon | ng: say 2.Int.Num | ||
p6eval | ng 88f018: OUTPUT«2» | ||
colomon | ng: say Inf.sin | 10:03 | |
p6eval | ng 88f018: OUTPUT«NaN» | ||
colomon | ng: say asin(1).sin | ||
p6eval | ng 88f018: OUTPUT«1» | ||
colomon | ng: say asin(1) | ||
p6eval | ng 88f018: OUTPUT«1.5707963267949» | ||
colomon | ng: say sin(asin(1)) | ||
p6eval | ng 88f018: OUTPUT«too many positional arguments: 2 passed, 1 expectedcurrent instr.: 'sin' pc 219906 (src/gen/core.pir:4769)» | ||
colomon | ng: say Int.sin('degrees'); | 10:06 | |
p6eval | ng 88f018: OUTPUT«Use of type object as valuecurrent instr.: 'perl6;Perl6Exception;throw' pc 13784 (src/builtins/Associative.pir:118)» | ||
colomon | ng: say Inf.sin('degrees') | ||
p6eval | ng 88f018: OUTPUT«too many positional arguments: 2 passed, 1 expectedcurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
10:10
am0c left
10:11
agentzh joined
10:26
mssm joined
10:27
am0c joined
10:36
k23z__ left
10:44
pmurias joined
|
|||
pmurias | hi | 10:46 | |
colomon | o/ | 10:58 | |
11:03
agentzh left
11:10
nbrown left
11:11
nbrown joined
11:13
Rix joined
11:24
IllvilJa joined
11:26
drbean joined
|
|||
pugs_svn | r29703 | colomon++ | [t/spec]i Fudge two questionable tests that fail hard. | 11:46 | |
colomon | rakudo: say pi.Rat(1e-10) | 11:47 | |
p6eval | rakudo 1d4928: OUTPUT«3.14159265361894» | ||
colomon | rakudo: say pi.Rat(1e-10).perl | ||
p6eval | rakudo 1d4928: OUTPUT«312689/99532» | ||
pugs_svn | r29704 | colomon++ | [t/spec] Replace references to pi the constant with a local variable. | 11:51 | |
11:57
masak joined
|
|||
masak | hi #perl6. hope you had a nice Friday night. I did. :) | 11:58 | |
I'm not staying long (going swimming), but while I'm here, I might as well submit a rakudobug. | 11:59 | ||
rakudo: foo(5) { say "HAI 5!" }; foo(5) | |||
p6eval | rakudo 1d4928: OUTPUT«Confused at line 10, near "{ say \"HAI"in Main (file <unknown>, line <unknown>)» | ||
masak | erm. | ||
rakudo: sub foo(5) { say "HAI 5!" }; foo(5) | |||
p6eval | rakudo 1d4928: OUTPUT«HAI 5!» | ||
masak | rakudo: sub foo(Inf) { say "HAI INFTY!" }; foo(Inf) | ||
p6eval | rakudo 1d4928: OUTPUT«Malformed routine definition at line 10, near "foo(Inf) {"in Main (file <unknown>, line <unknown>)» | ||
masak | rakudo: sub foo(NaN) { say "NAN BREAD!" }; foo(NaN) | 12:00 | |
p6eval | rakudo 1d4928: OUTPUT«Malformed routine definition at line 10, near "foo(NaN) {"in Main (file <unknown>, line <unknown>)» | ||
12:00
mssm left
|
|||
masak submits rakuodbug | 12:00 | ||
colomon | masak: you would love the weird bugs I've been getting in ng. | 12:01 | |
masak | I'm sure. | ||
dalek | kudo/ng: b38e07b | (Solomon Foster)++ | t/spectest.data: Turn on roots.t. |
||
masak | I stumbled on this, which really is a TODO bug of sorts, because I wanted to see if Inf and NaN would match other types than Num. | ||
TimToady mentioned in the backlog that they should. | |||
12:04
mberends joined
|
|||
masak | mberends: o/ | 12:05 | |
jnthn | Good day, folks. | ||
masak | lolitsjnthn! | ||
mberends | good morning masak+jnthn | ||
masak | 'masak+jnthn' sounds like one of those freaky mech bots with big cannons as arms, destroying everything in their path. | 12:06 | |
mberends | eek! duck! | ||
masak | except we don't shoot ammunition, but bug reports and Rakudo features :) | 12:07 | |
dalek | kudo/ng: b9c1166 | (Martin Berends)++ | docs/compiler_overview.pod: [docs/compiler_overview.pod] first 25% of rewrite for ng |
||
kudo/ng: 075b8f9 | (Martin Berends)++ | (19 files): Merge branch 'ng' of github.com:rakudo/rakudo into ng |
|||
jnthn | masak: One arm shooting bugs and the other shooting fixes makes a rather schizophrenic mech bot. :-) | 12:08 | |
masak | jnthn: it's just the Yang and Yin of software development :) | ||
mberends | o noes, that second commit was not ready for release :( please kill it somebody... | ||
masak | mberends: 'git revert' and then push again? | 12:09 | |
mberends | thanks, will try that | ||
colomon | jnthn: I've got another crazy dispatch thing going on. | 12:11 | |
ng: sin(Inf) | |||
p6eval | ng 88f018: OUTPUT«too many positional arguments: 2 passed, 1 expectedcurrent instr.: 'sin' pc 219906 (src/gen/core.pir:4769)» | ||
colomon | ng: asin(.9) | 12:12 | |
p6eval | ng 88f018: ( no output ) | ||
colomon | ng: say asin(.9) | ||
p6eval | ng 88f018: OUTPUT«1.11976951499863» | ||
jnthn | ng: Inf | ||
p6eval | ng 88f018: ( no output ) | ||
jnthn | ng: say Inf | ||
p6eval | ng 88f018: OUTPUT«Inf» | ||
colomon | ng: say sin(asin(.9)) | ||
p6eval | ng 88f018: OUTPUT«too many positional arguments: 2 passed, 1 expectedcurrent instr.: 'sin' pc 219906 (src/gen/core.pir:4769)» | ||
dalek | kudo/ng: 4aa2add | (Martin Berends)++ | (19 files): Revert "Merge branch 'ng' of github.com:rakudo/rakudo into ng" changes made to b9c1166a4512cee2daf8f7face4ad3331b941780. |
12:13 | |
jnthn | ng: asin(Inf) | ||
p6eval | ng 88f018: OUTPUT«too many positional arguments: 2 passed, 1 expectedcurrent instr.: 'asin' pc 220247 (src/gen/core.pir:4871)» | ||
colomon | jnthn: I think we could really really use a version of that message that actually printed what the arguments and candidates were. | ||
Either that or I need a dispatch internals debugging lesson. | 12:14 | ||
masak | mberends: seems you only reverted the merge commit, and not the 25% rewrite commit. | ||
mberends | warning: mberends-- may have messed up some source files. build with caution | ||
colomon | ng: say Inf.sin | 12:15 | |
p6eval | ng 88f018: OUTPUT«NaN» | ||
mberends | masak: the 25% rewrite is OK, that's the only one I wanted to commit | ||
colomon | ng: say Inf.sin('degrees') | ||
jnthn | ng: &asin.candidates>>.signature>>.perl>>.say | ||
p6eval | ng 88f018: OUTPUT«too many positional arguments: 2 passed, 1 expectedcurrent instr.: '_block14' pc 29 (EVAL_1:0)» | ||
ng 88f018: OUTPUT«Symbol '&asin' not predeclared in <anonymous>current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)» | |||
jnthn | wtf | 12:16 | |
masak | mberends: there's a way to avoid making merge commits when pulling with git. it's spelled "git pull --rebase origin <branch>" | ||
mberends | silly me, I remember that.... now | ||
masak | it's a very nice aspect of git. it means, "pull, but pretend the work I just did comes after the things I pull". | 12:17 | |
anyway. swimming. | 12:18 | ||
mberends | and that can be automated in a config file too, somehow | ||
masak | probably. | ||
I don't think I'd want it on by default, though. | |||
mberends | enjoy the swim! | ||
masak | will be back later to pester you all with rakudobugs and bad puns. :) | ||
12:18
masak left
|
|||
jnthn | oh, there were puns? I should bother to backlog! | 12:18 | |
mberends | jnthn: you can't backlog the future... yet | 12:19 | |
wait long enough and it works | |||
jnthn | oh | ||
That's disappointing. | 12:20 | ||
.oO( Why isn't the future out yet? ) |
|||
colomon | the lack of puns or the insanity of sin? | ||
jnthn | colomon: Both...though the second is more sinful than disappointing. :-) | ||
colomon: I'll take a look soonish. Need coffee. | 12:21 | ||
colomon | ng: &asin.candidates>>.signature>>.perl>>.say | ||
p6eval | ng 88f018: OUTPUT«sh: ./perl6: No such file or directory» | ||
colomon | jnthn: roger. | 12:22 | |
spinclad | colomon: yes? | 12:23 | |
colomon | spinclad: hmmm? | 12:24 | |
jnthn | :-) | ||
spinclad | roger: that's me. | 12:25 | |
colomon | Ah. | ||
Apologies for accidentally invoking you. | 12:33 | ||
12:36
iblechbot left
|
|||
pugs_svn | r29705 | pmurias++ | [mildew] '1' gets converted to SSA correctly | 12:39 | |
r29706 | pmurias++ | [mildew] refactored the conversion into ssa into subroutines | |||
jnthn | mberends: Erm. | 12:56 | |
mberends: I think that revert did something really odd. | 12:57 | ||
pugs_svn | r29707 | pmurias++ | [mildew] -Cssa executes the transformed AST | ||
r29708 | pmurias++ | [mildew] inner molds are converted to ssa too | |||
pmurias | ruoso: the transformation to SSA is begining to work :) | ||
12:59
rv2733 joined
|
|||
jnthn | mberends: It seems that it somehow reverted a bunch of changes from yesterday. | 12:59 | |
Though the merge patch you reverted seemed to re-do the ones from yesterday too | |||
jnthn is confused | |||
mberends | jnthn: mea culpa :( I think I un-committed some other peoples' commits | ||
lots of FAIL here too | 13:00 | ||
jnthn | Essentially commit b9c1166a4512cee2daf8f7face4ad3331b941780 (the one where you added the 25% change to the doc) looks fine. | 13:01 | |
jnthn pulls and sees if he can clear up | 13:02 | ||
mberends | what happened here was, I forgot to git pull before adding the 25% pod update | ||
then I stashed, pulled, applied the stash, pushed. Then the mess erupted. | 13:03 | ||
jnthn | mberends: Mighta got it sorted, testing. | 13:04 | |
13:05
patspam left
|
|||
jnthn | oh huh | 13:12 | |
mberends | is that good or bad? | 13:13 | |
jnthn | Heh | ||
Forgot that after a revert you gotta commit the revert :-) | |||
Done and pushed | 13:14 | ||
My tree here seems to have everything in it. | |||
So think we're OK again. | |||
Oddness. :-/ | |||
colomon | \o/ | ||
jnthn | colomon: I reproduced your sin issue. | ||
mberends | pulled, testing | ||
colomon | jnthn: I'm hoping you mean in a way which makes it comprehensible? | ||
jnthn | colomon: Trying to work out why it's failing. | 13:15 | |
13:15
drake1 joined
|
|||
drake1 | hello | 13:16 | |
dalek | kudo/ng: b7fb2e1 | jonathan++ | (19 files): Revert "Revert "Merge branch 'ng' of github.com:rakudo/rakudo into ng"" |
||
drake1 | how far is perl6 before it's safe to use? | 13:17 | |
mberends | drake1: we're aiming for a major milestone release called Rakudo * in April | 13:18 | |
jnthn | drake1: Depends what you want to use it for. :-) For experimentation and learning the language, it's safe now, I guess. :-) | ||
drake1 | for instance, I wrote my own little language you can use for inspiration www.gangsterfreak.com/cslib/cut/csconf :) | 13:19 | |
jnthn | colomon: OK, found something curious. | ||
ng: say 1.5.sin('radians') | |||
p6eval | ng 4aa2ad: OUTPUT«sh: ./perl6: No such file or directory» | ||
drake1 | jnthn: just when I can build it for my CD distros | ||
colomon | > say 1.5.sin('radians') | 13:20 | |
Any.sin 1.5 radians | |||
Num.sin 1.5 radians | |||
0.997494986604054 | |||
jnthn | colomon: Now do Inf.sin('radians') | ||
colomon: Seems to be different between Rat and Num. | 13:21 | ||
:-/ | |||
drake1: The Rakudo * release planned for April is probably more suitable for that. | |||
colomon | > say 1.5.Num.sin('radians') | ||
Num.sin 1.5 radians | |||
drake1 | ok | ||
colomon | 0.997494986604054 | ||
drake1 | jnthn: is it very different than perl5 or is the non-library systax like the good old one? | 13:22 | |
colomon | btw, jnthn, my slightly hacked sin.t passed 992 tests last night before hitting this issue. | ||
jnthn | drake1: It's really rather different. | ||
drake1 | jnthn: so it wont replace the earlier version | 13:23 | |
jnthn | drake1: Perl 6 should be seen more as "another language in the Perl family" rather than "Perl 5's replacement" | ||
drake1 | nice | ||
jnthn | drake1: Right. We install a perl6 binary. | ||
And leave /usr/bin/perl as Perl 5. :-) | |||
drake1 | very nice | ||
jnthn | The two are meant to co-exist. :-) | ||
colomon: Wow | |||
13:23
apeiron joined
|
|||
jnthn | colomon: I'm trying to investigate what's up, it's not obvious. :-/ | 13:23 | |
drake1 | I've heard the reference notation has change a bit | 13:24 | |
jnthn: what about things like use strict; and regular expression with slashes? | 13:25 | ||
jnthn | drake1: use strict is the default in Perl 6. Regular expressions still can be written between slashes, though regex syntax has changes (not everything changed, though... /^\d+$/ for example still works just fine :-)). | 13:26 | |
drake1 | perfect | 13:27 | |
then I probably wont need the old one at all | |||
jnthn: and pack is still a standard func? | |||
jnthn | drake1: Not sure about pack, sorry...maybe somebody else knows. | 13:29 | |
drake1 | hm | ||
maybe I should try it | 13:30 | ||
jnthn | rakudo: pack | ||
p6eval | rakudo 1d4928: OUTPUT«Could not find non-existent sub packin Main (file src/gen_setting.pm, line 324)» | ||
jnthn | Ah. | ||
drake1 | ok | ||
then it's more friendly for the kids | 13:31 | ||
jnthn | drake1: I think "not yet implemented, not sure on if it's in the specification" is the best I can answer on that. | ||
drake1 | hehe | ||
jnthn | :-) | ||
colomon | I believe pack is intended to be implemented, but the spec isn't worked out yet. | ||
jnthn | colomon: Ah, OK, cool. :-) | ||
drake1 | I think it should be standard though, it's one of the best for quick oneliners | ||
colomon | Buf is still largely unspec'd, isn't it? | ||
jnthn | colomon: Yeah, I think it's intentions are understoodish, and its details need somebody to write a first cut implementation and see how it works out. | 13:32 | |
colomon | And pack is a Buf function. | ||
jnthn | Ah | ||
Yeah, you're right. | 13:33 | ||
13:33
mssm joined
|
|||
colomon | jnthn: could some of the Num.sin calls be somehow slipping through to Parrot's version of sin? | 13:34 | |
jnthn | colomon: I don't see how that would happen. | 13:35 | |
colomon | jnthn: I don't have any idea how, but it's I'm pretty sure all of rakudo's versions of sin take two arguments, and parrot's only takes one... | ||
jnthn | Oh, hang on... | ||
drake1 | actually I may write a perl interface for my newly invented binary executable object format, is the binary interface for perl6 alot different? | 13:37 | |
13:38
pmurias left
|
|||
colomon | drake1: I'm not sure exactly what you mean, but the answer is almost certainly yes. Rakudo is pretty drastically different than perl 5. | 13:38 | |
drake1 | colomon: I mean the XS interface | 13:39 | |
not the shell pipe open | 13:40 | ||
jnthn | drake1: Then *very* different. | ||
drake1 | ok | ||
maybe you have a doc with the outline? | |||
and what about typeglobs, are you going to continue the use? | 13:41 | ||
jnthn | We don't have anything solid yet - the best thing on offer at the moment is actually a module, which can be found at github.com/quietfanatic/link-c | 13:42 | |
drake1 | ok | ||
(trying to find a pen for a note | |||
got it | 13:43 | ||
jnthn | colomon: That Parrot sin method thought may be a good one... | ||
colomon | jnthn: would there be parrot docs foR drake1's binary interface. | 13:44 | |
? | |||
drake1 | seems like link-c | ||
jnthn | colomon: Perhaps, but then you gotta know how to dive down to the Parrot level to do bits too. | ||
13:44
jcharlot joined
|
|||
jnthn | drake1: Essentially though, Rakudo compiles Perl 6 down to bytecode that runs on the Parrot VM, and it provides the guts of the native calling stuff. | 13:45 | |
link-c is built atop of those. | |||
colomon: You were spot on. | 13:46 | ||
:-) | |||
drake1 | like for dynamic links or what you mean? | ||
jnthn | drake1: For calling functions in an external library. | ||
drake1 | sweet | ||
jnthn | drake1: The intention is that you don't need a glue layer any more. | ||
drake1 | but the type must be set | 13:47 | |
jnthn | drake1: Eventually, we want to have something nice and declarative at the Perl 6 level. | ||
drake1: However, it's one of the parts of Perl 6 that's still very much a work in progress. :-) | |||
13:47
athenot joined
|
|||
jnthn | Yeah, Perl 6 lets you write types in signatures, so we can hopefully get something nice. | 13:47 | |
drake1 | please let me know if I can be of any help [email@hidden.address] | ||
jnthn | Well, playing with stuff and reporting bugs is always welcome. :-) | 13:48 | |
colomon: I has a fixish thing. :-) | |||
drake1 | only found one bug in the perl core so far, but it was the new version of od in the bin that changed the display instead | ||
colomon | \o/ | 13:49 | |
13:49
jcharlot left
|
|||
jnthn | drake1: Perl 6 is at a much earlier stage, so I'm afraid for now there's many more bugs to find. | 13:50 | |
drake1: We're working hard at stomping on 'em though. :-) | 13:51 | ||
drake1 | sure | ||
hehe | |||
im trying to find some in my own source codes but I can't | 13:52 | ||
completely auto-generated C | 13:53 | ||
jnthn | colomon: spectesting then will push if all is well | ||
colomon | \o/ | ||
13:54
TiMBuS left
|
|||
jnthn | colomon: pushed | 13:58 | |
colomon: I plan to work on captures, nested signatures, etc a bit today. | 14:00 | ||
dalek | kudo/ng: 6090323 | jonathan++ | src/cheats/num.pm: Make sure NaN, Inf etc are Perl 6 Nums, not Parrot Floats, so we dispatch to the right sin, etc. |
14:02 | |
drake1 | you can make nice graphs with gnuplot if you're going to test the math stuff | 14:03 | |
colomon | jnthn: that seems to clear up the sin(Inf) issue, but not the nearly identical asin issue. hold a moment and I'll get you a test case. | 14:08 | |
14:08
drbean left
|
|||
colomon | ng: say sin(asin($desired_result)) | 14:08 | |
p6eval | ng b7fb2e: OUTPUT«Symbol '$desired_result' not predeclared in <anonymous>current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)» | ||
colomon | ng: sin(asin(0)) | 14:09 | |
jnthn | colomon: There's a high probability that it's a similar issue | ||
p6eval | ng b7fb2e: OUTPUT«too many positional arguments: 2 passed, 1 expectedcurrent instr.: 'sin' pc 219906 (src/gen/core.pir:4769)» | ||
jnthn | colomon: That is, somewhere we're ending up with a Parrot Float, not a Perl 6 Num | ||
drake1 | whats that .pir ? | ||
colomon | and that still happens in my build here with Inf fixed. | 14:10 | |
jnthn | colomon: Right, I guess asin must be returning a Parrot Float then. | ||
colomon | jnthn: oh, could it be in the result of sin, asin, etc is a Parrot Float. | ||
jnthn | brb, making some lunch. | ||
mberends | drake1: docs.parrot.org/parrot/latest/html/...o.pod.html | ||
drake1 | thanks | 14:11 | |
it almost rhymes on one of my alias names hehe | |||
colomon | ng: say sin(sin(0)) | 14:12 | |
p6eval | ng b7fb2e: OUTPUT«0» | ||
colomon | ng: say sin(pir::asin__Nn(0)) | 14:13 | |
p6eval | ng b7fb2e: OUTPUT«0» | ||
colomon | ng: say sin(pir::asin__Nn(0.5)) | 14:14 | |
p6eval | ng b7fb2e: OUTPUT«0.5» | ||
drake1 | so perl6 uses the sine maps from the local FPU environment? | 14:15 | |
colomon | drake1: it uses the Parrot sine, which I expect is the local FPU. | 14:16 | |
drake1 | hm | ||
thought you meant suspect | |||
colomon | jnthn: I need to be away from the keyboard a bit, but it looks to me like the problem must somehow be in Any!from-radians | ||
jnthn | colomon: ah, ok | 14:17 | |
colomon | jnthn: see the above direct calls to pir, and the fact that sin and asin have the same Nn signature | ||
but I completely cannot understand what might be wrong with !from-radians, particularly as this is the radians case, which just returns self. | |||
14:20
lichtkind joined
|
|||
colomon | afk | 14:21 | |
14:26
TiMBuS joined
14:27
drake1 left
14:33
apeiron left
|
|||
mberends | ng 6090323 todos 76, skips 324, passes 3966 out of 4366 tests! | 14:37 | |
jnthn | Almost 4000! | 14:38 | |
Wow, that was an unhealthy lunch. :-) | |||
colomon | :) | 14:45 | |
jnthn | Don't see immediately hwy !from-radians is wrong...as you say, it just returns self. | 14:50 | |
ng: say PARROT(4.2e1) | 14:51 | ||
p6eval | ng 609032: OUTPUT«sh: ./perl6: No such file or directory» | ||
jnthn | oh, here's an interesting one. | ||
> say PARROT(sin(4.2e1)) | |||
Num | |||
> say PARROT(asin(4.2e1)) | |||
Float | |||
lichtkind | mberends: moin | 14:53 | |
jnthn | > say PARROT(pir::asin__Nn(4.2e1)) | ||
ng: say PARROT(pir::asin__Nn(4.2e1)) | |||
p6eval | ng 609032: OUTPUT«Num» | ||
jnthn | ng: say PARROT(pir::asin__Nn(4.2e1)!from_radians('radians')) | 14:54 | |
p6eval | ng 609032: OUTPUT«Method '!from_radians' not found for invocant of class 'Float'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
14:55
snarkyboojum joined
|
|||
jnthn | ng: say PARROT(pir::asin__Nn(4.2e1)!from-radians('radians')) | 14:56 | |
p6eval | ng 609032: OUTPUT«Float» | ||
pmichaud | good morning, #perl6 | 14:58 | |
jnthn | morning, pmichaud | 15:01 | |
colomon: from_radians is indeed going to the "just hand back self" branch, so I'm rather mystified as to how things go wrong there, though clearly it looks like they are. | 15:02 | ||
*from-radians, that is. | |||
colomon | yup, that's a weird one, all right. | 15:08 | |
pmichaud | okay, what's on the list of things that need fixing today? | 15:13 | |
15:13
rv2733 left
|
|||
colomon | pmichaud: how hard would constants be to do? I keep on bumping into the lack of pi. | 15:14 | |
pmichaud | checking | ||
jnthn: ping | 15:21 | ||
jnthn | pmichaud: p0ng | ||
pmichaud | in Grammar.pm:116, where we look up barewords to see if they're known names, why do we do all of the checks for Abstraction/P6protoobject/Perl6Role ? | 15:22 | |
jnthn | pmichaud: What would you expect to see? | 15:23 | |
pmichaud | naively, anything that is named in the namespace. | 15:24 | |
jnthn | An our sub would be named in the namespace too though? | ||
pmichaud | i.e., if the symbol exists, then it's a known "name" | ||
an our sub wouldn't be a bareword | |||
because they begin with & | |||
(yes, that _used_ to be the case in master :-) | |||
jnthn | I dunno...that may be a little too naiive. | 15:25 | |
You're right that we maybe would get away with it now. | |||
We could try it. | |||
pmichaud | well, I agree, but we have the case of constant foo = 3 which will put "foo" into the namespace | ||
so we're no longer just looking for abstraction/protoobject/p6role | 15:26 | ||
jnthn | Yeah, true. | ||
We didn't have the issue in master since constants were lexically scoped there. | |||
pmichaud | right | ||
jnthn | We never caught up with the our-scoped change. | ||
I don't see any immediate problems with saying "bareword and in the namespace = known name" | 15:27 | ||
pmichaud | the one place that might bite us is parrot's method-in-namespace bug | ||
jnthn | Yes. | ||
pmichaud | because methods end up in the namespace without the '&' | ||
but actually, given the way we build our methods now, I suspect that might not be the case | |||
jnthn | Even if you :nsentry('') them? | ||
pmichaud | well, I'll remove the checks and see what happens | 15:28 | |
jnthn | Is there a reason we can't :anon methods now, by the way? | ||
pmichaud | it doesn't mean what we think it means :-( | ||
jnthn | I thought it just meant "don't put it in the namespace"? | ||
pmichaud | basically (unless chromatic++ has already fixed it), :anon had the effect of not registering it as a method, iirc | ||
jnthn | We don't care though. | 15:29 | |
pmichaud | oh, that's true. | ||
jnthn | I don't think I even emit :method on methods any more. | ||
We add them all through the meta-model. | |||
.^add_method... | |||
pmichaud | anyway, I'll try removing the checks and we'll see what breaks. | ||
jnthn | OK | ||
tbh that code was rather inspired by master anyway | 15:30 | ||
:-) | |||
pmichaud | yeah | ||
also, I notice a quite a few | |||
my $test := pir::get_hll_global__PPS(@parts, $final); | |||
__PPs is much more efficient than __PPS | |||
jnthn | Remind me what uppercsae vs lowercase means again? | ||
pmichaud | (well, maybe not *much*, but the __PPS version ends up creating a string register) | ||
uppercase == *must* be a register | 15:31 | ||
jnthn | Ah, OK | ||
pmichaud | lowercase == may be a constant or register | ||
jnthn | OK. | ||
btw, in S02: | |||
A parcel may be captured into an object with backslashed parens: | |||
$args = \(1,2,3,:mice<blind>) | |||
Does that read to you as "what's in $args after this is a Capture"? | |||
pmichaud | yes. | ||
jnthn | OK, good. | ||
The wording just felt a bit...odd. :-) | 15:32 | ||
Hmm...this in S02 is fossil, I guess: | 15:39 | ||
In item context, though, the implied parentheses are not removed, so | |||
$a = < a b >; | |||
is equivalent to: | |||
$a = ('a', 'b'); | |||
which, because the list is assigned to a scalar, is autopromoted into | |||
a C<Capture> object: | |||
$a = \('a', 'b'); | |||
15:40
Psyche^ joined
|
|||
lichtkind | does anybody know who writes lith-ology.blogspot.com ? | 15:40 | |
pmichaud | jnthn: yes, fossil. | ||
jnthn | Good. | ||
pmichaud | colomon: how would you like pi to be initialized? | ||
and, where should we put it? ;-) | 15:41 | ||
colomon | pmichaud: Hmmm... Num.pm? | 15:42 | |
pmichaud | looks like it goes in Numeric | ||
keep in mind we have to have it defined before any function/method that uses it, also | 15:43 | ||
(S32 says Numeric) | |||
C<Numeric> provides some constants in addition to the basic | |||
mathematical functions. | |||
constant pi is export = 3.14159_26535_89793_23846_26433_83279_50288; | |||
colomon | right but we don't have Numeric this week, do we? | ||
:) | |||
also, there's another issue there... | |||
pmichaud | we can create a Numeric.pir, though, and just put 'pi' in it :) | ||
colomon | ng: my $pi = 3.14159_26535_89793_23846_26433_83279_50288 | ||
p6eval | ng 609032: OUTPUT«PAST::Compiler can't compile node of type BigIntcurrent instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)» | ||
15:44
Psyche^ is now known as Patterner
|
|||
pmichaud | yeah, we need something to detect when we're outside the boundaries of Rat | 15:44 | |
colomon | which is to say, it tries to construct it as a Rat and fails miserably. | ||
lichtkind | pmichaud: fossil is the author? | ||
colomon | pmichaud: shouldn't it be Numeric.pm? Or does it have to be in the pir world? | 15:45 | |
pmichaud | lichtkind: I was replying to jnthn | ||
colomon: initially it probably needs to be in the pir world, unless 'constant' is already implemented | |||
jnthn | No, it's not. | ||
colomon | ah, okay. Numeric.pir it is. :) | ||
pmichaud | then I'll put it in the pir world as a cheat for now | ||
jnthn | Though since it's just "stick this thingy in the namespace" it should be relatively easy. :-) | 15:46 | |
pmichaud | right | ||
jnthn: no issues with changing the name test (yay!) | |||
at least, we pass spectest | |||
jnthn | pmichaud: I doubted there would be. | 15:47 | |
:-) | |||
Just the method one we may hit, but that's likely not a big deal for now. | |||
dalek | kudo/ng: 00da096 | pmichaud++ | src/Perl6/Grammar.pm: Modify the is_name() test to be less discriminating. All spectests |
15:48 | |
pmichaud | Currently we have src/cheats/setup-io.pm, but it looks like it's starting to initialize more than just the io process vars | 15:51 | |
perhaps a src/cheats/constants.pir instead ? | |||
jnthn | pmichaud: Oh, that was me being lazy and thinking "heh, it's in cheats anyway" :-) | ||
pmichaud: I'm curious what the non-cheat version of that lot should look like | 15:52 | ||
Anyway, yes, feel free to rename... | |||
pmichaud | well, we might not be able to avoid the cheat there.... that somewhat gets into "knowhow" issues | ||
it may be that we want src/knowhow/parrot/... for that sort of stuff :) | |||
jnthn | knowhow? | ||
pmichaud | well, whatever we use to say "this is the parrot-specific internals the compiler has to know about" | 15:53 | |
jnthn | I was pondering more a src/backend/parrot/ etc structure | ||
pmichaud | that works too. | ||
although maybe it's just src/vm/parrot | |||
jnthn | That's better. | ||
I wrote the last one and looked at it like "eww, long" | |||
[particle] | or rts (runtime system) | ||
pmichaud | i.e., things that really can't be "cheats" but also are vm-specific | 15:54 | |
jnthn | Yeah | ||
I'd rather we defer any re-structuring like that until we're actively working on an additional backend though. | |||
pmichaud | hmmm.... I didn't think that $*OS was a string | ||
jnthn | Oh? | ||
oh, wrose | 15:55 | ||
S02 doesn't evne name it. | |||
pmichaud | right, it's now $*DISTRO | ||
lichtkind | so nobody knows here who is lithology | ||
pmichaud | lichtkind: no, I don't. | 15:56 | |
oh, wait | |||
might be able to find it in the mailing archives | |||
jnthn | Is that the guy who writes teh summaries? | ||
lichtkind | yes | ||
in the blog software is no name | |||
pmichaud | lichtkind: lists.parrot.org/pipermail/parrot-d...03668.html | ||
has the name, email address, etc. | 15:57 | ||
lichtkind | pmichaud: thanks, but there is a nick , no clear name :) | 15:58 | |
pmichaud | there's an email address :) | ||
echo "Who are you?" | mail [email@hidden.address] # :-) | 16:00 | ||
lichtkind | true :) | 16:01 | |
16:03
nihiliad joined
16:07
iblechbot joined
16:14
nadim joined
|
|||
colomon | rakudo: say pi.Rat(1e-10).perl | 16:15 | |
p6eval | rakudo 1d4928: OUTPUT«312689/99532» | ||
pmichaud | > say pi | ||
3.14159265358979 | |||
colomon | ooooooo. | 16:16 | |
pugs_svn | r29709 | lichtkind++ | submit 2 perl 6 talks, made and held by lichtkind | ||
pmichaud | > say e | ||
2.71828182845905 | |||
16:16
justatheory joined
|
|||
pmichaud | test then commit then push :) | 16:16 | |
16:18
Trashlord joined
|
|||
jnthn | Yay, first pieces of Capture coming together. | 16:21 | |
Trashlord | yay! | ||
jnthn | colomon: BTW... | ||
t\spec\S32-num\roots.rakudo ................................... Failed 4/44 subt | |||
ests | |||
colomon: I've been seeing this since roots.t was added back. | |||
It may be platform specific. | |||
colomon | works on mine. hmmm.... | 16:22 | |
I checked in all my changes to it... | |||
which tests are failing? | 16:23 | ||
jnthn | Failed tests: 4, 6, 8, 10 | 16:24 | |
If they involve NaNs or Infs, then *very* likely platform issue. | |||
In also have abs.t: | 16:25 | ||
TODO passed: 9-10, 14-15, 29-30, 34-35 | |||
And sign.t: | |||
Failed test: 29 | |||
I may try a run on my laptop at some point though...using a newer version of the compiler on there. | |||
colomon | jnthn: I have the abs.t todo passes here, too. The issue is it's a big loop and some of the values work and some fail. | ||
jnthn | Ah, OK | 16:26 | |
np then. | |||
colomon | I tried looking into again the other day. | ||
ng: say 0.abs.WHAT | |||
p6eval | ng 00da09: OUTPUT«Num()» | ||
colomon | ng: say PARROT(0) | ||
p6eval | ng 00da09: OUTPUT«Integer» | ||
jnthn | oh, damm | ||
Our integer constants are being made as Parrot Integer rather than Perl 6 Int? Hm. | |||
colomon | I dunno, just thought of trying that. | 16:27 | |
ng: say PARROT(0.Int) | |||
p6eval | ng 00da09: OUTPUT«Integer» | ||
colomon | ng: say 4.abs.WHAT | ||
p6eval | ng 00da09: OUTPUT«Num()» | ||
colomon | ng: my Int $a = 3; $a++; say PARROT($a); say $a.abs.WHAT | 16:28 | |
pmichaud | we might be type-mapping Float->Num, but I don't think we've done that for Integer->Int. Last time I tried that, I think it made Rakudo unbearably slow. | ||
p6eval | ng 00da09: OUTPUT«ObjectRef->IntegerNum()» | ||
jnthn | colomon: In Actions.pm, there's a line | ||
if $<integer> { make PAST::Val.new( :value($<integer>.ast) ); } | |||
Maybe add a :returns('Int') and see if that helps. | |||
pmichaud | jnthn++ | ||
jnthn | We had that in master | ||
dalek | kudo/ng: f90dfa8 | jonathan++ | (5 files): Stub in Capture, add capture and capterm in the grammar and actions for them, and add Parcel.Capture for coercing a Parcel to a Capture (capterm is implemented in terms of this; we need it anyway for other bits). |
||
jnthn | Heh, Parcel.Capture is a step towards my (siggy here) := foo(); too :-) | 16:29 | |
That said, I ain't quite figured out yet, how on earth we know that the decl is meant to return a signature rather than a list that we need for assignment. | 16:30 | ||
Oh, maybe I know how we can... | |||
Anyway, that's not on today's hit list. :-) | |||
pmichaud | the answer would have to be that it always returns a signature, and that assignment to a signature knows how to dtrt | ||
jnthn | pmichaud: I was thinking more that we could resolve it at compile time... :-| | 16:31 | |
In the reducecheck or some such. | |||
pmichaud | maybe, but that feels wrongish to me | ||
jnthn | Why? | ||
pmichaud | because then assignment is having to do additional checks of the lhs | ||
I think it much more likely that we'll need a way to convert Signature objects into a parcel of the things in the signature | 16:32 | ||
(for other operations as well) | |||
jnthn | I was pondering making it produce a PAST node that is the list of variables that list assignment needs, but tagging it with the Perl6::Compiler::Signature, and binding knows that if it gets something on the LHS tagged with one of those it should grab that and use it instead. | 16:33 | |
We can do it the other way. | |||
pmichaud | what about something like | ||
foo(my ($a,$b)); | |||
jnthn | std: foo(my ($a,$b)); | ||
p6eval | std 29709: OUTPUT«Undeclared routine: 'foo' used at line 1ok 00:01 109m» | ||
jnthn | Heh | ||
What does that mean? :) | |||
pmichaud | std: say(my ($a,$b)); | 16:34 | |
p6eval | std 29709: OUTPUT«ok 00:01 107m» | ||
jnthn | It'd want the list of variables there anyway. | ||
pmichaud | right | ||
but it's hard to determine that syntactically, I think. | |||
jnthn | I was meaning syntactic on the := | ||
dalek | kudo/ng: aa4e264 | pmichaud++ | (2 files): Add "pi" and "e" constants. |
||
kudo/ng: a3054f5 | pmichaud++ | (5 files): Merge branch 'ng' of [email@hidden.address] into ng |
|||
jnthn | That is, it's always a list apart from in that case. | ||
pmichaud | okay, then the reason I don't like it is that we'd have to do add syntactic checks on := where they aren't currently present. | 16:35 | |
perhaps we should ask TimToady++ if he thinks that signature binding is more of a syntactic construct or a runtime-thingy. | |||
jnthn | I'm tend to prefer making static decisions when we can... | ||
Yes, good idea. | 16:36 | ||
I'd been thinking of it as a syntactic one. | |||
But that could well be wrong. | |||
pmichaud | well, "prefer making static decisions" sounds like "optimization" to me. | ||
jnthn | Optimization but also predictability. :-) | ||
pmichaud | static-as-optimization feels different to me than static-as-specification | ||
jnthn | Sure | 16:37 | |
pmichaud | ooc, is it possible to get a Signature object into a scalar? | ||
jnthn | OK, we get a ruling from TimToady++. :-) | ||
pmichaud | or to have a function that returns a signature object? | ||
jnthn | I don't see why my $x = :(...); wouldn't work. | 16:38 | |
They're "just objects" in a sense. | |||
colomon | jnthn: doesn't see to compile with :returns('Int') ? I put it after :value() ... | ||
jnthn | Error? | ||
pmichaud | jnthn: if it's possible to get a non-syntactic signature on the lhs of :=, then we'd have to handle it as a runtime thingy | ||
jnthn | colomon: You did put a comma in too? :value(...), :returns('Int') | ||
pmichaud | fn-returning-signature() := .... | 16:39 | |
jnthn | pmichaud: Hmm | ||
colomon | nope, that must be it. | ||
TimToady | my brane is in sideways today due to a sinus infection, but it seems to me that a reducecheck is conservative, and can be generalized later if desired | ||
jnthn | pmichaud: Well, I was planning to make that work anyway. | ||
pmichaud | jnthn: right, in which case that part isn't syntactic :-) | ||
jnthn | pmichaud: The issue I had was more that we expect my ($a, :$b) = ... and my ($a, :$b) := ... to mean differnt things. | ||
That is, we expect a different thing on the LHS. | 16:40 | ||
pmichaud | jnthn: which is why I think we expect a same thing on the LHS (a signature), and simply write Signature!STORE | ||
for assignment | |||
jnthn | I can go with that, I just didn't fancy making every list assignment slower and much more complex. | ||
pmichaud | it shouldn't be significantly slower. | 16:41 | |
and Signature!STORE can be optimized | |||
jnthn | Which it will, because the signature will have to go look in the lexpad of its caller for all of the variables. | ||
TimToady | It's not clear to me that 'my' returns a signature | ||
pmichaud | ah, good clarification :) | ||
jnthn | TimToady: Let me take a step back a bit. | ||
colomon | > say PARROT(0) | ||
Int | |||
> say 0.abs.WHAT | |||
Int() | |||
TimToady | though you still have :() = | ||
jnthn | sub foo() { return 1, :a<2>; } | 16:42 | |
TimToady | returns Parcel, I think | ||
jnthn | my ($a, :$b) = foo(); # list assignment of the Parcel from foo, so $a gets 1, $b gets a Pair | ||
pmichaud | why the :? | 16:43 | |
jnthn | my ($a, :$b) := foo(); # signature binding, $a gets 1, $b gets 2 | ||
pmichaud: It was to contrast with the example that followed it. | |||
pmichaud | I mean the colon in :$b ? | ||
jnthn | Named parameter. | ||
pmichaud | in which case it's not bound from a positional argument | ||
jnthn | What's parsed after my is a signature. | ||
TimToady | I'm not sure we have to support assignment to any possible signature | 16:44 | |
jnthn | But....we're not doing signature binding, but list assignment there. | ||
pmichaud | okay, then your second case is wrong. | ||
jnthn | I've been uncomfortable with this area of the spec before, fwiw. | ||
No, because in the second case, we are doing binding. | |||
pmichaud | why would :$b get the :a<2> ? | ||
TimToady | I don't see why we have to support list assignment to a fancy signature | ||
pmichaud | they have different names | ||
jnthn | pmichaud: oh gah | 16:45 | |
I mean :b<2> | |||
Sorry | |||
TimToady | list assignment shouldn't have to worry about named parameters *at all* | ||
16:45
masak joined
|
|||
jnthn | TimToady: Are you saying that a signautre that has things in it other than positionals gets them discounted, or it's an error to have an excessively complex signature there if'll moan? | 16:45 | |
TimToady | yes | ||
jnthn | TimToady: OK. So | ||
16:45
TiMBuS left
|
|||
jnthn | sub foo() { return 1, :b<2> } | 16:46 | |
my ($a, $b) = foo(); # fine, $a has 1, $b has a Pair | |||
TimToady | yes | ||
jnthn | my ($a, :$b) = foo(); # error? | ||
And error when if so? | |||
TimToady | reducecheck sez "Too fancy to assign to" | ||
pmichaud | what about a signature object, as opposed to a declar? | 16:47 | |
jnthn | And finally, my ($a, :$b) := foo(); # $a gets 1, $b gets 2? | ||
TimToady | binding should work consistently, modulo rw concerns | 16:48 | |
lisppaste3 | colomon pasted "With the return Int patch" at paste.lisp.org/display/94909 | ||
jnthn | TimToady: "consistently"? | ||
TimToady | same as parameter binding | ||
colomon | split-simple2 I've been getting. abs.t has more todo passes, great. | 16:49 | |
jnthn | TimToady: OK. | ||
pmichaud | what about assignment to a signature object (that has named params)? | ||
TimToady | as in, "oops, I got a Parcel, need a Capture, so .Capture it" | ||
16:49
Su-Shee left
|
|||
TimToady | how the heck to you assign to a signature object? | 16:49 | |
*do you | |||
pmichaud | fn-returning-signature() = ... ? | ||
jnthn | :($a, :$b) = 1, :b<2>; | ||
TimToady | if $sig = ... it replaces the sig | ||
colomon | basic-types.t seems to be missing its last test, and pointy.t and arity.t are both quitting early. | ||
pmichaud | if not possible, no problem. | ||
TimToady | I suspect we can just outlaw that for now | 16:50 | |
jnthn | I guess the above is just a "Can not write to readonly thingy" | ||
pmichaud | whatever we do to outlaw that can also be used to outlaw the my ($a, :$b) = ... thing | ||
TimToady | we can do anything conservative we like, as long as it doesn't admit possiblities that will have to be outlawed later | ||
pmichaud | granted that reducecheck can make it a compile-time check instead of a runtime one | ||
but we'd still need the runtime check | |||
TimToady | pmichaud: I think that's different | 16:51 | |
jnthn | TimToady: The one I struggle with a bit in this area too is... | ||
my ($a, :$b) := foo(); # works, does what's expected | |||
:($a, :$b) := foo(); # what to do here? | 16:52 | ||
Since I kinda expect them both to call some kinda !BIND method on Signature or some such. | |||
pmichaud | fwiw, current rakudo-ng plan is that infix:<:=> is a standard operator (multisub) | 16:53 | |
jnthn | But IIRC, the second is meant to do, well, nothing. | ||
TimToady | sure, but it's probably declaring a $a and $b inside the sig and then throwning them away | ||
I think that's even specced somewhere | |||
jnthn | Hmm | ||
TimToady | it's the declarator that says *where* you're installing the new symbols | ||
jnthn | I can sorta see that conceptually-ish...trying to work out how to map that to an implementation is trickier. :-) | ||
TimToady | no declarator, no install | 16:54 | |
but sigs declare new variables, not referring to externals | |||
so it all follows | |||
jnthn | I guess. | ||
TimToady | probably the only weird thing left is actually ($a,$b) := ($b,$a) # no : on front | 16:55 | |
jnthn | Hmm | ||
"List binding"? | |||
TimToady | it's liek we need a way to promote a list of lvalues to a sig | 16:56 | |
*like | |||
probably can be done at compile time | |||
jnthn | Again, recognized syntacticly? | ||
TimToady | but it's also got to defeat the declaring of a new $a and $b | 16:57 | |
I think so | |||
$foo := ($b,$a) is always going to clobber $foo itself, regardless of what's in $foo | |||
pmichaud | why does that have to be recognized syntactically? | ||
jnthn | TimToady: In sub foo($a, :$b) { } I'd kinda ended up with an impl where the sig can say "here are the variables declared within me". | ||
pmichaud | ($a,$b) := ($b,$a) doesn't have to be recognized syntactically | 16:58 | |
any more than we don't have to syntactically recognize ($a,$b) = ($b,$a) | |||
TimToady | well, it would be good to know at compile time that you can't say ($a,1,$b) := ($b,$a) | ||
certainly Perl 5 takes the lvalue checks rather seriously | 16:59 | ||
and knowing something's an lvalue has got to be good info for an optimizer | 17:00 | ||
jnthn | TimToady: What I don't get about the "promote LHS to a signature" suggestion is that this makes it like :($a, $b) := ..., which we just said didn't update $a and $b. | ||
TimToady | it promotes to something else then | ||
an "lvalue parcel" | |||
pmichaud | we already have lvalue parcels for list assignment, fwiw | ||
jnthn | TimToady: Or we just make :($a, $b) := ... do what IMHO is the Right Thing. | 17:01 | |
(actually update things, rather than just throw away data) | |||
I can see it becoming an FAQ, that's all. | |||
"Why can't I update existing variables with the return values of a function if I also want to do unpacking of arguments signature-style?" | 17:02 | ||
17:03
LaVolta joined
|
|||
jnthn | Agree if we want to keep current semantics an "lvalue parcel" makes more sense though. | 17:03 | |
masak | ng passes 4k tests!? wow! | ||
pmichaud | should be a lot more, soon -- we have constant pi and constant e working again as of about 10 minutes ago | ||
jnthn | masak: Progress! | ||
pmichaud | and I'm about to fix slices, I hope | 17:04 | |
masak | \o/ | ||
jnthn | \o/ | ||
colomon: Thsoe new failures are...curious. :-/ | 17:05 | ||
TimToady | supersede ($a, $b) := ... should make for an explicit override of an existing declaration, maybe | ||
jnthn | ah, that could work. | ||
Maybe. | |||
:-) | 17:06 | ||
colomon | they look llike they might all be seg faults | ||
TimToady | std: supersede ($a, $b) := ... | ||
p6eval | std 29709: OUTPUT«ok 00:01 109m» | ||
pmichaud | colomon: I've been getting those for a while now | ||
colomon | and don't have anything obvious to do with | ||
ints | |||
17:06
lue joined
|
|||
TimToady | arguably, that should complain that $a and $b are missing | 17:06 | |
std: supersede Foo | |||
p6eval | std 29709: OUTPUT«===SORRY!===In supersede declaration, typename 'Foo' must be predeclared (or marked as declarative with :: prefix) at /tmp/GRhHo2BAUE line 1:------> supersede Foo⏏<EOL>FAILED 00:01 105m» | ||
TimToady | std: supersede $foo | 17:07 | |
colomon | pmichaud: okay, Ill commit this then. | ||
p6eval | std 29709: OUTPUT«ok 00:01 106m» | ||
TimToady | hmm | ||
jnthn | colomon: commit it, we cna triage it. | ||
TimToady | well, maybe not supersede, we're mixing up composition-time declarations with other stuff | 17:08 | |
17:09
Su-Shee joined
|
|||
TimToady | phenny: tell masak Note that TTAGGG is not generally rendered into amino acids, but "TTAGGG" x $n is the definition of a telomere. | 17:10 | |
phenny | TimToady: I'll pass that on when masak is around. | ||
masak | TimToady: I always wondered about why you chose that sequence :) | ||
phenny | masak: 17:10Z <TimToady> tell masak Note that TTAGGG is not generally rendered into amino acids, but "TTAGGG" x $n is the definition of a telomere. | ||
masak | en.wikipedia.org/wiki/Telomere | 17:11 | |
17:11
jferrero joined
17:15
Limbic_Region joined
|
|||
TimToady | well, vertebrates, anyway, plus some fungussesses | 17:15 | |
colomon | pmichaud, jnthn: Thought: If we're releasing this week, should we be trying to update our parrot to the latest in prep for release? | ||
pmichaud | colomon: yes | ||
jnthn | pmichaud: When are you plotting the merge to master? | ||
pmichaud | jnthn: sometime today. | 17:16 | |
jnthn | .oO( what's the masterplan? ) |
||
pmichaud: OK, cool. | |||
TimToady | I don't think Parcel should promote to Capture in a scalar | 17:17 | |
it should promote when it's used as a parameter list in a binding | |||
pmichaud | agreed, it should be Seq or remain a Parcel | ||
TimToady | er, argument list | ||
jnthn | *nod* | ||
Agree. | |||
I figured that was fossil. | |||
TimToady | I've been digging them out whenever I've seen them, but they're a common as trilobytes | 17:18 | |
17:19
itz joined
|
|||
LaVolta | 1. ok, I am here just to wish you all a happy chinese year, I hope it won't be too late :-P | 17:19 | |
pmichaud | jnthn: okay, I have a (I think) role-related problem for you... testing then commit in a second | 17:20 | |
LaVolta | 2. it's a bit late...already bedtime, see ya, and good luck on Perl6. | ||
17:21
LaVolta left
|
|||
lue | Looks like I /join ed at the wrong time... Have no idea what's going on :/ | 17:21 | |
pmichaud | lue: that's true for most of us here, I fear :) | ||
lue | I come and you're talking about supersede-ing and DNA! :O | 17:23 | |
and ng becoming master! O.O | |||
masak | lue: we've always been omnivores around here. :) | ||
lue: 'ng' and 'master' are the two most interesting Rakudo git branches. | |||
pmichaud | jnthn: just pushed 74c800c | 17:24 | |
with that, I have: | 17:25 | ||
masak | lue: 'master' is the old Rakudo, from 2007 up until the January release. 'ng' is the future. | ||
pmichaud | > my @a = 5..10; say @a[2,4]; | ||
No applicable candidates found to dispatch to for 'postcircumfix:<[ ]>' | |||
lue | The Future has interrupted that developement with an important announcement, coming shortly... | ||
pmichaud | it appears that @a.'postcircumfix:<[ ]>'( parcel ) isn't finding the postcircumfix:<[ ]> method from Positional | ||
dalek | kudo/ng: 74c008c | pmichaud++ | src/builtins/Positional.pir: Update to try to enable array slices... seems to have a dispatch |
17:26 | |
lue | /o\ | 17:27 | |
jnthn | pmichaud: Is the postcircumfix:<[ ]> in Seq marked :multi? | 17:29 | |
pmichaud | yes. | ||
jnthn | OK. | ||
It's not an Obvious Problme then. :-( | |||
pmichaud | .sub 'postcircumfix:<[ ]>' :method :multi(_, ['Integer']) | ||
let me check Array, though | |||
.sub 'postcircumfix:<[ ]>' :method :multi(_, ['Integer']) | |||
and the one from Positional.pir | |||
.sub 'postcircumfix:<[ ]>' :method :multi(_, _) | 17:30 | ||
jnthn | Hmm...is that a Parrot multi-dispatch error or a Rakudo one? | 17:32 | |
(checking) | |||
pmichaud | Parrot, likely | ||
it's invoked from Positional.pir:172 | |||
.tailcall invocant.'postcircumfix:<[ ]>'(args :flat) | |||
jnthn | oh, our Perl6Multi emits the same error. | 17:33 | |
pmichaud: I have a nasty feeling (need to verity)... | 17:35 | ||
...that the problem is that with Parrot multi subs we don't go searching up the inheritance tree. | 17:36 | ||
pmichaud | ...but it used to work before | ||
(in master) | |||
..didn't it? | |||
checking | |||
jnthn | Let me stash what I'm working on so I can pull this and see the stack trace etc... | 17:37 | |
pmichaud | oh, apparently we weren't doing it in master | 17:38 | |
i.e., there was only one postcircumfix: (in Positional), not overridden by List or Array | |||
jnthn | Yeah, that's what I suspected. | 17:39 | |
I think the options are: | 17:40 | ||
1) Convert those multis to be Perl6MultiSub | |||
17:40
meppl joined
|
|||
jnthn | 2) I try and get our dispatcher to handle Parrot MultiSub | 17:40 | |
pmichaud | I'm fine with either #1 or #2 | ||
I'm not sure how to do either at the moment, though | |||
is there an easy way to convert to Perl6MultiSub ? | 17:41 | ||
jnthn | Let me see what #2 would take. | ||
There used to be in master. | |||
17:41
pmurias joined
|
|||
pmichaud | okay. can I leave it to you to work on, then? | 17:41 | |
pugs_svn | r29710 | lwall++ | [S02] attempt clarification of <a b> semantics wrt parcels and assignment, jnthn++ | 17:42 | |
pmichaud | it's safe to ignore the other postcircumfix:<[ ]> candidates in Positional.pir -- at the moment I've only worked on :multi(_, _) and :multi(_, ['Integer']) | ||
jnthn | OK, and the example that should work is? | ||
TimToady | caveat implementor: I probably shouldn't be speccing while my cheekbone sinus is threatening to explode. | 17:43 | |
pmichaud | my @a = 5..10; say @a[2,4]; # 79 | ||
or even | |||
jnthn | TimToady++ # thanks, will review | ||
pmichaud | my @a = 5..10; say @a[4,2]; # 97 | ||
jnthn | Heh heh...you were very right you didn't want to hack on this. :-) | 17:45 | |
jnthn digs in. | |||
lue | sorry, Tim. (I once had a sinus infection that came-and-went for weeks. It ended with horse pills) | 17:47 | |
dalek | kudo/ng: d71e295 | (Solomon Foster)++ | src/Perl6/Actions.pm: Add :returns('Int') to the integer action, so that we get Ints instead of Integers. |
17:49 | |
jnthn | Compiling. | 17:51 | |
If this works first time, I'll be amazed. | |||
lue | /o\ *is scared of daleks | 17:52 | |
masak | lue: ours is a very kind robot, considering. | ||
jnthn | Nope. | 17:53 | |
lue | Impossible! Have you _watched_ Dr. Who? Ever seen a FRIENDLY dalek!? | 17:54 | |
jnthn | ng: say [ 5..10 ].[2,4]; | 17:56 | |
p6eval | ng d71e29: OUTPUT«No applicable candidates found to dispatch to for 'postcircumfix:<[ ]>'current instr.: '!postcircumfix:<[ ]>' pc 10619 (src/builtins/Iterator.pir:25)» | ||
jnthn | \o/ | ||
mathw | They're fine if they think you're also a dalek | ||
jnthn | pmichaud: OK, that gives a different error here, so think I maybe have got it. :-) | 17:57 | |
pmichaud: Only one problem | |||
pmichaud: We need to do transform_to_p6opaque when we do new ['Array'] for my @a; | |||
masak | lue: I've watched Dr. Who. :) just saying there's always an exception. | ||
mathw is watching Doctor Who right now | 17:58 | ||
17:58
Su-Shee left
|
|||
lue | On what channel are you watching Doctor Who!? | 18:01 | |
Truth be told, I've never watched that much of The Doctor... | |||
TimToady | re pi, CORE.setting uses 3.14159_26535_89793_238, which limits the denominator to 1 quintillion for a Rat64 (not that we have those yet either) | 18:02 | |
lue | That won't do. I work with quattuordecillions! | 18:04 | |
TimToady | you can set up your own FatRat pi then. | 18:05 | |
masak .oO( fatrat pie?! eeew! ) | 18:06 | ||
jnthn | masak: I was thinking just the same! | ||
masak | :) | ||
TimToady | when the pie was opened, the rats began to sing... | ||
lue | ... and all was well. Amen. | ||
masak doesn't have that cultural hash key | 18:07 | ||
TimToady | look for "four and twenty blackbirds baked in a pie" | ||
jnthn | Wow, that poem involves junctions too? | 18:08 | |
:-) | |||
masak | good thing I ate already... | ||
jnthn | Lucky you! :-/ | ||
On the upside, at least I vaguely feel like eating today. | |||
lue | And in the distance, he hath been slain, for he killed His camel, and ate His onion. Amen. | 18:09 | |
masak | jnthn: oh, you didn't before? :/ | ||
jnthn | masak: Yesterday my stomach was has an epic ache. | ||
masak | sorry to hear that. | ||
we need to take good care of our developers... | |||
jnthn | I get it now and then...annoying, but not a biggie. | 18:10 | |
TimToady | actually, it starts "Sing a song of sixpence, a pocket full of rye" | ||
masak | ...so that they can be properly tortured by TimToady and the spec. <cackle /> | ||
jnthn | pmichaud: oh hey, I has a fix, I think. | ||
masak read 'Sing a song of :sigspace...' | |||
jnthn | pmichaud: spectesting to ensure no collateral damage | ||
Ironically, we probably multi-method dispatch Parrot multi-methods better than Parrot now. ;-) | 18:11 | ||
lue | And an @ of people came, with slashed and %ed pi. | ||
masak | lue: you should go ahead and become a blog poet. | ||
lue | he considered the #, but saw that it was a die() waiting to happen. Amen. | 18:13 | |
:D | |||
pmichaud | jnthn++ # probable fix | 18:14 | |
I'm heading off for lunch in a bit | 18:15 | ||
jnthn | pmichaud: Tests fine. | ||
pmichaud: Pushed. | |||
oh no, somebody else pushed first. | |||
now pushed. | |||
pmichaud: It gets into a postcircumfix method in Positional. Apparently that method does have an issue. | 18:16 | ||
But it makes it there now :-) | |||
pmichaud | that's possible. I'll take it from there then. | ||
jnthn | Don't read the C patch with remaining eye. ;-) | ||
(It's actually not that bad.) | |||
dalek | kudo/ng: d4a3bc5 | jonathan++ | src/ (3 files): Need to make sure we create Array and Seq as p6opqaues. |
18:19 | |
kudo/ng: c11b42c | jonathan++ | src/pmc/p6 (2 files): Teach the Rakudo method dispatcher how to walk the inehritance hierarchy when considering Parrot MultiSubs as well as Perl6MultiSub. |
|||
jnthn | OK, time to go acquire nom...will continue on arg unpacking and capture bits later. :-) | 18:21 | |
lue wishes to help but doesn't know where his attention is useful. | 18:27 | ||
pmurias | lue: you may consider helping with writing tests | 18:28 | |
lue | I'll look at that. | ||
18:31
Su-Shee joined
18:36
uniejo joined
18:37
pochi joined
18:38
rindolf joined
|
|||
pmichaud | jnthn: an idea | 18:38 | |
17:56 <jnthn> pmichaud: We need to do transform_to_p6opaque when we do new ['Array'] for my @a; | |||
how about a p6opaque_new opcode that does both in a single step? | |||
just a thought | 18:39 | ||
afk, lunch | |||
18:39
rindolf left,
rindolf joined
|
|||
rindolf | Hi all. | 18:42 | |
So how can I fix a Rakudo/Parrot bug? Can someone assign one to me? | |||
18:42
mssm left
|
|||
pugs_svn | r29711 | colomon++ | [t/spec] Unfudge todo tests which now work. | 18:43 | |
masak | rindolf: things are a bit stormy right now, with the upcoming merge and all. | 18:44 | |
rindolf | masak: ah. | ||
masak | rindolf: in general, it's a very welcome question, but right now it's mostly pmichaud and jnthn doing stuff. | ||
not impossible to keep up, though. :) | |||
I try, and colomon seems to succeed. | |||
lue | I'm trying to keep up with them, and I've been here awhile! (it's that dalek that puts me behind) | 18:45 | |
colomon | masak: A lot of it is selective ignoring of things that are way over my head... | 18:46 | |
masak | colomon: that's actually a good tip. I should do that more often. :P | ||
jnthn | pmichaud: That's a fine idea. | 18:49 | |
masak: It helps. :-) | |||
masak: I tried to do that with laziness. :-) | |||
(but ended up reading the impl anyway :-)) | 18:50 | ||
masak | heh :) | ||
jnthn | masak: How's enums? Any blockers? | 18:51 | |
lichtkind | masak: hello, how is von doing? | ||
lue | where can I find where spectests that need to be written are? | ||
masak | jnthn: not tried yet. I'll give it a shot soon today. | ||
jnthn | lue: svn.pugscode.org/pugs/t/spec/TODO | 18:52 | |
masak | lichtkind: who's 'von'? | ||
-Ovon | |||
lichtkind | masak: ahh i mean nov | ||
haha | |||
masak | lichtkind: it's a bit of a sitting duck right now, I guess. | ||
lichtkind: I'm a bit of a neglecting parent... | |||
18:53
mssm joined
|
|||
jnthn hides all the guns | 18:53 | ||
lue gave jnthn a faulty gun lock | 18:56 | ||
pugs_svn | r29712 | lichtkind++ | updated syntax in talk to recent spec | 18:57 | |
lichtkind | masak: don't worry i care about tpf perl 6 wiki until it works :) | ||
masak | lichtkind: I'm glad I have you to pester me like I pester the Rakudo devs. :) | 18:58 | |
18:58
jaldhar joined
|
|||
lichtkind | masak: im good at annoying people ask anyone :) | 18:58 | |
lue | My talent is confusion. (ask me about time travel) | 18:59 | |
rindolf | rakudo: "Hello".length | ||
p6eval | rakudo 1d4928: OUTPUT«Method 'length' not found for invocant of class 'Str'in Main (file src/gen_setting.pm, line 324)» | ||
lichtkind | lue: your a time traveler too? | ||
masak | rindolf: 'length' for Str is spelled 'chars' | 19:00 | |
lue | almost. I have yet to genetically reprogram myself into a 4D person. | ||
Then I can walk through time as I please. | |||
masak | rindolf: in general, 'length' is a taboo word in Perl 6. | ||
lichtkind | lue: i am 11D :) | ||
rindolf | masak: ah. | ||
lue | O.O ubbuhbubhbuhbhbuuuhhhbhbhhuuhhbbuh... | 19:01 | |
lichtkind | lue: keep cool averybody is 11D :) | 19:05 | |
just most people dont use it :) | |||
masak | do ranges and <a b c> constructions flatten in enums. for example in `enum Rank (2..9, <J Q K A>);`? | ||
colomon is actually 13EEE | |||
lue | I can, however, travel through the WSoGMM dimensions, but I'm right now in control of only 3 base dimensions. | ||
:) | |||
Hang on, going to WSoGMM dimension 65536. | 19:06 | ||
lue takes his laptop with him. | |||
mberends | hope it's a 16 bit machine | 19:07 | |
lue | what, my TARDIS? it's 1024-bit. | ||
well, not my TARDIS... | 19:08 | ||
jnthn | masak: Yes, I belive so, but everything in there should be constant. | ||
masak | yes, because of the time it's eval'ed. | ||
jnthn | Right. | 19:09 | |
lue | Well, I helped reconfigure The Doctor's TARDIS to travel through WSoGMM dimensions (alternate realities, according to him) | ||
He doesn't seem to like it... | |||
ng: say warn('hello!'); | 19:10 | ||
p6eval | ng c11b42: OUTPUT«hello!Null PMC access in type()current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
colomon | ng: say PARROT(1); say PARROT(-1); | 19:11 | |
p6eval | ng c11b42: OUTPUT«IntInteger» | ||
lue | *raise eyebrow smiley* | 19:12 | |
colomon | ng: my $a = 1; say PARROT($a); say PARROT(-$a) | 19:13 | |
p6eval | ng c11b42: OUTPUT«ObjectRef->IntInteger» | ||
lue | ng: say PARROT(1)==Int; | 19:14 | |
p6eval | ng c11b42: OUTPUT«Use of type object as valuecurrent instr.: 'perl6;Perl6Exception;throw' pc 13848 (src/builtins/Associative.pir:118)» | ||
lue | ng: say PARROT(1).WHAT==Int; | ||
p6eval | ng c11b42: OUTPUT«Use of type object as valuecurrent instr.: 'perl6;Perl6Exception;throw' pc 13848 (src/builtins/Associative.pir:118)» | ||
lue | ng: say PARROT(1).WHAT~~Int; | ||
p6eval | ng c11b42: OUTPUT«0» | ||
colomon | ng: say PARROT(1).WHAT | ||
p6eval | ng c11b42: OUTPUT«Str()» | ||
lue | ah. | ||
ng: say PARROT(1)~~Int; | |||
p6eval | ng c11b42: OUTPUT«0» | ||
jnthn | lue: PARROT is just a debugging function that gives a string describing the underlying data type of something. | 19:15 | |
ng: say 1 ~~ Int | |||
p6eval | ng c11b42: OUTPUT«1» | ||
jnthn | :-) | ||
colomon | looks like prefix:<-> always returns a Num? | ||
lue | aaah. (WSoGMM Dimension 65536 is warping my brain a little) | ||
colomon | pir::box__PN(pir::neg__NN($a)) | ||
jnthn | colomon: Probably want an overload for Int. | 19:16 | |
colomon | trying that now. | ||
masak: the other problem with following pmichaud and jnthn when they both get busy is the rest of my life seems to be running in slow motion... | 19:17 | ||
19:18
jackyf joined
|
|||
colomon | > say PARROT(-1) | 19:18 | |
Ambiguous dispatch to multi 'prefix:<->'. Ambiguous candidates had signatures: | |||
:(Int $a) | |||
jnthn: you rock!!!!! | |||
Of course, now it's a bug in PIR and I'm not sure how to handle it: | 19:19 | ||
multi sub prefix:<->(Int $a) { | |||
Q:PIR { | |||
$P0 = find_lex '$a' | |||
$N0 = $P0 | |||
$N0 = neg $N0 | |||
%r = '!upgrade_to_num_if_needed'($N0) | |||
} | |||
} | |||
Looks like upgrade_to_num_if_needed must be the culprit? | 19:21 | ||
ng: say 1!upgrade_to_num_if_needed | 19:22 | ||
p6eval | ng c11b42: OUTPUT«Method '!upgrade_to_num_if_needed' not found for invocant of class 'Int'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
colomon | ng: say (1.Num)!upgrade_to_num_if_needed | ||
p6eval | ng c11b42: OUTPUT«Method '!upgrade_to_num_if_needed' not found for invocant of class 'Num'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
jnthn | I think it's meant to be a sub rather than a method | 19:23 | |
colomon | right. | ||
ng: say !upgrade_to_num_if_needed(1) | |||
p6eval | ng c11b42: OUTPUT«0» | ||
colomon | errrrr... | ||
jnthn | wtf | ||
colomon | ng: say !upgrade_to_num_if_needed(1.Num) | ||
p6eval | ng c11b42: OUTPUT«0» | ||
jnthn | ng: say &upgrade_to_num_if_needed(1) | ||
colomon | maybe can only be called from PIR? | ||
p6eval | ng c11b42: OUTPUT«Symbol '&upgrade_to_num_if_needed' not predeclared in <anonymous>current instr.: 'perl6;PCT;HLLCompiler;panic' pc 137 (src/PCT/HLLCompiler.pir:101)» | ||
jnthn | ng: say upgrade_to_num_if_needed(1) | 19:24 | |
p6eval | ng c11b42: OUTPUT«1» | ||
jnthn | ng: say upgrade_to_num_if_needed(1).WHAT | ||
p6eval | ng c11b42: OUTPUT«Int()» | ||
jnthn | colomon: Replace the ! with an & | ||
Though I think that sub is...leaking. :-) | |||
But it'll probably fix the immediate problem. | |||
colomon | were you responsible for the Ambiguous dispatch to multi 'prefix:<->'. Ambiguous candidates had signatures... | ||
error? | 19:25 | ||
because that's a thing of beauty... | |||
jnthn | Yes | ||
colomon | jnthn++ | 19:26 | |
jnthn | The one I'd like to do in the future is for when you get a failed dispatch, it showhow could show how the candidates failed to match. | ||
colomon | +1 | ||
jnthn | But it's kinda hard to do. | ||
Well | |||
colomon | switching to & doesn't actually help | ||
jnthn | Oh. :-/ | ||
colomon | ng: say PARROT(upgrade_to_num_if_needed(1)); | 19:27 | |
p6eval | ng c11b42: OUTPUT«Integer» | ||
jnthn | Look up the sub - where is it defined? | ||
colomon | cheat/int-ops.pir | ||
$I0 = test | |||
.return ($I0) | |||
jnthn | The upgrade_to_num_if_needed one? | ||
colomon | yes | ||
er, wait. | |||
there's also a version of that function in Int.pm | 19:28 | ||
jnthn | Ah | ||
That'll be the interesting one, is suspect | |||
Is it marked as "our"? | |||
colomon | the two lines I posted are still how it converts to Int/Integer. | ||
yes. | |||
jnthn | Hmm | ||
Sounds like something is incomplete-ish there. | |||
I'm pondering that it may be worth a refactor to make it a private method though. | 19:29 | ||
Then it's not going to pollute the namespace. | |||
colomon | ng: say PARROT(1+3) | 19:31 | |
p6eval | ng c11b42: OUTPUT«Integer» | ||
colomon | So how do you return an actual Int from PIR code? | 19:32 | |
right now, almost any operator you use on an Int will give you back an Integer. | |||
Also, it seems like we need some sort of tests for this, but I'm not clear on how to do it -- it would be very Rakudo-specific. | 19:34 | ||
afk # need to run errands. | 19:36 | ||
jnthn | oops, sorry, got disctracted by the latest Gas Princess news story | ||
colomon: The issue is that making them Rakudo Ints all the way through gets kinda expensive, so we've mostly been able to get away with doing that in master. :-/ | 19:37 | ||
As pmichaud mentioned earlier, it's most a performance issue. | |||
colomon | jnthn: Ah. | 19:38 | |
jnthn | And I can tell you how to make an Int, sure | 19:39 | |
But I'm not sure we should be scattering it all over the codebase... | |||
colomon | jnthn: we wouldn't, we'd be putting it all in upgrade_to_num_if_needed | 19:40 | |
jnthn | (If we decide we'll take the hit and go with our higher-level Int anyway, there's a way to ask Parrot to do it for us, iirc, too. | ||
colomon | but if it will kill performance... I can just kill the "is the result of that operation an Int" tests and get on with things. I dunno. | ||
jnthn | colomon: Well, true. | ||
colomon | anyway, I do need to run at the moment. | ||
ttyl | 19:41 | ||
jnthn | OK, catch you later | ||
lue is back from WSoGMM Dimension 65536 (he should fix his pan-dimensional wireless) | 19:44 | ||
This line looks interesting (from t/spec TODO): * (r28208, r28210, r28213, r28215) Temporal updates | 19:48 | ||
masak 's ears perk up | 19:49 | ||
lue: I was finalizing a large-ish Temporal overhaul in November. never quite got it finished. it's still on github, though. | 19:50 | ||
pugs_svn | r29713 | lwall++ | [S02] list all the scope declarators in one spot | 19:51 | |
r29713 | further distinguish parcels bound to sigs from those bound to parameters | |||
r29713 | some ideas on how to handle the allomorphism of literals more dwimmily | |||
lue | Just the Temporal part looked... interesting (especially seeing time travel's on the mind right now) | ||
masak | Temporal needs a lot of love. I remember focusing on the constructor, but things like arithmetic would be nice to have, too. | ||
I believe it's a prime case where Perl 6 can manage to feel 'just right' and attract a lot of people. | 19:52 | ||
handling time is very central in many apps. | |||
oh well, with a bit of luck I'll get to have another look at it before Rakudo *. | |||
pugs_svn | r29714 | lwall++ | [S02] Rat.perl does / notation, actually | 19:53 | |
lue | What exactly is the full potential of Temporal { >:) } | ||
masak | lue: right now, you mean? | 19:54 | |
lue: the spec has the details. S32/Tempotal | 19:55 | ||
lue | alrighty. I'll look, and see what I can do with it... [evil laugh] | ||
masak | lue++ | 19:56 | |
19:57
Limbic_Region left
|
|||
lue | It seems to support multiple calendars. Is this actually implemented yet? | 19:58 | |
masak | no. | 19:59 | |
TimToady | well, as far as I'm concerned, the first thing to do to all the Temporal type names is s/Temporal::/ | ||
masak | I agree fully. | ||
lue | Perl6: the only language to worry about what calendar you use. | ||
masak | I'd prefer if Temporal::DateTime was just Time. | ||
TimToady | that works too | ||
masak | lue: no, Java does that as well. | ||
lue: I'm not saying it's a good idea, just that Perl 6 isn't alone in doing it. :) | |||
TimToady | and use O'clock for the time of day :) | ||
masak hides TimToady | 20:00 | ||
anyway... | |||
lue | Date, by the way, is really just further group of Time. | ||
I really don't know why we separate it as a different thing. :) | |||
TimToady | it's just a civil time with less precision than Time | 20:01 | |
masak | Ruby calls it Time, even though it contains a date as well. | ||
TimToady | in p6, we can has Time == civil time | ||
masak | it seems to work for them. | ||
TimToady | Instant means atomic time | ||
lue is looking up strange & unusual calendars | |||
masak | I remember having a longish discussion about DateTime/Time with mberends++ late last year. | ||
maybe two, actually. | |||
TimToady | O'clocks are actually durations from midnight | 20:02 | |
(relative to a timezone) | 20:03 | ||
masak | is the need for such a class common? | ||
I'm somewhat put off by that apostrophe... :/ | |||
TimToady | but anything common enough to be specced doesn't want to fall into the Give::Everything::A::Long::Name trap | 20:04 | |
oh, O'clock is a joke | |||
masak | exactly. | ||
oh phew. | |||
lue | Such as Temporal::DateTime::Format::Western::Oclock | ||
:) | |||
TimToady | but think about 3.O'clock.pm :) | ||
masak | :) | 20:05 | |
TimToady | If you're gonna use Oclock, I'd rather have the apostrophe :) | ||
lue | ooh, we should support the Darian calendar! | ||
masak | if &foo returns a list of things, and I call foo in the RHS of a scalar assignment, does the whole list end up in the scalar? | ||
TimToady | ends up a Seq | 20:06 | |
masak | right, but the whole Seq ends up in the scalar, right? | ||
TimToady | sure | ||
masak | quite unline in Perl 5. | ||
where it would just spill over. | |||
TimToady | unlike Perl, we don't throw info away willy nilly | ||
Perl 5 | |||
masak | right. | ||
just checking. | |||
I'm thinking whether to repeat pmichaud++'s naughty idea of making the PGE::Match object return a list of a lot of things, not just the object created. | 20:07 | ||
TimToady | scalar assignment is more or less the same as binding to a scalar in type semantics, as far as the argument is contextualized | ||
masak | it would break all locations in my own code where I put the new object in a scalar. | 20:08 | |
TimToady | well, technically, a Match is supposed to behave more like a Capture than a Parcel | ||
masak | doesn't help me very much, I'm afraid. | 20:09 | |
TimToady | a common failing wrt retroprojects :P | ||
masak | TimToady: re recent spec commit: does 'anon' really introduce a name, even one that isn't stored anywhere? I thought introduce a name was what 'anon' wasn't doing. | 20:10 | |
TimToady | colomon: see latest change to S02 wrt allomorphism of rat literals | ||
lue | <tone type="mumble">I wonder what the P6 calendar would be (as a novelty of course)</tone> | ||
masak | lue: centerfold pictures of sexy operators? :P | 20:11 | |
TimToady | s/change/changes/ | ||
jnthn | masak: Just because something knows its name doesn't mean it has to be installed anywhere under that name. | ||
lue | I mean a calendar, like Gregorian, Hebrew... | ||
jnthn | It's like if I take a secret vacation. None of you can find me, but I still know my name. :-) | ||
masak | :) | 20:12 | |
lue | pugs: say 16<16.D4>; | ||
p6eval | pugs: OUTPUT«*** Odd number of elements found where hash expected: VInt 16 at /tmp/JRyucczwcs line 1, column 5-14» | ||
lue | :( | ||
TimToady | need : | ||
lue | pugs: say :16<16.D4>; | ||
p6eval | pugs: OUTPUT«22.828125» | ||
masak | jnthn: but what is the name of an anon sub or role or class? | ||
lue | just realized. (Wow, big decimal) | ||
TimToady | std: anon $myname = 42; | 20:13 | |
p6eval | std 29713: OUTPUT«ok 00:01 108m» | ||
lue | In my Hexcalendar draft, with 16 months, each month will have 22.828125 (0x16.D4) days :D | ||
TimToady | std: my $sub = anon sub Myself {...} | ||
p6eval | std 29713: OUTPUT«ok 00:01 107m» | ||
jnthn | masak: If you write anon sub marine() { ... } then it's name is marine. | 20:14 | |
TimToady | std: my $sub = anon sub myself {...}; myself(); | ||
p6eval | std 29713: OUTPUT«Undeclared routine: 'myself' used at line 1ok 00:01 107m» | ||
masak | jnthn: the spec only contains examples of 'anon' without the name. I guess that's what threw me off. | 20:15 | |
jnthn | Ah, OK | 20:16 | |
masak | so it's a way to make an anonymous recursive routine, for example. or an anon role which contains references typed to itself. | 20:18 | |
pugs_svn | r29715 | lwall++ | [S02] clarify that anon allows a name but doesn't install it for jnthn++ | ||
TimToady | no, it would not work for recursion | ||
use $?ROUTINE for that | |||
masak | ok. | ||
right, it would not work for recursion because the call is run-time, and then the name is gone. | 20:19 | ||
TimToady | it's really for doc and errors | ||
the name is in the object itself, if it cares | |||
or you can't give run-time error messages | |||
(with the name) | 20:20 | ||
jnthn | rakudo: [].ACCEPTS([]) | ||
TimToady | the name is not in the symbol table even at runtime | ||
p6eval | rakudo 1d4928: ( no output ) | ||
jnthn | ng: [].ACCEPTS([]) | ||
p6eval | ng c11b42: OUTPUT«sh: ./perl6: No such file or directory» | ||
jnthn | ng: [].ACCEPTS([]) | ||
p6eval | ng c11b42: OUTPUT«sh: ./perl6: No such file or directory» | ||
TimToady | see myself above | ||
jnthn | tssk | ||
ah | |||
TimToady | the name is not in the symbol table even at compile time, I meant | ||
lichtkind | will there be a »ö« operator? | 20:21 | |
TimToady | if there's an infix:<ö> operator, sure | 20:22 | |
jnthn | lichtkind: If you write a ö one, yes. | ||
lichtkind | thats for shure | ||
but i ment a complete »ö« | |||
araujo | happy new year! | ||
lichtkind | :) | 20:23 | |
TimToady | we don't want people overriding metaoperators | ||
jnthn | If you met a metaoperator, you want to know how it's going to operate. | 20:24 | |
TimToady | anything that looks like a hyperoperator should be derived from the base operator by the standard metaop | ||
jnthn | \o/ | ||
> our sub foo([$head, *@tail]) { say $head; say @tail.perl; } | |||
> my @array = 1,2,3,4; foo(@array); | |||
1 | |||
[2, 3, 4] | |||
20:24
nbrown left
|
|||
TimToady | you could define a term:<»ö«> if you like though | 20:24 | |
masak | araujo: 新年快樂! | ||
TimToady | well, technically you want a *$head | 20:25 | |
araujo | masak, :D | ||
TimToady | or an initial (1,2,3) won't flatten | ||
20:25
nbrown joined
|
|||
jnthn | TimToady: ? | 20:26 | |
20:26
orafu joined
|
|||
jnthn | TimToady: Inside it's just a subsignature, no? | 20:26 | |
TimToady: The capture that's made has the array flattened out into it. | |||
TimToady | oh, didn't see the [] | ||
jnthn | :-) | ||
TimToady | that's okay then | ||
jnthn | Phew! | ||
:-) | |||
You had me worried then. :-P | |||
lue | rakudo: say hex(42); | 20:27 | |
TimToady | though it'd work without the [] if you use *$ | ||
p6eval | rakudo 1d4928: OUTPUT«Could not find non-existent sub hexin Main (file src/gen_setting.pm, line 324)» | ||
jnthn | TimToady: Sure. :-) | ||
TimToady | and then you could take foo(@a,@b) | ||
which won't work with yours | |||
lue | rakudo: say hex("42"); | ||
p6eval | rakudo 1d4928: OUTPUT«Could not find non-existent sub hexin Main (file src/gen_setting.pm, line 324)» | ||
lue | D: | ||
jnthn | TimToady: Yes, true. | 20:28 | |
I guess it's all about what you want to accept. :-) | |||
lue | how do you convert _to_ a hex number? I know from, but not to... | 20:29 | |
TimToady | .fmt('%x') | ||
lue | rakudo: say 52.fmt('%x'); | ||
p6eval | rakudo 1d4928: OUTPUT«34» | ||
lue | :D | ||
TimToady | ng: say 52.fmt('%x') | 20:30 | |
lue | ng: say :16<16.D4/4> | ||
p6eval | ng c11b42: OUTPUT«Could not find non-existent sub &sprintfcurrent instr.: 'perl6;Any;fmt' pc 270601 (src/gen/core.pir:23916)» | ||
ng c11b42: OUTPUT«Confused at line 1, near "say :16<16"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)» | |||
jnthn | rakudo: say "I'm only {24.fmt('%x')}!" | ||
TimToady | aww | ||
p6eval | rakudo 1d4928: OUTPUT«I'm only 18!» | ||
jnthn | \o/ | ||
Hex. Shaving off the years. | |||
TimToady | no beer for you | ||
lue | ng: say :16<(16.D4/4)> | ||
jnthn | TimToady: Huh?! | ||
p6eval | ng c11b42: OUTPUT«Confused at line 1, near "say :16<(1"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)» | ||
jnthn | TimToady: Oh, it's 21 over there, ain't it. :-| | ||
lue | apparently, arithmetic in :16 is not allowed :/ | 20:31 | |
jnthn | That said, I do remember when I was in Chicago when I *was* 21, and as I reached for my ID the guy was like "oh, you're clearly over 21" :-) | ||
TimToady | I got carded once when I was about 40 | ||
don't think would happen now though | 20:32 | ||
dalek | kudo/ng: 04a857f | jonathan++ | src/builtins/ (2 files): Get unpacking of positional arguments working again. |
20:33 | |
lue | ng: say 0x16.D4; | ||
p6eval | ng c11b42: OUTPUT«Method 'D4' not found for invocant of class 'Int'current instr.: '_block14' pc 29 (EVAL_1:0)» | ||
lue | rakudo: say 0x16.D4; | ||
p6eval | rakudo 1d4928: OUTPUT«Method 'D4' not found for invocant of class 'Int'in Main (file src/gen_setting.pm, line 324)» | ||
TimToady | no | ||
lue | pugs: say 0x16.D4; | ||
p6eval | pugs: OUTPUT«*** No such method in class Int: "&D4" at /tmp/UDKLs9zbPy line 1, column 5-12» | ||
TimToady | have to use : form for that | ||
otherwise too ambig with methods | |||
lue | :/ I want to do hex arithmetic with decimals, thought that would work. | 20:34 | |
TimToady | what if you have a D4 method you want to call? | ||
lue | why would you name a method D4? shorthand for "divide-by-4"? :) | 20:35 | |
TimToady | which reminds me, we should put a deadbeef method into Num :) | ||
beats me, I'm just the language designer; I don't tell people how to use it | |||
lue | ng: say 0xdeadbeef; | ||
p6eval | ng c11b42: OUTPUT«3735928559» | 20:36 | |
lue | ng: say 0xc0ffee; | ||
TimToady | ng: say 0xdeadbeef.deadbeef | ||
p6eval | ng c11b42: OUTPUT«12648430» | ||
ng c11b42: OUTPUT«Method 'deadbeef' not found for invocant of class 'Int'current instr.: '_block14' pc 29 (EVAL_1:0)» | |||
lue | what would the deadbeef method do? | ||
TimToady | say Mu | ||
lue | moo | ||
TimToady | ng: say 0xdeadbeef.?deadbeef | 20:37 | |
p6eval | ng c11b42: ( no output ) | ||
TimToady | ng: my $result = 0xdeadbeef.?deadbeef; say $result | ||
p6eval | ng c11b42: ( no output ) | ||
TimToady | rakudo: my $result = 0xdeadbeef.?deadbeef; say $result | ||
p6eval | rakudo 1d4928: OUTPUT«Undefined value returned by invocation of undefined method» | ||
TimToady | another case where rakudo returns a Failure that should probably just return Nil | 20:38 | |
jnthn | TimToady: Really? | ||
TimToady | I told it the call was optional | ||
jnthn | Hmm...true. | 20:39 | |
lue | ng: say 1 and 1; #ANFSCD | ||
p6eval | ng c11b42: OUTPUT«1» | ||
lue | ng: say 1 or 1; #ANFSCD | ||
p6eval | ng c11b42: OUTPUT«1» | ||
TimToady | rakudo: my $result = 0xdeadbeef.*deadbeef; say $result | ||
p6eval | rakudo 1d4928: OUTPUT«» | ||
masak | rakudo: my $a; say ($a.?foo).WHAT | ||
p6eval | rakudo 1d4928: OUTPUT«Failure()» | ||
lue | ng: say 1 xor 1; | ||
p6eval | ng c11b42: OUTPUT«1» | ||
masak submits rakudobug | |||
lue | ng: say 1 nor 1; | ||
p6eval | ng c11b42: OUTPUT«Confused at line 1, near "say 1 nor "current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)» | ||
jnthn | The failure is easy to distinguish though. If I expected no results, it's harder to distinguish that from "nothing was called". | ||
That is, a method that just did return; would return Nil too, no? | |||
lue | ng: say 1 and 1; say 1 or 1; say 1 xor 1; say 1 nand 1; say 1 nor 1; say 1 xnor 1; #simple test of implemented logic. | 20:40 | |
p6eval | ng c11b42: OUTPUT«Confused at line 1, near "say 1 nand"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)» | ||
TimToady | sure, though we could distinguish those in slice context, presumably | ||
jnthn | Or if you were interesteed in the failure I guess use . and a try/CATCH | ||
Since presumably you want to do something on the failure anyway. | 20:41 | ||
TimToady | I prefer exceptions to be reserved for unexpected things | ||
jnthn | Yeah, good point. | ||
TimToady | use of Failure as a normal return value is a design smell | ||
jnthn | OK, we'll Nil it. :-) | ||
.oO( TimToady 1 - Nil jnthn |
|||
20:42
sg__ joined
|
|||
TimToady | basically, .* and by extension .? should return something sliceable to get the number of successful returns as subparcels | 20:42 | |
jnthn | Parcel of Parcels? | ||
TimToady | presumably | ||
jnthn | wfm | ||
masak | oh, that's an even better explanation. | ||
it should be Nil because it's an empty list. | 20:43 | ||
parallel to quantifier ? returning an empty list upon no match. | |||
TimToady | Parcel(Nil) is a real returned Nil, whille Nil is no parcels | ||
masak: nodnod | |||
masak likes consistency | |||
TimToady | I said it just for you :) | ||
masak | awww. you shouldn't have. :) | 20:44 | |
TimToady | okay, we're both lousy liars. | ||
lue | you fooled me | ||
masak | lousy + epsilon, then. | 20:45 | |
TimToady OHNOES over the epsilon infestation | |||
masak | wishing epsilon could just go to zero already, and stay there. | 20:46 | |
TimToady | the next best thing to being zero... | 20:47 | |
masak | nevermind, it's negligible anyway. | 20:48 | |
jnthn: I'll see what I can come up with wrt anon enums. | 20:49 | ||
food & | |||
TimToady | only for continuous functions; fortunately, Heisenberg seems to have solve that for the physical world, so that physicists can cancel their dx's and dy's | ||
*solved | |||
masak | Heisenberg++ | 20:50 | |
20:50
masak left
|
|||
lue | are nand, nor, and xnor useful operators? You can emulate them with a bunch of and/or/xor commands, but... | 20:52 | |
jnthn | lue: Given that you can easily define new operators in Perl 6 anyway, it'd be easy enough to pop such things in a library. | 20:53 | |
use Logical::Extras; | |||
:-) | |||
TimToady | rakudo: say True !and True | 20:55 | |
p6eval | rakudo 1d4928: OUTPUT«Confused at line 10, near "!and True"in Main (file <unknown>, line <unknown>)» | ||
TimToady | rakudo: say True !&& True | ||
p6eval | rakudo 1d4928: OUTPUT«Confused at line 10, near "!&& True"in Main (file <unknown>, line <unknown>)» | ||
TimToady | rakudo: say True !?& True | ||
p6eval | rakudo 1d4928: OUTPUT«Confused at line 10, near "!?& True"in Main (file <unknown>, line <unknown>)» | ||
quietfanatic | rakudo: sub infix:<nand> {not $^a and $^b}; say 1 nand 1 | ||
p6eval | rakudo 1d4928: OUTPUT«0» | ||
TimToady | anyway, the ! metop is supposed to get you that already | 20:56 | |
*metaop | |||
dalek | kudo/ng: df72c91 | jonathan++ | src/ (3 files): Unpacking of hashes works, and objects nearly works, once I fix attribute introspection. |
||
quietfanatic | perl6: say 1 !and 1 | ||
jnthn | std: say True !?& True | ||
p6eval | elf 29715: OUTPUT«Parse error in: /tmp/NQQIQ7Z0hxpanic at line 1 column 10 (pos 10): Only boolean infix operators may be negatedWHERE: say 1 !and 1WHERE: /\<-- HERE STD_red/prelude.rb:99:in `panic' (eval):8:in `__infix_prefix_meta_operator_4861890' STD_red/prelude.rb:406:in `block | ||
..… | |||
..pugs: OUTPUT«***  Unexpected "!" expecting operator, ":" or "," at /tmp/feA87eDX0z line 1, column 7» | |||
..rakudo 1d4928: OUTPUT«Confused at line 10, near "!and 1"in Main (file <unknown>, line <unknown>)» | |||
std 29715: OUTPUT«===SORRY!===Can't negate ?& because multiplicative operators are not iffy enough at /tmp/LMRD0Ruyjt line 1:------> say True !?&⏏ TrueFAILED 00:01 107m» | |||
jnthn | std: say True !and True | ||
p6eval | std 29715: OUTPUT«===SORRY!===Can't negate and because loose and operators are not iffy enough at /tmp/DsfAcMcVLH line 1:------> say True !and⏏ TrueFAILED 00:01 105m» | ||
jnthn | std: say True !&& True | ||
p6eval | std 29715: OUTPUT«===SORRY!===Can't negate && because tight and operators are not iffy enough at /tmp/1iq6TlwJjH line 1:------> say True !&&⏏ TrueFAILED 00:01 105m» | 20:57 | |
TimToady | well, that's suboptimal :) | ||
jnthn | :-) | ||
quietfanatic | Is it because they short-circuit? | ||
jnthn | I think ng may well generate 'em... | ||
TimToady | ng: say 1 !&& 1 | ||
p6eval | ng 04a857: OUTPUT«Confused at line 1, near "say 1 !&& "current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)» | ||
jnthn | ng: say True !?& True | ||
p6eval | ng 04a857: OUTPUT«Confused at line 1, near "say True !"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (src/stage0/HLL-s0.pir:328)» | ||
jnthn | Oh, no. :-/ | ||
Maybe op= that I was thinking of. | |||
TimToady | we shouldn't generate on spec, mostly we should just do higher-order function calls | 20:58 | |
20:58
rindolf left
|
|||
TimToady | funny that % is considered iffy enough, but && isn't | 20:59 | |
21:02
snarkyboojum left
|
|||
jnthn | std: sub foo(|$capt) { }; | 21:05 | |
p6eval | std 29715: OUTPUT«ok 00:01 106m» | ||
jnthn | std: sub foo(|$capt, $another_arg) { }; | ||
p6eval | std 29715: OUTPUT«===SORRY!===Can't put required parameter after variadic parameters at /tmp/F9HaLx8val line 1:------> sub foo(|$capt, $another_arg⏏) { }; expecting any of: constraint parameter traitFAILED 00:02 106m» | ||
jnthn | std: sub foo($blah, |$capt) { }; | ||
p6eval | std 29715: OUTPUT«ok 00:01 106m» | ||
jnthn | TimToady: Is that last one also an error (that is, it's everything into the capture or nothing)? | ||
std: sub foo(|$capt ($a, $b, :$c)) { } | 21:06 | ||
p6eval | std 29715: OUTPUT«ok 00:01 106m» | ||
jnthn | std: sub foo(|$capt :($a, $b, :$c)) { } | ||
p6eval | std 29715: OUTPUT«ok 00:01 106m» | ||
jnthn | And you unpack with a signature after it if you want both? | ||
ash__ | do grammars currently contain any mechanism for setting precedence? I know nqp has one, but i was wondering if normal grammars do | ||
jnthn | iiuc, we "promote" that signature to be the one considered by MMD too. | ||
21:07
k23z__ joined
|
|||
jnthn | ash__: In Rakudo, you'd be able to inherit from HLL::Grammar I guess. | 21:10 | |
TimToady | no, | is supposed to snapshot the current CaptureCursor, so you can have params before that advance the cursor | 21:11 | |
jnthn | ash__: But that's not a "standard Perl 6" solution. | ||
ash__ | i suppose with MMD on a grammar you can control precedence in a way... is that how your supposed to do it? | ||
cognominal | reading js stuff, I note that for a function C<fun>, there is a fun.toString() that returns its source. Is the equivalent &fun.perl considered for Perl 6? | ||
TimToady | I suppose we could allow params after too if | is considered a zero-width parameter | ||
jnthn | TimToady: Ah, OK...I'd thought only one was allowed. :-/ | 21:12 | |
That was, it was an "all or nothing" thing. | |||
Is there a use-case for snapshotting it part way through? | |||
TimToady | we have to have the ability to have multiple CaptureCursors anyway | ||
jnthn | It's...rather awkward from my current standpoint. :-/ | ||
Partly because CaptureCursor got invented after I did a huge overhaul of the binder. :-( | 21:13 | ||
.oO( All of which would matter less to me if I didn't have a long overdue grant to wrap up that requires me to do |$args ) |
21:16 | ||
TimToady: The "all or nothing" was coming from current spec, FWIW: | 21:19 | ||
It is allowed to rebind the parameters within the signature, but | |||
only as a subsignature of the capture argument: | |||
sub compare (|$args (Num $x, Num $y --> Bool)) { ... } | |||
(from S06) | |||
TimToady | in theory, CaptureCursors would make that trivial | ||
and also enable the correct binding semantics for grep etc | |||
where correct means "non-introspectively" | 21:20 | ||
jnthn | I still don't quite get what such an invocation looks like, though. | ||
If I have { $^n < 100 } for example | 21:21 | ||
And I'm writing grep | 21:22 | ||
If I have this in &condition, for example | |||
What does the invocation look like? | |||
&condition(|@list) would give "too many arguments", presumably. | |||
TimToady | that's what Pm-19 was all about | 21:23 | |
21:23
jackyf left
|
|||
TimToady | though it's only an approximation | 21:23 | |
but basically we have a way of binding that the incoming cursor knows that it's a submatch, and returns a new cursor somehow | 21:24 | ||
you can tell how many things were bound by comparing before/after on cursors | |||
ruoso and I were discussing this the other day too | 21:25 | ||
irclog.perlgeek.de/search.pl?channe...tureCursor | 21:27 | ||
I should probably update Pm-19 with something in terms of CaptureCursor | 21:29 | ||
jnthn | TimToady: That'd be helpful | 21:30 | |
TimToady: Yes, I was there watching that discussion as it happened too. :-) | |||
I even chimed in now and then... | |||
ash__ | wouldn't some sort of precedence mechanism be useful in a grammar? | 21:31 | |
jnthn | ash__: Depends what you were parsing. ;-) | ||
ash__ | well, if you wanted to make a grammar tool for say perl 6 you'd need one | 21:32 | |
jnthn | Right. | ||
TimToady | what do you mean by 'grammar tool'? | 21:33 | |
ash__ | something to parse the perl 6 grammar, so nqp or perl 6 itself would be an example i'd reference | ||
TimToady | um, what do you think it's doing now? | ||
ash__ | not sure, thats why i am asking | 21:34 | |
TimToady | STD.pm already uses operator precedence to parse Perl 6 | ||
jnthn | TimToady: I think ash__ is asking if, when writing a grammar for some other language in Perl 6, if there'd be a way to re-use the operator precedence parsing mechanism as found in STD. | ||
TimToady | sure, but somewhere you have to have a bottom-up parser installed in your grammar that can make use of it | 21:35 | |
ash__ | i just can't form proper questions, thanks jnthn :p | ||
TimToady | that's EXPR in STD | ||
precedence is just annotations on subrules that function as a lexer | 21:36 | ||
any bottom-up parser or parser-generator could examine those precedence annotations and do something reasonable with 'em | |||
though a parser-generator isn't very flexible | 21:37 | ||
which is why STD doesn't | |||
ash__ | how does EXPR know the precedence? is it hard coded into it? (looking at it now, but its a bit large) | 21:38 | |
jnthn | ash__: It's declared along with the operators. | 21:39 | |
TimToady | it's currently set by <O()> assertions in the respective operator rules | ||
jnthn | token prefix:sym<+> | ||
{ <sym> <O(|%symbolic_unary)> } | |||
ash__ | okay | 21:40 | |
TimToady | usually by reference to a set of predefined precedence hashes defined earlier | ||
colomon | hey, how did range.t break while I was out? :\ | ||
jnthn | If you look up %symbolic_unary near the top of STD, you'll see it. :-) | ||
colomon: Not afaik. :-/ | |||
colomon | oh, it's another crash. | ||
jnthn | colomon: oops, missed the "how" | ||
colomon | never mind, then. | ||
jnthn | Oh, roaming segv. :-| | ||
colomon: Do you get one on index.t too? | |||
colomon | not this time, but I've been seeing that one about 2/3rds of the time. | 21:41 | |
TimToady | ash__: and metaoperators either pass through the precedence of the base operator, or impose a new precedence of their own | ||
21:43
hercynium joined,
uniejo left
21:44
uniejo joined
|
|||
TimToady | most parser generators would have difficulty dealing with such dynamic precedence, which is why we stick with simple operator precedence. | 21:44 | |
ash__ | so, if you defined 2 infix ops like: infix:<£> (Int $a, Int $b) {...} and infix:<∞> (Int $a, Int $b) {...} and did 1 £ 3 ∞ 6 would that be... left to right? | ||
TimToady | and because parser generators tend to give lousy error messages | 21:45 | |
ash__ | or would that throw an error? | ||
TimToady | the default is addition prec, which is left associative | 21:46 | |
see also S06:1791 | 21:47 | ||
21:48
hercynium left
|
|||
ash__ | ah, okay so you can set it via the is tighter/is looser/is equiv | 21:49 | |
colomon | jnthn: I think I'm going to revert the change that made a Int constant an Int instead of an Integer. | ||
jnthn | colomon: It's causing other issues? | 21:50 | |
fwiw, it caused no new failures here... | 21:51 | ||
colomon | jnthn: It just seems like we should be consistent (somewhat) and if most Int operations are going to return Integers, there's no sense in making one exception to the rule. | ||
jnthn | Yeah, good point. | ||
TimToady | ash__: most of the operator definitions in STD don't actually belong there, and will eventually move to CORE | ||
ash__ | CORE is the default settings, right? | 21:52 | |
TimToady | yes | ||
CORE.setting has stubs in the current STD directory | |||
mostly to declare known type names, currently | 21:53 | ||
STD implements the setting as an outer lexical scope, though rakudo hasn't got there yet | |||
ash__ | alright, that makes sense, thanks for the info, CORE.setting is pretty helpful actually | 21:54 | |
pugs_svn | r29716 | colomon++ | [t/spec] Remove the 10 abs tests which were tripping up ng, in a fashion which makes them easy to add back in the future. | 22:02 | |
ash__ | is Num's constant pi correct in CORE.setting? didn't it get changed into a rat? | 22:03 | |
colomon | ng: say pi.WHAT | 22:05 | |
p6eval | ng df72c9: OUTPUT«Num()» | ||
ash__ | pugs commit r29714 | 22:07 | |
just asking | |||
colomon | ash__: A Rat64 that would require more than 64 bits of storage in the denominator is automatically converted either to a Num or to a lesser-precision Rat, at the discretion of the implementation. | 22:09 | |
(that's S02) | |||
ash__ | gotcha | 22:10 | |
dalek | kudo/ng: da4a858 | (Solomon Foster)++ | src/Perl6/Actions.pm: Revert "Add :returns('Int') to the integer action, so that we get Ints instead of Integers." This reverts commit d71e295fe6d98950de698e4c7da90ded1f99bcca. |
||
colomon | ng: say abs("-10") | 22:11 | |
p6eval | ng df72c9: OUTPUT«Method 'Num' not found for invocant of class 'Perl6Str'current instr.: 'perl6;Any;abs' pc 259401 (src/gen/core.pir:19809)» | ||
pugs_svn | r29717 | colomon++ | [t/spec] Unfudge three tests which work now. | 22:12 | |
ash__ | ng: say "string".WHAT | 22:17 | |
p6eval | ng df72c9: OUTPUT«Str()» | ||
colomon | ng: say PARROT("string") | 22:18 | |
p6eval | ng df72c9: OUTPUT«sh: ./perl6: No such file or directory» | ||
jnthn | colomon: Youch. I just caught one of the segfaults in the debugger. | 22:19 | |
colomon: It's wrongly allocating memory for a string somehow, it seems. | 22:20 | ||
colomon | yeah? he said, optimistically... | ||
Oh, that reminds me. I don't know if you saw my paste from a couple of days ago, but valgrind seemed to catch it referring to a couple of bytes off the edge of a long allocation. | 22:22 | ||
jnthn | colomon: Hm | 22:23 | |
ash__ | i bet #parrot would love to see a valgrind report on misallocation of memory, thats helpful for tracking down the problem | ||
jnthn | colomon: It seems to be some GC-ish issue. | ||
Memory pool (mis-)management or something. | |||
colomon | jnthn: how did you catch the segfault? | 22:26 | |
jnthn | Ran the code under a C debugger. | ||
colomon | I mean, what file was it? maybe I can valgrind it for further useful information. | ||
jnthn | src/string/apic.c | 22:27 | |
*api.c | |||
Line 904 | |||
->strstart gets set to something invalid in Parrot_gc_allocate_string_storage(interp, s, len); | |||
I'm kinda too tired to go debugging memory pools code right now though. | 22:29 | ||
colomon | I meant, what p6 were you running to get the bug? (I assumed there was a test file involved.) | 22:30 | |
jnthn | arity.t | 22:31 | |
It may be that it doesn't segv on your platform though :-/ | 22:32 | ||
colomon | nope, it sure does segfault here. :) | ||
valgrind, here we go! | |||
dalek | kudo/ng: 2b06cc0 | jonathan++ | src/b (2 files): Stub out capture snapshots in signatures. Note we can't do them as real snapshots until we get CaptureCursor style stuff in place, but we should be able to quickly get equivalent semantics in place, and when we do get CaptureCursor the infrastructure is there to use. |
22:33 | |
colomon | ah, might work better if we were using the same code. :p | 22:34 | |
22:34
Su-Shee left
|
|||
jnthn | Well yeah, it may just be very memory sensitive... | 22:34 | |
colomon | (first valgrind run is still working here. :) | 22:35 | |
jnthn | Of course, it's possible the memory pool code is wrong, but something is corrupting the block sizes, etc. | 22:38 | |
cognominal | please blog all the wonderful stuff you do so that beotians like me can have a vague idea of it. | 22:39 | |
colomon | hmmm, works fine under valgrind. :( | ||
jnthn | :-( | ||
colomon | time to pull and try again. | ||
22:40
sg__ left
|
|||
colomon | nope, still works. :( | 22:44 | |
22:47
uniejo left
|
|||
jnthn | :-( | 22:47 | |
22:48
masak joined
|
|||
masak | ok, I'm officially confused. | 22:48 | |
colomon | masak: one of us! one of us! | 22:49 | |
jnthn | It's official! | ||
masak | I seek clarity. hi, jnthn. | ||
jnthn | What confuseth thee, o masak? | ||
masak | anon enums, their place in the new world order, and the inner workings of Grammar and Actions. | 22:50 | |
I'll try to pose specific questions, see if that helps. | |||
question number one: in gist.github.com/303711 , how come I haz a need for both 'token term:sym<type_declarator>' and 'token type_declarator'? | 22:51 | ||
jnthn | The first says that it is parsable in syntactic category of terms. | 22:52 | |
masak | ok. | ||
jnthn | so if we have <term> then one of the things we can match at that point is a type_declarator | ||
masak | it's a term, I'll grant that. | ||
so it's another entry point than via <declarator>, is that it? | 22:53 | ||
jnthn | Correct. | ||
masak | is the latter for 'my ...' et al? | ||
jnthn | That kinda stuff, yes. | 22:54 | |
masak | \o/ | ||
masak haz a quantum of understanding | |||
jnthn tries not to entangle it | |||
masak | question number two: ok, so it parses. I get an annoying error message. how do I know where to add incantations in Actions? | 22:55 | |
what's the thinking behind adding stuff? | |||
the old world order has a nice, clear method enum_declarator wherein everything happens. | |||
the new one... not so much. | 22:56 | ||
jnthn | You'd want a method matching the grammar rule name | ||
lichtkind | bye | ||
jnthn | method type_declarator:sym<enum>($/) { ... } | ||
masak | lichtkind: \o | ||
jnthn | o/ | ||
lichtkind | :) | ||
jnthn | dobru noc, lichtkind | 22:57 | |
22:57
lichtkind left
|
|||
masak | jnthn: I have that. | 22:57 | |
but it's meanless. | |||
jnthn | Great, so it gets called. :-) | ||
masak | it only does make $<type_declarator>.ast; | ||
jnthn | oh wait | ||
which does that? | |||
masak | oh wait. | ||
jnthn | Your term:sym<type_declarator> one should do that. | ||
masak | that's term:sym<type_declarator> | ||
jnthn | Right. | ||
masak | yes. why? | 22:58 | |
you seem to find that obvious. | |||
jnthn | .oO( that's how I know I've been doing this stuff too long... ) |
||
masak | what am I not seeing? | ||
jnthn | Basically, each thing that we parse in the grammar (or most of 'em, anyway) need to lead to production of some AST node. | ||
Things that do $<term>.ast will need said node. | 22:59 | ||
masak | nodnod. the former part is totally clear to me as well. | ||
jnthn | All you're doing is saying "when the term matched this protoregex, then all we need to do is get the AST node made by the type_declarator's action method and pass it on up" | 23:00 | |
masak | it's just the which-things-end-up-with-which-things part that's not entirely clear to me. | ||
jnthn | Maybe think of it as, you associate bits of AST that you build further down in the tree with the match nodes. | ||
Thus the things above them in the tree - which have the match nodes to hand - can then get hold of the AST nodes that were built by calling .ast | 23:01 | ||
The make function just sets what .ast will return for the match object. | |||
masak | jnthn: (by the way, I hear your Юлія is creating a bit of a FUD over not winning the election.) | ||
jnthn: yes, the thing with the bits of AST and .ast is no issue to me. | 23:02 | ||
jnthn | masak: (Да, но Улия красивая...hmm...but I guess I can't finish that with "so I'm turning a blind eye" :-P) | ||
masak | but I'm still confused over why term:sym<...> should have a trivial implementation, but type_declarator:sym<enum> should not. | ||
23:03
Guest54390 left
|
|||
mberends | .oO( it's so much easier to just leave it to TimToady++ and read viv output ;) |
23:03 | |
masak | jnthn: I could consume the bit of the phrase you could produce, at least. and without resorting to Google Translate :) | ||
jnthn | masak: Because it's doing something like the parse-tree equivalent of delegation. :-) | ||
masak | jnthn: ok, that does help. | ||
jnthn | masak: So looking at wht happens | 23:04 | |
Something does <term> | |||
masak | right. | ||
doesn't much matter what. | |||
jnthn | term is a proto-regex, so we end up magically term:sym<type_declarator> | ||
Tht contains <type_declarator> so we go and parse one of them | |||
at this point we did not run _any_ action methods at all. | 23:05 | ||
ignoring what happens to actually parse a type declarator etc, at the end of the type_declarator rule, the type_declarator action method gets run. | |||
masak .oO( Yulia has a husky, almost spooky voice... ) | |||
www.kniivila.net/2010/tymosjenko-ta...#more-4386 | |||
23:06
payload joined
|
|||
jnthn | How am I meant to explain ASTs to you if you're talking about красивая Улия?! | 23:06 | |
masak | sorry... :) | ||
jnthn | ...where was I... | 23:07 | |
masak | we finally called a method. | ||
jnthn | Ah, OK, so actually type_declarator is also proto_regex, so we end up in the enum variant of it. | ||
Anyway, it calls that action method. | |||
masak | yes. | ||
jnthn | It builds a chunk of AST that represents an enum. | 23:08 | |
23:08
bkeeler joined,
bkeeler left
|
|||
masak | that part represent my question three, by the way. | 23:08 | |
23:08
bkeeler joined
|
|||
masak | you mentioned that it should be possible to do that in pure Perl 6. | 23:08 | |
jnthn | We'll disregard how exactly to do that for now, but the point is we end up with some kind of PAST::Node (e.g. some subclass of it) and we do make $that-ast-that-we-made; | 23:09 | |
This associates the AST with the match node. | |||
The action method returns, and the type_declarator_enum rule returns too | |||
That leaves us back in term:sym<type_declarator> | |||
Which is now at the end of the rule, so it calls the action method there | |||
masak | yes. | 23:10 | |
jnthn | It does not need to do anything to what has been constructed, so it just gets the AST node we built already, which it gets through $<type_declarator>.ast | ||
masak | since we're in term:sym<type_declarator>, it's an anon enum, yes? | ||
jnthn | And it does make of that. | ||
lisppaste3 | colomon pasted "valgrind errors on S03-operators/basic-types.t " at paste.lisp.org/display/94920 | ||
jnthn | masak: No | ||
Not automatically. | |||
masak | the `make $<type_declarator>.ast` is a kind of delegation? it just pulls up the result from its child node. | 23:11 | |
colomon | That paste has what appear to be clear errors caught by valgrind. | ||
jnthn | colomon: Oooh! | ||
masak: It pulls up the node that the action method we ran for type_declarator set using make. | |||
masak | right. seems I get that part. | 23:12 | |
jnthn | masak: It's sorta like delegation, but the result was already produced for us anyway. :-) | ||
masak | indeed. | ||
jnthn | So we just get hold of it. | ||
I guess | |||
masak | aye. | ||
jnthn | We parse by descending | ||
And build AST as we come back up | 23:13 | ||
colomon: That matches the segv I saw. | |||
colomon: But gives more detail. | |||
colomon: It looks like the pool compaction is hosed. | |||
colomon | jnthn: \o/ | ||
masak | jnthn: yep. | ||
jnthn | colomon: Well, unless the code that does pool compaction is fine and the memory got corrupted another way. | ||
masak | jnthn: anywhere I can read up about PAST? I'm a bit fuzzy on both the syntax and the properties of it. | 23:14 | |
jnthn | Syntax wise, it's just like creating a bunch of Perl 6 objects - that's all the nodes are. | ||
colomon | jnthn: how do we get this to the parrot gang? | ||
jnthn | masak: docs.parrot.org/parrot/latest/html/...t.pod.html | ||
masak: That documents the various AST nodes that exist. | 23:15 | ||
masak | thanks! | ||
jnthn | colomon: Maybe filing a Trac ticket is easiest. | ||
masak | \o/ | ||
colomon | I don't know anything about the parrot bug tracking system? | ||
masak | with this new information, I think I can go back into my cocoon and try again :) | 23:16 | |
will be back tomorrow. good night! | |||
23:16
masak left
|
|||
jnthn | trac.parrot.org/parrot | 23:17 | |
23:17
iblechbot left
|
|||
colomon | jnthn: I hate to be dense, but I don't see where to submit bugs there? | 23:19 | |
jnthn | colomon: gah, needs an account | 23:21 | |
colomon: I can submit. | |||
colomon | danke. | ||
"clarify that anon allows a name but doesn't install it for jnthn++" | 23:23 | ||
I'm impressed that the language spec has special cases for jnthn. | |||
:) | 23:24 | ||
23:25
payload left
|
|||
jnthn | ;-) | 23:25 | |
mberends | does that mean the language *does* install a name when the user is *not* jnthn ? | 23:26 | |
colomon | That's how I read it, though I guess it is under-specified. | ||
jnthn can't wait to see the code to detect if it's him. | 23:27 | ||
colomon | Wow, pi.t is spectacularly useless. | ||
None of the tests actually conform to the spec. | |||
and creating 3.14159265358979323846264338327950288419716939937510e0 so you can compare the first five digits to pi is very silly. | 23:28 | ||
23:29
hercynium joined
|
|||
jnthn | colomon: trac.parrot.org/parrot/ticket/1443 | 23:31 | |
mberends | jnthn: why is the Parrot version there 1.9 and not 2.0? | 23:33 | |
(nit, nit) | |||
jnthn | mberends: It's probably not either, it's whatever PARROT_REVISION is set to. | ||
mberends | aha | ||
jnthn | mberends: We'll sync up with latest Parrot soon, I expect. | 23:34 | |
In prep for Thursday release. | |||
If we can re-produce it again then, we can bump the version number in the ticket too. :-) | |||
Just wanted to get the issue and valgrind output recorded. | |||
mberends | fine. I hope ng becomes master by Thursday | 23:35 | |
jnthn | It will. | 23:36 | |
I think pmichaud++ is keen to get slices in place first. | 23:37 | ||
mberends | yes. cool! | ||
jnthn | colomon++ is doing a really great job in lots of built-ins too. | ||
mberends | absolutely. colomon++ | 23:38 | |
colomon blushes | 23:44 | ||
pmurias | jnthn: jnthn might end up a popular user name if it give extra language features | 23:48 | |
mberends | developers: when you have contributed enough to Perl 6, queue here to have a language feature named after you ;) | 23:50 | |
23:53
payload joined,
Rix left
|
|||
lue | Oi! You've talked a lot while I was gone :) | 23:54 | |
mberends | tell me about it... as a confirmed backlog junkie, it's hard to survive off-channel | 23:56 | |
lue | *twitch* *twitch* I'm fine... *TWITCCH* | 23:58 | |
diakopter | <gurgle> | ||
diakopter drowns in the backlog from several days ago until now. | 23:59 | ||
lue | Quick! Get diakopter out of the C++ !!! |