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 &params().
r5826, Aankhen++ | * implemented all variants of &param().
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 &param (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 &param. 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