Summer of Perl | 6.2.12 released! | paste: sial.org/pbot/perl6 | pugs.blogs.com | pugscode.org | pugs.kwiki.org | www.treehugger.com/files/th_images/paradigm.jpg Set by nothingmuch on 12 July 2006. |
|||
00:00
weinig joined
|
|||
clkao | fglock, btw, smoke is passing fewer tests than before :/ | 00:03 | |
00:04
diakopter joined
00:07
diakopter joined
00:08
diakopter joined
00:20
hikozaemon joined
|
|||
svnbot6 | r12055 | lwall++ | Some obsolete things in porting_howto. | 00:25 | |
00:28
nekokak joined
|
|||
svnbot6 | r12056 | clkao++ | Add a bunch of passed tests. | 00:31 | |
00:37
lumi joined
00:40
vsoni joined
|
|||
svnbot6 | r12057 | cmarcelo++ | * HsJudy: partial and "dangerous" support to GHC 6.4.2. | 00:57 | |
01:00
diakopter joined
01:12
rodi joined
|
|||
audreyt | chip: 0.4.6 tests clean except for one segfault. | 01:13 | |
patch for that is on parrotbug@ now. | |||
thanks for the releng work. | |||
clkao | audreyt! | ||
audreyt: i meant to ask you something but i already forgot | 01:14 | ||
it's a busy day | |||
svnbot6 | r12058 | cmarcelo++ | * HsJudy: Separate static case to make easy test it. | 01:15 | |
audreyt | chip: that bug was always there, but unmasked by my lexer patch; somehow it did not fail for me prior to 0.4.6 release (might be some intervening commits, might be XCode upgrade); in any case it's now resolved. | ||
for me, that is. | |||
cmarcelo | anyone with 32bits arch and GHC 6.4.2 could test this steps? cd third-party/judy/Judy-1.0.3; ./configure; make; cd ../../HsJudy; make -f Makefile.static test | ||
audreyt | cmarcelo: you can always test on feather... :) | 01:16 | |
but feather has 6.4.1 iirc | |||
cmarcelo | audreyt: 641 is ok i think... how do i test on feather? | ||
audreyt | you got a feather account? | 01:17 | |
(nvm, I'll go test on feather) | |||
clkao: you need irc->hm gateway | |||
clkao | () | 01:18 | |
indeed | |||
cmarcelo | no feather account? how do i get one? | 01:19 | |
clkao | send mail to Juerd | ||
audreyt | at juerd.nl | ||
with your real name, desired login id | 01:20 | ||
cmarcelo | audreyt: btw, use of pugs-fps in HsJudy for GHC < 6.5 isn't there yet.. | ||
audreyt | cmarcelo: | 01:23 | |
All tests successful. | |||
Files=5, Tests=147, 0 wallclock secs ( 0.06 cusr + 0.04 csys = 0.10 CPU) | |||
The Glorious Glasgow Haskell Compilation System, version 6.4.1 | |||
Linux feather 2.6.15.1 #1 Tue Jan 31 00:50:05 CET 2006 i686 GNU/Linux | |||
cmarcelo++ | |||
chip: spoke too soon. t/examples/library.t and t/library/pcre.t segfaulted | 01:24 | ||
# src/ops/core.ops:1169: failed assertion `(interpreter->ctx.bp_ps.regs_p[-1L-(cur_opcode[2])])->pmc_ext' | |||
#3 on library, #1 on pcre | |||
same assertion failure | |||
probably beyond my capability, so I'll punt. | |||
MacIntel GCC 4.0.1 darwin 8.7.1 | 01:25 | ||
TreyHarris | audreyt: i had a fun one today. somebody at $job showed me some Perl 5 code they'd written that went kind of like this: "my $sort = sub { sort @_ }; if ($want_reverse) { $sort = sub { reverse $sort->(@_) } }" and they said "i hope Perl 6 will DWIM appropriately instead of going into an infinite loop". i was kind of at a loss to respond :-) | 01:26 | |
rodi | wow. | ||
audreyt | TreyHarris: yeah. perl6 will dwim just fine | 01:27 | |
TreyHarris | i should've just pointed them at en.wikipedia.org/wiki/Halting_problem | ||
01:27
markstos_ joined
|
|||
audreyt | $sort.wrap( reverse call ); | 01:27 | |
er | |||
$sort.wrap({ reverse call }) | |||
TreyHarris | audreyt: good point! :-) | 01:28 | |
audreyt | :) | ||
markstos_ | I'm trying to compile pugs, but am getting the error ""Setup: cannot satisfy dependency pugs-fps" No google results for that. | ||
audreyt | markstos_: during "make" watch for build errors | ||
for third-party/fps/ | |||
or maybe nopaste the build log? | |||
markstos_ | I got this " | 01:29 | |
Use of uninitialized value in numeric ge (>=) at util/build_pugs.pl line 92." | |||
audreyt | (which GHC version are you using?) | ||
markstos_ | I'll poke more. | ||
ghc 6.4.1 | |||
FreeBSD 5.something. | |||
audreyt | aha. | ||
markstos_ | aha? | ||
TreyHarris | actually, i've been thinking about how closures are brilliant, but people that don't understand them often get into trouble, and in Perl 6 the most common pirate-programmer uses of closures are done more declaratively (state, .wrap, etc.). it's nice. was that an explicit goal, or did it just fall out of the overall normalization process? | ||
audreyt | thanks, fixed. | ||
markstos_ | Maybe I need 'gmake', instead? | ||
audreyt | no, "make" again should be fine | ||
svnbot6 | r12059 | audreyt++ | * markstos++ pointed out that our minimake is bogus on pristine builds. | ||
markstos_ | Whoa. Real time service. | 01:30 | |
audreyt | markstos++ | ||
rodi | audreyt is actually a consortium, I've heard. | ||
cmarcelo | audreyt: ops.. 147 tests? | 01:31 | |
audreyt | TreyHarris: I think "every {} is a closure" and general functional-programming awareness is one of the explicit goals | ||
markstos_ | I'm getting a little different build failure now. I'll paste it. | ||
pasteling | "markstos_" at 12.176.101.89 pasted "build failure on FreeBSD 5.4 with GHC 6.4.1" (81 lines, 4.5K) at sial.org/pbot/18874 | 01:32 | |
audreyt | cmarcelo: that's by hand, sorry | 01:33 | |
Files=7, Tests=236, 0 wallclock secs ( 0.10 cusr + 0.06 csys = 0.16 CPU) | |||
forgot to run BS and Hash | |||
markstos_ | Looks like the core issue may be: "Could not find module `GHC.IOBase'" | ||
audreyt | hm. cabal says you have ghc 6.4.2 | 01:34 | |
markstos_ | Oh. I probably do. :) | ||
audreyt | ok. the core reason is your ghc wasn't built for profiling | ||
we need to probe this somehow. | 01:35 | ||
markstos_ | BRB | ||
audreyt | offending line is line 100 build_pugs | ||
I've disabled it for now | |||
markstos_ | Thanks. | ||
svnbot6 | r12060 | audreyt++ | * disable build for profilign for now | 01:36 | |
markstos_ | Seems to be working. | ||
cmarcelo | audreyt: I've ended up using unsafeCoerce# =P... i'll see if integrate the use of pugs-fps, and then fit it on Pugs build proc.. | ||
audreyt | yay | 01:37 | |
diakopter | sorry to make svn slow; doing my first fresh checkout. | 01:40 | |
01:43
xinming_ joined
01:47
luqui joined
01:59
shachaf joined
|
|||
luqui | TimToady, ping | 02:00 | |
02:00
xern joined
|
|||
TreyHarris | audreyt: erm, is .wrap a mutator? shouldn't that be $sort .= wrap? | 02:01 | |
luqui | last I heard .wrap was a mutator. | 02:02 | |
that was a long time ago... | |||
TreyHarris | oh, i just reread S02. i guess .wrap mutates in void context, but returns a new sub in scalar context | ||
luqui | ugh | ||
that must be fixed | 02:03 | ||
TreyHarris | oh... no | ||
i misread | |||
i was skimming. it returns a handle you can use to unwrap the wrapper. or you can temp'ize it to make it unwrap at the end of the scope | |||
audreyt | TreyHarris: wrap is a mutator. | 02:04 | |
luqui | kay, that's a bit better | ||
TreyHarris | yes, it's a mutator. audreyt is right, as always :-) | ||
audreyt | Code does not support wrap | ||
02:04
weinig joined
|
|||
audreyt | Routine does | 02:04 | |
TreyHarris | i forget, is Sub now Routine? | ||
audreyt | Sub extends Routine | 02:05 | |
as does Method | |||
Routine is common to both | |||
TreyHarris | *nod* got it | ||
audreyt | upshot is | ||
({...}).wrap | |||
fails | |||
(sub {...}).wrap | |||
works | |||
just like | |||
(1,2,3).push | |||
fails | |||
[1,2,3].push | |||
works | 02:06 | ||
luqui | that's a little disconcerting... | ||
TreyHarris | thanks. sometimes with Perl 6 i feel like the guy in the science fiction story who chose to be put in suspended animation and be brought back to life for one day a year. after awhile, the hardest thing for him was getting used to how the language was changing, and his vernacular was obsoleting faster than he could learn the new :-) | 02:07 | |
it's recognizably the same Perl 6 as the one in Apo 2. But it's also changed a lot. | 02:08 | ||
chip | audreyt: I've captured your bug report | 02:10 | |
audreyt: I'll look at it once svk works again | 02:11 | ||
or maybe I'll go back to svn for now | |||
TreyHarris | ?eval [1,2,3].push(4) | 02:12 | |
02:12
weinig joined,
evalbot_12023 is now known as evalbot_12060
|
|||
evalbot_12060 | 4 | 02:12 | |
TreyHarris | ?eval [1,2,3].push | ||
evalbot_12060 | 3 | ||
clkao | chip: so sorry :/ | ||
chip | clkao: no worries, I've converted once, I can do it again :-) | 02:14 | |
audreyt | luqui: having each block carrying a Wrap queue is very expensive | 02:15 | |
so in tokyo we reasoned that it's probably wise to put it at routine level | 02:16 | ||
luqui | that is reasonable | 02:19 | |
seems kinda like it should be done at the symbol table level, though | |||
i.e. &routine.VAR.wrap... | 02:20 | ||
audreyt | that will prevnt $foo.warp | ||
$foo.wrap | |||
luqui | hmm, true | ||
audreyt | also will destroy the original intent of action-at-a-distance refs | ||
:) | |||
luqui | i see | ||
so is .wrap the only way to action-at-a-distancely replace code? | 02:21 | ||
(wrapping but not ever "call"ing) | |||
audreyt | is it not the most generic possible one | 02:22 | |
where all others can be defined on?:) | |||
it's like saying | |||
"is assign the only way to replace Scalar? :)" | |||
luqui | heh | ||
okay, one more question | |||
is a code object available to the wrapper? | 02:23 | ||
which calls the unwrapped routine? | |||
is &call lexical, that is? | |||
audreyt | yes it is. | ||
luqui | okay, I am satisfied. | ||
audreyt | yay :) | ||
luqui | the "wrapper id" business still bugs me. | 02:24 | |
but I suppose it is a decent way to unwrap a rountine which has been subsequently wrapped by someone else | |||
audreyt | it's just its VALID | ||
I mean VAL | |||
I mean VID | |||
whatever :) | |||
luqui | larry just changed it to something silly | ||
uh... SKID | |||
that's it | |||
audreyt | serious? ;) | 02:25 | |
luqui | his latest commit. | ||
audreyt | wow | 02:26 | |
he's got to be skidding. | |||
luqui | hehe | ||
audreyt | but I don't care about ergonomics </mantra> | 02:27 | |
luqui | so the wrapper id is the *wrapper's* SKID? | ||
or the routine's? | |||
at the time that is | |||
oh... | |||
value type. "at the time" is meaningless | 02:28 | ||
if it has a SKID | |||
audreyt | yup. | ||
timelessness | |||
luqui | so it's got to be the wrapper | ||
audreyt | yup. | ||
luqui | it just seems to me that if you say: &foo.wrap:{ something not involving &call } | 02:29 | |
and don't store its id | |||
the previous code should be gc'd | |||
audreyt | &foo.wrap(&foo.SKID) | ||
chip | audreyt: the t/example/library.t failure is on libpcre? | ||
audreyt | is unwrap of outermost | ||
I think | |||
chip: yeah | |||
chip: I mean, it fails on assertion | 02:30 | ||
luqui | uhmmm.... | ||
chip | audreyt: probably a stealth version dependency ... or maybe anyway | ||
02:30
shachaf joined
|
|||
luqui | but &foo.SKID doesn't change... | 02:30 | |
chip | audreyt: copy/paste? and which version of libpcre do you have? | ||
audreyt | luqui: good point... | ||
chip | oh wait, | ||
audreyt | &foo.unwrap; # outermost | ||
perhaps? | |||
chip | audreyt: the failed assertion happened on both the library and pcre tests? | 02:31 | |
audreyt | yes. | ||
chip | ah | ||
luqui | that sortof makes sense in a that-will-seldom-be-useful kind of way | ||
my intuition tells me that the "wrapper queue" should be implicit | |||
in the references kept by the wrapper codes | |||
chip | audreyt: those tests are both libpcre | 02:32 | |
audreyt: I've got libpcre 6.4 installed; perhaps you have something substantially older or newer? | 02:33 | ||
luqui | audreyt, if wrap is to be the most general thing on top of which everything can be built | ||
audreyt | 6.6 here | 02:41 | |
but anyway... I need to run | |||
luqui: I do agree | |||
but $job. bbl | |||
luqui | adios | ||
vsoni | hi audreyt | 02:42 | |
02:49
cmarcelo left
|
|||
markstos_ | Where can I find documentation about the difference between $.foo and ./foo ? I don't know how to search for "dot slash"... | 02:51 | |
02:53
jmf joined
|
|||
markstos_ finds Perl6::Oveview::Operator | 02:54 | ||
luqui | marcus_, I don't think ./foo exists | 03:00 | |
markstos_ | luqui: Sure it does. I just tested it. | 03:01 | |
luqui | in pugs perhaps | ||
in perl 6, perhaps not | |||
$.foo(1,2,3) calls foo | |||
for a couple weeks, ./foo(1,2,3) calls foo | |||
but then it was changed | |||
but pugs did not change it | |||
this was like a year ago | |||
markstos_ | It's metioned in Perl6::Overview::Operator, although there's hardly any other docs on it. | 03:02 | |
luqui | look in S03 | ||
oh, nevermind | |||
it doesn't mention either | |||
markstos_ | But I was made a simple test script where $.foo() didn't work, and ./foo. | ||
luqui | surely S12 would | ||
markstos_ | and ./foo did. | ||
luqui | okay I checked S12 | ||
markstos_ | I just wanted to call one method from another. | ||
luqui | pugs is wrong | 03:03 | |
but if that's what works, I'd say use it | |||
markstos_ | I poked in ext, and saw ./foo in HTTP::Server::Simple, which is where I got the idea. | ||
03:04
kanru joined
03:05
neoesque joined
|
|||
pasteling | "mark_" at 12.176.101.89 pasted "which is right to call another method? $.foo or ./foo ?" (14 lines, 207B) at sial.org/pbot/18877 | 03:06 | |
markstos_ | luqui: I'll use $.foo if it's more recommended, but as you can see from my paste, it doesn't work for me, when "./foo" does. Am I missing something ? | 03:07 | |
luqui | markstos_, do use ./foo | ||
just understand that it will be changed to $.foo when someone gets around to it | |||
markstos_ | luqui: Ok. Then what does $.foo do ? I see that in code too. It appears to work with attributes at least. | 03:08 | |
luqui | in pugs, it identifies an attribute | ||
in perl 6, it calls a method | |||
(also works for attributes) | |||
(because of a weird unification between attributes and methods) | |||
markstos_ | I'm surprised pugs doesn't implement this detail of the spec yet. | 03:09 | |
luqui | I am too | ||
I would implement it, but I am suffering from a fear of pugs internals | |||
markstos_ | :) | ||
luqui | once I start, I don't think it will take me that long to get back into it | ||
03:11
luqui joined
|
|||
PerlJam | luqui: btw, welcome back :) | 03:15 | |
luqui | thanks | 03:18 | |
03:21
bpederse_ joined
|
|||
markstos_ | It looks it ".=" is now part of the OO system. How do I translate Perl5's ".=" to Perl6? I checked the docs some and can't find this. | 03:25 | |
TreyHarris | markstos_: ~= | ||
PerlJam | markstos_: ~ is the new . :) | 03:26 | |
TreyHarris | string-concat is now ~ | ||
markstos_ | Got it. | ||
I should have guessed, since I already figured out "~" on its own. That's logical. | |||
TreyHarris | markstos_: and to call one method from another, the canonical way, i believe, is "self.methodname($arg, @args)". $.methodname imposes a scalar context | 03:27 | |
markstos_ | "self"... with no leading "$" ? | ||
There is apparently also "$?SELF", which is confusing. | 03:28 | ||
TreyHarris | $?SELF is a compiler variable | ||
markstos_: correct, just self. | |||
markstos_ | TreyHarris; Thanks. I've verified that now. | ||
I think I'll go back and switch all the "./" calls I put in, since they are apparently non-standard. | 03:29 | ||
TreyHarris | i'm not clear on when, if ever, $?SELF may differ from self. but self is the one to use. | ||
PerlJam | markstos_: ./ was a good dream for a while, but a bunch of people didn't like it for some reason | 03:30 | |
markstos_ | I think it kind of looks neat, but "self." definitely looks more "normal" | ||
03:30
agentzh joined
|
|||
PerlJam | most times you won't even need to say "self" as .method(...) will be the same as $_.method() and $_ will be self. | 03:31 | |
TreyHarris | i suppose $?SELF could be used in cases where you simply must have a variable for some introspection wizardry. | 03:32 | |
agentzh has paid 8 US dollars to WaysOnline, so he will have a reliable IRC/SSH connection in the next 6 months. | 03:33 | ||
markstos_ | Really? I didn't realize I could depend on $_ to be the current object. | ||
luqui | PerlJam, we discussed that for a long time | ||
TreyHarris | PerlJam: that's been asserted, but I think it's a tenuous assertion. | ||
luqui | and some of us decided that it's a really bad idea to have $_ be the current object | ||
markstos_ gets the idea that self. is safer... | |||
PerlJam | markstos_: indeed. | 03:34 | |
TreyHarris | it's very natural to say, "oh, i need to do this a few times", and surround previously-working code with some other code--boom! | ||
luqui | because then "call my method" is different depending on where you use it | ||
TreyHarris, exactly | |||
I don't like self. either, because it fills my code with "self"s... | |||
it's that property of perl 5 I was trying to counter with Perl6::Attributes | |||
./ was good; I don't mind $. either. | 03:35 | ||
markstos_ | But "$." doesn't work right now... | ||
luqui | but it feels strange specifying the context explicitly when it is implicit in the rest of the language | ||
oh... right. | |||
markstos_ | At least we got rid of needing "my $self = shift" everywhere. Good riddence. | ||
luqui | yeah, that's a kicker for people who are actually programming :-p | ||
TreyHarris | remind me why plain ol' "meth()" can't DWIM? | ||
luqui | TreyHarris, the same reason $.foo can't be called $foo | 03:36 | |
markstos_ | TreyHarris. I'll check that. | ||
luqui | because larry doesn't like not being able to tell whether it is a function or a method | ||
PerlJam | I don't like it either. | ||
Most importantly, perl doesn't like it :) | |||
markstos_ | luqui: I thought that's why we have "method" in addition to "sub" now... | 03:37 | |
luqui | markstos_, no, i mean for calls. | ||
when you come across foo(), it's good to know at least where to look for foo() | |||
in the same class or parent class, in some module somewhere, defined earlier in the file... | |||
markstos_ | Ah. I see. | ||
TreyHarris | luqui: but multi calls are not distinguished, and a multi could literally be *anywhere*. | 03:38 | |
luqui | TreyHarris, true | ||
TreyHarris | so you have to fire up the debugger or do a search on your codebase | ||
luqui | TreyHarris, they are not distinguished for a good reason though. | ||
it's one of those conflicting desires thing | 03:39 | ||
s | |||
03:39
weinig joined
|
|||
luqui | basically, if a multi is used for implementation purposes | 03:39 | |
you don't want to mark the multiness on the caller's end | |||
because then if you find a better way to implement it which is not multi | |||
then you break all the code | |||
I think there is a deeper problem though | |||
the distinction between multi for implementation and multi for overloaded meaning | |||
but I also think by putting that distinction in the language | 03:40 | ||
we are begging people to mess it up | |||
so a compromise is a good solution... until we decide that it is not | |||
TreyHarris | well, and I can see people writing "multi sub methodname ($?CLASS $self...) {...}" in order to save themselves typing later | 03:41 | |
luqui | TreyHarris, elaborate | ||
PerlJam | luqui: does this mean you're *really* back? ;) | ||
luqui | PerlJam, does what mean I'm *really* back? | 03:42 | |
PerlJam | luqui: this is the most vocal I've seen you since ... well, last time you were around :) | ||
luqui | hmm... | ||
interesting observation | |||
TreyHarris | if inside your class, you write the above, then "methodname()" would work identically to "self.methodname()" defined with "method methodname() {...}", would it not? | ||
luqui | PerlJam, oh and yes I do think I am *really* back, unless school takes over my life again | 03:43 | |
I set up my schedule to enable that not happening this time around, though | |||
PerlJam | TreyHarris: nope. | ||
markstos_ | TreyHarris: I just tried that in a play module, and it doesn't work. | ||
svnbot6 | r12061 | markstos++ | switched from non-standard "./" syntax to standard "self." syntax in HTTP::Server::Simple. | ||
luqui | hopefully it will work out | ||
TreyHarris, I suppose so.. | |||
TreyHarris | PerlJam: ok, why not? | ||
PerlJam | TreyHarris: your multi would still need to be passed the $self parameter. | ||
luqui | PerlJam, good catch | 03:44 | |
TreyHarris | oh, of course :-) | ||
revdiablo | Is the './' syntax not standard anymore? | ||
PerlJam | luqui: Well, it's good to see you engaged again at any rate. | ||
luqui | revdiablo, doesn't seem so | ||
revdiablo | Dang. I kind of liked that. | ||
PerlJam | revdiablo: I don't think it ever was "standard", just a pugsism. | ||
luqui | yeah me too | ||
but those who didn't were pretty vocal | |||
TreyHarris | i liked ./, i didn't notice it went away until a few weeks ago, and i couldn't find the discussion of why it went away. it wasn't on p6-l... | 03:45 | |
revdiablo | PerlJam: I was under the impression that it was borderline official, but I have been following less and less | ||
luqui | It went away quietly | ||
PerlJam | TreyHarris: bring it up again on p6l and see what happens | ||
luqui | because any time larry said anything about the issue loudly | ||
markstos_ | ./ works today. It just doesn't seem to really be documented officially... | ||
luqui | people complained... loudly | ||
if you look at the size of that debate | 03:46 | ||
TreyHarris | luqui: where? i'll go search perl.perl6 on google, maybe it was on a list i wasn't subscribed to | ||
luqui | p6l I believe... | ||
I will try to find it | |||
TreyHarris | ugh, +"./" is not a reasonable google search term | 03:47 | |
PerlJam | Try yahoo. It's better with punctuation than google (though it may not have the right things indexed) | 03:48 | |
markstos_ | TreyHarris: Yeah and searching for the "dot slash operator" won't get you much farther... | ||
TreyHarris | oh, i found it. perl6-l, a discussion starting june 16 2005 | ||
luqui | hmmm.. I don't see it in my archives | 03:49 | |
what is the subject? | |||
TimToady | hi luke, pong | 03:50 | |
luqui | ./method, pong | 03:51 | |
TreyHarris | ah, he conjectured that you could do "use self '';" if you want that | ||
TimToady | dead unless you use self './' or some such. | ||
TreyHarris | oh, and there he is :-) | ||
luqui | TimToady, I was going to ask you to clarify some things about whatever VALID is named now.... | ||
I think I'm clear on it now. | |||
TimToady | um, s* key id | ||
luqui | skid, right. | 03:52 | |
TimToady | where s can be safe, static, supercalifrajilisticexpialidocious | ||
mostly just trying for *id that isn't likely to map onto any ID the user wants. | |||
03:53
frederico joined
|
|||
PerlJam | TimToady: I think you hit the target | 03:53 | |
TimToady | I really look at all the short *id words in the dictionary... | ||
luqui | overloading === trumps SKID, right? | ||
TimToady | presumably. | ||
luqui | i.e. the default === is implemented in terms of SKID? | ||
okay. that was my main question. | |||
TimToady | presumably | ||
much as default eqv is implemented in terms of, oh, say SNAP or some such. | |||
luqui | oh no... snap? | 03:54 | |
TimToady | where SNAP gives you a canonical current snapshot of the thing | ||
luqui | oh, i thought it was another acronym | ||
TimToady | could be. :) | ||
luqui | actually this is getting a little less clear | 03:55 | |
TimToady | but it could just be any kind of freeze or pickle or whatever | ||
luqui | SKID returns a value type? | ||
PerlJam | I sure am glad most of the METHODS get called implicitly for me :) | ||
TimToady | eqv is more-or-less would these two things serialize the same right now? | ||
luqui | actually, could you just give me an example of, say, a SKID for a 2D vector value type? | ||
TreyHarris | TimToady: isn't it unfortunate Huffmanization for "self.routinename" when within a class, you're going to call other methods of the class quite frequently? or do you imagine that people will prefer the "$." and "@." forms, and only switch to "self." when they actually need a dynamic context for the call? | 03:56 | |
TimToady | value types typically just return themselves | ||
which of course means they'd better overload === :) | |||
luqui | oh. so, what would override SKID which is not a value type? | ||
TimToady | I think the $.foo form will prevail | ||
something that's not a value type that wants to be a value type. | 03:57 | ||
luqui | so, like, a vector class? | 03:58 | |
TimToady | sure | ||
luqui | so then how would you write SKID for a vector class? | ||
luqui feels like he already asked this question :-) | |||
TimToady | method SKID { return self } | 03:59 | |
luqui | oh. you feel like you already answered it. :-) | ||
TimToady | s* also stands for "secret". doesn't have to stringify. | ||
luqui | and then === gets two vectors, how does it compare them? | ||
TimToady | (by defualt) | ||
using the overridden === | 04:00 | ||
luqui | oh, so the vector class would override ===, too. | ||
I see. | |||
TimToady | which i just said too. | ||
luqui | yeah, well, I was getting confused with all this talk about things which aren't value types which want to be | ||
PerlJam | perl6 needs a "pretend" operator | ||
TimToady | generally, you only have to worry about === | 04:01 | |
PerlJam | unless you're on the SKIDs | ||
luqui | TimToady, so is overriding SKID the thing that tells perl to give this value rather than reference semantics? | ||
TimToady | if you override it right. | ||
luqui | er. wait. | ||
the thing that does that is simply not to provide any mutators. | |||
TimToady | that too. | 04:02 | |
luqui | I've been doing a lot of ruby programming, and I noticed something interesting | ||
you're not allowed to override +=. | |||
instead it just interprets it as an = and a + | |||
so it behaves like a value type in that situation | 04:03 | ||
and there's nothing you can do about it. | |||
which, in a way, seems right. | |||
isn't that after all what += is supposed to mean. | |||
If I see: $foo = $bar; $foo += $baz; | 04:04 | ||
svnbot6 | r12062 | markstos++ | little code alignment improvement | ||
TimToady | depends on how "meta" the metaoperator is, I guess. | ||
we don't let people redefine hypers. | |||
luqui | I would either like to assume that if $baz != 0, $foo != $bar. | ||
or assume that $foo == $bar no matter what | |||
no matter what kind of thing is in that variable | |||
on the other hand, maybe this is just my value-type bias comin gout | |||
*coming out | |||
TimToady | that's why our preference is to move out to unicode rather than to overoverload | ||
I'm the one who's old enough to have gout comin | 04:05 | ||
but as you well know, mostly I just wave my hands on all this and wait for Audrey to tell me which parts of it make sense. :) | 04:06 | ||
PerlJam | TimToady: is there a top-10 list of language features that need more flesh or do you guys (or just you) work on what people are asking about? | ||
TimToady | er...kinda | 04:07 | |
luqui | TimToady, so perl 6's design is starting to become implementation-driven? Or audrey is starting to think more about design? | ||
PerlJam | luqui: little of both from where I'm sitting | ||
TimToady | could definitely use some more expertise in the multiprocessing/event/stm area | ||
yes, we've been mostly implementation driven for a year or so now. | 04:08 | ||
and we're starting to be teacher driven | |||
luqui | hmm? | ||
TimToady | people coming back and saying "we don't know how to teach this clearly" | ||
luqui | ahh | ||
PerlJam | merlyn strikes again! :) | ||
TimToady | among others... | ||
so some of the recent renamings have been for that reason | 04:09 | ||
env vars are now context vars | |||
luqui | is that the declarator? | ||
TimToady | though .elems is still .elems for the moment | 04:10 | |
not any more. "is contextual" or some such | |||
TreyHarris | but they still go to the environment eventually, right? so $+HOME will work like $ENV{HOME}? | ||
TimToady | so you can put it on parameters, for instance. | ||
luqui | you know, I always feel yucky when I use .length in ruby | ||
TimToady | or on state variables. | ||
luqui | I like the .elems/.chars distinction | ||
TimToady | heh | ||
I like the plural-means-count'em consistency. | 04:11 | ||
but it could be, say, .items | |||
PerlJam | items does have the benefit of being an actual word | ||
TimToady | nod | 04:12 | |
PerlJam | But I still like elems as I'm always talking about "array elements" and it's easy enough to get to "elems" from ther. | ||
TimToady | well, guess why it's still .elems... :) | 04:13 | |
04:13
vsoni left
|
|||
TreyHarris | i'd expect .items to be how i get a list out of a container. so i'd expect it to act like P5 @a... scalar context, length; list context, elements inside. | 04:13 | |
PerlJam | TreyHarris: you're just weird ;) | ||
luqui | I'm not that much of a naming fanatic--that's more your and Damian's turf--but I'll point out that "context" is one of the most overloaded words in computer science. | 04:14 | |
TreyHarris | PerlJam: or maybe i had a bad data structures professor. he used the word "items" that way. like "the items in the b-tree", etc. | ||
TimToady | yes, well, be we haven't overloaded context yet. oh wait... | 04:15 | |
*but | |||
PerlJam is waiting for @Larry to run out of good names to use and just start making up terms "this is a snee variable. What's a snee? Well, I'm glad you asked ... " :-) | 04:16 | ||
TimToady | but Audrey argued that this context is consistent with our current use of context already. | ||
luqui | in a way it is | ||
TimToady | it's a SKID | ||
luqui | but in another way, that makes it worse | ||
no, that's the same way | |||
TimToady | same argument for env | ||
luqui | true... | 04:17 | |
$+FOO = 42 doesn't set a shell environment var | |||
PerlJam | Then clearly they should be "habits" and "habitual variables" :) | ||
TimToady | but we haven't use the word "context" in the language before now, so at least that's okay. | ||
who was it suggested "ambiance"? :) | |||
jmf | milieu | 04:18 | |
PerlJam | (but maybe "habitat" makes more sense in an environmental way :) | ||
04:18
xinming joined
|
|||
luqui | that's true. the type expected from a return might evolve a name like "sigil" did | 04:18 | |
TimToady | habitable variables, and canada... | ||
it's called "want"... | |||
which is currently defined as &return.signature | 04:19 | ||
luqui | oooh, yum, &return | ||
is that how you take the current continuation? | |||
TimToady | shh | ||
luqui | sub callcc(*&code) { code(&return) } | 04:20 | |
any mind-blowingly major changes I should know about? | 04:22 | ||
PerlJam | luqui: did you leave before or after Captures? | ||
luqui | not sure. | 04:23 | |
TimToady | you could svn diff | ||
luqui | uh, yeah. | ||
TimToady | or svn log | ||
luqui | but... that would take a long time to read. | ||
that would take a shorter time to read | |||
stupid version control, making me do stuff to find stuff out... :-) | 04:24 | ||
instead of relying on people's memory... which is much more reliable. | |||
PerlJam | TimToady: did you ever decide what to do with the modifier form of if/unless/while/until/etc? | ||
luqui | PerlJam, what is wrong with it? | 04:25 | |
PerlJam | luqui: problems parsing meaning in the absence of trailing semi-colons on some blocks. | 04:26 | |
TimToady | that's partly why we now have "unspace" | ||
(backslashed space) | |||
luqui | backslashed... any whitespace right? | 04:27 | |
TimToady | yes | ||
luqui | whew | ||
TimToady | we like generality | ||
luqui | we like not having to worry about whether your editor thinks there is whitespace after this character or not | ||
TimToady | comments and pod count as whitespace | ||
luqui | so \#foo is an unspace? | ||
TimToady | yes | ||
lasting till the first non-whitespace on the next line, or wherever | 04:28 | ||
PerlJam | \#{ and this is a | ||
luqui | lasting till the next non-whitespace I would imagine | ||
PerlJam | multi-line unspace} | ||
TimToady | yes. | ||
luqui | oh, that will make a few people happy | ||
TimToady | luqui: you were here for #{...} right? | 04:29 | |
luqui | in the last two weeks, I have been asked four questions about perl | ||
three of them were "does perl have a multiline comment" | |||
I don't recall. | |||
it's not very important to me, but I don't remember it. | |||
TimToady | it's there more for future proofing grammar changes | ||
luqui | you mean so we don't end up with 500 ways to do a multiline comment? | 04:30 | |
jmf | TimToady: is there a BNF for the grammar anywhere? | ||
TimToady | yeah, or simply that someone introduces a grammatical change that makes them make more sense. | ||
luqui | jmf, I'd doubt it, because perl 6 is not context-free | ||
TimToady | same for unspace policy. | ||
luqui | jmf, or not obviously context-free in any case | 04:31 | |
TimToady | there is essentially a BNF for the *initial* standard P6 grammar. | ||
but any lexical scope is free to evolve to a higher plane of existence | |||
or a lower... | |||
luqui | I wouldn't call it a BNF... | ||
TimToady | I use the term loosely | ||
PerlJam | TimToady: I think it's more like an LWF grammar :) | 04:32 | |
jmf | i mean is there one where I can see it... | ||
TimToady | but the point is that the revisions are intended to be coded in the same system | ||
with limitation of damage to particular rules | |||
PerlJam | jmf: there's one that comes with parrot | ||
TimToady | so we don't fall into the source filtering fiasco quite so quickly. | ||
PerlJam | jmf: parrot/languages/perl6/src/grammar_*.pg | 04:33 | |
jmf | ahh thanks | ||
TimToady | I think the one in pugs is more advanced, but you still have to wade through the P5 wrappers at the moment. | ||
this should change soon, since apparently the p6-on-p6 effort is very close to bootstrapping. | 04:34 | ||
jmf | would it be useful to make a p6 module that generates pseudo-random expressions for testing/crosstesting purposes? | 04:35 | |
luqui | jmf, not for regression tests | ||
because you would have to check your generator | |||
I think pugs's test suite will be fine | 04:36 | ||
jmf | well i meant more for testing multiple implementations | ||
luqui | s/test/massive test/ | ||
TimToady | I think the test suite needs to be about 4 times bigger than what it is, at least. | 04:37 | |
luqui | jmf, so you would do correlation: X works here but not there | ||
PerlJam | jmf: so how would that work exactly? Generate some random expression and then see which implementations accept it and which decline? Then what? | ||
jmf | then you would have output of which they differed on | ||
luqui | and a human would look at the output | ||
and go, yep, that's nonsense all right | 04:38 | ||
jmf | yes, presumably | ||
PerlJam | the generated expressions had better be fairly small then | ||
or you'd need a tool that chops the expression into parts until you find the part that doesn't parse | 04:39 | ||
jmf | well yes...and no | ||
i guess you would want many little-medium sized expressions | 04:40 | ||
but that doesnt mean you couldnt generate blocks as well | |||
PerlJam | jmf: also, once you have the expression, would you also generate strings to match it against? | ||
jmf: or would the expression actually be a generator? | |||
luqui | PerlJam, huh? | ||
jmf | well i was thinking there would be no good way to do that | ||
unless you crosstested with another language... | 04:41 | ||
but that would make it a much bigger module | |||
i suppose for any part of the language that is easily mapped to another, say python, you could also generate expressions from that subset and compare | 04:42 | ||
04:42
drbean joined
|
|||
PerlJam | luqui: I took "expression" in the context of "regular expression" or "perl6 rule expression". Perhaps that was a poor direction to go :) | 04:42 | |
04:43
EdLin joined
|
|||
luqui | yay .fmt! | 04:45 | |
TimToady | except .as may be going away, so we could reclaim it | 04:46 | |
luqui | where will .as go? | ||
TimToady | Type($x) or $x.Type | ||
luqui | er.. wasn't there a time when you were considering $x.Type | 04:47 | |
TimToady | could still have infix:<as>, but it would mean one of those. | ||
oh, probably. | |||
luqui | and then decided that it polluted the method space too much? | ||
or something. | 04:48 | ||
TimToady | what we have currently is that $x.method fails over to method($x) | ||
so it wouldn't hide an explicit method declaration | |||
luqui | and if you had: $foo = Type; $foo($x), that would be the same thing? | ||
essentially types can be called, and their action is a typecast... | 04:49 | ||
TimToady | yes | ||
only works for single args though, by default. | |||
luqui | so no Type($x,$y) | 04:50 | |
that doesn't make sense to me anyway | |||
TimToady | and only if you've declared an explicit coercion | ||
luqui | oh, that's a bit different | ||
TimToady | only builtin types like Int and Str coerce implicitly | ||
PerlJam | luqui: Line($point1,$point2) # cast two points into a line ;-) | ||
luqui | this is to releive the pain that we were talking about yesterday? | 04:51 | |
TimToady | you can certainly write a multi-arg constructor | ||
TreyHarris | so if you have a method .Type, that would mask the coercion? or it would be your own implementation of coercion? | ||
luqui | where the argument to .as needs to be considered covariantly? | ||
TimToady | that's why we're getting rid of .as, because it really wants to be contra | ||
04:51
frederico joined
|
|||
luqui | .as just needs to do dispatch on context | 04:52 | |
which (as TSa corrected me long ago) is covariant | |||
anyway, that's just the terminology, probably best not to use it at all | |||
TimToady | anyway, .as was just a way to disguise the writing of a constructor for someone else. | ||
luqui | oh, so we're going C++-style where casts are constructors | 04:53 | |
TimToady | so maybe it's now just "method ::OtherType" | ||
TreyHarris | contra mmd is just ordinary method dispatch, isn't it? | ||
on a single arg | |||
luqui | TreyHarris, right | ||
TimToady | Type($x) is probably guaranteeing you a new object, at least in the abstract, though you can play COW games. | 04:58 | |
$x but Type is a cast | |||
which may or may not copy $x depending on whether it already supports Type | 04:59 | ||
TreyHarris | a cast? it's casty, but it's not a cast like any other language's cast that i know of. "2 but False" keeps its 2-ness | ||
luqui | unrelated: does &?ROUTINE inside a method refer to the routine bound to the invocant, or does it need to be given another invocant | ||
TimToady | well, it's a mixin | ||
but it doesn't change 2, but a copy of 2 | |||
luqui | i.e., to call yourself inside a method, do you say $?ROUTINE(args) or self.$?ROUTINE(args) | ||
TimToady | the first won't work unless you pass self explicitly. the second probably works | 05:00 | |
05:01
agentzh joined
|
|||
PerlJam | $?ROUTINE.call($?CAPTURE) isn't it (or whatever the right syntax is) | 05:01 | |
How do you get at the current routine's capture? | |||
TimToady | you don't, unless you've declared a capture parameter | 05:02 | |
luqui | okay, unbound | ||
05:03
kanru joined
|
|||
PerlJam | Seems like that should be part of the contextual stuff that perl gives you implicitly. | 05:04 | |
05:07
lidden joined,
marcus_ joined,
TimToady joined,
cookys joined
05:11
rashakil__ joined
05:16
Eidolos joined,
mugwump joined
05:19
luqui joined,
arguile joined
|
|||
luqui | ... so...much...syntax... | 05:19 | |
have my idle comments upon reading the svn log been recieved? | |||
05:20
shachaf joined
|
|||
TimToady | received where? | 05:21 | |
not here. | |||
luqui | there was some disconnecty thing going on | ||
I will save the important ones: | |||
er, relatively important. | 05:22 | ||
There are no builtins which default to $_ anymore? | |||
TimToady | yak-shed painting... | ||
to the first approximation, yes. | |||
m/foo/ does though | |||
luqui | okay. | ||
what's this Capture business? | 05:23 | ||
TimToady | typeglobby/fatref base class for Arglists and Matches and XML nodes. | ||
luqui | uhhhh... | 05:24 | |
TimToady | what naturally matches up against a Signature | ||
luqui reads the relevant portion of S06 | |||
.call does not introduce a CALLER frame, but does it return? | 05:26 | ||
is it goto &sub or something else? | |||
TimToady | yes, it returns. | ||
(to the current place) | |||
so you can put both pre and post wrapper stuff around any .call | 05:27 | ||
otherwise you could just use 'next METHOD' or some such. | |||
luqui | S06, line 713: Parameters before the List ... | ||
do you mean Capture, or is List correct? | |||
and if so, what is a List? | |||
TimToady | fossil, I think. | 05:28 | |
pre-capturian | |||
luqui | hey, I have joined the archaeologist crew | 05:29 | |
PerlJam | yeah, but your job here should be to smash the fossils against a convienent wall rather than preserve them. | ||
er, no pun intended there. | 05:30 | ||
luqui | haha | ||
I'm taking my job as to look at the fossils which have been smashed against the wall, what has been falsely planted in their place | 05:31 | ||
and smash the replacements which don't make sense against The Wall | |||
05:31
meppl joined
|
|||
luqui | my grammer no good work | 05:32 | |
PerlJam | grammer and speling are for the weak! :-) | ||
luqui | you mean the week, right? | 05:33 | |
PerlJam | well, I can't help but spell what I think sometimes. | ||
curse my pedantic fingers for ruining a good joke :) | |||
TimToady | lessee, what else changed. infixes with null right arg went away, so $x... became $x..* | ||
xinming | :quit | 05:34 | |
oops. sorry | |||
luqui | TimToady, caught that one | ||
TimToady | loop...while became repeat...while | ||
luqui | also the death of prefix * | ||
TimToady | hence [,] all over | ||
luqui | which is interesting, because its death deemed my next futile junctions proposal unworkable | 05:35 | |
as far as junctions go, I keep coming up with ways to make them better, but I've decided that I'll keep them to myself. | |||
oh, how is signature-wise decomposition going? | 05:36 | ||
sub foo([$x,$y, Bar($z)]) {...} | 05:37 | ||
TimToady | it's been waiting on the new pugs rev | ||
which is mostly about Captures and Signatures | |||
luqui | kay | ||
TimToady | but it will definitely be nice to write tree transformations in Perl rather than something else. | 05:38 | |
luqui | good | ||
TimToady | well, for Perl programmers, anyway. :) | ||
Haskellers may yawn... | |||
luqui | I imagine (hope) that there is no integrated AG support | 05:39 | |
TimToady | sounds like a module to me. | ||
luqui | I think that's where it belongs | 05:40 | |
reading the svn log in reverse is kind of nice | 05:41 | ||
because I see you fix the insanity before I se eyou introduce it | |||
so I don't have to complain | |||
TimToady | :P | ||
on the other hand, if you just diffed from several months ago, you wouldn't have to see the intermediate forms at all. | 05:42 | ||
on the gripping hand, you'd say "where the heck did that come from?!?" | |||
luqui | I think the log is better, because the synopses would show me the changes in a strange order | 05:43 | |
in a "where the heck did that come from" way | |||
and all I usually need is a short description | |||
because we've considered most of these changes before anyway :-) | |||
TimToady | though some of the comments are more indicative than informative. | ||
luqui | I read the diff from a given revision when I need more info | 05:44 | |
TimToady | figgered | ||
well, as with the original RFCs, a lot of ideas don't make sense in isolation, but when you see a way to unify several things, you go for it. | |||
luqui | rule dne? | ||
TimToady | dne? | 05:45 | |
luqui | does not exist? | ||
TimToady | rule means :ratchet :sigspace now | ||
regex is old rule | |||
luqui | oh, so rules behave like parsec now? | ||
TimToady | :D | ||
luqui | with :ratchet that is? | ||
TimToady | only better | ||
no backtrack by default is what it means | 05:46 | ||
implicit : after any term that makes progress | |||
luqui | where 'backtrack' means 'make the character pointer smaller' | ||
TimToady | yes | ||
05:46
weinig is now known as weinig|sleep
|
|||
luqui | that seems to catch errors in the right places | 05:47 | |
TimToady | hope so | ||
we'll know more when p6-on-p6 is running full tilt | |||
PerlJam still thinks :sigspace needs a new name (but he still also has no better alternatives) | |||
luqui | PerlJam, I think it is plenty descriptive | ||
better than SKID :-) | |||
TimToady | SKID is sort of obfuscated on purpose | 05:48 | |
PerlJam | SKID is meant to be obscure and it succeeds admirably IMHO | ||
luqui | at least it is not misleading like .valid | ||
TimToady | thx | ||
05:48
bcorn joined
|
|||
TimToady | well, it wasn't misleading when .valid returned false like .defined, but we decided that was stupid. | 05:48 | |
luqui | I suppose that SKID's main purpose is to not have anyone assume they know what it means | 05:49 | |
TimToady | whereas people *think* they know what === means... | ||
05:50
agentzh joined
|
|||
luqui | imperative languages have such trouble with equality | 05:50 | |
agentzh | luqui: welcome coming back to Perl 6! | ||
TimToady | imperative languages like Lisp... | ||
luqui | :!foo? | ||
agentzh, thanks | |||
yep. | 05:51 | ||
TimToady | got tired of :foo(0) | ||
luqui | oh, I like. | ||
Lisp had trouble with equality because it couldn't decide whether it was imperative or functional | |||
TimToady | so did everyone else. the only problem is that ! is often a shell history characgter | ||
so might not get adopted for cmd line args | |||
luqui | oh right | 05:52 | |
heh, ruby needs a better doc program | |||
TimToady | which was part of the reason for going with :foo | ||
luqui | ri Object#methods | ||
oh, crap, I mean ri 'Object#methods' | |||
PerlJam | fix the shells. They're not immutable :) | ||
TimToady | I already fixed my shell. histchars=',;' | 05:53 | |
comma is a lot easier to type than ! | |||
course, that doesn't help with arguments like :foo(1,2,3) | 05:54 | ||
:foo<a b c> isn't too shell-friendly either | |||
luqui | shells stole all the brackets | ||
there's not much you can do | |||
TimToady | all the ASCII brackets... | 05:55 | |
luqui | mwahahaha! | ||
<<<...>>>??? | 05:56 | ||
TimToady | q[[[ ]]] | 05:57 | |
05:57
frederico joined
|
|||
TimToady | #(( )) | 05:57 | |
luqui | oh, it wasn't referring to rules? | ||
TimToady | might have been, where was it? | ||
luqui | let me look at the diff | ||
TimToady | I think that went away when we stole << back for directional word boundary | 05:58 | |
luqui | alrighty | ||
TimToady | since we can't have \< and \> | ||
<< and >> are next best thing | |||
and people will use them all the time. | |||
\b got demoted to <?wb>, partly to make \b always be backslash again | 05:59 | ||
backspace rather | |||
though doubtless we'll have to outlaw \b in regexen for a while. | |||
luqui | you know, I've never needed the distinction between \< and \> in vim | 06:01 | |
\b would always have sufficed | |||
on the other hand, false positives are much easier to deal with in an editor environment | |||
is long dot dead? | 06:02 | ||
TimToady | long dot is now spelled unspace | ||
$x\ .foo | |||
luqui | right | ||
okay, I think I'm pretty much up-to-date about everything but rules | 06:03 | ||
And I'll make a thunk for them | |||
TimToady | and not a lot has changed there | ||
luqui | the design wasn't the hard part | 06:04 | |
learning the pugs codebase again will probably be a bit more challenging | |||
especially since I have been away from Haskell as long as I have been away from Perl | 06:05 | ||
and fp in general | |||
TimToady | well, they're rewriting it all right now, so it should be as easy for you as them. :) | ||
luqui | :-) | ||
they're always rewriting it all | |||
TimToady | learning Haskell itself is easy--I've done it several times already | 06:06 | |
luqui | haha | ||
xerox | ?remember TimToady learning Haskell itself is easy--I've done it several times already | 06:07 | |
lambdabot | Done. | ||
xerox | hehe | ||
TimToady | hihi | ||
luqui | howhat? | ||
ruz | is there bootstrapping svk snapshot of pugs available? | 06:08 | |
xerox | pugs needs boostrapping now? | ||
luqui | error: too many adjacent terms in ruz line 1 | ||
gaal | TimToady: what about the ieda that for native types, a value's skid is itself? (that's the assumption for new Val stuff) | 06:09 | |
TimToady | backlog and you'll see me saying that already | ||
gaal | I don't see it mentioned in r10758 synopsis patch | ||
luqui | oh, right, that discussion | ||
ruz | xerox, luqui: snapshot like www.parrotcode.org/svk-bootstrap-dump.bz2 | ||
luqui | so what is an example of something that would return a SKID other than itself | 06:10 | |
gaal | ruz: there isn't one online (that I know of) | ||
luqui: non-native values... | |||
TimToady | well, a native unboxed type probably actually has to return a boxed version of itself to capture the type info | ||
luqui | not according to the discussion | ||
gaal | luqui: for mutables or externals (e.g. a file handle) you'll get a memory address | ||
luqui | oh, SKID exists for things that aren't value types? | 06:11 | |
er | |||
no | |||
I understand | |||
wait---no, I don't | |||
I don't see the purpose of SKID, I suppose | |||
TimToady | A skid is like a hash key | 06:12 | |
"how do I capture something immutable for a hash key from this type?" | 06:13 | ||
luqui | so it needn't be unique... | ||
otherwise I could see using it for "eqv", not "===" | |||
gaal | presumaby it is unique within the type. | 06:14 | |
TimToady | it needs to be as unique as you need it to be for value vs object semantics | ||
gaal | the tuple ($x.META.SKID, $x.SKID) oughta be unique in this process. | ||
06:14
dduncan joined
|
|||
TimToady | eqv is trying to do a deep compare of mutable values | 06:14 | |
dduncan | TimToady, another great Synopsis rev 10758 | 06:15 | |
and thanks for throwing in my request too | |||
TimToady | it's actually the semantics of P5 hash strings, where we take a snapshot of the string | ||
luqui | gaal, you mean so $x.type === $y.type and $x.SKID === $y.SKID implies $x eqv $y? | ||
TimToady | to use for the key. | ||
luqui | TimToady, is that something implementation-level? | ||
because strings in p5 are immutable | |||
TimToady | SKID contains the type | ||
dduncan | SKID certainly works better than .valid too | ||
TimToady | no they're not. | ||
dduncan | .valid was cute, but could be so confusing to people | 06:16 | |
thinking it validated something | |||
luqui | $x = "foo"; $y = $x; something($y); # can $x possibly change? | ||
TimToady | hash keys are immutable copies of mutable strings. | ||
gaal | oh, SKID contains type? ok, I'll go back under the surface.... | ||
luqui | so is it true that $x.SKID === $y.SKID implies $x eqv $y? | ||
TimToady | no | 06:17 | |
dduncan | I would think that every value has a type by definition | ||
including the SKID | |||
since every value is from some domain or other | |||
TimToady | unboxed types don't represent that | ||
$x.SKID == $y.SKID is only going to compare "addresses" for object types | 06:18 | ||
luqui | TimToady, my int $x = 1; my Int $y = 1; $x.SKID === $y.SKID? $x eqv $y? | ||
TimToady | $x eqv $y is deep compare | ||
luqui | then I don't see a difference between $x.SKID and $x. | 06:19 | |
TimToady | not clear whether type comparison of === and eqv imply autoboxing | ||
there is if $x's class chooses to define SKID differently. | 06:20 | ||
luqui | which would happen when... | ||
TimToady | it wants to pretend to be a value type to some extent, but have extra fields that don't count, say... | ||
06:20
ajs_home joined
|
|||
luqui | I keep asking the same questions. Seems like you give me answers which make sense, but I keep coming up with the same questions... | 06:20 | |
dduncan | indeed | ||
eg, extra fields could store an index to the actual value fields, to speed up its use, but don't count towards the vaue | 06:21 | ||
luqui | TimToady, oh! | ||
dduncan | value | ||
luqui | I just did that in C++ | ||
it felt very hacky | |||
but it was necessary | |||
TimToady | indeed | ||
luqui | so in "normal" usage it doesn't make sense to override SKID | 06:22 | |
TimToady | by and large, yes | ||
dduncan | depends on what "normal" is | ||
luqui | I thought it was a prereq for being a value type | ||
dduncan | in some problem domains, "normal" is SKID = value | ||
TimToady | only if you're trying to make something mutable act immutable | 06:23 | |
but for truly imutable types, the object "ref" is also acting immutable | 06:24 | ||
so really only === needs to behave | |||
luqui | got it | ||
whew | |||
dduncan | true enough | ||
TimToady | if you'll recall, we left .id out for a long time due to similar reasoning that it was the comparison that was important. but not always | 06:25 | |
in fact, we thrashed on that in Portland, if I recall... | |||
luqui | I remember something like that | 06:26 | |
dduncan | in the normal use case for my Relation type, I envisage that === is the only thing that needs to treat 2 relations as values | ||
its less likely that one would ever be used as a hash key ... | |||
except maybe in an index hidden away behind the scenes | |||
luqui | dduncan, likelihood really shouldn't play into it | 06:27 | |
dduncan | and computing a SKID could be expensive, so sometimes only === is the most useful | ||
TimToady | bingo. but with Perl 6 we hope it's chortles all the way down. | ||
dduncan | sure, a SKID would be provided anyway, but I anticipate it won't be necessary to use it most of the time | ||
and if === is also overloaded and presumably then is used rather than the generic === with 2 SKID values, the most frequent use cases would be faster | 06:28 | ||
TimToady | because === can short circuit | ||
this is even more important for eqv | |||
which potentially has to serialize both objects | |||
or otherwise canonicalize, and would be better to do that lazily. | 06:29 | ||
luqui | if that's the case, we really need to enforce regularity in the serialization algorithm | ||
dduncan | when you say === short-circuits, I assume you mean that it implicitly does a =:= first, before even invoking any .SKID ? | ||
or some other kind of short-circuit? | |||
TimToady | I mean if you've got two objects with 582 attributes, it doesn't have to serialize all attributes if the first pare are !eav | 06:30 | |
*eqv | |||
*pair, darn it. | |||
06:30
marmic joined
|
|||
dduncan | yes | 06:30 | |
TimToady | doesn't have to produce the whole relation to tell if they're unequal | 06:31 | |
dduncan | that would easily be why an object's own === function would short circuit in that way ... but presumably the generic === implementation can't see the internals and won't do that | ||
unless it checks public attributes | |||
TimToady | I doubt the generic === will try to optimize. | 06:32 | |
dduncan | yes | ||
TimToady | we should encourage types to write their own === where appropriate. | ||
dduncan | and so I certainly would define a === myself, just for the short circuiting | ||
TimToady | and eqv | ||
dduncan | which would be very significant for a large type like a relation | ||
TimToady | well, for ordinary objects === is just type and address | ||
eqv is the deep one | |||
luqui | dduncan, are your relations value types? | 06:33 | |
dduncan | yes | ||
they are as much value types as Seq or Set or Mapping are | |||
luqui | makes sense | ||
oh! | 06:35 | ||
OH! | |||
Yes, you separated Hash and Mapping! | |||
dduncan | I know that much! | ||
luqui | that makes me a happy panda. | ||
dduncan | me too | ||
TimToady | I wonder if we should rationalize the mutable vs immutable type names better. | 06:37 | |
dduncan | it means I can use those 3 types to help implementing mine, and so can save a lot of extra work when one relation is derived from another, or its member tuples or attribute values are returned ... I don't have to explicity copy them | ||
er, they don't need copying at all, and they stay safe from tampering | 06:38 | ||
at least with Hash vs Mapping, they seem rationalized | |||
luqui | it strikes me that a Hash is just a reference to a Mapping | 06:39 | |
with some extra methods... | |||
dduncan | yes, Hash.does(Mapping) | ||
just as Array.does(Seq) | |||
I assume | |||
and Relation.does(Set) | |||
luqui | Array.does(List) I imagine | ||
dduncan | doesn't the List include lazy components? | 06:40 | |
luqui | yeah... can't Arrays? | ||
dduncan | if they can, I didn't realize it ... not sure if it makes sense to? | ||
TimToady | distinguishing from Seq I think | ||
yes, they can | |||
Array := List | 06:41 | ||
luqui | did you mean to say that Arrays and Lists are the same thing | ||
or was that abstract syntax? | |||
TimToady | @foo := (1,2,3); push @foo, 4; # BOOM | ||
lambdabot | Maybe you meant: faq todo yow | ||
TimToady | abstract | ||
luqui | okay | 06:42 | |
@foo := (1,4,7,3..*) | |||
lambdabot | Maybe you meant: faq todo yow | ||
luqui | quiet lambdabot | ||
uh. | |||
answered my own question | |||
nevermind | |||
TimToady | ?eval @foo := (1,4,7,3..*); | 06:43 | |
06:43
evalbot_12060 is now known as evalbot_12062
|
|||
evalbot_12062 | Error: Bind to undeclared variable: "@foo" | 06:43 | |
TimToady | ?eval my @foo := (1,4,7,3..*); | ||
evalbot_12062 | \1 | ||
luqui | \1 huh? | ||
TimToady | hnng | ||
bug, I think | |||
luqui | ?eval my @foo := (1,4,7,3..*); print @foo.elems; | ||
evalbot_12062 | Error: No such sub: "&elems" | ||
luqui | um | ||
?eval my @foo := (1,4,7,3..*); print @foo; | 06:44 | ||
evalbot_12062 | OUTPUT[1] Bool::True | ||
luqui | that's a little odd | ||
dduncan | what about @foo.values? | ||
luqui | ?eval my @foo := (1,4,7,3..*); print @foo.values; | ||
evalbot_12062 | Error: Not a keyed reference: VInt 1 | ||
dduncan | shouldn't you be able to do that though? | ||
luqui | so @foo literally becomes 1 | ||
TimToady | ?eval my @foo := [1,4,7,3..*]; print @foo.values; | ||
dduncan | do keys, values, kv, pairs, but the keys are indicies with arrays | ||
evalbot_12062 | OUTPUT[pugs: out of memory (requested 1048576 bytes) | 06:45 | |
TimToady | it works! | ||
luqui | yay | ||
TimToady | but Seq obviously is a bit lacking yet | ||
or List, or whatever it thinks it is. | |||
?eval my @foo := [1,4,7,3..10]; say @foo; | 06:46 | ||
evalbot_12062 | OUTPUT[1 4 7 3 4 5 6 7 8 9 10 ] Bool::True | ||
TimToady | ?eval my @foo := (1,4,7,3..10); say @foo; | ||
evalbot_12062 | OUTPUT[1 ] Bool::True | ||
luqui considers writing an Ordinal module | 06:47 | ||
TimToady | for 0..*ā | 06:48 | |
luqui | ? | ||
gaal | ?eval continuum hypothesis | ||
evalbot_12062 | Error: No such sub: "&hypothesis" | ||
06:48
elmex joined
|
|||
TimToady | should read as subscript 1 following * | 06:49 | |
luqui | that is how it reads | ||
oh | |||
I get it | |||
TimToady | or should it be superscript? | ||
luqui | no, subscript is right | ||
if you were trying to say the smallest uncountable ordinal | |||
er, smallest uncountable Whatever | |||
TimToady | no, I was aiming for the next one. :) | 06:50 | |
smallest would be *ā wouldn't it? | |||
luqui | *uncountable*. I would say * is the smallest infinite ordinal | ||
er, infinite Whatever | |||
which is smaller than the first uncountable one | 06:51 | ||
TimToady | hmm, ** is indeterminate dimensionality, so maybe it gets to *ā or so | ||
luqui is having second thoughts about this module | |||
luqui is having omega_1st thoughts about this module | 06:52 | ||
TimToady | or maybe it's more like Ļ | ||
heh | |||
it's definitely getting kinda surreal | |||
luqui | <0|0> | 06:54 | |
oh, conway called <0|0> *, didn't he? | |||
uh, the other conway | |||
TimToady | not familar with the darth vader notation | ||
luqui | I never really understood the non-numeric surreals | 06:55 | |
TimToady | anyway, * isn't limited to numerics. it's really about explicitly asking the operation in question to dwim something reasonably maximal. | 06:56 | |
TreyHarris | one of these days, i gotta figure out how to make it so I can see what you guys are typing when you go out of ascii. i suspect that a blinking, white-on-black I with umlauts was not what you typed :-) | ||
TimToady | 'a'..* also works | ||
luqui | right I gathered that, but I couldn't find a neat mathematical analogy for that | ||
TimToady | I believe the mathematical formulation is | ||
....then a miracle happens... | 06:57 | ||
luqui | physicists say "symmetry" in that situation | ||
TimToady | 4. profit | ||
oh, wait, that /. | |||
luqui | I think it be time for food | 06:58 | |
what do students eat... | |||
oh yeah, taco bell! | |||
TimToady | chow for now | ||
luqui | bbiab | ||
TimToady | bedtime & | ||
dduncan | speaking about rationalizing type names ... or something ... is it actually useful for the descriptions of most|half of the types in S06 to be described as "Perl ..."? The whole language is Perl after all | 06:59 | |
TimToady | some of them could probably change to "boxed" | 07:00 | |
well, now that it's tomorrow, I really should go sleep. & | 07:01 | ||
dduncan | good night | ||
gaal | luqui: data Surreal = Surreal { left :: Set Surreal, right :: Set Surreal } | ||
I think he called it 0. | 07:02 | ||
{} | {} that is | |||
0 | 0 is not a number. | |||
luqui | gaal, then what was * | 07:04 | |
* < 0 and * > 0 or something weird like that | |||
gaal | I no longer have a copy around... | ||
07:05
dduncan left
|
|||
luqui | I have onag around here somewhere | 07:05 | |
but it is buried in a pile of other books | 07:06 | ||
I don't really want to look | |||
gaal | don't want to risk an avalanche... | ||
luqui | yep, wikipedia confirms that {0|0} is called * | 07:07 | |
TreyHarris | that's surreal... | ||
luqui | an unconditional first-player win | ||
gaal | oh | ||
that's a little out of field for me right now, I'm just fixing the regular infinity | 07:08 | ||
luqui | that sentence made not sense | 07:09 | |
gaal | in pugs :) | ||
luqui | ahh | ||
gaal | oy. I'm defining a type. when it was simple I could 'newtype' it and add funky derivations; but now I've added variants to it and can't use newtype, but the derivations won't work. | 07:18 | |
audreyt: any idea what to do with this? changing PureInt to a 'data' gives | 07:19 | ||
Can't make a derived instance of `(:<:) Integer PureInt' (`(:<:) Integer' is not a class) | |||
I don't understand why this wasn't a problem with a newtype. | 07:20 | ||
07:22
shachaf joined,
xern joined
07:23
xern joined
07:26
traecer joined
07:27
agentzh joined
|
|||
agentzh | does the initialization process of "my" variables in a file scope happen at compile-time or run-time? | 07:28 | |
gaal | runtime, in general, but presumably there can be constant folding in some cases. | 07:29 | |
agentzh | gaal: so the initialization happens before CHECK blocks run? | 07:30 | |
sorry, s/before/after/ | |||
(i assume "yes".) | 07:32 | ||
gaal | my unauthoratative guess is that yes, modulo optimization. | ||
agentzh | gaal: should i test that behavior? | ||
(in pugs test suit) | |||
gaal | sure, though I'm don't know if CHECK parses now | 07:33 | |
or how you might write a test for this even if it did? | |||
07:33
lambdabot joined
|
|||
gaal | put an ok !defined inside a CHECK block? | 07:33 | |
agentzh | gaal: surely not. | 07:34 | |
;-) | |||
i'm following the existing logic in t/statements/control_blocks.t | |||
i'm refactoring that. currently it looks ugly. | |||
(or terrible even) | 07:35 | ||
pugs test suit needs much love. | |||
gaal | yes, tests for control structures tend to get that way... | ||
your love is much appreciated :) | 07:36 | ||
agentzh | :D | ||
i'm working on that right now. | |||
gaal | agentzh++ | ||
agentzh | anther question: my $handle = BEGIN { ... }; what's the type of $handle? | 07:37 | |
is ref($handle), 'BLOCK' ? | |||
07:38
Psyche^ joined
|
|||
gaal | no, it's the actual compile-time result of the block. | 07:40 | |
agentzh | ?eval my $handle = BEGIN {3} say $handle.ref | ||
evalbot_12062 | Error: unexpected "s" expecting comment, operator, ">>=><<", "\187=>\171", "=>", "=", ".=", "&&=", "**=", "+&=", "+<=", "+>=", "+^=", "+|=", "//=", "?^=", "?|=", "^^=", "xx=", "||=", "~&=", "~<=", "~>=", "~^=", "~|=", "%=", "&=", "*=", "+=", "-=", "/=", ":=", "Y=", "^=", "x=", "|=", "~=", "\165=", postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
agentzh | ?eval my $handle = BEGIN {3}; say $handle.ref | ||
evalbot_12062 | OUTPUT[Int ] Bool::True | ||
gaal | may not work in pugs now :) | ||
agentzh | gaal: see? | ||
gaal | but my $time_during_compilation = BEGIN { time } should (eventually) work. | 07:41 | |
agentzh | it works as you said. | ||
?eval my $handle = BEGIN { time }; say $handle.ref | |||
evalbot_12062 | OUTPUT[Rat ] Bool::True | ||
agentzh | ?eval my $handle = BEGIN { time }; say $handle | ||
evalbot_12062 | OUTPUT[208510914.253901 ] Bool::True | ||
gaal | Rat? that's interesting... | 07:42 | |
?eval my @a= BEGIN { time }; say @a | |||
evalbot_12062 | OUTPUT[208510942.691322 ] Bool::True | ||
agentzh | Rational? | ||
gaal | yes | ||
luqui | iirc, there is no float in pugs | ||
only rat | |||
agentzh | ah | 07:43 | |
luqui | sounds morbid... | ||
floating rats, pugs... | |||
agentzh grins | |||
bbiab & | |||
07:43
agentzh left
|
|||
gaal | what? of course there is. it's just a little hard to get to it | 07:44 | |
anyway I didn't remmeber the underlying fact that time could be fractional from the haskell runcore, that's what threw me. | |||
but perl -le 'print scalar localtime(208510914)' | |||
makes sense. | |||
07:49
plisk joined
|
|||
luqui | gaal, how do you get a float? | 07:49 | |
gaal | there's a VNum type in the internals | ||
luqui | from userland | ||
gaal | dunno | 07:50 | |
"a little hard" may involve writing a prim :-p | |||
eventually though my Num $x = some_rat | 07:51 | ||
?eval "1.2"+0 | 07:52 | ||
evalbot_12062 | 1.2 | ||
07:52
crem joined
|
|||
gaal | ?eval ref("1.2"+0) | 07:52 | |
evalbot_12062 | ::Num | ||
luqui | ah, there we go | ||
?eval my $x = 42.6; $x.ref | |||
evalbot_12062 | ::Rat | ||
luqui | ?eval my $x = 42.6; (+~$x).ref | ||
gaal | that of course is a bad way to do it, though | ||
evalbot_12062 | ::Num | ||
luqui | it's the +~ operator | ||
of course | |||
gaal | "more handwaving" operator | 07:53 | |
luqui | kind of looks like a burning plane to me | ||
gaal | dunk the rat in stringy water and back out to the number plane | 07:54 | |
luqui | uhn, yeah | ||
it kinda sorta makes a teeny bit of sense though | |||
07:54
Psyche^ is now known as StudiesInWords
|
|||
luqui | if you're entering a number directly in your program, it's going to be exact | 07:55 | |
so it's stored as a rational | |||
but if you're reading it from a string, it has error | |||
so it's okay to store it floating point | |||
gaal | your story sounds like a "rationalization". | ||
luqui | ahh, the perl community | 07:56 | |
always so serious | |||
08:03
buetow joined
|
|||
gaal | oh, haskell Integer doesn't encode infinity? | 08:06 | |
08:08
lambdabot joined
08:13
lambdabot joined
08:15
Aankhen`` joined
|
|||
luqui | gaal, certainly not | 08:18 | |
gaal | right. our PureInt does, though, and the only thing I can think to do when casting an Inf/NaN to Integer is an error. | 08:19 | |
luqui | or define your own numeric class that does handle it | 08:20 | |
but that is probably definitely a lot of work | |||
08:28
ruoso joined
08:36
shachaf joined
08:52
shachaf joined
08:53
kane-xs joined
09:06
traecer left
09:08
jferrero joined
09:23
shachaf__ joined
09:42
chris2 joined
10:21
tup joined
10:29
lichtkind joined
10:46
jferrero joined
11:00
agentzh joined
|
|||
agentzh | ?eval say INIT { 3 }; | 11:00 | |
evalbot_12062 | OUTPUT[3 ] Bool::True | ||
agentzh | woot! | ||
pugs++ | |||
multiple END blocks run in opposite order, just as Perl 5? | 11:02 | ||
audreyt | sure | 11:03 | |
agentzh | audreyt: thx | ||
audreyt | luqui: here's a generalization you may like | ||
TimToady: sanity check? | |||
pasteling | "audreyt" at 220.135.90.73 pasted "sane treatment of "want"" (57 lines, 2.6K) at sial.org/pbot/18880 | 11:05 | |
audreyt | (the corresponding Smartmatch table in S04 will also be updated so SigA~~SigB is testing that SigA is subset of SigB (i.e. compatible and at least as specific as )) | 11:07 | |
gaal: GHC allows newtype to derive any instance its base type has | 11:08 | ||
"data" however has no such luxury | |||
the former works because newtype is erased | |||
the latter doen't work because each variant may have different instances | 11:09 | ||
11:13
bcorn_ joined
11:17
shachaf joined
|
|||
agentzh | audreyt: END {} in Test.pm never executes on my machine. :( | 11:22 | |
audreyt | indeed | 11:23 | |
fixing | |||
agentzh | audreyt: so it's a pain to adjust the test plan thingy. | ||
yay! | |||
wolverian | audreyt, hm, the signature tests are pretty ugly. maybe that's a good case for return type MMD anyway. | 11:36 | |
audreyt | how would rettyp MMD hep heere? | 11:37 | |
help here | |||
wolverian | I thought it's pretty much the same thing as want. | 11:39 | |
luqui | audreyt, that is pretty sexy | 11:40 | |
wolverian | (btw, I meant visually ugly, not semantically.) | 11:41 | |
11:42
plisk joined,
bpphillips joined
|
|||
audreyt | wolverian: uh, no | 11:42 | |
want is dynamic | |||
in that you can say want.arity < 5 | 11:43 | ||
which is... I think kinda hard to express with mmd | |||
want.arity % 2 | |||
even | |||
wolverian | er, true. | 11:44 | |
--> :(@) where { .arity % 2 } | |||
audreyt | currently not a valid syntax | 11:45 | |
I wouldn't mind adding generic guards... | |||
but seems silly :) | |||
I mean, the %2 use case seems silly | |||
I agree that rettyp MMD in general can help. | 11:46 | ||
wolverian | yup, but if we want to push MMD over want (why would we? hm. I just like it) | ||
audreyt | *nod* | ||
wolverian | I have no idea how opportunistic you'd have to be with guards on return types .. it sounds like a hard problem | ||
audreyt | combinational even | 11:47 | |
gaal | audreyt: I added instances myself... | ||
audreyt | "I can't tell your what to give you until you tell me what you'll give back in return etc | ||
wolverian | right | ||
audreyt | that can result in a tie. | ||
wolverian | any papers on this? | ||
audreyt | but currently I think the spec's spirit is the incmoing side mmd takes precedence | ||
and returning side is only tiebreaking, if ever | 11:48 | ||
wolverian | @mmd_choices.pick | ||
lambdabot | Unknown command, try @list | ||
agentzh | heh, svnbot is down. | 11:49 | |
wolverian | audreyt, that sounds like the only solution, besides making the user annotate things explicitly. | ||
(thus making it effectively smd) | |||
gaal | audreyt: I'm adding toVV :: n -> Eval Val | 11:51 | |
on e.g. toVV (VBool v) = Val $ VV $ val $ ((cast v) :: PureBit) | |||
I get: | |||
Couldn't match `Bool' against `Val' | 11:52 | ||
but it seems to be on the whole expression | |||
how can that be? | |||
audreyt | you don't need a Val contruscotr. | ||
constructor. | |||
gaal | er, right | ||
but even without it I get the error | 11:53 | ||
whcih seems to be on the complete expression! | |||
audreyt | you need a "return". | ||
gaal | agh, of course | ||
but no, still same error! :) | 11:54 | ||
audreyt | wow. hm. | ||
remove the cast? | |||
or is PureBit now a newtype? | |||
gaal | val v? | ||
audreyt | (cast v) | ||
also, how can you get a n->Eval Val? | 11:55 | ||
toVV's sig is Val->Val | |||
gaal | ahhhhhhhh darn | ||
audreyt | Val->EvalVal | ||
gaal | type PureBit = Bool | ||
didn't change it yet. doh | |||
:) | |||
audreyt | but that's not it | ||
the problem is the sig of the func | |||
Val -> Eval Val | |||
not n-> | |||
gaal | can't be not n-> -- it's a method! | ||
(no?) | 11:56 | ||
audreyt | it's a method of what? | ||
gaal | Value? | ||
audreyt | then you want | ||
gaal | old Value that is | ||
audreyt | toVV v = ... | ||
not | 11:57 | ||
toVV (VBool v) ... | |||
because it's a Bool not a Val | |||
gaal | well I'm in the VBool instance | ||
audreyt | the compiler is telling you... exactly that | ||
:) | |||
gaal | I don't understand | ||
audreyt | the argument to toVV | 11:58 | |
gaal | I ave an oldVal | ||
audreyt | should it be of type "n" ? | ||
gaal | yes, in this case a VBool | ||
oh | |||
audreyt | is "n" instantiated to "VBool" in the instance? | ||
gaal | darn. | ||
audreyt | a VBool doesn't have a constructor... | ||
it's a pundamental error | |||
gaal | puntastic | 11:59 | |
agentzh | audreyt: do you have some cycles to make LAST/LEAVE/ENTER/NEXT blocks parse? (or even make them work) | 12:05 | |
audreyt | agentzh: you can make them parse | ||
line 931ish in src/Pugs/Parser.hs I think | 12:06 | ||
parse for them and then return emptyExp for now | |||
agentzh | audreyt: i'll try. ;-) | ||
although i'm still in fear of Haskell. | |||
agentzh is looking forward to the Perl 6 grammar ==> Haskell Parsec rules converter. | 12:07 | ||
12:08
Limbic_Region joined
|
|||
agentzh | audreyt: does q/"LEAVE" -> return emptyExp/ look sane? | 12:13 | |
audreyt | sure | ||
if it compiles ship it etc | |||
agentzh feels proud. | |||
audreyt: ok | 12:14 | ||
gaal | The Haskellasso swings true! --more-- | 12:15 | |
wolverian | heh | ||
agentzh | emptyExp++ | 12:16 | |
audreyt | agentzh++ | 12:18 | |
agentzh | :=) | ||
audreyt summons svnbot | |||
gaal | (++)++ | ||
audreyt | ok, the END problem is solved | 12:20 | |
probably need to rm blib6/lib/Test.pm.yml | |||
agentzh | woot! audreyt++ | 12:21 | |
gaal | yay: | 12:35 | |
pugs> vv (Inf) | |||
VPure (MkNum Infinity) | |||
audreyt | yay! | ||
viva! | |||
agentzh: does the END work for you? | 12:37 | ||
(r12071) | |||
agentzh | audreyt: checking... | ||
Limbic_Region | anyone know why setting the heap size in config.yml has no affect on Pugs? | 12:38 | |
gaal | Limbic_Region: rerun perl Makefile.PL | ||
Limbic_Region | gaal - I do everytime I do an svn up | ||
it has no affect | |||
perlbot nopaste | |||
perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
agentzh | audreyt: yes, it works! | 12:39 | |
pasteling | "Limbic_Region" at 129.33.119.12 pasted "config.yml heap not having any affect" (43 lines, 1.5K) at sial.org/pbot/18881 | ||
audreyt | moose! | ||
agentzh | audreyt: but the summary outputs go after the table generated by ``prove'', which is unnatural. | ||
Limbic_Region | there was another user the other day with the same problem | ||
Limbic_Region checks the irc logs | 12:40 | ||
audreyt | agentzh: huh? | ||
lumi | gaal: How'd you solve the funky instance errors we had? | ||
audreyt | did you have a plan? | ||
agentzh | Limbic_Region: rerun "nmake" | ||
gaal | lumi: you mean missing derivations? added explicit ones. | ||
agentzh | Limbic_Region: i'm also getting the heap error on Win32 | ||
gaal | which are currently pretty empty but we'll add as we go along. | ||
lumi | The ones we had at the cat-athon | 12:41 | |
agentzh | audreyt: a sec... | ||
Limbic_Region | yep - cjeris | ||
gaal | lumi: oh wait you're talking about the PLit circularity? | ||
audreyt | I think agentzh has a pretty good computer :) | ||
Limbic_Region | agentzh - that is not a fix | ||
agentzh | i'll paste it. | ||
Limbic_Region | that just gets it past the problem | ||
lumi | gaal: Yeah | ||
agentzh | Limbic_Region: sure. but it works. | ||
gaal | lumi: audreyt++ just deleted one of the instance declarations somewhere and the problem Went Away | ||
where | |||
s svnbot? | |||
lumi | Heh, magic | ||
Limbic_Region | agentzh - you are missing the point - I know the workaround | ||
I am trying to solve the problem | |||
so I am having the problem, agentzh is having the problem, and cjeris is having the problem | 12:42 | ||
commonality - Win32 | |||
agentzh | Limbic_Region: okay. | ||
audreyt | svnbot is wanting for recompile pugs on feather | ||
s/wanting/waiting/ | |||
Limbic_Region | or rather, I am trying to prod someone who knows what's going on to solve the problem | ||
audreyt | I don't know much about the build flag | 12:43 | |
but we are ripping AST.Internals to pieces | |||
and once we're done win32 should have enough heap :) | |||
gaal | haya! | ||
grr this commit is taking forever | |||
cat-athon, huh. more like steamed-lumithon | 12:45 | ||
lumi | That too | ||
I can't stand cats! | 12:46 | ||
Well, I can't stand near cats, I guess | |||
I'm actually quite fond of them. Mh. | |||
Limbic_Region | audreyt - that's cheating | ||
while it would make me happy not to have to run nmake twice for a compile | |||
any idea why config.yml's heap settings have no affect on Win32? | 12:47 | ||
gaal | working around a minor bug by fixing a major internals problem? Limbic_Region, you're saying no to a good bargain here :) | ||
audreyt | Limbic_Region: what did you set it to? | 12:48 | |
384m is default for win32 | |||
lumi | Would adding any(<LAST LEAVE ENTER NEXT>) be very tricky? | ||
audreyt | Limbic_Region: in fact, add line 197 | ||
I mean, comment out hte block in line 197 Makefile.PL | |||
and do _not_ set heap size for win32 | 12:49 | ||
and see if it actually finishes compilation | |||
lumi: it means extending VCode slots | |||
which... partly overlaps with the Pugs.Val refactoring | 12:50 | ||
so maybe you can write a PureCode | |||
carry VCode definition over for now, or something | |||
but if you extend VCode in src/Pugs/AST/Internals it shoudl also work | |||
see the new slots gaal added in CapInternals | |||
(bbiab) | 12:51 | ||
Limbic_Region | audreyt - 400m | 12:58 | |
gaal - no, I am not | |||
just interested in why things seem to only affect Win32 | |||
12:58
bcorn joined
|
|||
Limbic_Region | ok, so I am to comment the line out in config.yml | 12:59 | |
and I am to comment out line 197 in Makefile.PL | |||
and then to try a rebuild | |||
got it | |||
agentzh | audreyt: it was my fault. now Test.pm's END {} works perfectly here. :=) | 13:02 | |
sleeptime & | 13:03 | ||
13:03
agentzh left
13:07
cjeris joined
|
|||
gaal | should I write a ((:<:) PureInt PureNum) instance? or should PureInt's asNum fo the work? | 13:10 | |
oh, what a pity that an instance like that has to be in Pugs.Val because of circulatiry... | 13:11 | ||
13:11
daxim joined
|
|||
Limbic_Region | oh, and while I am complaining - nmake realclean doesn't finish properly "Can't find string terminator "," anywhere before EOF at -e line 1.", NMAKE : fatal error U1077: 'C:\Perl\bin\perl.exe' : return code '0xff' | 13:12 | |
13:12
lollan joined
|
|||
gaal | or is it incorrect to have that instance because with limited precision, Double is not Liskov-subsitutable for Integer? | 13:13 | |
Limbic_Region | audreyt - trying your suggestion now | 13:14 | |
& # $work | |||
audreyt | Limbic_Region: that's easy. realclean fixed | 13:18 | |
gaal: incorrect. | |||
gaal | k, writing out asNum | 13:20 | |
lumi | How would I get the higher block to hang the ENTER etc on it? | 13:22 | |
13:23
svnbot6 joined
|
|||
audreyt | you what? :) | 13:24 | |
13:25
renormalist joined
|
|||
audreyt | the key here is Parser.ruleBlockBody | 13:26 | |
13:26
fglock joined
|
|||
audreyt | you want to somehow inspect the ENTER etc when | 13:26 | |
(Syn "block") is emitted | |||
from parser | 13:27 | ||
and make it part of Syn | |||
Syn "block [body, enterBlock] | |||
maybe. not sure | |||
you can hang the so-far-seen ENTER stuff in several places | |||
one possibilty it to declare it as a "state" | 13:28 | ||
in the body | |||
so | |||
ENTER { ... } | |||
is translated to | |||
state &ENTER := {...} | |||
another thought is to push it to ruleEnvBody (see localEnv's definition) | 13:29 | ||
gaal | lumi: look at how FIRST does that (I think it does, at least) | ||
audreyt | another option is to simply emit a specil Syn"" | ||
and then have retBlock collect that | |||
not sure which way is sanest... | |||
improvise :) | |||
13:29
spoop joined
|
|||
Limbic_Region | audreyt - not sure what you mean by realclean fixed - easy? | 13:32 | |
svnbot6 | r12074 | gaal++ | * cercion of PureInt to PureNum. `1`+`1` triggers a cast in +; the | 13:39 | |
r12074 | gaal++ | promotion is implemented in (instance ICoercible P PureInt).asNum | |||
13:40
vel joined
|
|||
gaal | Limbic_Region: I think she meant r12073. | 13:42 | |
Limbic_Region | I still don't understand | ||
did she make the changes to the Makefile.PL that she was suggesting I try knowing they will work | |||
? | |||
Limbic_Region checks the change log history | |||
err - the check-in history | |||
gaal | I believe she meant she believed she had fixed them. Try it out? | 13:44 | |
Limbic_Region | oh, the realclean problem not the heap problem - gotcha | ||
Limbic_Region apparently doesn't have his multi-threading plug-in enabled this morning | |||
gaal wonders if svnbot can be persuaded to report the commits it had missed | 13:47 | ||
renormalist | Some Moose people here? I asked sth. in #moose, if someone of you may have a look there ... | 13:48 | |
svnbot6 | r12075 | audreyt++ | * Pugs.Val.Int: there's no need to define two empty instances... at least for GHC 6.5 here. | 13:49 | |
Limbic_Region attempts to verify the realclean fix before moving on to the heap potential fix | |||
audreyt | renormalist: the mastermoose hath replied | ||
Limbic_Region | audreyt - realclean still b0rk | ||
audreyt | what's the errmsg? | 13:50 | |
pasteling | "Limbic_Region" at 129.33.119.12 pasted "nmake realclean failure on Win32" (19 lines, 2K) at sial.org/pbot/18884 | 13:51 | |
Limbic_Region | attempting the heap suggestion now | ||
will be AFK for some time after the nmake starts so I might not be able to report on success/failure for 2 hours | 13:52 | ||
audreyt | Limbic_Region: try again :) | ||
up + Makefile.PL + nmake clean | 13:53 | ||
I mean realclean | |||
Limbic_Region | audreyt - already in the middle of an nmake cycle - but for you, anything | 13:54 | |
svnbot6 | r12076 | audreyt++ | * try another realclean fix... | ||
audreyt | thanks :) | ||
Limbic_Region | the local changes I made to the Makefile.PL won't have any affect on getting your changes will they? | 13:55 | |
audreyt | if that still fails I have another variation... | ||
they won't | |||
gaal | audreyt: r12075 works in 6.4.x too | ||
Limbic_Region | ok, well I have 5 minutes before I need to leave for a $work meeting so let's hope we get it in time | 13:56 | |
audreyt - still bombs | |||
I think with the same error as last time | |||
yep | 13:57 | ||
audreyt | "Can't find string terminator "." anywhere before EOF at -e line 1." | ||
? | |||
Limbic_Region | Can't find string terminator " " anywhere before EOF at -e line 1. | 13:58 | |
heh | |||
this client eats plus symbols | |||
it isn't a . that's missing | |||
it is a plus symbol | |||
audreyt | try the laast time. | 13:59 | |
svnbot6 | r12077 | audreyt++ | * ok, final, guaranteed to work, fix for realclean. | ||
audreyt | we have 60 seconds per my wallclock... :) | ||
gaal | echo "ok try a clean checkout after this please" ; echo "y" | format c: | ||
audreyt | -bash: format: command not found | 14:00 | |
gaal | echo '' > /dev/{h,s}da | ||
but Limbic_Region is on win32 :) | 14:01 | ||
Limbic_Region | actually, I am already 1 minute late | ||
but audreyt gets special treatment | |||
audreyt | -bash: /dev/{h,s}da: ambiguous redirect | ||
Limbic_Region | of course, I am not overly fond of her most recent perlmonks pic | ||
audreyt | you think it's unflattering? :) | 14:02 | |
gaal | what, your shell doesn't have autothreading? | ||
Limbic_Region | 1 - she isn't smiling or being coy, 2 - the bright white is distracting | ||
attempting realclean | |||
14:03
jjkoch joined
|
|||
audreyt | you want coy? you get a coy one :) | 14:03 | |
Limbic_Region | ;-) | ||
gaal | this is going to have 12 syllables in it isn't it? | 14:04 | |
Limbic_Region | ooh, I just noticed something | ||
audreyt plus plus for fixing realclean | |||
but actually, it was probably my fault | |||
somehow my nmake.exe version 7.10.3077 which started the realclean process | 14:05 | ||
was mysteriously changed to the default nmake 1.5 sucky crap that ships with winblows | |||
so those changes were probably not necessary - but they worked | |||
thanks - /me wanders off | |||
audreyt | coy image uploaded ;) | ||
enjoy $job, Limbic_Region :) | 14:06 | ||
Limbic_Region | better picture - quality not so good | ||
audreyt | had to reduce jpeg quality to satisfy 82910 | ||
81920 | |||
Limbic_Region | oh, well that's not so much adhered too but probably best to play by the rules | ||
still not too fond of the white circle but *shrug* - I am just one man | 14:07 | ||
Limbic_Region & # $work | |||
gaal | the ICoercible<->hs-boot mystery remains unsolved in ghc-users... | 14:08 | |
?eval if `1` { "bit coercion is correct" } | 14:10 | ||
14:10
evalbot_12062 is now known as evalbot_12074
|
|||
evalbot_12074 | "bit coercion is correct" | 14:10 | |
gaal | ?eval if !`1` { "" } | 14:11 | |
evalbot_12074 | undef | ||
gaal | ?eval if !`` { "bit coercion is correct" } | ||
evalbot_12074 | "bit coercion is correct" | ||
gaal | oh! the pugs shell is wrong | ||
the first eval there gives 0.0 | 14:12 | ||
audreyt | pugs> !`` | ||
Bool::True | |||
14:12
rodi joined
|
|||
gaal | yes, that's correct | 14:12 | |
the problem is not related to VV | |||
audreyt | it displays $_ | ||
stmts doesn't set $_ apparently | |||
gaal | in the pugs shell, if 1 {1} yields | ||
oh. | |||
audreyt | reduceSyn doesn't have retval | ||
gaal | is that by design? | ||
uh, that means a bug - last-evalled-thingie-in-block etc. | 14:13 | ||
audreyt | uh no | ||
gaal | hmm no indeed. | ||
how come? | 14:14 | ||
audreyt | ?eval do if 1 { 3 } | ||
evalbot_12074 | 3 | ||
gaal | this does work correctly: | ||
?eval sub f { if 1 { 42} } f | |||
evalbot_12074 | 42 | ||
gaal | so it's just an assign-to-$_ pugsshell thing? | ||
audreyt | aye | 14:15 | |
14:16
hexmode joined
|
|||
audreyt | runImperatively is somehow borke | 14:16 | |
gaal | bourque | ||
gaal doesn't like the new vim7 tab mode | 14:17 | ||
I don't like that it keeps buffers open | |||
audreyt | I still use minitabexpl | ||
gaal | and I don't like not having ^6 | ||
I think I'll go back to it | 14:18 | ||
wanted to give the new builtin stuff a try | |||
I actually started hacking putty to get it to pass along c-pgup events to vim... | |||
14:19
jferrero joined
|
|||
bpphillips | audreyt: minitabexpl? | 14:20 | |
gaal | @google minibufexpl.vim | ||
lambdabot | vim.sourceforge.net/scripts/script....ipt_id=159 | ||
Title: minibufexpl.vim - Elegant buffer explorer - takes very little screen space : vim ... | |||
bpphillips | gaal: thanks | 14:21 | |
gaal | if you prefer the tabs to be at the bottom of the screen I think kolibrie figured out how to get them there | ||
bpphillips: exec usage summary: :e as many files as you like, :bn and :bp to move around, or :3b to move to buffer 3 | 14:22 | ||
also you can ^w Up, pick a buffer, press ENTER. | |||
14:24
ruoso joined
|
|||
gaal | audreyt: what was the fate of Bool? does it still exist? | 14:24 | |
audreyt | subset Bool of Bit; | 14:28 | |
can we get that maybe? | |||
not sure... | |||
14:29
DaGo joined
|
|||
gaal | ha! newVal design bug: Sig is in P, but has a Param, which has a [Class] field | 14:39 | |
Param.p_types should probably move over to class's ids, right? | 14:40 | ||
audreyt | aye, I'm thinking about a Type abstraction to mean specifically "class's id" | ||
gaal | isn't classId = ObjId? | 14:41 | |
audreyt | yes bu | ||
yes but | |||
parametricity. | |||
gaal | its metaclass skid | ||
I don't see the connection? | 14:42 | ||
brb | |||
audreyt | :(Array of Code:(Int --> Int)) | ||
:(Array of Code:(Int --> ::t)) | 14:43 | ||
the latter does not have a SKID | |||
for I hope obvious reasons | |||
gaal | oh. hmmm. | ||
well, it didn't have a class either :) | 14:44 | ||
audreyt | as soon as we allow tyvar we are in some other land | ||
right. | |||
so Type | |||
is the correct abstractino | |||
gaal | is that a tree? | ||
audreyt throws a lambda cube | |||
gaal dodges | |||
14:45
weinig|sleep is now known as weinig
|
|||
gaal | I think I'll type 'type Type = ()' for now and see how it becomes transmogrified with time :) | 14:45 | |
audreyt | er no | ||
gaal | we really have to solve the circularity problem soon, the Ps want to cross-polinate | 14:46 | |
audreyt | at least we need to cover the old type | ||
that is, sum and union types | 14:47 | ||
so retire [Class] | |||
change it to Type | |||
and carry over the old Type | |||
gaal | k | ||
audreyt | data Type = MkType !Buf -- ^ A regular type | TypeOr !Type !Type -- ^ The disjunction (|) of two types | TypeAnd !Type !Type -- ^ The conjunction (&) of two types deriving (Eq, Ord, Typeable) | ||
you can simply import Pugs.Typs | |||
and use that. | |||
14:47
iblechbot joined
|
|||
gaal | k | 14:48 | |
svnbot6 | r12078 | fglock++ | PCR - fixed token { a:b } - ignores the colon | ||
jmf | ?eval my $a = 1,2,3; my @b = 1..3; say $a; say $b | 14:49 | |
14:49
evalbot_12074 is now known as evalbot_12077
|
|||
evalbot_12077 | OUTPUT[1 ] Error: Undeclared variable: "$b" | 14:49 | |
jmf | ?eval my $a = 1,2,3; my @b = 1..3; say $a; say @b | ||
evalbot_12077 | OUTPUT[1 123 ] Bool::True | ||
jmf | what is the difference between $a and @b in that case? | ||
?eval my $a = 1,2,3; my @b = 1,2,3; say $a @b | 14:50 | ||
evalbot_12077 | Error: unexpected "@" expecting comment, operator, ":", ",", postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
rodi | ?eval my $a = 1,2,3; say $a | 14:51 | |
evalbot_12077 | OUTPUT[1 ] Bool::True | ||
audreyt | =item * The list assignment operator now parses on the right likeany other list operator, so you don't need parens on the right side of: | ||
@foo = 1,2,3; | |||
the operator spec (S03) | |||
line 124 | |||
14:51
kanru joined
|
|||
jmf | audreyt: what is the difference between using different sigils though? | 14:52 | |
audreyt | the @ sigil confers list context | ||
and cause the right land side to be parsed as a listop | |||
the $ sigil on the other hand only takes one term from the right hand side. | 14:53 | ||
as it did in perl5 | |||
$ perl -le 'my @x = 1,2,3; print @x' | |||
1 | |||
jmf | ?eval my $a = 1,2,3 | ||
14:53
tup joined,
evalbot_12077 is now known as evalbot_12078
|
|||
evalbot_12078 | (\1, 2, 3) | 14:53 | |
audreyt | $ ./pugs -e 'my @x = 1,2,3; say @x' | ||
123 | |||
gaal | aw, fiddlesticks. Sig needs Code... | 14:54 | |
and Exp! | |||
audreyt | ok. I get the memo. will look at circularity | ||
gaal | its wanting Exp is tricky... can it be oldExp for now? | 14:56 | |
if so it's also circular towards outside | 14:57 | ||
like an infinity | |||
audreyt | how so? | ||
gaal | ah no, happily we're consuming Internals | ||
glad to be wrong there | |||
audreyt | that internals is not he internals you are looking at | ||
gaal | it's Pugs.Internals, I know | 14:58 | |
but I can import oldExp too, temporarily | |||
14:58
hacka joined
|
|||
hacka | i kno more about computas than u all im da best hacker eva | 14:58 | |
audreyt | hacka: would you like a commit bit? | 14:59 | |
merlyn | oh yes, the troll. :) | ||
going down the list of channels alphabetically, it appears. | |||
hacka | lol.. | ||
nah just @ random | |||
merlyn | already sighted in #oracle and #perl | ||
and cited as well. :) | 15:00 | ||
cjeris | and #nethack, how's that for misguided? | ||
mauke | hahahaha | ||
merlyn | but not sited | ||
hacka | yawn | ||
yall n00bs tho :D | |||
merlyn | "I'm the best potion quaffer EVAR" | ||
audreyt | merlyn++ | ||
rodi | LOL | ||
merlyn | "I can *run* with my little doggy!" | ||
15:01
hacka left
|
|||
merlyn | "my sword always glows BLUE!" | 15:01 | |
gaal | no really, we should have shown him leet.p6 | ||
*l33t | |||
audreyt | pass the yellow mold around... | 15:02 | |
gaal | I think it bitrotted and it could have used his help | ||
TimToady | hi | 15:03 | |
audreyt | hi TimToady :) | 15:04 | |
gaal | hi TimToady | ||
15:05
BooK joined
|
|||
audreyt | 23 === SKID(OO) | 15:06 | |
TimToady: sial.org/pbot/18880 :) | |||
lambdabot | Title: Paste #18880 from "audreyt" at 220.135.90.73 | ||
gaal | audreyt: if want ~~ :($ is rw), it should also be ~~ :($) right? | 15:09 | |
audreyt | not sure. in functions we always have :($ is readonly) | ||
but as it's standalone here, yeah, I guess you aaare right | 15:10 | ||
there was a brief period where ~~ :(Item) could mean ByVal | |||
but currently it needs to be written ~~ :($ is ro) / | 15:11 | ||
gaal | if I write code that only cares if it's in some kind of scalar context, it oughta be able to do one smartmatch only | ||
audreyt | :($) is good enough then | ||
unless your sub is decl as rw | 15:12 | ||
which is rarer | 15:13 | ||
gaal | remoose me, what does that mean? | ||
audreyt | it means return($x) | ||
returns VAR($x) | 15:14 | ||
not "scalar $x" | |||
it's shorthand for | |||
"o f $ is rw)" | 15:15 | ||
"sub f of ($ is rw)" | |||
gaal | OK | 15:17 | |
thanks | |||
TimToady | audreyt: looks like a big improvement to me, whether or not it's perfect. | 15:18 | |
audreyt | :D | ||
sane to commit then? | |||
TimToady | I much prefer consistent sigs over pseudotypes. | ||
sure, go ahead | |||
It's not like we won't change it 18 ways from Tuesday anyway. | 15:19 | ||
audreyt | yeah | ||
TimToady | and you can always ask for forgiveness later. :) | ||
audreyt | yay :) | ||
TimToady | "improvise", to quote one of my girl friends. :) | 15:20 | |
audreyt giggles | |||
StudiesInWords | "It's easier to get forgiveness than permission." | 15:21 | |
15:23
PolettiX joined,
jferrero joined
|
|||
audreyt | I wonder if call/cc in perl6 is spelled &return.clone... | 15:24 | |
that's quite easier to explain tha n&?CALLER_CONTINUATION | 15:26 | ||
TimToady | luke was wondering about that earlier, or something like it. | ||
<luqui> sub callcc(*&code) { code(&return) } | 15:27 | ||
audreyt | well | 15:28 | |
spec says &return cannot be used outside that sub | |||
hence .clone | |||
(S04 If you pass a closure | 15:30 | ||
object outside of its official "sub" scope, it is illegal to | |||
return from it.) | |||
TimToady | you're not using it outside the sub, you're just, er, using it. | ||
15:30
tup joined
|
|||
audreyt | ok.. | 15:31 | |
TimToady | but with &return you return before you call it. | ||
timetravel++ | |||
++traveltime | |||
audreyt | the problem with lexical &return is that closures, if they do close on it | ||
will violate S04 and cause massive heap duplication | 15:32 | ||
TimToady | cool | ||
it's just a SMOP | |||
improvise | |||
audreyt | well, closures don't close on it, is the easiest way out ;) | ||
as S04 said | |||
TimToady | well, time travel is always paradoxical. | 15:33 | |
audreyt | my $closure;sub f { $closure = { &return() } }; | ||
TimToady | unless you clone the whole universe | ||
StudiesInWords | p6bible++ | ||
audreyt | $closure(); # fatal error; the closed-over &return has invalid ccontext | ||
TimToady | but that's just cloning the IO monad, right? | ||
audreyt | right... | 15:34 | |
all "unsafePerformIO" does is just make a new RealWorld for you | |||
as good as the current one | |||
neither is more Real | |||
TimToady | well, I'm not really awake enough to think about this yet--I'm just shooting my mouth off. | ||
15:34
weinig joined
|
|||
audreyt | I noticed :) it's cute, though. | 15:35 | |
TimToady | and She Who Must Be Obeyed says we're going for a walk now before it gets blazing hot. | ||
gaal | Garden of unsafePerformIO paths | ||
audreyt | have fun, then :) | ||
audreyt goes committing "want" changes | |||
gaal | TimToady: if you see a Borges on the road, do not follow him | ||
TimToady | if I return before I left, lemme know. | 15:36 | |
audreyt | do, and do not. try is not there! | ||
TimToady | walking & | ||
"There once was a girl named Flight" | |||
audreyt | mm the sigil of return continuation | ||
15:36
jjkoch left
|
|||
audreyt | "Brite" I think. | 15:37 | |
or rather, google thinks. maybe she renamed | |||
rodi | Installing v6 to work with bleeding-edge pugs, should I just install 0.011 from CPAN, or should I install from my svn checkout, and if the latter, is the README in perl5/README out-of-date? | 15:39 | |
audreyt | it's out of date. | 15:40 | |
rodi | okay, should everything in that directory be installed? (I'm happy to edit the README) | 15:42 | |
I know I need Pugs-Compiler-*... | |||
gaal | There once was a LISP generation | ||
Who liked nothing quite like continuation | |||
Every call they CCed | |||
Was resumed with a yield | 15:43 | ||
This led to efficient evaluation | |||
PolettiX | where can I find more about the disappearance of many "default behaviours", like I've found for "shift"? | ||
gaal | lumi will no doubt show up soon and tell me the scansions off. Well, commits welcome :) | 15:44 | |
audreyt | PolettiX: I don't think it's documented that well | 15:47 | |
PolettiX: add an entry to docs/Perl6/Perl5/Differences.pod ? | 15:48 | ||
(do you have a commit bit? if not, what's your email addr so I can send you one?) | |||
PolettiX | audreyt: flavio [AT] polettix.it (froh-doh, but at work) | ||
gaal | PolettiX: the porting_howto is a starting point | ||
PolettiX | gaal: I'll google it out, thanks! | 15:49 | |
gaal | look in docs/ | ||
PolettiX | gaal: I fear that there's nothing about shift and nothing about default :D | 15:52 | |
audreyt | I've already sent one, PolettiX | ||
gaal | bbiab& | ||
PolettiX | audreyt: do you mean that you sent me one in the past few days? | 15:54 | |
audreyt | yeah | ||
15:56
elmex joined
|
|||
PolettiX | uhm, I'm afraid that I either missed it in the sea of junk email I receive | 15:57 | |
or I simply didn't receive it | |||
audreyt: would you be so kind as to send me it again, please? | |||
audreyt | do you have some other mail account? :) | ||
PolettiX | eh, this one should be alive and kicking, but you can send it to flavio.poletti [at] stsconsulting.it | 15:58 | |
audreyt | sent | 15:59 | |
PolettiX | audreyt: I'm trying the registration link with my original email account :) | 16:01 | |
Limbic_Region | hey audreyt - just got back | 16:02 | |
16:02
Psyche^ joined
|
|||
Limbic_Region | commenting out the heap in config.yml and the block starting at 197 in Makefile.PL does not fix the heap problem on Win32 | 16:02 | |
didn't make it worse either | |||
audreyt | ok. can you trace Makefile.PL | 16:03 | |
make sure that it did read the heap size conifg? | |||
fglock | rodi: v6 0.013 in CPAN is just a few commits behind svn | 16:06 | |
rodi | fglock: thanks. my CPAN mirrors must be sucky, because even after 'reload index' I'm still getting 0.011 as the most recent. I'll poke around and find a mirror with better updates, though- who knows what I might be missing!! ;) | 16:08 | |
Limbic_Region | audreyt - sure, I will sprinkle lots of print statements | ||
will take me a while though as I must eat very soon | |||
kolibrie | gaal: bpphillips: minibufexpl tabs at bottom => let g:miniBufExplSplitBelow=1 | 16:09 | |
rodi | fglock: yup, that did it. ibiblio.org was just a bit behind, I guess. Thanks for the help. | 16:10 | |
16:10
Psyche^ is now known as StudiesInWords
16:12
StudiesInWords is now known as Patterner
16:17
soisoisoi joined
|
|||
svnbot6 | r12079 | audreyt++ | * build profiling third-party libraries on "make profiled". | 16:19 | |
Limbic_Region | is anyone else noticing "missing files from your kit - please inform the author" for inc/Module/Install ? | 16:23 | |
audreyt | nopaste? | 16:26 | |
16:27
c6rbon joined
|
|||
Limbic_Region | just a sec - was sprinkling print statements | 16:27 | |
perlbot nopaste | 16:28 | ||
perlbot | Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel> | ||
pasteling | "Limbic_Region" at 129.33.119.12 pasted "Missing files from inc/Module/Install ???" (41 lines, 2.1K) at sial.org/pbot/18887 | 16:29 | |
Limbic_Region | audreyt - that's the M::I problem but the heap trace is interesting - will let you know results in a few | 16:30 | |
audreyt | Limbic_Region: the warning is ignorable | 16:31 | |
we should turn it off somehow | |||
but it's ignorable | |||
Limbic_Region | k | 16:32 | |
ok - here is the interesting thing with heap | |||
both the block starting at line 197 and the one pulling from the config work | 16:33 | ||
IOW - $heap is set to 348m or in my config.yml 400m | |||
it just appears to have no affect | |||
here are the ghc flags "ghc_flags = -H0 -i. -isrc -isrc/pcre -I. -Isrc -Isrc/pcre -static -Wall -fno-warn-name-shadowing RTS -M400m -RTS" | 16:35 | ||
after setting $heap | |||
audreyt | try 1024m | 16:36 | |
TimToady | & kfa | ||
audreyt | wb :) I committed two unrelate cleanups, both discussed here a few days ago | ||
Limbic_Region | audreyt - um, ok but the heap size is not changing - it is still failing with a specific amount | ||
GHC's heap exhausted: current limit is 268435456 bytes; | 16:37 | ||
it is always that number regardless of what we set the -M to | |||
audreyt | hm | 16:41 | |
I know that number | |||
it's 2** something | |||
?eval log(268435456) / log(2) | 16:42 | ||
16:42
evalbot_12078 is now known as evalbot_12079
|
|||
evalbot_12079 | 28.0 | 16:42 | |
rodi | I never cease to be amazed. | ||
Limbic_Region | audreyt - isn't the default for -M unlimited anyway? | ||
or at least isn't it supposed to be | 16:43 | ||
audreyt | I think "268435456" means unlimited on 32bit machines | 16:44 | |
since heap objects aligns on 4bit boundaries, that makes 29 effective bits | 16:45 | ||
and maybe GHC hijacked one bit for nefarious purposes | |||
so that makes sense | |||
upgrade to a 64bit machine? | |||
TimToady | ?eval my %x = :a(1), :b(2); my $what = {%x}; say $what(); | 16:46 | |
evalbot_12079 | Error: Cannot cast from VList [VList [VStr "a",VInt 1],VList [VStr "b",VInt 2]] to Pugs.AST.Internals.VCode (VCode) | ||
audreyt | TimToady: {%defaults, x=>1, y=>2} is useful... | 16:47 | |
TimToady | I'm just thinking if we bias towards hash we could make Hash do .() | ||
Limbic_Region | audreyt - you convince my employer to do so and gladly | ||
audreyt | TimToady: and it would return... itself? | ||
TimToady | I guess it would eval at the wrong time though. | 16:48 | |
audreyt | indeed | ||
Limbic_Region | ok - so trying 1024m isn't going to help - nothing is going to help except reducing the need for heap under 268,435,456 bytes | ||
Limbic_Region wanders off | |||
audreyt | Limbic_Region: we'll get there :) just need to solve this circularity problem... | ||
TimToady | you can say that again | ||
audreyt | first we need to get there... | 16:49 | |
TimToady | repeat until... | ||
audreyt | while wend... | 16:50 | |
TimToady | while goto... | ||
audreyt | O: { callback(yesterday), bid time &return }; | 16:52 | |
actually, that gave me an idea... | 16:53 | ||
audreyt discovers GHC supports self-circular modules | 16:54 | ||
so there may exist a purely shave-heap-only hack | |||
rw-rw-r-- refrains from the GHB -> GHC comments that're jumping out at him. | 16:55 | ||
16:59
Psyche^ joined
|
|||
gaal | self-circular modules? | 17:03 | |
TimToady | repeat while try goto randomlabel() { say "got somewhere" } | 17:05 | |
?eval $x = try 1 / 0; say $x; | 17:13 | ||
evalbot_12079 | Error: Undeclared variable: "$x" | ||
TimToady | ?eval my $x = try 1 / 0; say $x; | ||
evalbot_12079 | Error: Illegal division by zero | ||
gaal | is try a... combinator now? :) | 17:15 | |
?eval my $x = try { 1/0 }; say $x | |||
evalbot_12079 | OUTPUT[ ] Bool::True | ||
TimToady | ?eval my $x = try { 1 / 0 }; say $x; | ||
evalbot_12079 | OUTPUT[ ] Bool::True | ||
17:15
Psyche^ is now known as Patterner
|
|||
TimToady | was just thinking how much try is like do, is all... | 17:16 | |
?eval my $x = do if 1 { 2 } else { 3 }; say $x | |||
evalbot_12079 | OUTPUT[2 ] Bool::True | ||
TimToady | ?eval my $x = try if 1 { 2 } else { 3 }; say $x | 17:17 | |
evalbot_12079 | Error: unexpected "i" expecting term postfix op | ||
gaal | try $file or warn "I didn't like it" | 17:18 | |
TimToady | would parse as try($file or warn "I didn't like it") | ||
if try is like do | 17:19 | ||
svnbot6 | r12080 | fglock++ | v6 - " $/ does v6::AST::NBit " temporarily compiles to " 'v6::AST::NBit'->new($::_V6_MATCH_) " | ||
gaal | I was just jocularly referring to the quaint do-FILE syntax. | ||
17:20
aufrank joined
|
|||
TimToady | try initialize my $x; | 17:20 | |
just trying (ouch) to make a case for dropping the {...} optionally | 17:21 | ||
well, probably something worth thinking about in the shower & | 17:22 | ||
gaal | try $ if 1 then 3 else 3 -- oops wrong language | ||
lumi | gaal: Scansion's off :P (Sorry it took so long, I was at a movie) | 17:23 | |
gaal | lumi: there was a preemptive remark about that... | 17:25 | |
...so I'm waiting for your suggestions :) | |||
17:27
weinig joined
|
|||
audreyt | gaal: how long does Pugs.ASt.Intrernals take to compile? | 17:27 | |
for you | |||
17:27
vel joined
17:29
weinig joined
|
|||
gaal | let me check.. <1m | 17:37 | |
audreyt | (unoptimised, surely) | 17:38 | |
gaal | yes. | ||
hold on, I have some local buildbreaking stuffs | 17:39 | ||
aufrank | hi all! | 17:40 | |
I was about to send a post to p6l about this, but it seems like a small enough question that maybe it just warrants asking here | |||
how does changing .meta to .META or META() make it more like typecasting? Is it that there's now a function call form, or is it that the name is now uppercase, or is it something else I'm missing? What exactly is the typecasting syntax that META and friends are now like? | 17:41 | ||
gaal | unoptimized is about 30 sec. checking optimized. | ||
3 minutes w/o instances | 17:45 | ||
wolverian | aufrank, Type $foo, $foo.Type are tentatively typecasts (instead of .as) | ||
gaal | and the instances are another just-under-a-minute. | 17:46 | |
svnbot6 | r12081 | fglock++ | v6-Compiler - Grammar/Native.pm compiles to usable p5 | ||
aufrank | is Type($foo) also a typecast? because META($foo) now is legal, right? | 17:47 | |
gaal | this is on a 3mhz p4 under colinux. | ||
wolverian | right. that's what I meant with the first one | ||
aufrank | s/now/is now/ | ||
I see | |||
and the UPPERCASE is just to show that we should fear their power? | |||
wolverian | I assume so, yes. could be Meta too, I suppose. | ||
gaal | how much is it for you, audreyt? | 17:48 | |
audreyt | unoptimised is about 9sec here | ||
going to 7 now | 17:49 | ||
aufrank is especially jealous of those with fast hardware | |||
gaal | down to 7 you mean? | ||
audreyt | was somewhere around 20sec | ||
gaal | what did you change? | ||
audreyt | but I might be imagining things | ||
moved ~500 lines out. | 17:50 | ||
gaal | oooh | ||
design by scalpel | |||
but how long do they take to compile? | |||
is it the value instances? what can you extract from PAI? | 17:51 | ||
gaal is very curious :) | |||
did you find a silver circularity saw? | 17:52 | ||
svnbot6 | r12082 | fglock++ | v6-Compiler - Emitter/Native/Perl.pm compiles | ||
audreyt | committing. | ||
svnbot6 | r12083 | audreyt++ | * Factor out Pugs.AST.Internals to Pugs.AST.Eval and Pugs.AST.Utils. | 17:55 | |
r12083 | audreyt++ | (This should help with heap consumption a bit.) | |||
aufrank | gaal++ #circularity saw... groan | 17:56 | |
17:57
cognominal joined
17:58
FurnaceBoy joined,
vel joined
|
|||
svnbot6 | r12084 | audreyt++ | * Sadly, GHC 6.5-trunk is broken w.r.t. the newtype EvalT | 18:01 | |
r12084 | audreyt++ | in the .hs-boot file, so we only talk about pure functions for now. | |||
r12085 | audreyt++ | * remove debug "die" | |||
pasteling | "gaal" at 192.115.25.249 pasted "borkage w/6.4.1" (13 lines, 625B) at sial.org/pbot/18889 | 18:04 | |
svnbot6 | r12086 | audreyt++ | * more newtype-deriving avoidance. | ||
gaal | heh. | ||
no, Utils is still broken on my end. | 18:05 | ||
audreyt | fixed, I think. | 18:08 | |
svnbot6 | r12087 | audreyt++ | * GHC 6.4.1 doesn't grok instance decls in .hs-boot vs deriving. | ||
pasteling | "gaal" at 192.115.25.249 pasted "different error. and oh, I have 6.4.2" (27 lines, 1.2K) at sial.org/pbot/18890 | 18:09 | |
jferrero is away: Hummm... ahora vengo... | 18:10 | ||
svnbot6 | r12088 | audreyt++ | * opps, redundant instances | ||
gaal | Show for VObject and Val are missing... | 18:11 | |
audreyt | try again | 18:14 | |
svnbot6 | r12089 | audreyt++ | * remove all instances from .hs-boot | ||
18:14
kanru joined
|
|||
jferrero is back (gone 00:05:11) | 18:15 | ||
18:16
vel joined
|
|||
gaal | works, but on unoiptimized doesn't change much. testing again with optimized | 18:16 | |
svnbot6 | r12090 | fglock++ | v6-Compiler - tests compile; need some v6 runtime work | 18:17 | |
gaal | no real change :( | 18:21 | |
audreyt | optimized here doesn't change much | ||
unoptimised sees large speedup | |||
gaal | not here - still about 3 minutes | ||
fglock | does Pugs have ' $x does Y ' ? the version I have installed is a bit outdated | 18:22 | |
audreyt | fglock: it does not | ||
jferrero is away: Hummm... ahora vengo... | |||
gaal | but it's still good, because even if the net time hasn't changed, about 20 seconds went to Utils | 18:23 | |
fglock | does Moose define a default constructor? | 18:24 | |
gaal | so recompilations triggered by Internals changes will take 20 seconds less. | ||
TimToady | ghc-6.4.1: panic! (the `impossible' happened, GHC version 6.4.1): lookupVers1 PugsziASTziInternals envPos{v} | 18:25 | |
trying a realclean... | |||
audreyt | hm, the impossible happened. | 18:26 | |
I know a fix | |||
r12091 | 18:27 | ||
(oberved on feather as well) | |||
svnbot6 | r12091 | audreyt++ | * inhibit the "impossible" error caused by bogus unboxing. | ||
audreyt | fortunately we don't have to support 6.4.0 anymore. | ||
(otherwise this wouldn't even be possible) | |||
fglock | re Moose: I guess Moose::Role doesn't have new(), so I'll have to use plain Moose by now | 18:30 | |
18:31
weinig joined
18:32
kanru joined
|
|||
audreyt | fglock: what do you need M::R->new for? | 18:33 | |
18:33
lumi joined
|
|||
fglock | audreyt: I need to emulate ' $object does role ' | 18:35 | |
I'm trying with ' role->new( $object ) ' | |||
for creating ast nodes | |||
audreyt | ah. anonymous class | 18:36 | |
and runtime mixin | |||
moose probably doesn't do that yet | |||
fglock | no, I asked Stevan yesterday | 18:37 | |
TimToady | compiled, smoke in .5 hr | 18:38 | |
lunch & | |||
fglock | audreyt: other than this, p6p6 is already possible - so I'll cheat with plain classes for a while | 18:39 | |
audreyt | yup | ||
stevan | fglock, audreyt: soon,.. nothingmuch and I just discussed the underlying core for supporting this | ||
fglock | stevan: wow | ||
stevan | right now I am fighting p5's DWIMery in regard to typeglobs/symbol tables | 18:40 | |
I think i need to do this in XS,.. but my C-fu sucks | |||
18:40
FurnaceBoy_ joined
|
|||
stevan is looking for volunteers if anyone is interested :) | 18:40 | ||
gaal | otherwise the fix for the impossible would not be possible? that's dire. | ||
fglock | stevan: I don't even need the sugar, plain method/subs would do | 18:41 | |
18:41
vel joined
|
|||
audreyt | wow, nearly 3am. | 18:42 | |
jferrero is back (gone 00:19:48) | |||
audreyt waves and goes to sleep. | |||
stevan | fglock: the problem is in how Class::MOP destroys anon-classes,.. | ||
audreyt | or reuse them | ||
stevan | the anon-class DESTROY hook needs to be attached to the instance's DESTROY | ||
audreyt | "Foo does Bar" can be memoized as Foo__Bar or something like that | 18:43 | |
svnbot6 | r12092 | audreyt++ | * AUTHORS: If we have to have a UTF8-BOM mark, at least make it a line by itself... | ||
audreyt | and then just instantiated normally | ||
the next time $foo doe sBar happens, that metaclass is reused | |||
don't attach it to instances | |||
for perl5 is not ruby | |||
stevan | audreyt: no, the anon-class is destroyed | ||
and the package is removed | 18:44 | ||
etc etc | |||
when the metaclass goes out of scope | |||
this is how basic anonclasses work in Class::MOP | |||
audreyt | I understand for singleton methods | ||
that you need to do that | |||
stevan | we cant re-use this for roles | ||
audreyt | but "$foo does Bar" warrants a nominal approach | ||
stevan | I agree with you :) | ||
audreyt | how surprising :) | 18:45 | |
audreyt smiles happily and goes back to sleep | |||
stevan | I just have to write that approach,.. what I am saying (and I am afraid not being very clear about) is that we cannot re-use some of the existing mechanisms in C::MOP :) | ||
but before we tack on too much to the existing role implemenation, we need to clean up some uglies in the design | 18:47 | ||
18:47
weinig joined
|
|||
stevan | (see my babble the other day about attributes being composed as mini-implicit-roles) | 18:47 | |
aufrank | stevan: Class Point { has $x; has $y } is actually Class Point { does has_x; does has_y; Role has_x { $x }; Role has_y { $y } } # ??? | 18:50 | |
PerlJam | except that two "has $x" is compile-time conflicty, while two "does has_x" is not. | 18:52 | |
aufrank | Role has_x is unique { $x } | 18:55 | |
Roles that is, is there a trait or a role that roles can do to make them compile-time conflicty? | 18:56 | ||
s/Roles// | 18:57 | ||
gaal | why *do* we have to have a BOM mark in AUTHORS? | 18:58 | |
wolverian | kill it with fire | 18:59 | |
Patterner | UTF-*? | 19:00 | |
wolverian | UTF-8 | ||
should be fine without a BOM | |||
Patterner | and 16? | ||
wolverian | we don't have UTF-16 in pugs, I hope. | ||
stevan | aufrank: not really | 19:03 | |
aufrank: it is more like this ... class Point { has $.x; } translates to the following meta calls | |||
^Point := ^Class.new(:name<Point>); ^Point.add_attribute('$.x'); | 19:04 | ||
then inside add_attribute, we create a new instance of ^Attribute.new(:name<$.x>) | |||
then ask the attribute for its representation as a role my $attr_role = $attr.get_as_role; | 19:05 | ||
then apply that role into the class | |||
this allows us to use the same role combination logic for adding attribute accessors into a class | |||
meppl | guten abend | 19:06 | |
stevan | but this is implicit composition, so not something userland needs to worry about,.. or even see | ||
19:06
froh-doh joined
|
|||
stevan | good night meppl | 19:06 | |
meppl | good evening stevan | ||
19:07
vel joined
|
|||
meppl | sry for my non english amsg, again | 19:07 | |
19:08
bernhard joined
|
|||
stevan | meppl: forgive my lack of german skills :) | 19:08 | |
Patterner | german is simple. Auch Ich sprechen Deutsch... | 19:12 | |
aufrank | stevan: I think I see :) | 19:13 | |
19:15
chris2 joined
|
|||
svnbot6 | r12093 | fglock++ | v6 - non-working 'role' hacks | 19:15 | |
r12092 | audreyt++ | * AUTHORS: If we have to have a UTF8-BOM mark, at least make it a line by itself... | |||
19:23
vel joined
19:30
weinig joined
19:49
vel joined
19:51
lumi joined
19:55
DaGo joined
20:06
jferrero joined
20:16
Zemyla joined
20:18
Limbic_Region joined
|
|||
Limbic_Region | question regarding t/examples/examples.t | 20:18 | |
is there a reason why the list of examples is hardcoded? | 20:19 | ||
I just tried to run examples/cribbage_scoring.pl and it doesn't parse | |||
20:19
cmarcelo joined
|
|||
Limbic_Region | I know by making a suggestion I am pretty much signing up to do it, but ... | 20:21 | |
while certain tests can have their output validated against previously recorded output | |||
wouldn't it be worth while to verify that all examples at least parse (even if they don't run)? | |||
20:24
bpphillips left
|
|||
Limbic_Region | . o O ( he says as he heads for the door ) | 20:25 | |
20:33
yuval joined
|
|||
pasteling | "yuval" at 217.132.6.238 pasted "Failed to compile pugs with parrot-0.4.6" (39 lines, 4K) at sial.org/pbot/18896 | 20:39 | |
nothingmuch | hello, bretheren | 20:47 | |
yuval | :) | ||
20:48
weinig joined
|
|||
yuval | hey. i kinda wanted to commit the new parrot ebuild tonight, only that pugs won't compile with it :( | 20:48 | |
nothingmuch avoids reading that nopaste | 20:50 | ||
had to go visit a friend 20 minutes ago | |||
20:50
larsen joined
|
|||
spinclad | i can see the obvious, that either Parrot_on_exit and Parrot_exit have changed or their calls are broken... it'll take a while for me to look into, tho | 20:56 | |
yuval | ok, thanks | 20:57 | |
20:57
FurnaceBoy joined
|
|||
kolibrie | are yuval and nothingmuch twins, or should I disassociate those nicks in my mind | 20:58 | |
spinclad | twins in name only, i fancy | 20:59 | |
lumi | They are brothers in Yuvality but separate people | ||
spinclad | yuvalitude | ||
kolibrie | thank you | ||
spinclad | yuvalitudinosity | ||
yuval smacks his forehead | |||
spinclad | sorry, playing with names can be hard on the named i guess | 21:00 | |
lumi | It can be traumatic I guess | ||
A head trauma in this case | |||
Patterner | noyovality. | 21:02 | |
lumi | yuvalation? | 21:03 | |
gaal: conscious? | |||
spinclad | but gaal's not the one with the head trauma | ||
lumi | No, but he's the one to praise for the new AST, about which I've a question | 21:04 | |
spinclad | ah, that's all right then | 21:05 | |
21:11
cjeris left
21:15
soisoisoi joined
21:18
SageLT joined
21:19
shachaf joined
|
|||
TimToady | yuval: is that the 2.2.12 release of pugs? if so, we've already fixed that in the current pugs. | 21:20 | |
*6.2.12 | |||
I always compile pugs against bleadparot | 21:22 | ||
bleadparrot even... | |||
21:25
xinming joined
21:26
jferrero joined
|
|||
xinming | anyone here uses svk? | 21:26 | |
Khisanth tries to | 21:27 | ||
xinming | It seems, there is a problem on parrot server. :-/ | ||
Khisanth: switch to svk, It's really powerful. :-) | |||
TimToady | I just svn'd up from there, but maybe svk is being disagreeable. | ||
Khisanth | I try but I have to figure out how to grab a copy of $work's repo first :) | ||
xinming | TimToady: Yes, whenever I try to `svk sync /parrot/mirro`, It tells me on md5sum mismatch. | 21:28 | |
that's why I ask if there is a sollution yet. | |||
TimToady | I'm no expert in svk, alas. Or maybe, fortunately... | 21:29 | |
spinclad | chip has brought the question to #svk | 21:30 | |
xinming | Khisanth: hmm, If you wish, I'll tell you how to work with svk. :-P | ||
spinclad | there seem to be some damage around some recent revs | ||
Khisanth | xinming: I need to know how to *dump a repo that can be "imported" by svk | 21:31 | |
xinming | use svnadmin | ||
Khisanth: svnadmin can dump revisions to a file, and then, use svnadmin load to load the file into reopsitory. | 21:32 | ||
Khisanth | in other words, now to create something like www.parrotcode.org/svk-bootstrap-dump.bz2 | ||
21:32
tup joined
|
|||
xinming | Khisanth: svnadmin dump --deltas repository_to_load > repository.dump | 21:33 | |
I've made the dump for parrot and pugs | |||
in www.perlcabal.org/~xinming/ | 21:34 | ||
Khisanth | I tried that actually but then how do I update? | ||
xinming | Khisanth: did you tried the link I give you? | ||
hmm, I think I forgot to make svk map the depot. | |||
Khisanth: How about a seperate channel for avoiding flodding this channel? | 21:35 | ||
Khisanth | I think you are misunderstanding me, I am not doing this for parrot or pugs, and what I need is actuall step 0 | 21:37 | |
xinming | Khisanth: Do you mean how to make a dump file? | 21:39 | |
Khisanth | ok, the problem is that I was able to create the dump file, then import it back locally but when doing svk sync, it didn't know where the remote repo should be | 21:40 | |
xinming | Khisanth: did you mirror the repo first? | 21:41 | |
Khisanth | let me retry this tomorrow to have more exact errors :) | 21:42 | |
xinming | Khisanth: hmm, Or, I think you forget to make the depotmap in svk | ||
Khisanth: Ok | |||
Khisanth | and yes I did try that as well but then I could reload it | ||
couldn't, complained that it already exists | 21:43 | ||
I am thinking I either did an extra step or I am missing one | |||
gaal | lumi: no. | 21:44 | |
xinming | Khisanth: If it says, that it already exists, I think you mirrored it twice. don't know. :-/ | ||
lumi | I'm going to sleep, wedding tomorrow morning (not mine). I'll hack it through then | 21:45 | |
gaal: While you're unconscious, why is there no c_enterBlocks? | |||
Khisanth | ok I have a copy of the bz2 so I guess I could try it now | ||
gaal | let us see... | ||
lumi | Or c_leaveBlocks either, I now note | 21:46 | |
gaal | hmmm, the reason is that ENTER and LEAVE are not mentioned in S06 | 21:47 | |
but that may not be a good reason | |||
lumi | They're in S04 apparently | 21:48 | |
gaal | yes... please add | ||
and judging by the length of that list those two may not be the only ones that are missing | |||
lumi | afaics only CONTROL and CATCH aren't there, and I don't know if this is where those should be | 21:50 | |
gaal | by all means hack away if you spot any problems | ||
lumi | I hack, but tomorrow | 21:51 | |
gaal | they should, but not in lists because they can each only occur once if they occur at all. | ||
lumi++ | |||
xinming | bbl | 22:06 | |
yuval | TimToady: yes, it is 6.2.12 | 22:08 | |
jmf | 1..^2 does not match 1.9? | 22:14 | |
22:16
hexmode joined
|
|||
TreyHarris | ?eval 'a' ~~ <a b c> | 22:21 | |
22:21
evalbot_12079 is now known as evalbot_12093
|
|||
evalbot_12093 | Bool::False | 22:21 | |
jmf | ?eval 1 ~~ 1..2 | ||
evalbot_12093 | Bool::False | ||
TreyHarris | write a test :-) | 22:22 | |
jmf | lol | ||
that should not be happening right? | |||
?eval 2 ~~ 1..3 | 22:23 | ||
evalbot_12093 | Bool::False | ||
svnbot6 | r12094 | Sage++ | Updating my documentation for the translator. | 22:24 | |
TreyHarris | right. look at S03. The two Range definitions are broken, as is the Array ~~ Num and Array ~~ Str | 22:25 | |
at least... | |||
?eval <foo bar bat bot> ~~ /o/ | |||
22:25
evalbot_12093 is now known as evalbot_12094
|
|||
evalbot_12094 | Match.new( ok => Bool::True, from => 1, to => 2, str => "o", sub_pos => (), sub_named => {} ) | 22:25 | |
TreyHarris | ?eval <faa bar bat bat> ~~ /o/ | ||
evalbot_12094 | Match.new( ok => Bool::False, from => 0, to => 0, str => "", sub_pos => (), sub_named => {} ) | ||
TreyHarris | Array ~~ Regex works though. | ||
look at the table in S03. i think there's already a test for each of those though--maybe it's :todo | 22:26 | ||
svnbot6 | r12095 | Sage++ | The print and printf translations now use a colon instead of a comma. Thanks to lwall for the catch. | 22:27 | |
r12095 | Sage++ | Running with -R now translates captures to explicit aliases, so -R no longer breaks captures. | |||
r12096 | Sage++ | Updating ASTTranslate to match my personal copy (ASTTranslate-sage) | |||
jmf | TreyHarris: should i still write a test or its a known problem? | ||
TreyHarris | look at t/operators/smartmatch.t. the range ones at least are :todo | 22:29 | |
svnbot6 | r12097 | Sage++ | My makefile, at this point it actuall just aliases "ghc --make -o translate ASTTranslate.hs". | ||
r12097 | Sage++ | Use "make sage" to make based on ASTTranslate-sage.hs instead, which is usually a much newer version. | |||
r12098 | Sage++ | The test script for the translator is now better documented, so other people can really use it. Useage has changed some too. | |||
TreyHarris | ?eval 5 ~~ 5 ^..^ 10 | 22:31 | |
22:31
evalbot_12094 is now known as evalbot_12097
|
|||
evalbot_12097 | Bool::False | 22:31 | |
TreyHarris | that's commented out though. i'm not sure why | ||
jmf | it seems like none of them are working | ||
TreyHarris | jmf: correct, but the ones that expect false are working, so the test isn't commented or :todo :-) | ||
jmf | but for the test: i can't tell what the intended behavior is for a..^b | 22:32 | |
TreyHarris | jmf: should be a <= $n < b | ||
jmf | should it be like a..b-1 (for rationals) | ||
TreyHarris | ohhhh :-) | ||
jmf | ok so 1..^2 should match 1.9 | ||
TreyHarris | heh. | ||
how are ^.., ..^, and ^..^ defined in the synopsis? | 22:33 | ||
jmf | its not clear to me | ||
it says it excludes the endpoint | |||
it seems like it should be [a,b) | |||
TreyHarris | jmf: no, there's an explicit example in S02: | ||
1.5 ~~ 1^..^2 # true, equivalent to 1 < 1.5 < 2 | |||
so there ya go | 22:34 | ||
jmf | oh i see its in S03 too also actually | ||
TreyHarris | so i was right. it's a <= $n < b, not a <= $n <= b - 1 | ||
jmf | yeah that makes sense | ||
TreyHarris | sorry, i meant S03 | ||
22:45
markstos_ joined
22:49
weinig joined
|
|||
jmf | TreyHarris: what is the plan #; statement for? | 22:53 | |
22:55
weinig joined
|
|||
markstos_ | In Perl6, what's the equivalent of Data::Dumper ? | 22:58 | |
TreyHarris | jmf: just like test plan in Perl 5. it says how many tests are in the file, so that if testing aborts early, it can tell you | 23:09 | |
markstos_: .perl | |||
don't think it's implemented yet... | |||
?eval my @f = <foo bar bat>; @f.perl | |||
23:09
evalbot_12097 is now known as evalbot_12098
|
|||
evalbot_12098 | "[\"foo\", \"bar\", \"bat\"]" | 23:09 | |
TreyHarris | oh, looky there | 23:10 | |
markstos_ | TreyHarris. Thanks. Yeah, it works here, too. Cool. | ||
I have an array, whose first element is a hashref. I want to copy that another href. Using a syntax something I had in Perl5 doesn't work: | 23:12 | ||
?eval %$copy = %{ ({a => 'b'}) }; | |||
evalbot_12098 | Error: unexpected "{" expecting "::" | ||
TreyHarris | ?eval my $copy = ({a => 'b'})[0]; $copy<a> | 23:16 | |
evalbot_12098 | Error: Cannot cast into Array: VRef <Hash> | ||
TreyHarris | ?eval my $copy = ({a => 'b'},)[0]; $copy<a> | ||
evalbot_12098 | \"b" | ||
TreyHarris | don't know if that's what you mean | ||
markstos_ checks something | 23:17 | ||
TreyHarris-- I checked and the syntax you suggest doesn't copy. It's the same way Perl5 works. Because it's a reference, they reference the same thing. Changing copy changes the original. | 23:18 | ||
But in Perl5 you can do this to get a real copy, I htink : %$copy = %$orig; | 23:19 | ||
Here, the failure phrasing is "Internal Error", making it sound like a pugs bug that it doesn't work. | 23:20 | ||
jmf | ?eval my %copy = [({a=>'b'})] | ||
evalbot_12098 | {("a\tb\n" => undef),} | ||
markstos_ | strange result. | 23:21 | |
jmf | ?eval my %copy = ({a=>'b'}) | ||
evalbot_12098 | {("a" => "b"),} | ||
jmf | ?eval my %copy = [({a=>'b'})][0] | ||
evalbot_12098 | {("a" => "b"),} | ||
jmf | ?eval my %copy = ({a=>'b'})[0] | ||
evalbot_12098 | Error: Cannot cast into Array: VRef <Hash> | 23:22 | |
markstos_ | This doesn't produce an error, but it doesn't copy it, either: they still reference the same values: | 23:23 | |
%$copy = @data[0]; | |||
You can check by modifying %copy, and then looking at @data.perl. | 23:24 | ||
My solution for now is to add extra step, but using this syntax, and then making a reference to \%copy later: my %copy = @data[0]; | 23:25 | ||
That makes a real copy. | |||
jmf | this seems to work | ||
23:26
qmole joined
|
|||
TreyHarris | if you use a hash type, it works. %copy = @data[0] | 23:26 | |
jmf | yea | 23:27 | |
TreyHarris | also %{$copy} = @data[0] works | 23:28 | |
markstos_ | Aha. | 23:29 | |
jmf | ?eval my @array = {a=>'b'},; my %copy = @array[0]; %copy{'a'} = 5; say %copy.perl; say @array.perl | ||
evalbot_12098 | OUTPUT[{("a" => 5),} [{("a" => "b"),},] ] Bool::True | ||
markstos_ | It's interesting that %{ @data[0] } is not required in Perl6. | ||
Here we copy a hashref to a full hash: %copy = @data[0].... doesn't seem quit right that it works that way. | |||
jmf | you want to make a copy then get a ref to the copy? | 23:30 | |
markstos_ | jmf: That was the original plan. It turned out that gettin a ref to the resulting copy wasn't necessary, so I changed my code here. | 23:31 | |
TreyHarris | markstos_: just like in perl 5, the LHS imposes context on the RHS | ||
markstos_ | So by putting a hash on the left side, the hashref on the right is transformed in a "hash context" ? | 23:33 | |
In Perl5, I store internal stuff in objects with $self->{__FOO}; What's the corresponding recommended idiom for Perl6? | 23:36 | ||
TreyHarris | markstos_: correct enough for government work :-) | ||
markstos_: please read S12 | |||
markstos_ | Will do. | ||
TreyHarris | markstos_: it should make it very clear, but if it doesn't ask again | 23:37 | |
markstos_ | Sometimes I don't know where to start when I need some docs to get going. | ||
TreyHarris | just go to dev.perl.org/perl6/doc/synopsis.html , you should be able to read the whole kit and kaboodle in six hours or less | ||
lambdabot | Title: Synopses - perl6 | ||
markstos_ | Maybe it will clarify the difference between 'package', 'class' and 'module' in Perl6 for me as well. :) | 23:38 | |
jmf | TreyHarris: do you know if the ?& ?| operators are supposed to be working right now/ | 23:40 | |
23:40
mauke_ joined
|
|||
jmf | ?eval 5 ?& 4 | 23:41 | |
evalbot_12098 | Error: unexpected "?" expecting comment, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
TreyHarris | jmf: it's todo, but please write a test, there is none (except in assign.t) | 23:44 | |
23:46
Bit-Man joined
|
|||
markstos_ | oh joy, I managed to trigger a bug in the Haskell compiler. | 23:47 | |
TreyHarris | if something simple like that doesn't even parse, you can (usually) assume it's todo | 23:48 | |
jmf | ok thanks...for testing should i add to the existing .t files or create new ones? | 23:50 | |
23:50
diakopter joined
|
|||
svnbot6 | r12099 | fglock++ | PCR - fixed '..' in char classes | 23:55 | |
23:55
mauke_ is now known as mauke
|