Pugs 6.2.8 released! | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net Set by autrijus on 13 July 2005. |
|||
dudley | A Gentle Introduction to Haskell has a misleading title... but it makes much more sense after reading TCFP. | 00:21 | |
ezra_ | TCFP? | 00:26 | |
dudley | Haskell: The Craft Of Functional Programming | 00:43 | |
ezra_ | ah, thanks | ||
Khisanth | YAHT is pretty nice .... if a bit sparse :) | 00:46 | |
dudley | Yeah, I would definitely recommend starting with one of those two. Or both of them. | 00:48 | |
wolverian | I can count in lojban :) | 00:59 | |
mugwump | mi kafka | 01:07 | |
mi kafka ganxo | |||
wolverian | your anal kafka? did I get that right? :) | 01:09 | |
er, no. you are kafka-anal? | |||
mugwump | I tried to say "I fart" | 01:21 | |
the first meant "I expel a gas", not specifically from any orafice | |||
wolverian | hmm, the dictionary I consulted didn't know kafka | ||
is it compound? | 01:22 | ||
mugwump | kafke | 01:30 | |
so, it should have been, mi kafke zo'e ganxo | |||
(lit. I expel something from my anus) | 01:31 | ||
wolverian | right | 01:33 | |
02:35
acme___ is now known as acme
|
|||
buu | Is there any thoughts/documentation/etc for the new perl6 pod type thing? | 03:18 | |
mugwump | buu: see the S26draft-mugwump.pod and let me know what you think | 03:30 | |
atm it's simply suffering from lack of feedback | 03:31 | ||
There's the Perl 5 Perldoc module, of which a port to Perl 6 has begun, that's waiting on tuits | |||
There's also the Kwid-Event-Parser and Pod-Event-Parser modules, which are semi-suitable for making into Perldoc::Parser classes | 03:32 | ||
At the time it was also blocking because of some broken functionality that is probably not the case now. | |||
buu | Ok | 03:33 | |
mugwump | And slow, slow pugs startup which is solved now with precompiled Prelude | ||
buu | Where might I find ye old .pod file? | ||
mugwump | in docs/ I think | ||
mugwump checks | |||
buu | er | ||
mugwump | docs/AES | ||
buu | Can I get that in the form of a URI? | 03:34 | |
mugwump | that is a URI. the base URI is file://where/you/checked/out/pugs/to ;) | ||
buu | Ah. | ||
mugwump | the Perl 6 Perldoc port is in ext/Perldoc | 03:35 | |
the Perl 5 version of Perldoc is at search.cpan.org/dist/Perldoc/ | |||
buu | Where are the pugs svn servers hiding? | ||
mugwump | oh, not a committer yet? | ||
buu | haha, no. | ||
mugwump | svn.openfoundry.org/pugs | ||
buu | Can I just check out from there? | 03:36 | |
mugwump | sure | ||
buu | Excellento. | ||
buu tries | 03:37 | ||
Sucess! | |||
Hrm. I'd like to register a complaint. | 03:42 | ||
mugwump | let me guess, it doesn't even parse POD yet? :) | ||
or something else? | |||
buu | Naw | ||
My problem is, pod fucking sucks | |||
I should note that this opinion is formed from trying to *parse* perl5's current collection of pod. | 03:43 | ||
mugwump | right, well the idea behind the new POD system is to allow pod dialects, like Kwid which is a wiki-style POD | ||
buu | For example, perlop | ||
=item $/ | |||
=item $FOOBAR | |||
Oh, those are the same variable? | |||
My basic problem is that POD reminds me of HTML1 type things. It focuses way too much on the presentation. | 03:44 | ||
Amnesiac | shaddup | ||
you don't know anything about HTML1 | |||
you were in diapers! | |||
buu | Amnesiac: Go back to mexico. | ||
wolverian | I think that's everyone's problem with POD, buu | 03:46 | |
at least I hope it is. :) | |||
buu | wolverian: Well, I haven't been particuraly active in development, but I haven't seen any indications of that. | ||
wolverian | then you should get active! | 03:48 | |
buu | Of course the problem is, I can't think of anything that would be better at actually storing the meta data than xml. | ||
mugwump | buu: have a look at the Perl 5 Perldoc distribution; the basic test cases are all xml based | 03:49 | |
buu | Ick =[ | ||
mugwump: Where is that again? | |||
mugwump | xml is great for documents | ||
search.cpan.org/dist/Perldoc/ | |||
so long as no human is editing the file, of course | |||
buu | yeah that is the trick. | 03:50 | |
But I really just want an easy way to parse semantic meaning from a document with out having to do it by hand. | 03:51 | ||
mugwump | yes, that would be nice. so, what I've focused on so far is just basic infrastructure - how the structures are represented in memory (a DOM, if you like) and how they are transmitted about (a serial event API) | 03:52 | |
buu | Stupid events. | ||
wolverian | I don't see much of a problem as long as the PODv2 we'll end up with defines semantic 'tags' instead of things like =over | ||
buu | Yeah, =method would be vastly preferable. | 03:53 | |
wolverian | yes. | ||
buu | Or something. Anything but the current muck. | ||
wolverian | and hopefully the perldoc backend can extract signatures and such to automatically add metadata to the documentation | ||
buu | Eh, how? | ||
wolverian | buu, &Foo::method.signature | 03:54 | |
or so. | |||
buu | Er, oh. | ||
Those kind of signatures. | |||
wolverian | yeah. :) | ||
buu | PPI ! | ||
mugwump | this will be possible, with the obvious caveats | 03:55 | |
wolverian | buu, PPI isn't necessary with perl6. :) | ||
buu | Well yeah, but I get the idea. | ||
But of course, the pod back end will have to know where to insert these signatures | |||
So we're back to =methods. | 03:56 | ||
mugwump | again, the operation of this stuff shouldn't be hardcoded. it would probably be more like; | ||
=use Methods | |||
wolverian | I was thinking of it outputting those when requested (pod2html, etc) | ||
buu | Er, what? | 03:57 | |
wolverian | mugwump, I disagree. that is not semantic at all. | ||
what is 'use'? | |||
buu | wolverian: It's a flag to the interpretering parser thingy. | 03:58 | |
At least I think that's the idea. | |||
mugwump | ok, if we want to keep PODv1 backwards compatibility it would be called =for Plugin::Methods or something | 03:59 | |
wolverian | compatibility? why? perl6 isn't perl5 compatible. | ||
buu | Fuck compatability in the ass. | ||
mugwump | enough people have different ideas on the level of backwards compatibility that it is worth allowing it. Also, the design in S26draft-mugwump.pod leaves plenty of room for POD dialects to diverge | 04:05 | |
But if we get a POD dialect nice enough, it's possible that enough people will agree to make it standard that it will become so | 04:06 | ||
at the worst you're looking at one extra line to pull in your favourite dialect | |||
the idea is that these can all be read in a standard way by just accessing the $=DOC object (or @=DOC or %=DOC...) | |||
please feel free to write test cases - in other words - your own POD dialect or POD trick - and place them in the Perldoc distribution in t/ | 04:09 | ||
perhaps there is an existing Perl 5 module that you want to see working in Perl 6 and you're curious how it would work | 04:10 | ||
buu | I'm still pondering the design. | 04:22 | |
mugwump | good, I'd be delighted to hear what you think, even if it consists only of expletives and personal pronouns | 04:28 | |
luqui | I UNDERSTAND MONADS. HAHHAHAHAHAHAHAHAAA | 04:37 | |
mugwump gives luqui a bright, shiny medal | 04:38 | ||
luqui | it took me long enough... | ||
mugwump | from one Perlite to another, can it be summarised easily? | 04:43 | |
I know that they encapsulate IO in a Haskell program | 04:44 | ||
svnbot6 | r5823, Aankhen++ | * HTTP::Request::CGI: inherit from HTTP::Request. | 07:11 | |
luqui | mugwump: can they be summarized easily? ... | 07:22 | |
let's see, they encapsulate a behavioral model | |||
svnbot6 | r5824, Aankhen++ | HTTP::Request::CGI: | ||
r5824, Aankhen++ | * `use URI::Escape` | |||
r5824, Aankhen++ | * added explicit invocant for &BUILD. | |||
r5824, Aankhen++ | * added &:unpack_params. | |||
wolverian | that reminds me that I still have to rewrite URI. :/ | 07:23 | |
luqui | they essentially overload ; and = | ||
which means that you can implement backtracking | 07:24 | ||
and statefulness | |||
that's the best I can do | 07:25 | ||
svnbot6 | r5825, Aankhen++ | * HTTP::Request::CGI: added &:load_params. | 07:41 | |
szabgab | open +> and +< , should they become open :rw and open :wr respectively ? | 08:09 | |
where can I read the most up to date spec ? | |||
QtPlatypus likes "+>" and "+<" | |||
szabgab | and also there was a +>> read and append | 08:11 | |
svnbot6 | r5826, Aankhen++ | HTTP::Request::CGI: | 08:27 | |
r5826, Aankhen++ | * fixed mistake in &BUILD. | |||
r5826, Aankhen++ | * implemented ¶ms(). | |||
r5826, Aankhen++ | * implemented all variants of ¶m(). | |||
r5827, Aankhen++ | * HTTP::Request::CGI: implemented &delete_param and &delete_params. | |||
r5828, Aankhen++ | HTTP::Request::CGI: | 08:34 | ||
r5828, Aankhen++ | * renamed &:unpack_params to &:parse_params. | |||
r5828, Aankhen++ | * added &:parse_keywords, and appropriate handling in &:load_params. | |||
Aankhen`` | ?eval multi sub foo () { "no args" }; &foo:<Str> := -> Str $bar { $bar.uc() }; foo("bar") | 08:36 | |
evalbot6 | Error: unexpected ":" expecting word character, "::", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
Aankhen`` | ?eval multi sub foo () { "no args" }; &foo:(Str) := -> Str $bar { $bar.uc() }; foo("bar") | ||
evalbot6 | Error: unexpected ":" expecting word character, "::", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
wolverian | hmm, try ::= | 08:37 | |
Aankhen`` | ?eval multi sub foo () { "no args" }; &foo:(Str) ::= -> Str $bar { $bar.uc() }; foo("bar") | ||
evalbot6 | Error: unexpected ":" expecting word character, "::", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
Aankhen`` | ?eval multi sub foo () { "no args" }; &foo:<Str> ::= -> Str $bar { $bar.uc() }; foo("bar") | ||
evalbot6 | Error: unexpected ":" expecting word character, "::", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
wolverian | right. not supported yet :) | ||
Aankhen`` | Yep. | ||
^_^ | |||
OK, I need to shower. | 08:40 | ||
Later. | |||
svnbot6 | r5829, Aankhen++ | * HTTP::Request::CGI: fixed &:parse_keywords and implemented &keywords. | ||
mugwump | luqui: thanks, I'll let that sit and ponder itself and maybe later it'll help me :) | 09:47 | |
nothingmuch | moose | 10:49 | |
szabgab | ?eval my $fh = open "/tmp/file", :r, :w err print $! | 10:54 | |
evalbot6 | Error: No compatible subroutine found: "&:w" | ||
nothingmuch | szabgab: evalbot protects itself against opens | ||
szabgab | ?eval my $fh = open("/tmp/file", :r, :w) err print $! | ||
evalbot6 | Error: No compatible subroutine found: "&Pugs::Internals::openFile" | ||
szabgab | I hoped so :-) | 10:55 | |
but this does not seem to work on my machine either :-( | |||
autrijus | try :rw? | 12:05 | |
szabgab | :rw does not seem to work either | 12:08 | |
returns Scalar | |||
autrijus | :rw worksforme | 12:10 | |
I committed a fix for :r :w | |||
szabgab | I added tests, will check them | 12:13 | |
svnbot6 | r5830, autrijus++ | * Try not using junctions in the prelude where normal short-circuitting | ||
r5830, autrijus++ | boolean operators would do. | |||
r5831, autrijus++ | * make MIME::Base64 installable and skip its tests when | |||
r5831, autrijus++ | PGE is unavailable. | |||
r5832, szabgab++ | * t/builtins/io/io.t | 12:20 | ||
r5832, szabgab++ | add tests for open with :rw and open :r, :w | |||
r5833, autrijus++ | * unTODO a passing pair binding test | |||
scook0 | autrijus: did you see the p6c thread about PIL nodes? | 12:22 | |
autrijus | scook0: I did | ||
I'm however still neck deep in PIL redesign :) | |||
scook0 | ah | 12:23 | |
QtPlatypus | autrijus: I would like to remove the code that does ="string" It looks incredably wrong to me. | ||
(In prelude) | |||
But would like to know if that would be welcomed. | |||
autrijus | for =<> { ... } | ||
scook0 | I was trying to figure out what each of them does by using context, but that's hard when half of the needed context doesn't exist yet | ||
autrijus | was the motivation | 12:24 | |
for =<README.txt> -> $line { ... } # this too | |||
see S04 | 12:25 | ||
kolibrie | autrijus: I found your Template::Extract yesterday. Very handy. Might use it. | ||
autrijus | kolibrie: thanks :) | ||
scook0 | oh, quick question: | 12:26 | |
autrijus | QtPlatypus: otoh, maybe =<> is really the special case and =$str should not have worked | ||
QtPlatypus: but I don't know... I kind of like that in fact | |||
scook0 | in 'TCxt' and 'TParam', what does the 'T' mean? | ||
autrijus | the T means "Translate" which is the old name for "CodeGen" | ||
maybe rename them to CCxt and CParam now | 12:27 | ||
but Cxt and Param should be unified anyway | |||
QtPlatypus | But it goes against = meaning "Iterate this itereator" | ||
autrijus | QtPlatypus: but if a string is taken to be an iterator over the file named by it | ||
I mean that's not worse than the empty string meaning iterating over $*ARGS | |||
QtPlatypus | Ok I can live with that | ||
scook0 | how come they need to be separate from Cxt/Param -- different requirements for the compiler? | 12:28 | |
autrijus | cool. if you can't, post on p6l to fix S04 :) | ||
scook0: sure, Param's paramDefault is a parse tree Exp | |||
whilst TParam's is already compiled | |||
etc | |||
TCxt is mostly there just for the TTailCall case. | 12:29 | ||
scook0 | I see | ||
nothingmuch makes noises | 12:35 | ||
autrijus | brb, fbsd-6 installed, rebooting | 12:39 | |
Aankhen`` | ?eval class Foo { }; class Bar[::Baz] { }; Bar[Foo].new | 12:46 | |
evalbot6 | Error: unexpected "[" expecting word character, "::", "-", trait, ";" or end of input | ||
Aankhen`` | Are parameterized classes slated for inclusion in Perl 6, at this time? | 12:53 | |
scook0 | Aankhen``: I don't recall reading otherwise--I'd be very disappointed if they weren't | 12:55 | |
Aankhen`` | Me too, now that I've come to realize what they could be used for. I was getting a little worried since I heard @Larry was considering removing them. | 12:56 | |
But that was quite a while ago, so maybe the "considering" was completed and the notion discarded. =) | 12:57 | ||
?eval my $foo = <a b c d>; "$foo" | |||
evalbot6 | 'a b c d' | ||
scook0 | you need them if you ever want to write "my @a of Thing is MyArrayClass" | 12:58 | |
and using static typing without them is a bit of a pain | |||
Aankhen`` | I'll take your word for it. | 12:59 | |
scook0 | not that I'm authoritative | ||
Aankhen`` | S'okay, you are more so than me. :-) | ||
scook0 | It's just that I can't imagine Larry being silly enough to deliberately omit them | 13:00 | |
13:31
Aankh|Clone is now known as Aankhen``
|
|||
svnbot6 | r5834, Aankhen++ | * moved large part of functionality from HTTP::Request::CGI to new class: HTTP::Query. | 13:36 | |
r5834, Aankhen++ | * fixed ¶m (rw version). | |||
r5834, Aankhen++ | * renamed &delete_param to &delete, &delete_params to &clear within HTTP::Query (HTTP::Request::CGI still uses the former versions). | |||
r5835, Aankhen++ | * parameter added to HTTP::Headers, HTTP::Request, HTTP::Request::CGI and HTTP::Response -- URI_CLASS. | 13:45 | ||
r5836, autrijus++ | * Implement the new object hierarchy as proposed in | |||
r5836, autrijus++ | "Elimination of Item|Pair and Any|Junction" on p6l: | |||
r5836, autrijus++ | - Object | |||
r5836, autrijus++ | - Any | |||
r5836, autrijus++ | - Item | |||
r5836, autrijus++ | - ...pretty much everything | |||
r5836, autrijus++ | - Pair | |||
r5836, autrijus++ | - Junction | |||
r5836, autrijus++ | www.nntp.perl.org/group/perl.perl6....uage/22462 | |||
Aankhen`` | Break. & | 13:47 | |
svnbot6 | r5837, Aankhen++ | * removed URI_CLASS parameter from HTTP::Headers. | 14:07 | |
r5837, Aankhen++ | * fixed inheritance for HTTP::Request and HTTP::Response. | |||
r5838, Aankhen++ | * sanitized HTTP::Request::CGI somewhat. "What the heck was I thinking?" | |||
jdv79 | this may be an odd if not evil question but... its really novel and cool that p6 can be compiled to js but are there any plans to compile to the JVM and/or the .NET VM? | 14:26 | |
svnbot6 | r5839, szabgab++ | * examples/ppt/cat.p6 | ||
r5839, szabgab++ | added | |||
r5840, szabgab++ | * docs/other/porting_howto | |||
r5840, szabgab++ | add info about file reading/writing | |||
r5841, szabgab++ | * examples/cookbook/07file-access/ | |||
r5841, szabgab++ | More cookbook entries regarding file access | |||
r5842, autrijus++ | * `make ghci` should not trigger prelude building -- it is meant to be | |||
r5842, autrijus++ | run after a regular `make` or `make unoptimised`. The reason | |||
r5842, autrijus++ | is that ghci won't produce the stage-1 pugs executable anyway. | |||
jdv79 | might be a little more practical:) | ||
dudley | jdv79: stevan checked in the beginnings of a Java version of the metamodel | 14:27 | |
it's in perl5/org.perl6.metamodel | 14:28 | ||
autrijus | jdv79: we need the metamodel for CLR | 14:30 | |
as well as an emitter -- maybe port AbsIL over to perl6 and/or haskell. | |||
svnbot6 | r5843, autrijus++ | * Primitive listops now handles Pairs as regular arguments | 14:31 | |
r5843, autrijus++ | instead of named bindings. | |||
pdcawley_ | Argh... any svk whizzes about? | 14:33 | |
autrijus | hm? | ||
pdcawley_ | I've deleted a subdirectory, and can't seem to get it back. | ||
if I do svk up, nothing returns. | |||
autrijus | svk revert -R subdir | ||
pdcawley_ | Thanks. Obvious if you're not stupid :) | 14:34 | |
autrijus | :) | ||
QtPlatypus ponders nominating Damian Conway for Australian of the year. | 14:35 | ||
svnbot6 | r5844, autrijus++ | * Fix Test::Builder test to run correctly from pugs's basepath. | 14:44 | |
r5844, autrijus++ | We really should consolidate the run_pugs stuff into Test.pm... | |||
geoffb | QtPlatypus, not that I disagree, but what prompted that? | 14:56 | |
(the Damian comment) | |||
BTW, went to my first Perl Mongers meeting last night, and preached the Pugs/Perl 6 goodness. People were impressed and highly curious. Especially the part about Haskell being involved . . . | 14:58 | ||
autrijus | especially? :) | 14:59 | |
nice. and which .pm is that? | |||
geoffb | Sonoma | 15:00 | |
osfameron | Sonoma? | 15:01 | |
ah, San Francisco area | |||
geoffb | It's interesting how the new available things are scaring people, because they believed them to be required. | ||
The type system especially. Making Perl 5 junkies very nervous that their one liners and micro hacks are a thing of the past | 15:02 | ||
acme | there's a sonoma.pm? | ||
geoffb | osfameron, yea, O'Reilly HQ area (it used to be there, but then moved to a guitar factory in Santa Rosa) | 15:03 | |
acme, yep | |||
acme | and i missed it! | ||
geoffb | I never thought to look before, since I knew there were a couple in SF and Oakland I think, but sure enough, there it was | ||
And BTW, the guy that owns the guitar factory (Alembic) is one of the coolest ubergeeks I can think of. Storage areas there are like a history of computing. They still use a commodore PET on the factory floor to control a machine that used to be driven by paper tape. :-) | 15:05 | ||
stevan | howdy all | 15:11 | |
geoffb | howdy, stevan | ||
stevan | geoffb: preachin' the P6::Bible I see :) | 15:12 | |
geoffb | nodnod | ||
I started to describe meta-operators, and the guitar company owner goes "Oh, like APL?" | 15:13 | ||
stevan | everybody secretly loves APL I think | ||
geoffb | heh | ||
stevan | just no one will admit it | ||
geoffb | This guy stood a decent chance of actually being able to competently program in it, though I didn't ask | 15:14 | |
coral | APL? | 15:18 | |
svnbot6 | r5845, autrijus++ | * `Item`, not `Scalar`, becomes the default type for unannotated $param | ||
r5845, autrijus++ | in parameter list. | |||
r5846, autrijus++ | * Tree.pm's use of `Any $node` in BUILD defeated named binding | |||
r5846, autrijus++ | under the new treatment of `Any` that includes `Pair`. fixed. | |||
stevan | coral: A Programming Language is what it stands for IIRC | ||
google it | |||
coral | heh, got it | ||
QtPlatypus | geoffb: Seeing an Australian of the year nonimation add. | 15:19 | |
geoffb | nodnod | ||
QtPlatypus | I think perl programers like it because combines extreem power with line noise like chars. | 15:22 | |
(APL that is) | |||
eric256 | over a week without a journal entry? is everyone okay? ;) | 15:32 | |
stevan | I got the shakes | 15:33 | |
cold sweats | |||
geoffb | And I've got a new facial tic | ||
stevan | leg cramps, and flu like symptoms | ||
autrijus | eric256: I'm alive... that's all. got lots of $job all of a sudden. | ||
Khisanth | stevan: you have been sitting around too long! | ||
geoffb | iblech: at the PM meeting when I talked about pugs, the biggest oohs and aahs came when I explained that we have a JS backend. | ||
stevan | Khisanth: :) | 15:34 | |
Khisanth | hmm are any of the adverbial stuff being parsed yet? | ||
stevan | autrijus: I assumed you were playing the Sims... not $working | ||
iblech | geoffb: :) | ||
Khisanth | besides for s/// and m// | ||
15:34
knewt_ is now known as knewt
|
|||
iblech | Khisanth: @array.map:{...}? | 15:34 | |
autrijus | stevan: the Sims only lasted for 2 days | ||
the rest is $work | |||
stevan | autrijus: not virtual enough a reality for you ;) | ||
autrijus | that's right | ||
actually most of the time I'm still in paper-reading (and TaPL rereading) mode | 15:35 | ||
eric256 | $work is evil. ;) | ||
autrijus | as I'm trying to map PIL into something less baroque, and apply colored local type inferences | ||
stevan | autrijus: I have been learning CLOS myself :) # the Art of the MetaObject protocol | ||
autrijus | so I can unify Cxt with Typ | ||
stevan | $work-- | ||
autrijus: if I do a metamodel for the CLR, what language should I do it in? C#? or ISALM? | 15:36 | ||
geoffb | & # cat ==> vet | ||
eric256 | class Work is Evil and Bad {} # we need an "and" for classes | ||
stevan | geoffb: if you keep squishing the cat through pipes, of course you going to have to take it to the vet | ||
autrijus | stevan: C# for sure | 15:37 | |
stevan | eric256: class Work is Evil|Bad {} | ||
junctive types :) | |||
(although that wont really work) | |||
autrijus: ok, if I can get Mono working, I will drop the Java port (at least for now) | |||
autrijus | cool | 15:38 | |
Khisanth | does the java port emit bytecode? | 15:39 | |
stevan | autrijus: when you have a second, take a look at MetaClass.pm, about 50% of it is defined as a MetaClass instance :) | ||
autrijus | Khisanth: the java port is only object space for now, not emitter | ||
stevan | Khisanth: no, it is just a port of the MetaModel classes | ||
autrijus | stevan: oooh | ||
stevan | autrijus: :) | ||
(The Art of the MetaObject Protocol)++ (CLOS)++ | 15:40 | ||
autrijus | so, you think I can start porting? | ||
stevan | autrijus: not yet (if you can wait) I want to try and get that percentage higher | ||
autrijus | sure, I can wait | ||
I want to get the depth subtyping for role's .does() working | 15:42 | ||
to kill the java bug of invariant subtyping for parametric types | |||
eg: | |||
stevan | depth subtyping? | ||
autrijus | role Foo[$t] { ... } | ||
Foo[Int].does(Foo[Num]) # t? f? | |||
in Java that needs to be false always | 15:43 | ||
stevan | Funky | ||
autrijus | actually CLR too | ||
integral | does perl6 compute contra/co-variancy like o'haskell? | 15:44 | |
autrijus | integral: that's what I'm trying to hack in, yes. | ||
o'haskell does that? | |||
ah. indeed it does | 15:45 | ||
so the idea is to inspect the definition in the body of Foo to see the use of $t | 15:46 | ||
integral | that'll be cool, it'll confuse the hell out of newbies, but it'll be damn cool using long words to explain it :-P | 15:47 | |
autrijus | and if it's only used in "returns" position then Foo[Int].does(Foo[Num]) indeed is true. | ||
however if $t is used in parameter lists, then Foo[Num].does(Foo[Int]) instead. | 15:48 | ||
if it's used in both positions, we'll be forced to do what java/clr does and declare that neither does the other. | |||
integral | so if a class gets extended it's variancy could change | ||
autrijus | (and if it's not used, then Foo[whatever].does(Foo[whatever_else])) | ||
integral | autrijus: that's what o'haskell does too | ||
autrijus | yes. | ||
good. I ran into that idea in TaPL | |||
TaPL calls it Source and Sink, and I thought it's really cool. | 15:49 | ||
integral: so yes, when you reopen a type, then variancy would indeed change. which is just as well, because .does is a runtime operation. | 15:50 | ||
all compiler-inferred hints in p6 is just hints. | 15:51 | ||
Aankhen`` | ?eval sub foo (*&block) { &block() }; foo():{ "foo" } | ||
evalbot6 | pugs: Internal error: doBindArray: unexpected char: '&' Please file a bug report. | ||
autrijus | they can be destroyed and recalculated in runtime. | ||
Aankhen`` | ?eval sub foo (Code *$block) { $block.() }; foo():{ "foo" } | ||
evalbot6 | 'foo' | ||
Aankhen`` | Is there any chance `*&block` could be made to work? | ||
autrijus | sure. fixed. committing. | ||
please write a test | |||
Aankhen`` | Yay. | 15:52 | |
OK, one sec. | |||
Added as t/subroutines/slurpy_code_param.t -- very basic tests. | 15:59 | ||
Gotta run to dinner. | |||
BBIAF. | |||
svnbot6 | r5847, autrijus++ | * This should work: | ||
r5847, autrijus++ | sub foo (*&block) { &block() }; foo():{ "foo" } | |||
r5847, autrijus++ | i.e. slurpy non-@ sigils should be treated as slurpy scalars. | |||
r5848, Aankhen++ | * added tests for `Code *$block` and `*&block`. | |||
r5849, Aankhen++ | * t/slurpy_code_param.t - usual SVN props. | |||
autrijus | Atom.isa(Item), not Item.isa(Atom), because you say "that pair of people are an item." | 16:17 | |
-- lwall | |||
autrijus rolls eyes | |||
er. | |||
Pair.isa(Item), not Item.isa(Pair), because you say "that pair of people are an item." | 16:18 | ||
good. he changed his mind immediately two lines below. | |||
dudley | so, Item.isa(Atom)? | 16:20 | |
autrijus | no, not really. I don't think Atom is a great idea | 16:25 | |
I need to sleep. see ya tomorrow :) *wave* | |||
dudley | 'night | 16:26 | |
Aankhen`` | ?eval class Foo { does Hash; } | 16:36 | |
evalbot6 | ['Object', 'Hash'] | ||
Aankhen`` | ?eval class Foo { does Hash; }; my $foo = Foo.new(); $foo<bar> = "baz"; $foo.keys | ||
evalbot6 | Error: Not a keyed reference: VObject (MkObject {objType = (mkType "Foo"), objAttrs = <ref>, objOpaque = Nothing, objId = 51}) | ||
iblech | Aankhen``: Pugs doesn't care ATM whether somebody does the Hash role -- it only checks $foo for being a VHash | 16:39 | |
Aankhen`` | OK, thanks. | ||
Would that work the way it seems to, though? | |||
iblech | Yep | 16:42 | |
Aankhen`` | Kewl. | ||
What about this: class Foo does Hash { has %:bar; method STORE ($name, $val) { %:bar{$name} = $val }; method FETCH ($name) { %:bar{$name} } } | 16:43 | ||
iblech | I asked Larry this once. The actual method names might be different, but that's the idea, I think. Also note that IIRC the key ($name) is *not* a Str, but a special Key object supporting multi-dimensional lookup | 16:45 | |
Aankhen`` | Ah, okay. | 16:46 | |
So it would entail different method names and... a different way of using $name? | |||
iblech | Yep, I think so | 16:47 | |
svnbot6 | r5850, Aankhen++ | * HTTP::Query: populate `@:params` with names to preserve order. | ||
Aankhen`` | Kewl. | ||
Thanks for the info. :-) | |||
iblech | Sure :) | 16:48 | |
Aankhen`` | ?eval my $foo = "__ab_cd__"; $foo .= trans(_ => '-'); $foo | ||
evalbot6 | \'__ab_cd__' | ||
Aankhen`` | ?eval my $foo = "__ab_cd__"; $foo .= trans('_' => '-'); $foo | ||
evalbot6 | \'__ab_cd__' | ||
Aankhen`` | ?eval my $foo = "__ab_cd__"; $foo.trans('_' => '-') | ||
evalbot6 | '__ab_cd__' | ||
Aankhen`` | ?eval my $foo = "__ab_cd__"; $foo.trans('a' => '-') | ||
evalbot6 | '__-b_cd__' | ||
Aankhen`` | Weird. | 16:49 | |
iblech | Ah! That's probably because _ => ... is bound to the parameter %_ (which all methods have (dunno why though)), not to *@all_substitutions | 16:50 | |
Aankhen`` | Oh, right. | 16:51 | |
All methods... hmm, IIRC, only submethods ought to have an automatic %_. | |||
*%_, even. | |||
Would it be a problem if I changed *%intable to *%_? | |||
Wait, that still wouldn't fix it. | 16:52 | ||
Bah. | |||
iblech | Dunno, as I don't know what *%_ is exactly :) | ||
Aankhen`` | Ahh, it's okay, it's not of critical importance. | 16:53 | |
svnbot6 | r5851, Aankhen++ | * HTTP::Query: fixed FETCH and STORE blocks for ¶m. | 17:05 | |
r5852, iblech++ | * Usual svn properties. | 17:41 | ||
r5852, iblech++ | * t/builtins/bool/true.t, t/builtins/lists/map.t, t/builtins/control_flow/try.t: | |||
r5852, iblech++ | unEVALs. | |||
r5852, iblech++ | * PIL2JS: | |||
r5852, iblech++ | * my $arrayref = @array causes $arrayref to actually contain an arrayref now. | |||
iblech | FYI, updated JS testsuite: m19s28.vlinux.de/iblech/stuff/not_p...js-demo/t/ | 17:47 | |
autrijus | do we get a jssmoke? :) | 17:51 | |
iblech | runjs.pl works :) But, as I haven't found a way to disable loading of Test.pm (it's precompiled), it's sloow... | 17:53 | |
Anyway, need to sleep now (like you, autrijus :D) :) | 17:55 | ||
Night all :) | |||
autrijus | iblech++ # great work | 17:56 | |
gaal | meow | 18:29 | |
autrijus | purr | 18:32 | |
gaal | sup :) | ||
autrijus | doing boring $job ;) | 18:33 | |
gaal | lots of $work for everyone... | ||
autrijus | indeed | ||
when's the hackathon again? | |||
gaal | :( | ||
it was, except that it wasn't | |||
autrijus | aw. how come | ||
gaal | because not many people came. nothingmuch was incapacitated | 18:34 | |
well, szabgab (my successor in Israel.pm moose-with-the-hatitude) came, and eilara did too (he's the hacker responsible for Apect.pm) | |||
and it was lots of fun showing off pugs to interested people | 18:35 | ||
but they could only stay for part of the time | |||
so my fridge is full of mozarella and other pizza parts :( | |||
i think next time i'll make registration mandatory :) | 18:36 | ||
autrijus | riight :) | ||
gaal | !-2 =~ s/Apect/Aspect/ | ||
very cool module | 18:37 | ||
made somewhat redundant by p6; or maybe not. | |||
lumi and shlomi also came, and it was fun for a while but not much hacking was acocmplished. | 18:39 | ||
i'm off to help a friend move two cats. later! | 18:41 | ||
autrijus | ciao! | 18:42 | |
18:52
tewk_ is now known as tewk
|
|||
QtPlatypus giggles mildly "Whenever I search for perl6 stuff in google, google adds trys to sell me books about training my pug puppy" | 19:27 | ||
geoffb | heh | 19:30 | |
svnbot6 | r5853 | iblech++ | Changed paths: | 19:55 | |
r5853 | iblech++ | * t/subroutines/subroutine.t -- unEVAL. | |||
r5853 | iblech++ | * Pugs.Compile -- Emit &circumfix:<${ }> for Syn "${}" (and similar for | |||
r5853 | iblech++ | @{}, etc.) so I can implement the dereferencers in PIL2JS. | |||
r5853 | iblech++ | * PIL2JS: Prelude::JS::Ref -- Implemented ${}, @{}, etc. | |||
autrijus | I thought iblech is sleeping. | 19:58 | |
obviously he acquired the commit-from-sleep power too | |||
Steve_p | There you are! | 20:07 | |
autrijus, I'm trying to test some "edge-case" type modules on ponie | |||
autrijus | cool | ||
Steve_p | Are there some of your's that you would suggest? | 20:08 | |
autrijus | Devel::Hints | ||
PAR itself | |||
Steve_p | I tried PAR and it failed on blead and ponie | ||
autrijus | PerlIO::eol | 20:09 | |
Steve_p | OK, back | 20:14 | |
Yeah, I need to look into the blead breakage a bit more to see what's happening. It might just be an OpenBSD thing :-/ | 20:15 | ||
autrijus | *nod* | ||
Steve_p | Hmmm...Devel::Hints had problems, but I think that the hint code has been touched in blead. I try it there too, but it looks like a great edge case ;-) | 20:35 | |
Aankhen`` | G'night. | 20:39 | |
Darren_Duncan | I didn't see any replies yet to my p6l posting ... what do you guys think about Item being broken down into Single and Pair? | 21:16 | |
where Item is parallel to Junction | |||
coral | Junction! | 21:17 | |
er, scuse me. hi. | |||
autrijus | Darren_Duncan: there's still the problem of Any | 21:19 | |
if Any is accepted to be the top type, then sure, Single is a good name | |||
but I don't think p6l consensus was for Any to include Junction. in that case Any takes place of Single. | 21:20 | ||
svnbot6 | r5854 | fglock++ | Changed paths: | ||
r5854 | fglock++ | * can't find out the right syntax for coroutine-to-list conversion | |||
kolibrie | so, Any really should get a new name, if it doesn't describe anything | 21:21 | |
autrijus | er, a type system needs a top type | ||
usually in other languaes it's Object | |||
kolibrie | true, there needs to be something there | ||
autrijus | and if bottom type is called All, then that's cute to call the top type Any. but I think that's too cute. I have no problem for the top type be called Object, myself | 21:22 | |
hm, "Eigen" for the non-junction type | 21:23 | ||
nah. bad idea | |||
Darren_Duncan | In any event, my answer was separate from the Any/Object thing ... | ||
I was coming up with some way to organize single items, pairs, and junctions | |||
something that isn't a junction | |||
autrijus | right, your proposam amounts to s/Atom/Single/ | ||
Darren_Duncan | yes | 21:24 | |
autrijus | which I don't have a problem with either :) | ||
Darren_Duncan | but also that Pair isa Item | ||
kolibrie | I like Single better than Atom | ||
I think | |||
autrijus | basically I was arguing that there's a value for Any to be the NonJunction type | ||
because | |||
-> Any $x { ... } | 21:25 | ||
Darren_Duncan | Anyway, if there is support for what I proposed, it would be nice to hear it on list where it's more visible | ||
autrijus | should probably not accept junctions in $x position | ||
in that case we don't need Single; Item can be Single and Any can be Item. | |||
but if Any is instead taken to include Junction, then I fully support what you said :) | 21:26 | ||
Darren_Duncan | I think that Any should include Junction | ||
kolibrie | in my mind, the word Any includes Junction | ||
but I'd like to have a NonJunction thing | |||
just maybe not called Any, to avoid confusion | 21:27 | ||
autrijus | right. in that case Item is fine. | ||
Darren_Duncan | in my mind, Any is about as broad as anything can be ... when you say Any, there isn't anything it can't be | ||
autrijus | and NonPair Item is Single. | ||
kolibrie | yes, sounds right | ||
clkao | heh autrijus. svk is now on eurooscon schedule. | 21:28 | |
Darren_Duncan | meaning what? | 21:29 | |
do you mean its development team? | |||
autrijus | Darren_Duncan: I replied on list. | 21:30 | |
Darren_Duncan | great | 21:31 | |
autrijus | Darren_Duncan: as you are one of the few people who actually wrote 'returns' | 21:32 | |
Darren_Duncan | I saw you had a post on it | ||
autrijus | maybe you'd like to check whether my #2 and #3 checks both makes sense to you | 21:33 | |
even on compile time | |||
i.e. for both to happen on compile time, when you write "returns Str", you can't return a supertype of Str, nor can you use that function in a position that demands a subtype of Str. | 21:34 | ||
(I happen to think that's sane) | |||
Darren_Duncan | have to think | ||
osfameron | can you cast in perl6 like in Java? | 21:35 | |
autrijus | osfameron: coerce:<as> | ||
A12 | |||
osfameron | okie | ||
Darren_Duncan | before reading too far in, my impression with typing a 'returns' is that it has the same purpose as typing an argument | 21:36 | |
osfameron | so... more verbose, but presumably has to be used much less | ||
Darren_Duncan | doing for output what is done for input | ||
autrijus | osfameron: er no, it is the name of sub | ||
it's used like | |||
foo("123" as Int) | |||
Darren_Duncan: right... but output has two sides | 21:37 | ||
osfameron | heh, 'll reread A12, sorry :-) | ||
Shillo | Hullo, folks! | 21:38 | |
Darren_Duncan | considering that the line between compile and runtime actions is kind of blurred, both types of declaration look more like a coersion or promotion | ||
actually, just coersion | |||
autrijus | hi Shillo | 21:39 | |
Darren_Duncan: sure. my point was, is that two coercions or one | |||
Darren_Duncan | in my mind, if you declare a 'returns Any', and the function returns a Str, then a test on the function's return value should say it is a Str and not an Any | ||
autrijus | yup but that check can't be done until runtime | 21:40 | |
Darren_Duncan | yes | ||
Shillo | autrijus: Hey! Looking at your blog, thought you were abducted by evil agents of Lambda! | ||
autrijus | so that amounts to solution #A of mine | ||
Shillo: no, evil agents of $work | |||
I think #A agrees with people's intuition; however it also means practically no type errors will happen at compile time | 21:41 | ||
since all compound terms will essentially pass all typechecks in any position | |||
Darren_Duncan | yes, I noticed the journal is out of date | ||
still thinking | 21:42 | ||
autrijus | #C is the solution adopted by local type inferencing | ||
if you leave the "returns" off, the inferencer will use "Any|All" | |||
that has the elegance of when you actually write a type annotation, you will get typecheck | 21:43 | ||
but if you leave it off nothing bad will happen | |||
it's closer to the ideal of soft, incremental typing | |||
#D is the classical ML-style solution. works really well, not neccessarily perlish. | 21:44 | ||
I don't know if anyone actually thinks #B is sane. | |||
Darren_Duncan | it seems to me that using Any could simply force checking to run time, whereas to get compile time checking you can't use Any | 21:45 | |
autrijus | but that's not limited to Any | ||
consider if I've written Object instead | |||
or Item | |||
or Single | |||
Darren_Duncan | yes | ||
autrijus | so it's really, how "dynamic" perl6 is | ||
svnbot6 | r5855 | iblech++ | Changed paths: | 21:48 | |
r5855 | iblech++ | PIL2JS: | |||
r5855 | iblech++ | * New primitive: &infix:<cmp> | |||
r5855 | iblech++ | * &sort implemented, but doesn't work yet if the comparator block is omitted, | |||
r5855 | iblech++ | willl look into this tomorrow. | |||
Darren_Duncan | perhaps Perl 6 could provide a signature for type declarations that forces tests to happen at compile time ... | 21:50 | |
such that any same type or promotable type would work, but a coercable type would cause a compile error | 21:51 | ||
autrijus | that's a thought, but then we still have the problem of which one is the default. :) | ||
which, really, is what most people will use. | |||
Darren_Duncan | yes | ||
stevan | autrijus: see r5856 | ||
the circle is now complete... MetaClass is defined as an instance of MetaClass | 21:52 | ||
Darren_Duncan | attaboy | ||
stevan | one bootstrap hack, and some private methods are all that remain | ||
kolibrie | stevan: woo hoo! | 21:53 | |
autrijus | oooh. | ||
stevan | autrijus: we need to discuss how to do things like attributes and methods | ||
kolibrie | any way, later all | ||
svnbot6 | r5856 | Stevan++ | Changed paths: | ||
r5856 | Stevan++ | Perl6::MetaModel - (p5 version) | |||
r5856 | Stevan++ | * MetaClass is now defined in an instance of MetaClass | |||
r5856 | Stevan++ | ... the circle is now complete !!!!! muhahahahaha :) | |||
stevan | they cannot be defined in the metamodel (at least not easily) | 21:54 | |
but this is a discussion for later, time for me to eat & | |||
stevan is also on dial-up, so I must sign off as well... dial_up-- | |||
putter | I observe that with pugs head optimized on amd64 FC3 with ghc 6.4.1.20050711, | 22:38 | |
Compiling Pugs.Run.Perl5 ( src/Pugs/Run/Perl5.hs, src/Pugs/Run/Perl5.o ) | |||
/tmp/ghc18476.hc: In function `__stginit_PugsziRunziPerl5_': | |||
/tmp/ghc18476.hc:3117: warning: implicit declaration of function `getStablePtr' | |||
And while make test is doing ok, some simple things segfault it. | |||
Limbic_Region | putter - I see those kinds of messages on Win32 but don't think I have a problem with make test | 22:40 | |
well - since I have been in lurker only mode I only build Pugs about once a day and make test - well, I haven't | 22:41 | ||
putter | bah! as so frequently happens, putter is simply confused. two test files, same name, in different directories. one does something simple. one invokes pge/parrot. confuse one with another, and the resulting segfaults are unexpected. sorry for the noise. | 22:43 | |
For clarity - my segfaults were due to calling pge. which is unsurprising. ghc is behaving just fine. | 22:45 | ||
PerlJam | Are there open tickets for the PGE problems? | 22:46 | |
putter | PerlJam: I'm afraid pge/parrot development isn't quite organized that way. The "best" PGE is on a parrot branch (leo-ctx5) which hasn't been merged into trunk yet. And contributing failing tests is a curated process which can take, well, a long time. So no. | 22:54 | |
PerlJam | in that case I think I'll return to waiting for leo to merge his changes into the trunk | 22:55 | |
and occasionally prod Pm about PGE | |||
Hmm. oscon is next week isn't it. | 22:56 | ||
? | |||
PerlJam wanders in a homeward direction | 22:59 | ||
putter | leo-ctx5 has been usable in the past, though it doesn't build for me (amd64?) at the moment. note that sometimes making pugs with an external parrot, rather than embedded, is more stable. | 23:00 | |
PerlJam: do you have something particular you were going to use pge for? (putter looks around for motivation to finish a rules-on-pcre kludge). | 23:01 | ||
Darren_D1ncan | testing | 23:27 | |
how does this happen? that my nick just changes? | |||
I didn't logout/in | 23:28 | ||
also, I got 3 copies of that 'topic changed to ...' that are the same | |||
will leave and return ... | 23:31 | ||
Darren_Duncan | testink | 23:34 | |
looks right again | |||
putter | & | 23:44 |