Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net
Set by autrijus on 4 August 2005.
stevan fglock: re: the metamodel and runtimes 01:04
flglock: the metamodel requires some basic functionality to exist, which is those things supported by PIL
bascially, Scalar, Array, Hash and Code objects
from that foundation we can build the object system 01:05
then through a little syntactic sugar on top, and you have Perl 6 objects
I am re-writing the p5 metamodel now to reflect things I learned building the first one, as well as the JS one, and in autrijus porting it to haskell 01:06
it will likely happen side by side with autrijus's haskell work, and each will inform the other as we go along
but everything up until now should be viewed as prototypes, and not final 01:07
which actually describes a lot of things in Pugs :)
__END__ &
svnbot6 r6234 | putter++ | Prelude.pm: Added .as for List and Hash. But not for List of Pairs. iblech++ for the sprintf_and_as.t tests. 01:54
r6235 | fglock++ | * perl5/ Value: Num, Int, Bit, Str functions; tests.
putter stevan: I wonder if that paragraph should go in STATUS? 01:56
fglock_ putter: List::as would give an error if List is infinite 01:59
putter Is there a lazy map? 02:01
I keep getting the feeling we are going to need potentially infinite strings... 02:02
fglock_ There will be - it is in the runtime. (I've been thining about infinite strings too - looks like a good idea)
There is a is_infinite() in the runtime - I don't know if it will be available to Prelude 02:03
You can safely shift and pop things from a list, and then connect both sides with '...' - see Span.pm 02:04
putter Perhaps in two flavors, suspected infinite and may just be big. Eg, in reverse order, .bytes will try for a lonnng time, and .bytes will exception with a "you dont want to do that!".
fglock_ There is a elems==Inf, which means the size is unknown, and is_infinite means we are sure it is infinite, and fails 02:05
putter goes to look at Span.pm 02:06
fglock_ see ext/Span/Code.pm - stringify 02:08
(the runtime is ext/Perl6-Value-List, but the stringify() there is very simple) 02:10
putter autrijus: ping? 02:25
Ah well, end of day. 02:27
fglock_: I'm afraid .as on infinite lists will have to wait. Sorry. 02:28
fglock_ ok :)
putter :)
whomever: status update on rules Parser hook - now passes all tests but for trans.t. The regexp in trans's Prelude.pm my sub expand never fires. Something for another day. 02:30
Good night everyone.
fglock_ good night putter
autrijus rehi. 05:30
dduncan Right then, so guess what rare and interesting event I participated in today! 05:35
autrijus mm?
svnbot6 r6236 | autrijus++ | * ow forgot to commit the actual Perl5 codegen. meo culpa
mugwump_ dduncan: was it chanting and dancing around a large fire with a group of South American Shamen? 05:40
05:40 mugwump_ is now known as mugwump
wolverian dduncan, do tell 05:50
oh, and morning, everyone :) 05:52
dduncan I was an extra / background performer for the movie X-Men 3, which filmed at Hatley Castle / Royal Roads, in Victoria, BC, where I live. 05:54
autrijus ooh. 05:57
mugwump Cool. I used to live with a guy who wrote a script that got produced, that was quite fun, we ended up using our flat to shoot some of the scenes 06:00
dduncan I see
mugwump had to clear out for 3 days or so while the film crew took over
dduncan this is all interesting really
X-Men is one of my favorite comics
mugwump So what did they get you to do? 06:01
dduncan also, I answered the casting call on Sunday July 24th, 1 week before OSCON
and I had an invite to work when I returned from OSCON
mugwump that's pretty quick hiring on their part :)
dduncan but I decided not to tell people until it was actually done
it was for extras; they hardly do anything
I was there for a funeral scene; I was one of the attendees sitting in chairs 06:02
I was there for about 9 hours, and the scene is probably 1-2 minutes long in the movie
it was done about 15-20 times
mugwump Yeah, I helped for several days for a few seconds of a little movie called "Hopeless"
dduncan still, its sweet; I get some face time in a movie based on one of my favorite comics; this is also the first time I've been in any film; I was also just 4 feet away from the main cast 06:03
gaal a day's filming sometimes yields just 30 seconds of actual product time
mugwump very cool indeed, will you go to the premiere?
dduncan didn't talk to any of them, though
gaal though 20 takes is a *lot* 06:04
dduncan yes
it was mainly doing the same shot with the cameras in different locations, no more than 3-4 takes per location
the day was rather uneventful ... no notable crisis
gaal oh, complicated cinematography :) 06:05
dduncan the scene had a good 100+ people in it too
mugwump except when a guy with huge claws jumped in and started ripping people to pieces?
I suppose they must do that part with SFX
:)
dduncan no, there was no fighting etc; a calm funeral
I can't say too much, so not to spoil what happens 06:06
stevan dduncan: I hope you wore a Pugs t-shirt,.. we could use the product placement advertising :)
gaal hee
gaal wanders off &
dduncan no; this was a dressed-up funeral; black suit and tie
stevan pugs lapel pin?
dduncan no
purely ordinary stuff ... I don't have any pugs gear anyway, just 2 Perl Foundation shirts and a few Apple shirts 06:07
stevan we need some pugs t-shirts
dduncan the former are brand-oSCON-new; the others a few years old
autrijus stevan: indeed. cafepress time?
stevan autrijus: yes :)
I vote for a metamodel t-shirt,.. but I might be biased :) 06:08
autrijus :D
stevan chicks will totally dig it
autrijus stevan: it will be like quote #1 in haskell.org/hawiki/QuotesPage 06:09
stevan :D 06:10
autrijus www.cafepress.com/cp/moredetails.as...amp;Zoom=1
dduncan mugwump, following the earlier question, I will go to the movie on opening day, in Victoria, not some far off place where a starring cast invite is likely to be
I went to X-Men 1 on the opening day too ... I don't remember if I did that for X-Men 2, but probably; I did also see that one twice in theatres 06:11
fyi, I was also interviewed in advance, so some of that may show up in the extras section
when trailers and/or the movie comes out, I will post a still with myself circled on it, so you guys can see where I am 06:12
regarding the t-shirts 06:13
I think an excellent candidate for content would be some of those diagrams that autrijus has made and posted 06:14
autrijus iblech: I'm going to check in a refactoring on showPerl5 -- after this you need only modify the DrIFT.Perl5 module; the production rules themselves should be polymorphic enough to handle most cases
dduncan eg, the fictional time table
er/timeline
autrijus nod
dduncan or some of the most recent pretty pictures
like that one about containers
I'd wear a shirt having that fictional Perl 6 timeline 06:15
but I won't make it
stevan dduncan: that is what is so great about cafepress,.. you just need to upload the artwork
dduncan I'm going to switch tasks now ... ping if you want me 06:16
autrijus it's "imaginary" as in "imagineering", not "fictional" as in "fictoinal character" :)
dduncan and I heard about the cafepress ... I'll guess that they're print-on-demand
stevan dduncan: yup, exactly :)
dduncan s/I heard about/I see your message about/ 06:17
stevan autrijus: we can use the t-shirts to fund your global hacking adventure
dduncan whatever ... I named said timeline from memory
anyway ... ping
autrijus stevan: right. I'll redraw a better-resolutioned timeline 06:18
and upload them to cafepress :)
stevan I will hack together some designs too
we can make an "Pugs hackathon world tour" 06:20
autrijus :D
ingy++ # good idea
stevan just dont wear it at the airport :)
unless you enjoy body cavity searches 06:21
autrijus :D
ods15 hmm, NetBSD on a toaster 06:31
svnbot6 r6237 | autrijus++ | * abstract Perl5 code generation back to DrIFT.Perl5.
r6237 | autrijus++ | * This slows down -CPerl5 a bit, but presentation tweaks
r6237 | autrijus++ | won't require rerunning DrIFT now.
ods15 www.embeddedarm.com/news/netbsd_toaster.htm
stevan "Polymorphic Existential Recursive Lambda" that would make a good t-shirt 06:46
autrijus Ļ‰ āˆƒ Y Ī» 06:49
stevan I am going to assume that was "Yes, thats a good idea stevan" in chinese or something 06:50
autrijus no
those are the four utf8 symbols for P, E R and L
stevan nice
autrijus U+03C9 - GREEK SMALL LETTER OMEGA 06:53
U+2203 - THERE EXISTS
U+0059 - LATIN CAPITAL LETTER Y
U+03BB - GREEK SMALL LETTER LAMDA
:)
wolverian Y is "recursive"? 06:55
autrijus wolverian: yeah, as in the Y combinator 06:56
wolverian ah, right.
autrijus the symbol of general recursion
wolverian I'm not that far in maths, yet. :)
autrijus :)
wolverian wow. subpixel smoothing sucks at 640x480 06:59
Aankhen`` Morning. 07:01
autrijus yo Aankhen``
Aankhen`` Hola. :-)
What's shakin'?
autrijus t-shirts :) 07:02
trying to get some images uploaded to cafepress
Aankhen`` Could I take a peek?
autrijus er, it's just reusing the visiolization, imaginary timeline, movies
etc
Aankhen`` Ah, I see.
Sounds neat. ^_^
autrijus :D
Aankhen`` -CPerl5 is a new backend? 07:03
autrijus aye. 07:04
should probably be called -CP5Obj
or something like that
but I don't much care :)
Aankhen`` Wow, all this time I thought the Perl 5 backend was already somewhat functional.
autrijus well, it was, but it involves parsing haskell expressions in -CPIL with perl5
which is 1)slow 2)fragile
Aankhen`` Mmm.
autrijus having pugs itself dump p5 expressions is much neater.
Aankhen`` Aye aye cap'n! 07:05
coral you can boil p6 down to p5 now?
Aankhen`` BTW, a suggestion: don't waste any time on -CXML at this point.
autrijus ...but it just costs three lines of code 07:06
two of which has already been written
:)
Aankhen`` And what does the output look like?
autrijus let me show you, a sec 07:07
coral (writes third line)
autrijus yup
coral writes a small controller for some robotic pompoms to keep up with autrijus
autrijus rofl!
Aankhen`` LMAO. 07:08
autrijus done... rendering 07:10
Aankhen`` The pom poms? :-o 07:11
autrijus rehi :) 07:33
perlcabal.org/~autrijus/test.xml
(Test.pm)
perlcabal.org/~autrijus/hello.xml
(Hello world)
there are also DTDs
but I elided them
Aankhen``: it's not _that_ bad :) 07:34
I mean, sure, it's bad, but not that bad :) 07:36
I'll go grab some food and work on YAML.
which would be much much better.
wolverian hm. why do people prefer YAML over XML?
autrijus wolverian: YAML is actually editable in a text editor. 07:37
also, much more readable.
wolverian: XML is excellent for documents
wolverian autrijus, I hate its use of single magical characters. that's severe learning curve.
autrijus but for (possibly recursive, tagged, nested) data
wolverian I don't like meaningful whitespace either.
too easy to fuck up. 07:38
autrijus wolverian: all true, but those are conscious design tradeoffs.
wolverian autrijus, right.
autrijus so, feel free to work on -CXML :)
wolverian: however, to denote
$x = [\$x, \$x]
wolverian as long as people don't use XML or YAML for their configuration files, I'm happy.
autrijus there's no easy way to do that in XML either.
you can use XLink but that's also "magic". 07:39
wolverian I meant "magic" in that it overloads single character too much
autrijus at least it's more concise in yaml
wolverian characters*
autrijus ah.
wolverian (which might be a weird opinion from a perl coder...)
autrijus I'd say each has its uses. I think that ~/.svk/config in YAML has saved much of my time 07:40
wolverian I don't consider either language good for end users.
autrijus but .ini is? 07:41
wolverian definitely better.
autrijus as in, it's more tolerant and easier to explain
wolverian and radically simpler.
autrijus I happen to agree :) but somehow I don't look forward to use INI for marshal and deserialize ASTs 07:42
wolverian right - but that's not a configuration file anymore
there YAML can shine. :)
autrijus yup.
so we are actually in vehement agreement. cool
wolverian :)
now, for configuration files 07:43
autrijus there are configuration files and there ar econfiguration files :)
wolverian right.
autrijus eg. svk's conf file is a dump of internal state
and it's not expected to be edited by regular svk users.
wolverian 99% of applications should never have a configuration file that the user has to ever see.
autrijus ~/.xxxrc notwithstanding :) 07:44
wolverian I disagree.
it is fine for those to exist, but it is not fine to not provide easier interfaces for configuration.
autrijus I agree with you. I'm just noting that the "should never" does not (yet) coincide with reality
wolverian right. this is all "Ubuntu in 2010" talk. 07:45
hopefully. :)
autrijus :D
flying cars!
wolverian those would be nice too.
autrijus it's already 21st century and I want my flying cars :)
wolverian XML does have one good aspect when it comes to editing by hand 07:46
it's (almost) immediately obvious how elements are constructed
autrijus right. that's a conscious design decision too 07:47
but the & gets annoying :)
actually that doesn't even work without entities.
&
wolverian well, you could always CDATA everything..
autrijus ;) 07:48
wolverian anyway. these languages are really meant for serialisation, as far as I'm concerned, and nothing else.
autrijus when I can make use of <a name="inline">inline markups</a>
i.e. when my data actually looks like that
then XML is natural
wolverian right.
autrijus however, for AST and most of other hierarchical data, that model doesn't fit naturally. 07:49
wolverian XHTML... :)
autrijus :)
wolverian this is why Textile, Markdown etc are so popular
you'll note they resemble YAML a lot more than XML
autrijus babel++
wolverian hmm, babel?
autrijus multilingualism 07:50
as opposed to forcing a language that fits all to all uses
wolverian right. exactly.
there is no silver bullet. if I ever have a office, I'm going to spraypaint that on the walls.
(actually, on the walls of the meeting room.)
autrijus easier to paint "there is no silveroffice" on a bullet 07:51
wolverian yes, but I'd have to paint that lots of times. one for each XML, etc weenie.
autrijus :D
food, bbiab.
nothingmuch (stevan | autrijus).ping; 08:10
wolverian ("stevan" (+) "autrijus").ping; # :) 08:11
nothingmuch fair enough =)
wolverian hm, has there been p6l discussion on a notification scheme for perl6? 08:12
nothingmuch but what I really mean is stevan.ping || autrijus.ping
wolverian: see Class::Events under modules
wolverian thanks! 08:13
I am currently concentrated on breaking Ubuntu, I'll do that later :)
nothingmuch okay
it's part of my "MMD is the default" quest
wolverian I think I agree. in any case, trying to modify a class's interface would be easier, in case the author didn't use 'multi'. 08:17
ods15 hya nothingmuch 08:29
what's up
(answer "nothing much")
nothingmuch no thanks, that pun is too old 08:31
i'm good
wolverian: we should start a club, and then wee can sulk and cry and weep
wolverian nothingmuch, has this been discussed on p6l?
nothingmuch wolverian: yep 08:32
wolverian nothingmuch, could you point me at the thread?
nothingmuch i brought it up in the hackathon to
wolverian oh
what did others think?
s,others,the others,
nothingmuch autrijus sort of agrees
stevan agrees
larry didn't really answer
wolverian heh.
nothingmuch i don't remember luqui's opinion but i think he agreed
my point is: there is no difference between MMD and SMD if MMD is designed as a behavioral superset of SMD 08:33
wolverian did Larry say something like "MMD is too complicated to be the default"?
or was that Guido? :)
nothingmuch and something as stupid as making 'sub foo is defined twice' a 'useful warning' is simply not worth the usability of MMD
heh
i don't remember
i think we have much more dangerous default behaviors 08:34
like that fucking autothreading
wolverian I think I love it.
nothingmuch sub foo is autothreading; # much better
i love it too - but not as the default
wolverian I can't say yet. :)
nothingmuch why does someone writing Test.pm have to remember that sub ok (Any|Junction $x, Any|Junction $y, $msg); 08:35
if it doesn't do that, and you say 'is(1, (1|2), "foo")'
then you get 'ok foo\nnot ok foo\n'
that is simply not a sensible default
and I can already see the perlmonks posts from newbies saying
jql sub foo is idempotent; # any guess on spelling error %?
wolverian isn't Junction being included in Any in the latest schemes, or something?
nothingmuch "# use strict; # no longer needs this 08:36
no autothreading; # make my program safe"
jql the problem isn't autothreading, it's side-effects
nothingmuch wolverian: that is besides the point - it still has to be stated explicitly
jql: exactly
jql you just need to mark your function perl-"volatile"
nothingmuch now, compatible behavior can be done by an alternative scheme, which is also much more efficient:
autothread at the leaf level
junctions are passed as values down to the lowest expressions 08:37
and things like sub &infix:<+> is autothreading
in fact, anything that 'is pure' is autothreaded for performance
and stuff like '$handle.seek($junction)'; is a horrible horrible error
jql perhaps we should call every function rand((localtime)[1]) times just to point out people's unreasonable expectation of side-effect-free programming 08:38
nothingmuch now, imagine: sub foo ($place){ $handle.seek($foo) }
if you 'foo(10|20)'
then in what state is $handle right now?
you can't know - it depends on what ran first
and you also can't get an error 08:39
jql or we could offer a nifty is memoizable trait which has the nice side-effect of making auto-threading implicit?
nothingmuch jql: yes
jql: is pure is 'memoizable, optimizable, inlinable, autothreadable'
that is, it's just a value
for any given input
jql that's a better name for it
nothingmuch 'is memoizable' is something less than that - it means that we expect the value to be consistent, and it's OK if IO inside it is not repeated 08:40
in fact, it's preferred:
a configuration database's 'get' function should be memoizable
i'm not sure it should be autothreaded, because the configuration DB might not be thread safe
autothreadable means 'thread safe' 08:41
jql hrm. good point
nothingmuch you can do it at the same time, but you have to do it again each time, because it might be different results
jql sees function-purity becoming the const-correctness of perl6
nothingmuch for example 'class Net::Ping { metho ping ($host) is autothreaded { } }; # much simpler than writing concurrency by hand
jql ping(all(@hosts)) 08:42
nothingmuch exactly
and ping(any(@hosts); # is any one host alive?
you can also add a 'is interruptable'
if (ping(any(@hosts))) { }; # the moment just one value is true, the rest are interrupted 08:43
because the junction is folded, and we know it's value already
now the real problem is that damien really really wants autothreading, but no one knows why
or, at least, they aren't telling me
coral if you spend idle cpu time precalculatiing the expansion of any() until it's actually .pick'd later 08:44
nothingmuch coral: not necessarily
the context of if(ping(any(@hosts))) is known 08:45
the things are autothreaded
and one of the 'pings' finishes
at that point the return value starts getting composed
and is known to be (... | true | ... | ...)
this is enough to know that the whole thing is true
and we can stop everything, since the values are never used again 08:46
if, on the other hand you say 'my $alive = ping(any(@hosts)); if $alive { }' # then the whole thing is run
because $alive could be queried later in juxtaposition to any(@hosts)
jql waitfor(any(@socket)) # hmm...
Aankhen`` I don't understand... what is autothreading?
nothingmuch Aankhen``: whenever a function is given a junction, and the function doesn't explicitly say it likes junctions, then the junction is exploded, and the function is applied (in parallel) to all the values in the junction 08:47
and then the junction is rebuilt
Aankhen`` o_O
Aankhen`` no like.
nothingmuch Aankhen``: yeah, it's horrible
Aankhen`` Just way too much scope for horrible mistakes.
nothingmuch jql: see, in that case, waitfor is optimized to say 'is autothreadable, interruptable' 08:48
since the author of 'waitfor' knows it's safe to do that
on the other hand, the consumer of 'waitfor' could say 'waitfor(any(@socket))';
Aankhen`` I'm gonna go shoot up terrorists in CZ out of disgust. -_-
&
nothingmuch and it's optimized
but then if there is a platform with a bug, then waitfor is augmented for that platform
so the code is optimized where it should work
and might hang or be slower where it doesn't 08:49
and worst case scenario - waitfor could explicitly multiplex the junctions
to retain compatibility without autothreading
the problem with the current scheme is that whhen you say 'no autothreading' you can't control what happens one caller level deepr
you shouldn't need to
because the class getting the value should say whether it's safe or not 08:50
and although it's almost never unsafe
it's never safe to assume it's safe
jql and, to implement it with real threading, it has to be thread-safe code
nothingmuch right
anyway, this has been discussed before 08:51
and it appears that damien has a veto on it
hmm... safari autothreads =)
if you have a folder of links in the bar, and you cmd+click it, you get all the sublinks opened in tabs 08:52
now, I can see how it's useful, but i most definately do not want it to be the default
jql wouldn't be surprised if junctions end up not being passable to functions, only usable explicitly
nothingmuch jql: that's the current plan, it seems
sometimes they even go as far as saying that junctions assigned to variables is an error 08:53
jql Junction becomes like List
can't really store one, but they still exist
nothingmuch jql: but lists become arrays
jql Junctions get stores in Sets, Lists in Arrays
nothingmuch or rather, they are assignable to arrays
well, anyway, it's all nonsense
when perl is released i will fork my own version 08:54
and i will use that
jql yeah, lets go back to metamodel gnosis
nothingmuch and everyone will do that too
and we'll have huge amounts of incompatibility
jql I don't think that's possible
nothingmuch but if I can compile as much code as possible with my own perl, i could still run it against other people's code
jql there are 50 versions of *ML, and it doesn't matter cause nobody uses them 08:55
the other versions, I mean. I like o'caml personally. :)
nothingmuch well, i doubt that 'nerl, nothingmuch's perl' will be the de facto standard when 'perl, designed by @Larry' is out there 08:56
jql nobody will use an unpopular fork, so I don't think there's much danger in it
also, perl 5.000 is a far cry from 5.005
nothingmuch i mean, who do people trust, Damien, or me? I'm a 20 year old idiot, and he's a professor of compsci
but in this case I know that he's wrong, because many other people also know he's wrong 08:57
but I don't think I have the power to actually do anything about it
except using a crippled version of junctions in perl 6 - only inline, only in if
only for simple values 08:58
jql they aren't even integral with the type system, anymore
a bit over-huffmanized, now
nothingmuch anyway, i have to work
glad I ruined everyone's mood
more people should hate autothreading-by-default 08:59
jql good for you. I was too happy for a saturday night
autrijus rehi! 09:12
pugscode.org/images/timeline.png
new and improved! 09:13
wolverian yay! autrijus++ 09:14
autrijus :)) 09:15
last picture of today: pugscode.org/images/lambdacamels.png 10:00
11:14 Maddingue__ is now known as Maddingue
nothingmuch autrijus: ping 11:25
autrijus nothingmuch: pong 11:27
nothingmuch autrijus: stevan is not answering, so i have a minimetamodel proposition
i'd like you to comment
autrijus I propose that you hack and commit ahead 11:28
but sure, go ahead
nothingmuch as I see it Dispatchable is just syntactic sugar for perl 5
autrijus yup
nothingmuch i'd rather see sub AUTOLOAD { my $label = ...; ::opaque_instance_attrs($class)->{'%methods'}{dispatch}->($label) };
autrijus because closures are somehow more opaque? 11:30
nothingmuch well, no
because that way $class could override dispatch.
autrijus oh. go ahead, if tests don't break
I think it's sane
so hack away :) 11:31
nothingmuch okay: 11:41
to dispatch a method you say:
$the_root_class->dispatch_method($the_class_of_the_instance, 'dispatch_method', [ $the_instance, $the_method @the_args ]); 11:42
normally this would loop back to $the_roott_class->dispatch_method; 11:43
now, to get the root dispatcher, you say opaque_instance_attrs($the_root_class)->{'%:methods'}{dispatch_method}
fair enough? 11:44
renormalist Hi all. I'm reading Synopsis 06 (subroutines). Q: Can there be more than one subroutine traits (return..., is rw, ...) on a sub --> eg., sub foo () returns Int is rw {...} ? 12:15
if yes, are they divided by any syntax? or just written like in my example?
does their order matter?
nothingmuch yes there can 12:18
dbrock there can be any number of traits, separated by just whitespace, and I'm pretty sure their order doesn't matter
nothingmuch order matters - that's the order they are applied to the class/sub/thing 12:19
but it's not supposed to matter because traits are normally orthogonal
dbrock oh, okay
renormalist ok. And can the return type be more complicated than just a single type like Int? 12:21
In the synopsis I only see complicated (hierarchical) types on variables. 12:22
not on subs
nothingmuch renormalist: yes, they can 12:23
see the latest discussions on typing
renormalist ah, ok, and I just found the example in the synopsis
thx 12:24
svnbot6 r6238 | autrijus++ | * Haskell2Xml instances. 12:31
r6239 | autrijus++ | * -CXML
r6240 | autrijus++ | * Disabled -CXML (not really used; requires HaXml)
r6240 | autrijus++ | * Added my drift.pl runner to util/drift that produces
r6240 | autrijus++ | `src/Pugs/PIL1.hs` from `src/Pugs/PIL1.hs-drift`.
r6240 | autrijus++ | * Factored out common Perl5/XML instances to src/DrIFT.
r6241 | autrijus++ | * add svn:ignore to new directories.
gaal renormalist, also note that currently you can't put 'returns' in the middle of the list: 12:32
sub foo () returns X is Y is Z; # OK
sub foo () is Y is Z returns X ; # OK
sub foo () is Y returns X is Z; # NOT OK
this can be considered a bug. 12:33
nothingmuch okay, i have a mini-meta-mini-meta-model 12:36
where dispatch is a method of the class object 12:37
gaal mmmmm
autrijus gaal: Run.hs forced pain is now gone 13:17
svnbot6 r6242 | autrijus++ | * Fix the dreaded "recompile Run.hs twice no matter what" problem.
r6242 | autrijus++ | Now Run.hs is recompiled only if Prelude.pm is modified.
r6241 | autrijus++ | * add svn:ignore to new directories.
autrijus please sanity check my treatment
gaal ooh, autrijus++ 13:31
svnbot6 r6243 | autrijus++ | * add Binary serialization in preparation of Storable-like DrIFT.
dbrock from Exegesis 3: print "Inflation rate: " and $inflation = +<> until $inflation != NaN; 13:35
question: isn't foo != NaN true for any value of foo?
autrijus dbrock: E03 assumes that +"hello" returns NaN 13:36
that is no longer mentioned in S03. 13:37
hm, maybe we should get a ruling on that.
nothingmuch holy crap! i just implemented Class::Autoloading using the minimetamodel
autrijus can you post to perl6-language?
nothingmuch it actually works!
autrijus nothingmuch: wow.
stevan nothingmuch++ # lets see it :) 13:40
autrijus hey stevan
nothingmuch one sec, i broke it while refactoring
stevan morning autrijus
autrijus saw the two new pictures? :) 13:41
stevan autrijus: for the record, I agree with Simon, and I think that is how the MiniMM and your picutres are going
autrijus: yes, very nice :)
cafepress?
autrijus yeah
I think the timeline on the back side
and the lambdacamel one (re-arranged a bit) on the front side 13:42
could work
stevan nice
autrijus other thoughts?
autrijus ponders making a metamodel t-shirt too
stevan hackathon world tour
autrijus ah right
masak wants a t-shirt, now 13:43
autrijus masak: what do you want on that t-shirt? 13:44
masak hmm
maybe some good perl6 code?
autrijus "Pugs Committer"? "Perl 6 is Here Today?"
mmm
like the italian workshop one? 13:45
say [~] (-> @c is copy {gather { while @c[0] { for @c -> {take(.shift)} } }
}(['Joec','utrk','shle','te6r',' r .','a h.','nPa.'].map:{[split "",$_]}));
masak that's one idea
another is something that doesn't scare people :)
autrijus :)
stevan autrijus: maybe your Perl6 poem?
masak but rather shows the beauty of perl6
autrijus stevan: that's a possibility, yes
gaal the oomph of "p6 is here today" will be short-lived if "what was all the fuss about" happens when it's scheduled :)
autrijus gaal: I think two years is an awful long time :) 13:46
stevan: hm, so maybe the poem on the front and the timeline on the back 13:47
gaal autrijus: r6242 is sane, yes, but if someone never precompiles, then there's no need to retouch a null prelude every time either. but that's trickier to get right (what if they just switched to not precompiling?) and is rarer, so i'd call the current behavior reasonable.
dbrock autrijus: done 13:48
autrijus danke
gaal: k
stevan is reading how cafepress works
if it is no more $$ to have more designs, we can just add a bunch 13:49
gaal remembers the warning about bad coffee in Turkey
autrijus stevan: it's all free I think
gaal which is funny because here we like to drink something we call Turkish coffee
stevan Perl 6 coffee mugs, dog-t-shirts, thongs,.. etc
autrijus since it's print on demand
nothingmuch okay, it's in 13:50
no wait, svk is slow
i think this is going to take a very long time
masak i like pugs -e "{ 'Hello, ', @^x }.('World!').say" for a t-shirt one-liner 13:51
it's from cpan perl6::pugs
stevan autrijus: yup, all free
gaal something that shows off closures, like that one, is a good idea
stevan we can do many variations on the design I think
titoxx69 hello 13:52
nothingmuch stevan: the current minimetamodel can be reafctored further: dispatch_method is applied as a code ref to the class of an instance to find dispatch_method of that class's metaclass
svnbot6 r6244 | nothingmuch++ | goto is bad, mmkay?
nothingmuch ugh, crap!
i didn't ask it commit that!!!! 13:53
this is not good
svnbot6 r6246 | nothingmuch++ | Class::Autoloading implemented with the metamodel
gaal what happened to 6245?
titoxx69 I tried to parse an XML file using XML::Simple module, but it fails to parse third level nodes, and print the helpless message : Out of memory!
what can I do ?
nothingmuch it's a phantom one 13:54
shit
nothingmuch and svk don't get along well
hmm... the "real" metamodel still passes
anway, svn.openfoundry.org/pugs/perl5/Perl...taModel.pl is updated 13:55
gaal titoxx69: get more memory? :) how large is your data? maybe you need to use something that doesn't build a complete document tree in ram, but the code won't be as simple.
nothingmuch find_method should be pushed up to the Object class
and dispatch_method should use it in every incarnation
but the way it uses it is weird
gaal titoxx69: also, better ask on #perl, not here (this is for perl6 development)
nothingmuch there should be a bootstrap find_method that does get_method and superclass as attribute accesses 13:56
i'll work on this now
titoxx69 gaal, the XML file is about 1,9 KB large and 4 level deep
stevan nothingmuch: yes, this is the bootstrapping/metastability issue I was talking about
titoxx69 gaal, sorry, I didn't notice there were another perl channels
nothingmuch it's an non issue IMHNO
gaal titoxx69, you really shouldn't run out of memory on that :) 13:57
nothingmuch Dispatcher is just syntactic sugar - it doesn't really do anything
stevan yes
nothingmuch except translate $instance->foo to $class->dispatch_method("foo", $instance);
stevan yes
but how does $instance find dispatch_method()?
nothingmuch and in a sense we are just reusing perl 5's dispatcher to find a root disppatcher
aha
stevan :)
nothingmuch look at the comments that say "the above boilds down to" 13:58
stevan yes
titoxx69 gaal: that's why I don't understand this message, but no matter, I will use XSLT instead. Sorry for the inconvenience and good work :)
nothingmuch at some point you have to bootstrap it
stevan but if I take Dispatchable out, what happens?
nothingmuch i'm just making this bootstrapping explicit
what do you mean?
(by "take out")
stevan is looking over the source once again 13:59
nothingmuch my point is:
the current minimetmodel does exactly the same bootstrapping 14:00
only the bootstrapping is implicit because the perl5 object model helps us pull it off
gaal [off topic 2/386 deep hackery] blogs.msdn.com/larryosterman/archiv...69243.aspx # read the "funny historical article" linked to too.
stevan i didnt see goto &$root_dispatcher
sorry :P
nothingmuch stevan: i'm cleaning up for legiability
stevan nothingmuch: this was possible in the old metamodel too 14:02
nothingmuch i know
stevan you just create your own ::Dispatcher class
nothingmuch but i like the minimetamodel better
stevan :)
nothingmuch a lot better
=)
it's so tiny and cute
stevan I writing 2.0 of the metamodel based on it
nothingmuch A 14:03
14:10 Aankh|Clone is now known as Aankhen``
nothingmuch can someone explain, op the top of their head, what C3 order is? 14:30
or rather, how to get it
WOOT! MI implemented in another 10 lines 14:35
svn.openfoundry.org/pugs/perl5/Perl...taModel.pl - at the bottom see 'my $MI = $Class->new' 14:37
fglock_ nothingmuch: there is an article on C3 here (it's about Python) www.python.org/2.3/mro.html 14:39
svnbot6 r6247 | nothingmuch++ | r7289@syeeda: nothingmuch | 2005-08-14 17:35:53 +0300 14:41
r6247 | nothingmuch++ | refactoring and MI
nothingmuch fglock_: want to do something like $MI, only C3 compatible? 14:48
fglock_ I didn't understand what $MI is
nothingmuch $:superclass is an array ref of superclasses
fglock_ multiple inheritance?
nothingmuch it overrides find_method
and dispatch_method in the class $Object uses the overridden find_method 14:49
fglock_ reads MiniMetamodel.pl 14:52
nothingmuch is amazed by how portable and extensible the metamodel is - as perl6 evolves new OO paradgims could be compatibly added 14:53
fglock_ being called for lunch :) 15:00
ods15 someone please remind me, openbsd is known for secure, netbsd is known for portable.. what was freebsd's thing? 15:02
nothingmuch fast 15:03
lots of packages
stable
ods15 isn't fast linux's thing?
nothingmuch nice mascot
linux has better hw supporet
ingy___ hi nothingmuch
nothingmuch better performance for some things
and even more packages 15:04
hiya ingy___
ingy___ is not sure why she has such a long tail
:(
nothingmuch she?
/nick ingy
ingy___ *smooch*
08:05 [freenode] -!- Nick ingy is already in use 15:05
nothingmuch wonders if ingy is having another breakdown
QtPlatypus It could be that your name colliding with a whole lot of other ingy's
ingy___ QtPlatypus: I seriously doubt it
nothingmuch /msg NickServ HELP
then you can do RELEASE and IDENTIFY
integral there are ingy, ingy_ and ingy__ :) 15:06
ingy___ integral: /who them. they are all me
integral ...
QtPlatypus ingy___: What client are you using?
ingy___ irssi 15:07
nothingmuch ingy___: the nickserv script can help you
ingy___ ok
QtPlatypus Most likely what has happened is Irssi's reconnected to the diffrent servers on the network.
integral hmm, if DrIFT lets pugs dump to perl5/binary/xml/yaml, does it also let pugs load from the same formats?
nothingmuch integral: without knowing it, not automatically 15:08
because the output could be ambiguous, so it is not necessarily reversible
hence DrIFT cannot do it without help
i would guess you need a separate parser 15:09
and it might be able to help from there
integral hrm, annoying :-/ external Foo->PIL2 and PIL2->PIL2 would have been nice, if it was free
nothingmuch integral: i may be wrong... ask autrijus to be sure 15:10
integral *nod*
15:13 ingy___ is now known as ingy
ingy LOOK. I'VE EVOLVED! 15:14
NO TAIL!
nothingmuch ingy++
ingy nothingmuch++
ods15 ++++++++++++++++++++++ 15:22
i find it interesting that Perl developers use ++ much more than C developers
QtPlatypus ?karma ++ 15:23
ods15 as a matter of fact, C developers don't use it at all...
nothingmuch ods15: for karma or for code?
QtPlatypus ods15: how do they do a for loop?
autrijus rehi 15:31
gaal packing is so tiring! autrijus, does it get better when you do it a lot? :) 15:33
autrijus no :)
but you get used to it.
nothingmuch gaal: i forgot where you're going 15:34
autrijus: MI implemented, now working on C3
autrijus woot
gaal turkey, the kackar range
nothingmuch ah, right
gaal having a list e.g. like this one www.rogerknapp.com/download/campingequip.htm helps 15:35
svnbot6 r6248 | autrijus++ | * -CBinary - dump PIL1 tree as opaque GhcBinary file for fast loading. 15:39
r6249 | autrijus++ | * Switch the new runcore to UTF8.PackedString, a much more compact,
r6249 | autrijus++ | byte-sized storage akin to Perl5's internal string format.
gaal ooh, shiny 15:40
QtPlatypus autrijus: How hard would it be to give perl6 access to PIL? 15:41
autrijus QtPlatypus: trivial. why?
note that it's not of much use until we can _run_ pil natively :)
(which is what the new runcore does)
or rather, will do 15:42
QtPlatypus would like to pull out all the PPos infomation and use it to markup Perl6.
gaal autrijus, obvious things not to forget: endianity-indifference; version field
autrijus QtPlatypus: oh... in that case you want Exp serialized instead, perhaps 15:45
gaal: bitwidth indifference too? :)
gaal sure, so the malbogle emitter doesn't get screwed up. 15:46
QtPlatypus Exp?
autrijus QtPlatypus: parse tree 15:47
gaal *malbolge (i keep making this spelling mistake) 15:48
QtPlatypus nods "Yes. what you get from :D ?" 15:49
autrijus let me finish yaml derivation first 15:55
then you can simply load it using eval :lang<yaml>
wolverian hm. isn't that kind of pretending YAML has semantic meaning? it's nitpicking, but :serialized<yaml> or so? 15:57
QtPlatypus autrijus "Ok"
autrijus wolverian: actually, .dump and .load primitives would be better 15:58
wolverian autrijus, yeah. 15:59
is that p6l material?
(that is, has it been discussed? :)
autrijus no. 16:01
so yes, p6l.
hm, syck emitting is no fun 16:31
autrijus decides to take the easier path and emit JSON
plus, syck doubles as a JSON parser
ingy :) 16:36
autrijus ...json is done in 20 minutes. 16:52
too simple ;)
iblech: JavaScript macros!
(i.e. "write perl 6 macros in javascript")
svnbot6 r6250 | autrijus++ | * JSON serialization. Deserialization for JSON and Binary 17:39
r6250 | autrijus++ | should be trivial, too.
r6251 | autrijus++ | * Move non-canonical TVar instances from Drift.* to Pugs.PIL1
r6251 | autrijus++ | so we can contribute back JSON and Perl5 instances upstream to
r6251 | autrijus++ | the DrIFT codebase.
putter autrijus: mind of someone adds sexp output? :) 17:40
r6252 is in. p6 regex implementation can now commence. my that was painful. time for postmortem... 17:42
nothingmuch stevan: ping
autrijus oooh. putter++
stevan nothingmuch: pong
autrijus putter: you going to post postmortem as a use.perl journal?
nothingmuch C3 in minimetamodel is done
where do I put it?
stevan nothingmuch: cool
nothingmuch i'll make MiniMetaModel a plugin-ish demonstration 17:43
stevan what do you think the mmm-variations dir/ idea?
nothingmuch that's what I'm thinking about
stevan ok
go for it
autrijus putter: Scheme S or Lisp S?
nothingmuch did you get my redux?
okay: MiniMetaModel.pl has bootstrap impl
down to single inheritence
stevan ok
nothingmuch then it executes code in the files globbed from mmm_variations
stevan yes I saw the MI stuff 17:44
nothingmuch stevan: i meant on AIM about the structure
stevan oh, yes
svnbot6 r6252 | putter++ | Added Parser/macro hook for regexs. Perl6 can now participate in regex implementation. Perl6 is not yet able to parse regex syntax, so Parser.hs calls out to macros in Prelude.pm (eg, rx_), which hook back into Parser (eg, with pugs_internals_rx). One regression - Str.trans() with ranges; nowhere used; see t/pugsbugs/rule_used_in_Str.t.
r6252 | putter++ | Prelude.pm: reordered declarations; added trivial regex macros.
r6252 | putter++ | Parser.hs: added hooks; modified regex backslash quoting.
r6253 | nothingmuch++ | C3 in minimetamodel
stevan that sounds good to me
autrijus putter: at any case, feel free to add drift derivations for s-exp 17:46
I'm not quite sure how the
mapping should go
I mean, I can be MzScheme specific and use a perl5-like data structure mapping
putter: ideas welcome; I'll sleep soon and check back tomorrow :) 17:47
putter back. 17:50
autrijus purrs 17:52
putter re postmortem - simply: (1) minimize dev loop (spent _far_ too much time precompiling Prelude again and again) (2) more agressively isolate failures for testing (bug turned out to only manifest in particular regexs (eg, p5 complimented charactersets) one class (Str). Much time spent wandering possiblity space rather than isolating. cont... 17:54
autrijus putter: the Prelude thing is fixed :)
putter (3) find better ways to get help with haskell. far too much time spent wrestling with type checking. an extra, more skilled, set of eyes would have saved hours. (4) write more tests, da*it. cronic personal failing. a previous patch of mine introduced improved but still not-quite-right backslash parsing in regex literals. didnt write tests. got to spend time debugging instead. haskell's strength is not its debugging environment. 17:57
poor choice of approach. cont...
gaal re: 1 apart from autrijus++'s work, you may want to skip prelude precompilation completely when devving. 17:59
nothingmuch stevan: okay, dinner+refactoring == done 18:04
putter (5) use even _more_ minimal incremental approach to commits. greatest burden was trying not to break the build. while doing something non-trivial. but trivial, more incremental approach was possible (eg, create new rx2/foo/ syntax, and use it to get things working, with greater visibility and opportunity for others to participate). and breaking the pugs build is tolerated. (6) insufficient project management, in particular, backup 18:05
and look at big picture. originally thought to be a trivial patch. in some sense, is. but cost lots of time. would have cost less if recognized earlier as being less-trivial-than-expected.
_END_ ;)
autrijus putter: as for 5), you may like to use local branches :) 18:06
I know it works for me
<- develops all pil2 stuff in local branch
putter gaal++ autrijus++ # precomiled prelude... and the means to sometimes avoid it
autrijus it's now always skipped unless you actually touch Prelude.pm :) 18:07
next we may be able to load Prelude.bin from GhcBinary.
DrIFT.Binary, that is
Aankhen`` Sounds scary.
autrijus which will let us precompile all modules
and load them back when use'd
instead of compiled with the main pugs executable
gaal with variable-width, order independent bits :)
autrijus I think I'll call this facility... DynaLoader!
putter oo, (7) get svk working !&#@! this is the n+1 example of something which could have been approached much better with multiple local branches.
autrijus gaal: yeah yeah
point taken already :) 18:08
gaal :)
i'll do anything to avoid packing
eventually my flight will come though
nothingmuch stevan: please clean c3 up a bit
autrijus putter: svn also makes you _wait_ during commit
which I find increasingly intolerable 18:09
stevan nothingmuch: I will look
autrijus as it encourages you to avoid small commits
svnbot6 r6254 | nothingmuch++ | Refactor minimetamodel variations into "pluginish" design
nothingmuch grazie
autrijus wonders if nothingmuch will suddenly finish MM2 and swap it with perl5/P6-MM
nothingmuch MM2? 18:10
gaal idea for smoke server: diff tests.yml automatically after each commit, mail committer with list of newly failing tests :)
autrijus nothingmuch: stevan's planned metamodel rewrite based on minimetamodel
nothingmuch ah
well, i'm partway there
we have C3
we can glue roles into that
and mixins
and delegates
and it builds up very well 18:11
gaal (obvious really but we don't have it yet, plus the win is async)
autrijus nothingmuch: right. hence my idle wondering
putter re small commits, oh yes. also, because the commit isnt local, it forces qa to be coupled, further discouraging small development commits.
autrijus anarchy++ (code monopoly)-- 18:12
stevan autrijus: I am going to check in the initial MM2 soon actually
nothingmuch autrijus: i'd rather plug MMD stuff into it
stevan nothingmuch: can totally hack away :)
autrijus stevan: cool
putter: so, the main takeaway is "centralized VCS causes pain"? :)
nothingmuch lets go of MM stuff
it was fun, but i think it's time for stevan to take over =)
stevan autrijus: no packages anymore, I just do() several files,.. all named according to your theology :)
autrijus oh wow.
stevan nothingmuch: no, you cannot get away so easily 18:13
nothingmuch ?
autrijus ponders Church of SubMethods
gaal lol
nothingmuch =)
stevan nothingmuch: once you touch the metamodel,.. you can never leave
nothingmuch stevan: well, I must admit that a cyclic metamodel has some symbolic resemblence to a roach hotel
stevan autrijus: I have introduced a "primordial soup" layer too,.. for primative functions
coral . 18:14
nothingmuch object is a class? which is an object? which is a class? .... "And so, little jimmy was left circularly introspecting the root classes in the twilight zone"
putter lol # vcs
autrijus stevan: there is a greek word for "primordial soup" 18:15
specifically, "the primal formless space" 18:16
it's called "Chaos" :)
stevan renames :) 18:17
putter ah, but primordial soup is much more... soupy... than formless space. lots of slime and stuff.
autrijus `due to people misunderstanding early Christian uses of the word, the meaning of Chaos (Ī§Ī±ĪæĻ‚) changed to "disorder" (Ļ„Ī±ĻĪ±Ļ‡Ī·)' 18:18
stevan putter: but "chaos.pl" is much cooler than "primordial_soup.pl"
:)
autrijus I like chaos.pl :)
nothingmuch stevan: i disagree
stevan especially when next to gnosis.pl, etc
nothingmuch primordial_soup.pl is teh roxx0r
in fact, anything with soup is teh roxx0r
stevan LOL
nothingmuch autrijus: when you come to israel all you are having is soup
stevan nothingmuch: I suppose you will try to make him go outside as well
autrijus he can try all he wants, but it will be in vain 18:19
nothingmuch autrijus: i will make the soup out of beer:
step 1) empty beer into bowl
step 2) open microwave door
step 3) insert bowl
gaal actually this is the season where everything is soup
nothingmuch step 4) turn on microwave
gaal especially the air
nothingmuch step 5) apply percussive maintenance
step 6) realize that microwave door is still open 18:20
step 7) wait for beep
step 8) open microwave door
step 9) insert autrijus into microwave, and let him feast on said soup
gaal: come to Beer Sheva
kgftr|konobi seen theorbtwo
jabbot kgftr|konobi: theorbtwo was seen 16 days 7 hours 18 minutes 55 seconds ago
autrijus too complicated
kgftr|konobi castaway: where be yer other half?
gaal you have a pretty big microwave, nothingmuch.
nothingmuch gaal: or a pretty small autrijus 18:21
plus, we could slice him up
gaal that's why they call it microwave, eh?
nothingmuch divide and conquer
autrijus gah.
I tried to eval 18:22
'autrijus'.length < 'microwave'.length
nothingmuch autrijus: you really must get this by now
autrijus and then I remembered that larry explicitly took this pun away
nothingmuch real world is 3 dimensions
gaal somehow nothingmuch, i get the feeling that for you everything in the kitchen should eventually catch fire.
autrijus bad larry for murdering our puns!
?eval 'autrijus'.length < 'microwave'.length
evalbot6 Error: No compatible subroutine found: "&length"
nothingmuch gaal: MUAHAHAHA
putter while both chaos and ps point towards potential for greater stucture, chaos has more of an implication that it hasnt been used yet, there isnt much order, where soup emphasizes that there is already order present, albeit in small chucks, and that increase in order in incremental (where chaos has a slight implication of state-change-like growth in order). bable bable
nothingmuch putter: that sounds more like primordial gulash 18:23
autrijus putter: er but, demiurge operates in chaos
putter: _evolution_ however may work from soup
but that's not sexy enough
gaal must .pack 18:24
putter ;)
nothingmuch gaal: don't use pointers in unpack though, it's not safe
svnbot6 r6255 | nothingmuch++ | typo and language
nothingmuch use the suitecase's zipper insteaf
d
putter gaal: and dont forget to be order independent... 18:25
nothingmuch i think my puns are too lame today
i better go do something better
gaal i think they don't manufacture order independent tents, unfortunately
good thing my rucksack has some spare ::straps 18:26
nothingmuch goes to change shirt and watch TV
stevan mm2.0 checked in 18:36
svnbot6 r6256 | Stevan++ | Perl6::MetaModel 2.0 - (p5)
r6256 | Stevan++ | * based on the MiniMetaModel from P6::MM 1.0
r6256 | Stevan++ | * files named after autrijus++ meta-theology
r6256 | Stevan++ | * still number of things to do, but this is a foundation
r6256 | Stevan++ | for the newly revised MetaModel
autrijus ooh. ooh.
autrijus goes playing
autrijus also renames journal title
stevan LOL
autrijus: it is mostly just a broken up version of MiniMetaModel 18:37
autrijus I misparsed and missed the "up"
ooh. pretty. 18:38
stevan I will start moving some of the code from MM 1.0 into it soon
autrijus cool!
chaos does look chaotic :) 18:39
stevan :)
ods15 what's haskel implemented in? 18:40
autrijus ods15: GHC?
the GHC compiler is written in GHC.
stevan originally Perl 5 right?
ods15 ah
erm?
autrijus very very long ago they used C and Perl5 to help, yes.
GHC still requires perl5 to this day :) 18:41
ods15 why
autrijus because although the GHC team ported most of perl5 component ("Evil") into haskell ("Glorious")
the Eval Mangler still can't be ported
ods15 heh
autrijus it's the bridge between GHC and GCC I think 18:42
integral it's the bit that takes gcc generated assembler and _modifies_ that assembler 18:43
autrijus ah. right. 18:44
stevan autrijus: I am thinking of doing a META:: pseudo package to handle metaclass calls to the ::Class objects
autrijus sorry. been too long since I looked at it.
stevan and allow ::Class object to then handle class methods normally
integral very, very evil :)
autrijus and utterly adhoc :) 18:45
which is, of course, perl5's specialty.
stevan ok, real-world calls, later all ... & 18:47
putter arg. default new() doesnt accept positionals... but naming things is _hard_.... :(
autrijus I think that's a rare, consciously sadis^Wrestrictive decision made by @Larry :P 18:49
ods15 autrijus: so, umm, ghc needs gcc too? 18:50
sounds like a bad compiler...
bbl
integral o_O 18:51
nothingmuch ods15: wtf?
autrijus ods15: it can generate native code for major CPU types
ods15: but it can also use GCC for optimized code. 18:52
nothingmuch ods15: what's wrong with code reuse?
autrijus (on eg. x86 win32, though, the quality of its native code generator is quite close to GCC's.)
thanks to the valgrind guy's work on GHC.
nothingmuch gcc (not the "gnu c compiler" but the "gnu compiler collection") has an intermediate language that can be compiled quite portably, with generic optimizations 18:53
SamB autrijus: is the code better, worse, or neither on x86?
nothingmuch: actually, the C is easier...
autrijus SamB: a little bit worse on runtime, but is much faster
to compile
nothingmuch SamB: well, fair enough
gcc is still a reusable tool
autrijus but the switch to C-- on GHC 6.4 helped compile time a bit
nothingmuch sometimes doesn't understand why ods15 thinks some things are good and others are bad 18:54
ods15 actually, the perl abuse sounds worse... reusing gcc is ok...
ok bye, guarding
autrijus in any case, GHC seem to be evolving rapidly despite its immense feature set, so obviously I can't complain :)
nothingmuch ciao!
castaway kgftr|konobi: he's here, kinda.. (sorry wasnt watching) 18:55
SamB autrijus: probably because of way haskell has of making sure you know what you are doing... 18:57
autrijus SamB: yeah, but you only need to _know_, not neccessarily _write down_
kgftr|konobi castaway: AH
autrijus which is an amazing property :)
it's almost like the Knight power-cycle koan. 18:58
Aankhen`` sighs.
castaway see, there ,)
clkao nothingmuch: svk is slow?
Aankhen`` This channel gives me an inferiority complex on a regular basis.
kgftr|konobi theorbtwo: fiend!
theorbtwo Fiend? 18:59
nothingmuch clkao: i had 200 revs to merge, and 5 to push
kgftr|konobi =0)
nothingmuch so it's not your fault
kgftr|konobi theorbtwo: looking forward to arriving in the lovely um... abingdon?
theorbtwo Aye.
clkao nothingmuch: but it should be very fast. what version are you using? how many revisions in the repository?
theorbtwo So much still needs doing, in so little time, and so much is yet up in the air. 19:00
nothingmuch clkao: local revs ~7500, pugs revs - 10 revs ago
i'm using 1.02
and it didn'
t take *that* long
kgftr|konobi theorbtwo: heh... i know what it's like... wedding next month
nothingmuch just longer than the 15 seconds I hoped ;-)
castaway oof ,)
clkao nothingmuch: uhm. ok. :P
theorbtwo Yours, I take it? Congradulations!
kgftr|konobi yar
nothingmuch clkao: i was the one at fault, not you or SVK =)
clkao giggles
kgftr|konobi you two got a place sorted yet? 19:01
theorbtwo Well, it's applied for with Abingdon Rentals, hopefully they'll bloody get back to us with a yey or nay.
castaway seemed pretty confident tho 19:02
theorbtwo The person who took our application seemed confident we'd get it, but they haven't said "yes" yet.
kgftr|konobi erk, applying without seeing it beforehand!?
castaway two of my sisters have seen it
kgftr|konobi ah
nothingmuch & 19:03
theorbtwo We have to apply without seeing it.
kgftr|konobi you pakced yet?
theorbtwo It apparently takes ages for them to respond to the application.
castaway mostly ,)
kgftr|konobi rightio... when you get here i'll do my best to drag the two of you out to the pub... but so so busy... then again...i'm always at the pub 19:04
theorbtwo A better question is "who is moving our stuff, and how are we getting there ourselves".
kgftr|konobi =0)
castaway *g*
kgftr|konobi lol
theorbtwo Which pub, BTW?
kgftr|konobi there's a few
castaway we're waiting for two movers/shippers to give a date .. 19:05
the taxi driver that took me to heathrow last time pointed out a few ,)
kgftr|konobi The Stocks, The Kings Head, Broad Face and The Boundary House are fairly usual haunts... mainly the stocks though
theorbtwo checks maps.google.co.uk
castaway we're at 25 Levery Close btw (in theory ,) 19:06
theorbtwo Useless, it is.
kgftr|konobi www.crownandthistle.com/
theorbtwo Ah, at the end of Abbey Close. 19:07
kgftr|konobi ah, that's pretty close 19:08
castaway thats the plan ,)
kgftr|konobi right... bbl, food required since i ate all the food in the freezer last night 19:09
castaway *g* 19:10
have a good one
theorbtwo Later!
putter takes the liberty of creating a class Rul which does role Rule... 19:16
autrijus "Rul"? 19:20
putter String, Str, Integer, Int, etc. ;) 19:23
castaway ;)
autrijus groans
putter lol
autrijus go ahead. :)
putter k :) 19:24
any reason why one can't define classes in Prelude.pm? class C { sub f(){} } C::f() is ok, but C.new errors No compatible subroutine found: "&C" 19:50
autrijus putter: probably because Prelude doesn't participate in clsTree initialization 19:51
I think. not quite sure
shower, bbl &
putter sleeeeeeeep &
:) tnx
Added Rul to Context.hs. works. but multi sub infix:<~~> (Rul $r, $x) is builtin is safe {$r.f.($x)} isnt being seen. sigh. 20:24
svnbot6 r6257 | iblech++ | Usual svn props and EOLs at EOFs.
putter iblech: ping? 20:37
theorbtwo wonders what "is safe" means. 20:39
20:39 mauke is now known as mauke_
gaal to2: doesn't do io; safe for evalbot to run 20:39
theorbtwo Ah.
gaal prims that are marked 'is unsafe' aren't install in the symbol table: 20:40
?eval my $x = open(</etc/passwd>); say =$x
evalbot6 Error: No compatible subroutine found: "&Pugs::Internals::openFile"
putter sigh. maybe we need a version of Prelude which runs once the universe is set up. multi sub infix:<~~> ($x, Rul $r) is primitive is unsafe is builtin {$r.f.($x)} isnt working in Prelude, but works fine afterward. :( 20:42
20:43 mauke_ is now known as mauke
theorbtwo Postlude! 20:43
putter (an no, there's no reason for that to be unsafe. something ~similar and working was unsafe, so cut and paste...) 20:44
*groan* ;)
gaal CHECKlude?
checkludge, more like it 20:45
theorbtwo Interlude.
putter hmm, I wonder if Prelude.pm could simply use Mumble; and have it work... 20:47
gaal with sufficient Mumble support in the core, no doubt it can! 20:48
i so need to finish packing
in fact, i will TURN OFF THE COMPUTER now. 20:49
see you all in three weeks! :)
gaal waves &
theorbtwo Later, gaal.
putter three weeks! eeep!
farewell gaal! & 20:50
theorbtwo Did he get activated outside the OT?
putter ?
theorbtwo Ah, "Iā€™m off next week to the KaƧkar range in Turkey." 20:51
Wondered where he was going for three weeks.
Juerd theorbtwo: Pre- and postlude sounds like the design mistake that header&footer is in the html templating world. CIRCUMLUDE! :) 20:52
theorbtwo Juerd: Except we aren't building general mechisims here, just scafholding for this purticular puropse. 20:53
Juerd Oh, you're taking it way too seriously :) 20:56
putter I suspect the distinction is between non-oo core stuff written in p6, vs non-core often-oo parts of the standard environment. You likely want the two to be handled somewhat differently. 20:57
Aankhen`` goes to sleep.
putter 'night & 20:58
Aankhen`` G'night. &
svnbot6 r6258 | Stevan++ | Perl6::MetaModel 2.0 - (p5) 21:06
r6258 | Stevan++ | * making superclasses an array, but still treating it
r6258 | Stevan++ | as a SI model for now
r6258 | Stevan++ | - adjusted tests
r6258 | Stevan++ | * adding the method closure factory from P6::MM 1.0
r6258 | Stevan++ | - added a basic test to make sure the prototypes worked
r6258 | Stevan++ | - this items needs much work.
theorbtwo "This item needs much work."? 21:07
stevan theorbtwo: it is not finished yet (the method factory 21:18
I have some ideas for how to improve it 21:19
but I wanted to get the code down first
theorbtwo Yeah, I was just wondering about the grammar. 21:22
...and if you meant that to be outdented more, and apply to both multiple inheretence, and the meth. closure factory, or just the meth closure factory. 21:23
kgftr|konobi moo 21:51
svnbot6 r6259 | putter++ | Added class Rul (does Rule) to Prelude.pm. It is intended to be the main p6 rule class. Placing it in Prelude required mentioning Rul in Context.hs. But it is still unused, because infix:<~~> apparently also doesnt work when defined in Prelude. Perhaps the right thing is to break Prelude.pm into two parts, one for core builtins, and one which runs once the universe is working. 22:28
r6260 | putter++ | Prelude.pm: rx_common_ now does basic adverb checking, and warning. It also takes over handling of PGE :w and :i from Eval.hs. 23:02
Supaplex has any group (php,python,tcl etc etc) expressed intrest in using parrot for future releases? I assume they'd maintain something that provides their current native support, and a parrot language definition or something. right? 23:07
svnbot6 r6261 | putter++ | der_grammar.t: corrected typo - mistaken use of ok(), instead of is(), was causing an unexpected success. 23:24