6.2.3 is airborne! | pugscode.org <Overview Journal Logs> | pugs.kwiki.org
Set by autrijus on 12 May 2005.
autrijus inheritance landed. 00:49
svnbot6 r3237, autrijus++ | * Inheritance!
autrijus erxz_paste: I changed wizards.p6 to take advantage of that
er 00:50
eric256: I changed wizards.p6 to take advantage of that
but he's gone ;)
also landed is typed attributes.
clkao go away sick boy! go to sleep!
autrijus heh. ok... 00:51
but Test::Builder seems to be very nearly runnable.
Chewie[] will this be valid Perl 6 code? my ($server | $port) = $network->{ [|] qw/server port/ }; 01:02
broquaint No. 01:10
Or, if it is, $God help us.
svnbot6 r3238, bsb++ | draft haddock for Prim and Run 01:15
meppl gute nacht 01:40
stevan autrijus++ # inheritance 02:06
svnbot6 r3239, bsb++ | unbreak runWithArgs, oops
stevan hola Darren_Duncan 03:30
Darren_Duncan hello Stevan
stevan Darren_Duncan: autrijus just implemented inheritance
Darren_Duncan I am now starting to code Perl 6 again
oh goodie
stevan I am writing some tests for the Test::Builder port right now 03:31
Darren_Duncan I'm starting over, taking the existing perl 5 Locale::KeyedText and moving it to perl 6 ...
stevan it seems to work quite well
cool
Darren_Duncan taking other *working* code in /ext, plus my previous p6 translations, as guides
if all goes well, I'll check in a functional module in a few hours
stevan Darren_Duncan: cool
Darren_Duncan in /ext
stevan look at Tree and Set 03:32
they are the two working OO modules now
Darren_Duncan so I also popped into #perl6 again since I can participate in meaningful discussion
will look at Tree and Set
stevan Test::Builder seems to mostly work too
Darren_Duncan working ... 03:33
oh, fyi, I'm working with svn 3239
stevan yeah thats the latest 03:34
on annoying gotcha
Darren_Duncan you know, this is the first time I actually executed Pugs ...
stevan in order to refer to a class defined in another file
Darren_Duncan 'make test' doesn't count
stevan you need to do this
::Tree.new()
Darren_Duncan okay
is that the way Perl 6 should work, or just the current implementation? 03:35
stevan the current impl 03:38
mugwump (who wrote Set) just exported a plain sub which creates a Set
I did the same with Tree
although I just actually removed that in favor of ::Tree.new()
Darren_Duncan It appears that Pugs doesn't like "module Foo { ... }" and only "module Foo;" 03:39
stevan yes
for modules
I am not sure if mixing Modules and Classes works well right now
Darren_Duncan well, I could declare that as a class for now, but it doesn't have any attributes 03:40
svnbot6 r3240, Stevan++ | Tree - removed the Tree::new function, and just use the ::Tree.new() in the tests
Darren_Duncan one missing class feature - 'trusts' 03:47
question ... 04:03
when invoking/using private attrs/methods, is the proper syntax $obj.:foo or $obj:foo ? 04:04
stevan I am not sure
Darren_Duncan your Set example shows the latter, but I used the former in my earlier translation, and that may be more correct
will look at spec ...
stevan Set is by mugwump 04:05
(except any ugly hacks, which are mine)
Darren_Duncan I thought all method/attr use had the "." in it, and private ones also have ":"
stevan I think so
I am not sure private an public work right now
I think they are all public
Darren_Duncan Set declares private ones
stevan it only make a difference if accessors are generated 04:06
yes they parse, but I am not sure if they are truly private
Darren_Duncan in any event, I am trying to write to the current supported features, and then change later if necessary
nothingmuch morning 04:13
Darren_Duncan morning 04:16
svnbot6 r3241, Stevan++ | Test::Builder - adding begining of test suite for Test::Builder 04:30
r3242, eric256++ | Made to look a little like perl 6 code. ;) ...it is a bit slow though 04:43
eric256__ waits for half-life 2 to finish installing. ;( 04:52
;)
kelan they have half-life 2 for perl6 now? 04:54
sweet
eric256__ 4.5gb of game....developers these days don't seem to care how much space they take....not like when you could run space quest 9 of 14 floppy (and i mean floppy, not them little square things) disks ;) 04:55
kelan well maybe most of the space is media?
people like pretty pictures!
eric256__ that is a whole lot of textures....dunno but i'm drooling just waiting for it...if it is 1/4 as good as the hype it will be fun ;) 04:56
kelan you should contact them and see if you can get a version on floppies 04:58
eric256__ LOL 05:00
they would make me pay shipping.....that will be $750 thank you
kelan worth it, though, for that old-time feel 05:01
knewt it'd be nice if you could get a 5 gig memory stick that's as fast as a hard drive but the same cost as a dvd. then they could sell software on hardware-readonly memory sticks where you just plug the stick in to play :) 05:02
eric256__ i'm halfway surprised it didn't just come on a DVD 05:03
kelan they're starting to nowadays
knewt eric256__: it didn't? wierd
eric256__ nope. 5 cd's instead. ;) 05:04
kinda gives it that old time feel
would be better if i was in the middle of blasting an alein and it stopped and said "insert disk 5" then i could backup and have it say "insert disk 3" . lol
nearly done! off i go. later 05:05
Darren_Duncan I've just committed a new port of Locale-KeyedText, which is the first one that compiles, in /ext 05:06
in doing this, I can see a few things still missing in Pugs and/or I don't know how to do them in Perl 6
1. "trusts Foo;" isn't recognized (it is presently commented out) 05:07
svnbot6 r3243, Darren_Duncan++ | added new external module Locale-KeyedText 6v0.1.0, based on 5v1.04; this is a full port of the core module and its Makefile.PL; there are no tests yet; this port compiles, but has not been executed yet; a few code lines are commented out and/or altered because the current compiler would barf them up otherwise
Darren_Duncan 2. the syntax "$obj.:attr" isn't recognized, while the possibly incorrect "$obj:attr" syntax is accepted (I used that for now) 05:08
3. "returns Array of Str" or "returns Hash of Str" isn't recognized, though "returns Array" and "returns Hash" and "returns Str" is 05:09
4. the expression "'abc'~(.value // '')" in a map-block isn't recognized, but "'abc'~.value" is 05:11
5. I can't seem to have labels in front of for-loop declarations, which I think I need with nested loops to say which to affect with next/last etc; most of one function is presently commented out 05:12
that's it for what I noticed so far 05:13
svnbot6 r3244, Stevan++ | Meta-Meta-Class.pod - adding snippet of conversation with gaal explaining why meta-meta-classes are needed in perl6
Darren_Duncan actually, there's another one ... 05:16
6. I can't say "return [@foo];" or "return {%bar};", which is to explicitly copy the values being returned; only "return @foo;" and "return %bar;" works 05:18
also, subtypes aren't implemented it seems, but that's okay since I decided not to use them anyway 05:19
the dropping of the subtype usage is the main difference between the 6v0.1.0 I checked in now and the 6v0.0.4 that I checked in to /modules over a month ago
so those 6 numbered items are what remains to be fixed 05:21
I'm off now, good night 05:34
nothingmuch wow, what a nice subject for an email: "Goodbye fat, Its summer" 05:44
it seems so much more homely than all my other spam 05:45
even my filter was tricked
wilx All the meta meta thingies. 06:26
Is Perl6 goind to implement Smalltalk object model or something?
nothingmuch wilx: they are reflection and introspection support thingies 06:37
it's similar to smalltalk's capabilities, but it's not smalltalk's object system 06:38
most modern (==last few years) languages have this stuff
nothingmuch is proud of his evilness: www.perlmonks.org/?node_id=457170 06:39
09:28 Fayland is now known as fayland
svnbot6 r3245, autrijus++ | * Private methods: `method :foo ()` and `$obj.:foo`. 09:42
r3245, autrijus++ | * Private attributes: `has $:foo` now generates private accessors.
wilx Hmm.... 10:02
This svnbot.
svnbot6 r3246, autrijus++ | * dereferencers: `@{...}` and `@$var`.
wilx It increases karma depending on length of changelog, not number of commits :) 10:03
Aankhen`` Indeed it does. 10:05
svnbot6 r3247, autrijus++ | * parsing hierarchical return types: `sub foo returns Hash of Str` 10:19
r3248, autrijus++ | * make Locale::KeyedText use the correct .:method and deref syntax.
r3249, scook0++ | Haddocks for Monads.hs
r3250, autrijus++ | * Post-term code/method invocation in interpolated strings no longer 10:53
r3250, autrijus++ | eat trailing whitespace.
r3251, autrijus++ | * reflect the last change to wizard.p6.
Alias_ What are the current options for foreach 11:25
svnbot6 r3252, autrijus++ | * allow taking args from cmd line.
Alias_ I noticed the ugly foreach ( list ) --> $x { }
or whatever it is
Juerd for LIST -> $x { ... } 11:26
List doesn't need parens
Alias_ That seems unusual
Juerd No, it's the new standard.
integral ugh, there's still the for ==== foreach thing?
Alias_ Makes $x a lot harder to see
Juerd integral: No, foreach goes away.
integral yay! 11:27
Juerd integral: I think it's a bad choice.
Alias_ So there's no clean 'in' notation equivalent?
Juerd Alias_: No.
Alias_ ew...
integral map { } <=== @list ?
Juerd I think -> is clean.
Alias_ There's some big advantages to having the topic first
Juerd: Have you got a copy of P6 Config::Tiny handy? 11:28
Juerd Alias_: No
Can you please now ask something I can respond positively to? :)
Alias_ let me nopaste for you :)
I'll show you the problem with it
actually... it's in the pugs svn still 11:29
at /pugs/ext/Config-Tiny/lib/Config/Tiny.pm
for grep {$_ ne '_err_str' } sort keys %self -> $section { ... } 11:30
for starters
it used to be worse 11:31
basically, if you put any sort of length stuff in the list, you can "lose" the topic
imagine a larger one spread across several lines, and you get the idea
Juerd Alias_: Add simple newline. 11:32
for grep { $_ ne '_err_str' } sort keys %self
-> $section {
...
}
Alias_ ooohhh...
Alias_ slaps himself
ok, that might work very nicely
Juerd Clearer than the P5
Alias_ oh?
Juerd for my $section
Alias_ each
Juerd (grep { $_ ne '_err_str' } sort keys %self) { 11:33
autrijus foreach my $section (grep { $_ ne '_err_str' } sort keys %self) { ... }
Juerd ...
}
Alias_ easy
topic is always right next to for
Juerd Alias_: No, in Perl 5, for and foreach are aliases.
Alias_ Although foreach $section in grep ... { ... } has a nice ring to it
Juerd for (LIST) { ... } and foreach (EXPR; EXPR; EXPR) { ... }
are both valid.
Alias_ I know that
Juerd Okay.
Alias_ (better than most I imagine) :)
autrijus right, seeing how you must parse it :) 11:34
foreach my $foo (@list) { say $foo } # p5
Alias_ and for and foreach arn't the same
autrijus for @list -> $foo { say $foo } # p6
Juerd Now, let's get back to that grep.
It's better to sort after the grep :)
Alias_ they are only "mostly" the same
;)
Juerd Both because it's more obvious that you're looping over a sorted list (like the variable, this needs to be close to "for")
Alias_ Juerd: I only wrote the original P5, not the P6
Juerd And because it's more efficient - you're not sorting what you're throwing away 11:35
Alias_ Is there any other obvious uses for [ ] reduction other than the [+] "sum" operator?> 11:36
autrijus [<] # "ensure monotonicity"
[~] # join ''
Alias_ "ensure monotonicity"? 11:37
As in, check everything is sorted ascending?
Juerd I love [~^] and [+^] # parity
autrijus yeah.
Juerd Alias_: Yes.
autrijus [<] 1, 2, 3; # 1 < 2 < 3
Alias_ although you have to exclude negatives
autrijus hm?
[<] -1, 0, 1; # works
Alias_ -2, -3, -1, 0, 1, 2
is false -> zero in numeric context? 11:38
wolverian but that is not sorted, so it's not monotonic
Juerd Yes, false is 0, true is 1
wolverian so the operation fails accordingly
autrijus Alias_: yeah, but it's beside the point...
[<] -2, -3, -1, 0, 1, 2;
this expands to
Juerd Alias_: But you're missing, I think, that < is now chaining.
autrijus -2 < -3 < -1 < 0 < 1 < 2
right.
x < y < z # now means 11:39
Alias_ oh... so it's not programmatic reduction
autrijus x < y and y < z
Juerd Alias_: Nope, it's syntactic
integral hmm, wgt chaining is [<] different from reduce &infix:< ?
Alias_ it's not reduce { $a .. $b } in that sense
wolverian Alias_: as Juerd said at some point, it's just a join() on the syntax level :)
Juerd Alias_: Indeed.
Alias_ ok
autrijus integral: that is an excellent question!
&reduce is probably foldl.
Juerd Alias_: Hence the need for a meta-operator, rather than expression syntax :)
wolverian autrijus: or maybe it depends on the arity of the function
Juerd integral: Yes, it is.
autrijus wolverian: fixity
wolverian fixity? 11:40
autrijus it is conceivable that it probes its arg's fixity, true
integral maybe reduce should be called foldl, so [] isn't mixed up with it?
autrijus er, associativity.
Juerd integral: I think that's unnecessary.
autrijus is clearly sleepy
Juerd integral: One is programmatic reduction, the other is syntactic reductcion.
Alias_ What's happening with ::Foo in P6?
Juerd But both are reduction
integral well then you get foldr too which is obviously necessary then...
autrijus integral: then we also need foldr and foldl1 and foldr1 :D
Juerd Alias_: ::Foo stays the Foo namespace.
Alias_: And in fact, :: is made a sigil :)
autrijus ::Foo also means the Foo type.
(because in p6, namespaces are pun for types.) 11:41
Alias_ Take a look at Package::Relative
which just got uploaded
integral thinks reduce/foldl won't be used much normally now there's []
Juerd autrijus: types, classes, roles, packages, modules all share the same thing called namespace :)
autrijus integral: well, [] can't take a prefix fun
Juerd: that's weird ;)
(not saying it's bad. just weird)
integral *blink* you can fold a prefix fun?
autrijus integral: sure as long as it's arity 2
integral ah 11:42
but still pushing those out to a module, and just keeping [] by default since it has to be
autrijus yup. 11:43
Juerd hopes ./method is accepted, and the discussion is finite 11:47
autrijus er. 11:48
.../method
or
../../method ?
Juerd ../../method 11:49
.../method clashes.
autrijus yup.
Juerd (yada / method)
autrijus your have a strange sense of sanity.
Juerd That's the nicest thing someone has said to me in at least three days :)
(I hope it was meant positively) 11:50
autrijus it is.
autrijus ponders /.method
Juerd clashes with m//
autrijus yeah, but I want the slashdot operator!
(completely kidding.)
Alias_ ./operator
EVERYBODY knows slashdot is backwards 11:51
Juerd You have it already, but only if you repeat it, which is entirely slashdotish!
autrijus ././
ooh dupe
dupes are legal of course?
Juerd /. /. id
autrijus imagine the obfu possibilities!
Juerd m[.].id
:))
Alias_ I think that for P6 we should ban obfu contests 11:52
Juerd Or, rx[.].id probably
autrijus you are insane, but I like it.
Juerd Alias_: And never get to actually use metareduction with 0 arguments? NO WAY! :)
clkao relicense it to forbid obfucontest
autrijus the no-obfu license 11:53
Juerd "photo realistic artistic license"
Alias_ Juerd: Maybe we could just limit obfu contests to locations you need a perl.org login to see 11:54
Juerd: Don't want to scare the rest of the world too much
Juerd That's a good idea.
Alias_ We already have an image problem WRT "Perl is like line noise" 11:55
Juerd We have to invent platform compatible copy-paste-and-ocr-protection first :)
Alias_: I've said in talks that "more linenoise + more power == more perl"
autrijus Juerd: r3253. feel free to play.
Alias_ I'm more concerned about the Perl skills crunch
Juerd autrijus: I think I'm going to pause for a while instead, but thanks. 11:56
autrijus: I really want to play, but my wrists don't
Alias_ Sydney for one has pretty much "run out" of Perl programmers
autrijus sure :)
given $choice {
when 'f' {
./attack($enemy, $.weapons{$_});
}
} 11:57
does this read ok?
(wizard.p6)
Juerd ack
wolverian haha, I just love ./
Juerd++
Alias_ I think it's probably the best option yet for invocant method
svnbot6 r3253, autrijus++ | * tentatively implement Juerd's experimental ./method proposal.
Juerd afk 11:58
Alias_ since the keys (on my keyboard at least) are very close to each other
specifically, right next to each other
Juerd Alias_: not on mine
but it's still very easy to type
afk # real now
Alias_ indeed
wolverian not on mine either. yet another character to remap in vim :) 11:59
Alias_ I have a keyboard which is unix optimised, rather than Windows optimised :)
Logitech++
wolverian that sounds interesting. 12:00
isn't / next to . on all US keyboards, though? :) 12:01
Alias_ let me do a walkies around the office
Logitech, yes. 12:02
Toshiba laptop, yes
wolverian are you walking around the office with a laptop, looking over people's shoulders, typing and mumbling to yourself?
Alias_ It's 10 at night 12:03
there's nobody here
svnbot6 r3254, autrijus++ | * make wizard.p6 use the ./method syntax to gauge how well it looks
Alias_ ok, all 12 keyboards, including Microsoft, NoName brand of various types have . and / next to each other
I seem to recall british keyboards having a quite different layout though 12:04
Juerd Alias_: www.microsoft.com/globaldev/referen...oards.aspx 12:05
Alias_: Have fun
Alias_ ok, so both US and UK do 12:08
What keyboards are people using that don't?
China/Taiwan/etc? 12:09
autrijus CJK use normal US layout. 12:10
wolverian finnish (same as swedish) doesn't. 12:13
svnbot6 r3255, autrijus++ | * parse the arg in ./foo($arg) as arg, not inv
r3255, autrijus++ | * separate invs and args in prettifying App.
Alias_ nordish? 12:14
wolverian do you mean norwegian?
Alias_ I mean any(norwegian, swedish, finnish) :) 12:15
ouch... shift-7?
That's positively brutal
qmole heh
\ is alt-gr - 12:16
Alias_ man... perl is all over the place for nordlanders
what's "sami" 12:17
"Swedish with sami"
integral "the language of the nomadic Lapp people in northern ..." 12:18
Alias_ oh
Odin- Icelandic also has / as shift-7. :> 12:24
svnbot6 r3256, autrijus++ | * use the correct sigil
Alias_ So... icenordic keyboards 12:27
integral can imagine the Camel being sold with keyboards... 12:28
wolverian I have my numeric row shifted by default in vim, anyway 12:29
that helps a lot. :)
autark-jp I think you can say "scandinavian keyboards"
wolverian strictly speaking, scandinavia is only denmark, norway and sweden 12:30
'nordic' includes iceland and finland in addition
Alias_ does it? 12:31
neato then
scandnordic keyboards
wolverian just nordic keyboards :)
Alias_ ok :)
Juerd Where is all the p6l response? 12:37
:)
autrijus Juerd: I think I recover faster from awe
Juerd hmmm
What awe? :)
Alias_ Juerd: I responded... but I use the NNTP gateway, so responses take a few hours 12:38
Juerd Alias_: Oh. Wow, HOURS?
Alias_ yeah
Juerd Are you sure we're living in 2005?
Alias_ 6 hours maybe
Juerd My messages to p6l take a minute
Alias_ It's either that, or register for another 4 mailing lists
Juerd I find that long :)
Alias_ and P6X are firehoses of mailing lists
Juerd Alias_: Doesn't your nntp client speak smtp?
Alias_ I hit "reply", I type, I hit send 12:39
Juerd (reply by mail)
Alias_ I'm too lazy
Juerd Oh
I'll wait.
Alias_ I don't forgive things for not working properly
Getting too old
Juerd wolverian: Why haven't you replied yet? :)
Hi toothpaste! 12:40
Alias_ For what it's worth, ./method is the best yet 12:41
I don't know about ../method though
But then I think we shouldn't allow supermethod calls at all
not to anything other than the current method at least
It's asking for trouble
Juerd Hm, I actually agree
Alias_ ./SUPER 12:42
actually... not
wolverian I think it should be allowed, but it shouldn't be huffmanised
Alias_ But perhaps ../method, but emit a warning for cross-supermethods
Juerd Alias_: That's the best option, I think
OTOH, Perl isn't a protective language
Alias_ Doing cross-supermethods really really is quite dangerous
It can very easily lead to infinite loops 12:43
Juerd And ../othermethod is rather explicit.
Alias_ I got some bug reports about Method::Alias saying that
nothingmuch hola 12:45
autrijus yo 12:46
wolverian Juerd: I'm still thinking about it (re: replying on p6l)
autrijus finally finding the willpower to write euroscon submission
Juerd wolverian: Oh 12:47
nothingmuch home time 12:50
Juerd 5 minutes...
svnbot6 r3257, iblech++ | * EOLs at EOFs. 13:21
r3257, iblech++ | * Usual svn properties added to ext/Test-Builder/t and ext/Locale-KeyedText.
nothingmuch afternoon 13:48
14:25 castaway_ is now known as castaway
Juerd What is a boxed type? 14:26
autrijus Juerd: Int is.
int is not.
Juerd Ah
autrijus ajs_home: why use unboxed types, really?
Alias_ autrijus: Speed, mainly
Juerd Speed is the only reason, really, I think. 14:27
autrijus Alias_: a capable compiler can turn boxed types into unboxed automatically when it's safe.
(GHC does that, for example.)
skew are you actually using unboxed types?
or just strict fields with -funbox-strict-fields?
Juerd autrijus: It's almost impossible to determine when it's safe.
autrijus: Because any variable can be accessed symbolically
In a highly dynamic language, such code analysis is a luxury we don't have. 14:28
autrijus skew: strict fields. but I'm talking about this:
"GHC is built on a raft of primitive data types and operations. While you really can use this stuff to write fast code, we generally find it a lot less painful, and more satisfying in the long run, to use higher-level language features and libraries. With any luck, the code you write will be optimised to the efficient unboxed version in any case. And if it isn't, we'd like to know about it."
skew oh, is this about perl?
autrijus Juerd: er. symbolic access can do autoboxing
Juerd autrijus: Hmm 14:29
autrijus skew: aye
skew: I'm arguing that using unboxed types in builtins is a Bad Idea 14:30
Juerd autrijus: When "my $foo" or "my Int $foo" is declared, you can't make it an int, because that cannot store undef. Is there also auto-unboxing?
Made that a Very Bad Idea, please
Unboxed types are native, not terribly portable.
autrijus Juerd: er, an unboxed type can still allow for nulls 14:31
Juerd doesn't think they're needed even
autrijus via a flag or something.
Juerd autrijus: Not at syntax level.
autrijus Juerd: I'm not talking, though, about the syntax level :)
Juerd autrijus: Ah, okay.
Juerd doesn't care about internal representation, as long as the overall thing is fast.
autrijus yup.
Juerd And predictable.
autrijus that I think is best.
instead of forcing people to use int and str everywhere.
Juerd autrijus: Well, they can be useful if you want 256 to overflow to 0 14:32
autrijus Juerd: what type does that? :)
Juerd Writing a brainfuck compiler in Perl is severely made harder because you have to (...) %= 256 everywhere
skew that's not really an issue of boxing, though
autrijus Juerd: you win.
"That's almost terminally cute, but I like it. Unless someone can 14:33
think of a major objection (such as that it makes it too easy to use
SUPER semantics rather than NEXT semantics), let's go with it.
"
Juerd autrijus: int8
YAY :))
autrijus isn't that word8 or uint8? :)
skew Word8 is a boxed type in Haskell
autrijus I thought int8 is -127 or something
Juerd uint8 then.
autrijus skew: but Word8# is unboxed...
skew Word8# is the unboxed form, I think
Juerd This is my second operator ;) 14:34
autrijus what's the first one again?
Juerd .=
skew and then, all those Integer mod m types are about as far from native integers as you can get
so, are the operations in Context.hs documented anywhere? 14:35
I've read the section in s6 describing the form of types
autrijus skew: no, they are not.
the only important thing there is distanceType 14:36
which is used for MMD resolution
skew It's nice to be able to fit the whole file on screen at once
autrijus everything else can be rewritten or explode as long as distanceType remains
distanceType simply counts the "steps" needs to reach from the base type to the target 14:37
skew other code just refers to types by name?
autrijus no, they are of the Type type
constructor is MkType
see Types.hs
(which is documented)
skew okay, I see fmap MkType 14:38
autrijus fmap is really useful :)
<- submitting a 45 minutes talk to Euro Oscon 14:39
"Learning Haskell"
I wonder if it will get accepted :)
it's in the 'Emerging Technology' track.
Alias_ name not sexy enough
"Why Learning Haskell Meant I Could Write Perl 6 in a Month" 14:40
"How Haskell Saved Perl"
:)
wolverian "Why Perl6 is Haskell with Perlish Syntax"
autrijus Alias_: I think gnat wants stupid dumb titles :) 14:41
wolverian out of curiosity, what features does haskell have that perl6 doesn't, yet?
(omitting whatever stems from syntax)
autrijus wolverian: the whole typing thing.
Alias_ Partial evaluation?
skew The type class stuff is probably quite different
Alias_ I don't see Perl 6 having partial evaluation
wolverian autrijus: type inference or the rest of it?
autrijus Alias_: hm, partial evalution? 14:42
Alias_ It's ALMOST a pity... almost
skew I don't think Haskell has partial evaluation either
autrijus wolverian: type inference, type classes, existential types, GADTs
Juerd Hm
wolverian autrijus: right. can you see any of that fitted into perl6 without changing its dynamic nature?
autrijus (the last is a generalization of exsitential types)
Alias_ autrijus: Taking a function that takes N arguments, proving one, and deriving a faster custom function that takes N - 1 arguments
Juerd Larry found <-> cute and loved it. It wasn't made official
autrijus Alias_: oh. currying.
Juerd Larry found ./ cute and liked it. It was made official
autrijus Alias_: perl6 has currying. pugs even supports it.
Alias_ is that what the cool kids call is?
it
Juerd Where's the logic in that?
autrijus Alias_: &function.assuming(3) 14:43
skew type classes could fit, I think
autrijus &function.assuming( y => 4 )
Alias_ blinks...
autrijus personally I think that is even better than haskell's :)
because you can easily assume the third parameter or ones after that.
Alias_ and is does proper op-tree manipulation to get the new function?
autrijus whilst in haskell you need to write ugly lambda expressions to get to that.
Alias_ s/is/it/ 14:44
autrijus Alias_: it does scary things inside, but yes, you can think of it as doing that.
Alias_ wow...
skew It's a question of what fraction of the arguments you are specifying
Alias_ Perl 6 is going to be EXTREMELY fast
skew perl6 should have both ways
Juerd Alias_: Yes. Of course it is. Perl 6 is extremely fast, and Perl 6 is written in Perl 6, by Perl 6 people. Do the maths! :) 14:45
Alias_ Juerd: No, that's not what I mean
wolverian time(fast ** 3) < time(fast)? :)
autrijus skew: perl6 can curry over both positionals and named, if that's what you mean
skew: oh, and Roles is quite like type classes
Juerd wolverian: More like method make_faster { ./make_faster }
autrijus skew: but I miss tagged unions, even though you can simulate it with Roles.
wolverian Juerd: heh. yes. :)
Alias_ It means that if you create an object that takes arguments and calculates things based on both the arguments and object properties, you can create custom functions per-object to make ultra-fast 14:46
autrijus which is a pity, since Perl 6 has native enums... tagged unions is just one step further
wolverian autrijus: I think anything you can think of as beneficial to perl6 should be proposed on p6l
autrijus wolverian: well, yeah, but you may have noticed a pattern of my proposals on p6l...
skew you might not want to mail chapters of the Haskell Report without at least superficial rewriting, though
Juerd wolverian: Agreed, but porn attachments aren't accepted on the list. 14:47
autrijus ...they were backed up with implementations :)
so not going to propose until I've thought thru the implementation :)
skew what does Roles let you do?
wolverian autrijus: hmm. do you need tests for it first? :)
Juerd: heh.
autrijus wolverian: that's fine too :)
wolverian autrijus: I'll need the syntax first! and uh, I need to know what it is!
skew you can declare that some existing class/type provides the role and explain how, like a one parameter type class? 14:48
Alias_ skew: Imagine something like Java Interfaces that require you to not need multiple inheritance
svnbot6 r3258, iblech++ | Added a simple IRC logfile to HTML converter.
autrijus skew: lists.squeakfoundation.org/pipermai...89740.html
skew: roles in perl 6 can be parameterized over arbitary number of types.
Alias_ Roles is another attempt at solving the same problem previously solved with Interfaces and Multiple Inheritance
skew Alias_: sounds like type classes 14:49
Alias_ I'm a camel, not a lamba, and thus totally lost on most "proper" terminology :)
That and a bad habit for re-inventing things in my head leaves me out of the loop :)
wolverian autrijus: are you going to implement GADTs too? 14:50
autrijus skew: they are quite similar. I believe Guy Steele et all uses trait/roles in Fortress for what Haskell use Eq and Ord and Enum for
skew hmm, I think the trait stuff is ever so slightly different
autrijus skew: but they are fundamentally OOish... :)
skew is this only at class creation time, or can you add a role after the fact?
is that intended, I mena
autrijus skew: you can add a role after the fact.
my $foo = 0 but true; 14:51
Alias_ sob
:)
autrijus # adding the "bool::true" at runtime.
skew does perl6 have parameterized types? 14:52
autrijus skew: yes, Roles are parameterised types.
in s12:
role Pet[Type $petfood = TableScraps] {
method feed (::($petfood) $food) {...}
}
it's like saying
class Pet f where 14:53
skew well, classes are more like predicates on types than type themselves
autrijus er. hm. no. :)
right.
so I guess it's not quite the same.
Alias_ tries to work out what that P6 code means
skew You have things like Array of Int vs. Array of Bool
autrijus yeah. 14:54
I was just about to say that.
wolverian Alias_: it means that the role provides a method 'feed' that by default takes one argument of type TableScraps, but can be overridden by providing an argument to Pet
skew is that just a special case, or can you define your own parameterized type, and multiple type parameters, like Hash from Int to String?
wolverian: so you could say that your class provided the role Food, but with PetFool == MetalShavings? 14:55
autrijus skew: I think it's not a special case, and you can indeed build your own parameterised types, but I don't think the syntax has been specced.
maybe worth a p6l inquiry. 14:56
wolverian skew: yes. except I'd think of that as a role, not a class, generally
autrijus i.e. if I have a "Tree", how do I define it so I can say "Tree of Int"
wolverian (role inheritance.)
Alias_ autrijus: Are all these features going to make the startup time for P6 programs bad?
skew wolverian: classes provide roles, right?
autrijus Alias_: not if you don't use them.
Alias_: if you use them... compile time will suck a bit maybe
Alias_: but then you'll have .pbc files around for the next time. 14:57
wolverian skew: er, yes.
Alias_ So now P6 will be ammortized run-time compiled?
wolverian skew: sorry, I read 'provide' wrong there.
autrijus Alias_: P5 was that too, really.
skew okay, that's something like class Pet pet food where feed :: food -> pet -> pet 14:58
autrijus it's just in P5, the bytecode are far larger than the source code, _and_ strangely, the time it takes to load bytecode is often _longer_ than parsing the rouce.
skew: err
class Pet pet food | pet -> food where ...
is more like it.
wolverian parsing the rouce. :) 14:59
skew oh, the role implies uniqueness?
Alias_ Wouldn't BEGIN make the .pbc uncachable?
autrijus s/rouce/source/
Alias_: BEGIN happens at compile time! :)
Alias_: time to learn to write INIT when you mean INIT.
skew two different roles can't use a method of the same name?
Alias_ Time to provide an INIT that works with mod_perl
autrijus skew: not when they are manifest in the same class, I think
Alias_: talk to jhorwitz when that day comes :) 15:00
(p5's INIT is b0rken beyond repair.)
Alias_ hell, I wish people would use BEGIN _more_
I seem to be the only one that uses it properly
(mainly to avoid lengthly delays in the debugger while nexting through startup crap) 15:01
skew can method names be qualified by a namespace?
autrijus skew: yes.
say $obj.Object::id();
skew can you use this with roles?
autrijus yes.
skew eg $dog.Pet::feed() vs. $dog.Pet[petfood => grass]::feed()? 15:02
Alias_ ok, my head hurts
Time to go work on cvs monitor. Nice plain simple code
autrijus skew: I hope so, I'm not sure at all. 15:07
skew do you do method overloading by type?
autrijus yes. 15:08
also known as MMD.
multi sub &infix:<+> (Int $x, Int $y) { ... }
multi sub &infix:<+> (Int $x, Complex $y) { ... }
etc.
skew okay, so supporting the same role at several different types should be picked up by this MMD, even 15:09
do the type signatures actually affect the meaning of the method, or are they just used in type checking and method dispatch? 15:10
autrijus "meaning"? 15:11
hm, ruby has this: 5.times:{ say "Hi!" }
wolverian without the :
autrijus wonders if it makes sense to steal it
wolverian oh. that was perl6.
autrijus :D
wolverian wasn't there a p6l discussion about this? how 'for 1..5 { ... }' just to repeat it five times is ugly? 15:12
autrijus in similar notes:
Alias_ Is it ever used? Can we add it later?
skew if the method says Int $x, do you get an Int-shaded view of $x, or just whatever they passed in
wolverian I don't remember any conclusions, though.
autrijus [1,2,3].for:{ say $_ }
Alias_: not saying it should be core, please relax
Alias_ puts the python club away
autrijus skew: well, if it comes to MMD that way, then it must be Int or its subtype
skew you can do MMD on roles, right? 15:13
autrijus skew: operationally they are the same.
I think so, yes. in that case it is not shaded
(you can also do value MMDs.)
multi sub factorial (0) { 1 }
skew say you have roles
wolverian sub foo ( $a where { .does(Eat) } ) { ... } # I forget if just '$a does ...' works
well. that's just Eat $a, in any case. 15:14
autrijus wolverian: I think so, not sure
yup.
wolverian MMD checks via .does, not .isa
which is why perl6 rocks so much.
autrijus sure, that's why you can mmd on roles.
now, why do we still have this multiple inheritance thing?
because of timtowtdi? :)
wolverian probably. 15:15
Alias_ in case Roles arn't as good as we think they are? :) 15:24
So Perl 5 people can move to Perl 6 easier
So porting existing Perl 5 code is possible
autrijus yeah.
yup.
Alias_ etc
autrijus seen on my blurb to euro oscon:
jabbot autrijus: I havn't seen on , autrijus
autrijus "What's as fast as C++, as concise as Perl, more regular as Python, as flexible as Ruby, more typeful than Java, and has absolutely nothing in common with PHP? It's Haskell! 15:25
wolverian I thought Perl6 ;) 15:26
Alias_ ... AND YOU ARN'T SMART ENOUGH TO LEARN!
My new minion commented on Haskell today
skew yay for minions 15:27
Alias_ "Oh that, we had to do a project in Haskell at uni. Everybody failed, except one guy who had been programming already for 10 years"
autrijus that is likely possible. 15:28
Alias_ Looking back, the most stressed out, distracted and depressed period my best mate at uni had was while he was learning Haskell
At the time, I didn't understand why
:)
Now I put it down to having to rewrite his brain from scratch 15:29
skew I would think a few mathematicians with some programming experice could have finished too...
Alias_ skew: Probably. :) 15:30
skew: It would seem to be a language only mathematicians could love :)
But given the lack of math cred in Perl 5, we could probably do with the rolling some into the Perl casserole
We've stolen everything else :) 15:31
oh, and btw Juerd++ 15:32
Juerd++
Juerd++ # Solving the implicit invocant bitching to the satisfaction of all involved
stevan autrijus: are we releasing today/tomorrow? 15:55
autrijus stevan: no, next week 15:56
stevan ok
I saw the private methods :) very nice
autrijus :)
Forth_ can't keep up with you....orz 15:59
stevan nice, so Juerd's ./method() syntax was accepted 16:00
skew when did ghc -v pick up the Glorious?
stevan Juerd++ # for making ./method() 16:01
Juerd++ # for making Alias_ happy :)
ok off to mow my lawn :( 16:02
Alias_ stevan: Certainly as accepted as these things go 16:03
skew hmm, not a # to be seen in spellcheck or wordfreq
autrijus skew: having trouble switching between channels? :) 16:04
skew yes
I need to buy an eyetracker and write a focus-follows eye mode
or figure out how to put different channels in different terminals 16:05
eyetrackers are so expensive, though :(
it looks like everything in Context.hs is either used to implement distanceType, or implemented in terms of distanceType 16:06
autrijus yes. 16:10
that's exactly what it is.
skew is addNode actually used? (I'm in the middle of compiling to test that, but I'm also having my system upgrade all installed packages, so it's pretty slow going) 16:17
autrijus skew: it is... in Parser, when I see 16:18
"class Foo { ... }"
I run addNode there to add Foo to the type tree
currently it's a Big Hack
because it's all hanging off Object
(no derived types yet)
but hey, all this code is like 2 days old :)
(for classes that is)
skew they look fine 16:19
grr, switch channels before typing 16:20
nothingmuch utters "phew" 16:24
svnbot6 r3259, jhorwitz++ | * add system($cmd) using spawnw opcode
autrijus oooh 16:29
jhorwitz++ # hacking on parrot codegen!
ingy hi all
autrijus hey ingy
ingy hi autrijus 16:30
skew spanw is an opcode?
autrijus skew: parrot has lots of weird high-level opcodes.
jhorwitz skew: spawnw == spawn/wait
autrijus (dynamically loadable even)
like the 4-arg substr 16:31
skew like if you write show 1 you get "1" rather than an error about undefined overloading
autrijus right, it's all MMD underneath.
skew okay, I need to find some coffee
autrijus starts journalling... 16:33
Day 104: ./juerd('rocks!')
ingy stevan: ping 16:36
svnbot6 r3260, autrijus++ | * make `$obj.:method` work.
r3261, jhorwitz++ | * require_parrot now translates to Parrot's load_bytecode
Alias_ heh 16:40
./feel('the love')
oh...
jhorwitz autrijus: if $obj.'method' could translate to parrot's obj.'method', there would be much joy. 16:41
Alias_ found a bug in SVK
Apparently someone decided to use the Class::Autouse superloader instead of the doing things the non-evil way 16:42
autrijus jhorwitz: it's just (App (Var "&method") [(Var "$obj")] args)
jhorwitz: that does require the rest of class stuff though, which I was hoping to punt till Leo's 16:43
s/Leo's/my stay with Chip in Leo's/
jhorwitz autrijus: for my current purposes, all the instantiation happens in mod_parrot. all pugs needs to do is invoke the method. 16:45
autrijus jhorwitz: then just compile that form
jhorwitz gets to work
autrijus (App (Var ('&':method)) [(Var "$?SOME_OBJ")] args) 16:46
if you store with globals, you may wish to trick (Var "$*FOO") into find_global
but it's your choice :) it's all yours 16:47
Juerd skew: Re eye trackers: software to do this with cheap $10 webcams exists. 16:49
Alias_ autrijus: WTF? "The $obj.id method is implemented to return an unique ID for each object"
Juerd It's not accurate enough to enable you to input text, but it should be accurate enough for focussing. 16:50
Alias_ autrijus: Tell me you haven't just created a standard method that clashes with every class in existance that uses identifiers...
integral couldn't you still have an id method in a different role...
autrijus Alias_: uh yours trumps Perl's 16:51
so if you define id, then that is used
so no clash
you can always say Object::id($obj) to get the perl 6 one
Alias_ and what does it return exactly... integer memory location?
autrijus the term is "opaque". 16:52
i.e. you shouldn't care :)
integral as in it only supports &infix:==, not &infix:+, etc ?
Alias_ well... "will it survive a freeze/thaw"?
etc
autrijus it only supports ~~ I think
Alias_: I think yes
integral hmm, I suppose that's more sense than == or eq
Alias_ oh?
autrijus Alias_: I think the id will be frozen together 16:53
Alias_ that sounds kinda bloaty
So it's UUID then?
if I load two stored things from two different processes, they can't have an id clash? 16:54
or two machines
autrijus I don't think that's specced.
Alias_ you know that UUIDs only allocate at about a million a second
autrijus I, for one, want it to be uuids.
but they should be lazily generated
Alias_ and are 128 bytes wide, MINIMUM
autrijus er, I know all this.
Alias_ and you'll need a unique number for every object created in every process on every machine, ever 16:55
autrijus er wait
it's 128 "bits"
or 160 bits
Alias_ I think you might actually rollover the address space
autrijus can't be.
Alias_ how many objects have been created total, in the history of perl
10 to the shitloads, thats how many :) 16:56
ingy 10 to some 2 digit number
Alias_ autrijus: What's it used for? Just == ? 16:57
use overload '==' => sub { Scalar::Util::refaddr($_[0]) == Scalar::Util::refaddr($_[1]) };
I use that all the time
autrijus sure. that may be the case. 16:59
Alias_ but then I'm attacking you for something that was probably the fetid imaginings of someone in p6l
autrijus so, 128 bits space is like, hrm
Alias_ me-- # Shooting the messenger
You'll need 256 bits
autrijus square root of estimated number of atoms in universe
Alias_ atoms is 2^72 17:00
roughly
autrijus so, how do we rollover this again?
Alias_ but objects live in 4 dimensions
integral so 2^128 is plenty for a simulation of the universe...
autrijus the UUID spec says it's guaranteed to not rollover until 3400 AD. 17:01
if you generate it slower than 10 million per second.
Alias_ autrijus: It's limited to IPv4 space...
or MAC addresses...
I can't remember which
nothingmuch UUID seems expensive
autrijus I thought IPv4 is 2^32
nothingmuch and overkill
Alias_ so, say, a 100 million objects a second, times 2 billion CPUs... 17:02
autrijus and MAC address is 2^18
^128 is large, sir :)
<- rollover is least of my worry
Juerd ipv6 is **128
(None: We use **, not ^! ;))
rollover is for dogs 17:03
autrijus Juerd: why are you flattening 128 eagerly?
nothingmuch says: 'use uuids :quality('cryptographic')'
Alias_ autrijus: You need to allocate the entire processor-seperation space immediately
nothingmuch and lets not worry about it
Juerd autrijus: Grin :)
autrijus what has the poor 128 done to you?
integral (&infix:^, &infix:**) ::= (&infix:**, &infix:^) !
Juerd autrijus: Sorry - 2**128
Where - is not minus :)
integral: No, infix ^ is one()
autrijus Alias_: anyway. as implemented in pugs, it's more like refaddr.
Juerd autrijus: By the way - did you add the ! for none()? It was recently denied... 17:04
Alias_ refaddr is nice
autrijus Alias_: whether we can do lazily generated uuid or some stronger things depends on parrot and actual demand.
Alias_ I like refaddr
As soon as you make things ! refaddr you are in a world of hurt
autrijus Juerd: oh, it's denied? sorry I didn't pay attention
Juerd autrijus: In my operator table thread
autrijus Juerd: I'll get it rescinded
ingy seen nothingmuch?
jabbot ingy: nothingmuch was seen 1 minutes 33 seconds ago
nothingmuch seen ingy
jabbot nothingmuch: ingy was seen 7 seconds ago
nothingmuch wow, cool! 17:05
Juerd autrijus: I personally don't mind it being here. The op is available...
nothingmuch heard ingy
autrijus Juerd: so nothing occupies its place?
Juerd No
autrijus Juerd: yeah, but hey, spec is spec :)
nothingmuch now that's just plain stupid
autrijus (and ruling is ruling)
Juerd autrijus: I think ^ should be made an alias for **, and ! should be none()
none() is more useful than one() :)
ingy nothingmuch: I have a todo to integrate your Spork patches. But then gugod said he integrated some stuff already
nothingmuch yes, he did
the spork config stuff 17:06
i've fixed a bug with urls%20with%20spaces, that should go in unconditionally
the rest of the stuff is mostly for gugod
(i think that's a kwiki fix though)
ingy ok...
nothingmuch but the gugod stuff require's some refactoring of spork code
autrijus Juerd: so you'll update your quickref/op
nothingmuch which doesn't change anything
Juerd autrijus: Yes 17:07
autrijus cool
Juerd++
nothingmuch is gugod here? idle time is 6 days
svnbot6 r3262, autrijus++ | * infix ! is gone. 17:08
ingy nothingmuch: gugod was at my house yesterday 17:09
he went to st louis
I go to st louis tuesday
nothingmuch ah 17:10
can you commit to Spork::S5? or can you get patches to him?
Alias_ oh dear... 17:17
./:method
(spew)
gaal nothingmuch: quite sick, that Package::Relative thing of yours :)
Alias_ This whole ": means private" thing just gets worse and worse 17:18
gaal also: hi.
nothingmuch hola!
ingy nothingmuch: can you mail patch to both of us?
nothingmuch ingy: yep... let me do one final fix so that images are done after the content
and incremental images are supported
Juerd Alias_: If you mean that "is private" would be better, I agree. 17:21
Alias_ I think I shouldn't be punished for using private methods
Juerd Alias_: OTOH, that'd make it really private, and that's unperlish
Alias_ I think that what might seem like a good idea "reminding people it's private" quickly turn into slamming your head up against a wall 17:22
nothingmuch does .:private even make sense? if it's private, shouldn't it only happen on $?SELF anyway?
Alias_ YES (bang) I (bang) KNOW (bang) IT'S (slam) PRIVATE (slam)
svnbot6 r3263, Juerd++ | Add method meta-ops; add ./ to precedence table; remove chaining !
Juerd nothingmuch: It's a visual warning, not a form of protection.
nothingmuch: Like Perl 5's _private, but regulated. 17:23
Alias_ _private only existed because we didn't have "real" privacy
We needed a warning cause you _could_ screw up
Juerd Alias_: As I understand it, :private provides no real privacy.
Alias_ Now you can't...
nothingmuch regulated how?
Alias_ WHATTTT
wolverian hmm. Juerd, S12 says that private methods are invisible to MMD
Alias_ cry
wolverian or rather, s,MMD,ordinary method dispatch system,
Alias_ Why not just make _method private and enforce the current style 17:24
Juerd You must use a special syntax to call a private method:
$mybrain.:think($pinky)
Alias_: My thoughts exactly.
wolverian I wonder what being invisible to the dispatch means then.
Alias_ You don't need warnings if you can't see private methods
if it's just a warning, what makes it different to the current style of warnings 17:25
And since when was Perl in the game of providing warnings
"enough rope" and all that
autrijus use warnings; :)
Alias_ But then I hate more and more of Perl 6
autrijus eh. "being invisible to the dispatch" 17:26
Alias_ Only because I know it's not going to be populat
popular
autrijus means exactly the same thing as if you would "_method"
Alias_ and popular equals jobs and work
autrijus i.e. it has different names.
so there's no way $obj.method would dispatch to $obj.:method
Juerd Bring it to p6l
autrijus just like it won't dispatch to $obj._method.
Alias_ So it's now LESS flexible, but with the added benefit of being no better in functionality?
I mean, we didn't _have_ to use _method
autrijus how is it less flexible?
you can still use _method :) 17:27
method _private () { ... }
Juerd Alias_: Yes, and as a SPECIAL BONUS we get inconsistency for $.foo and $:foo (the latter ought to be $.:foo, for consistency)
Alias_ except now it's something.:_method?
autrijus the only magic :method gets is generating inconsistent accessors
Alias_: no, it's still ._method
Juerd: heh jinx!
Alias_ and that will be truly private?
Juerd What's jinx?
autrijus Juerd: speaking the same things simultaneously
Juerd Alias_: There is no true privacy.
Alias_: Whatsoever. This is part of language philosophy, and hard to change. 17:28
autrijus er. there is true privacy if you use lexical variables in BUILD.
gaal can't you padwalk if you really want to?
Juerd autrijus: CALLER::
autrijus or other ways p5 hackers are accustomed to
Juerd: CALLER:: doesn't defeat that 17:29
and it's not anybody's ::OUTER
Juerd Lexicals make things invisible, not inaccessible.
autrijus Juerd: "only accessible thru mandated methods"
that's what privacy means, anyway.
gaal: it's not anybody's ::OUTER, so I doubt the core language can walk there 17:30
gaal: you can always drop down to haskell or parrot assembly level though ;)
gaal it's been known to happen...
autrijus PadWalker.pm drops to C level too... 17:31
clkao *yawn*
autrijus journal up; I need to sleep :) 17:32
has$work tomorrow.
autrijus waves &
Juerd Sleep well
jhorwitz 'night
gaal nihgt.
Juerd autrijus: Heh, thanks for the title :)
autrijus :) 17:33
Odin- Juerd: ./method is a neat suggestion. :) 17:37
Juerd Thank you 17:38
It's funny how p5p can *fight* over something as silly as //, and new operators are implemented in p6l almost on a daily basis :) 17:39
s/implemented/invented/
Odin- Fewer users to worry about. 17:41
And those that exist mostly follow p6l, so they'll get advance notice...
autrijus er, implemented, too. :) 17:42
Odin- autrijus: That doesn't happen on p6l. ;)
autrijus Odin-: nowadays it does :)
autrijus has been spamming p6l with subversion revision numbers
Odin- Heh. :)
gaal say, is Damian's last draft of the rules capturing stuff posted somewhere? 17:45
Alias_ Odin: It appears that the only downside is ./:method 17:54
svnbot6 r3264, jhorwitz++ | * initial support for method invocation
Corion Is the (parsefail) breakage in t/junctions/misc_junctions.t known ? (datenzoo.de/pugs/win2k.html ) 18:15
( r3263 ) 18:16
svnbot6 r3265, iblech++ | Removed the test for the "!" operator from misc_junctions.t as it doesn't exist 18:31
r3265, iblech++ | any more (p6l ruling). Corion++ for noticing this.
Shillo Hullo, folks. 18:39
stevan ingy: pong 18:43
eric256__ oo inheritance!!! ;) 18:51
Shillo In, or coming? :)
eric256__ from the journal it looks like it is here
i will definitly be testing that out ;0
stevan it is there
Shillo Oh, wooot! 18:52
stevan see Test::Builder::TestPlan
and I think autrijus put it in the wizards script too
Shillo submethod BUILD is also in? Wow. :) 18:55
stevan Shillo: yes, but I dont know if it works 100% as expected
I ran into some oddness the other day with it
Shillo is currently reading the blog, too... 18:56
Corion Did Pugs get faster? It seems to me, but it may be I haven't been watching it test stuff lately ... 18:57
Hmmm - not really, the last build took 308 seconds to test, so that isn't really "faster". 18:58
eric256__ does making it unoptimized make it *much* slower? 18:59
ingy stevan: what is the bestway to monitor the state of Perl6 OO 19:00
eric256__ read the journal
stevan ingy: wow 19:01
arcady though that gives you a delay of up to one day
Juerd ingy: Language? p6l
Shillo is in practice of starting pugs and chatting a little with its commandline. :)
Juerd ingy: Implementation? autrijus's journal
stevan ingy: I would go with Juerd on that
although I was thinking of maybe making a wiki page
Juerd ingy: p6l is summarized every week
ingy stevan: that would be nice
Juerd stevan: See docs/quickref instead
Corion The Pugs version number
:)
stevan Juerd: good idea
Juerd: maybe we can put that on the wiki too? 19:02
Juerd Probably a bad idea, until the wiki directly communicates with svn
eric256__ wikiw (with comments on what is implemented) then you can see language design and progress all in one spot
Corion It would be nice if somebody wrote some tests that determine (by succeeding/failing) the "current" Pugs version number as defined by the Pugs roadmap :)
stevan ingy: as I am sure you know, autrijus is hard to keep up with :)
Corion Who wants to go to the Wiki when we got tests and svn ?
stevan Corion: true
Juerd My back HURTS
stevan but people like pretty web pages :)
Juerd I don't know what I've done, but it hurts 19:03
Muscles, spinal column,skin
stevan Juerd: do you have a good chair?
Shillo looked into the Parser.hs. Shouldn't role and class rules be separate? Since roles can take 'template' parameters.
Juerd Good enough. Have had it for years.
Corion Juerd: Try sitting differently. Also, maybe start with the exercises in The Hackers' Diet - I do them and find them quite good against back aches
Shillo is itching to start hacking, just wonders about the approach. 19:04
Corion (but I found that my back aches if I don't do them for two or more days :) )
Shillo: Write a test. Write the feature. Check that the test succeeds. Commit.
Juerd Corion: The pain started a few hours ago and has gotten worse since
Corion Juerd: That sounds bad.
stevan ingy: why do you ask? you looking to start porting code?
Juerd Corion: I've sat in all possible positions in that period of time
Shillo Corion: Yeah, yeah, I know. :)
Corion Juerd: Maybe you lifted something wrongly
Juerd Probably
Can't think of what that'd be though
Tomorrow, at the first possibility, I'm seeing a doctor 19:05
Corion Juerd: Can you locate the hurting or is it mainly a "general" area?
Shillo Juerd: Get into really good shape. I know I didn't have any backpains while I trained 1 hr/day on average.
Corion Juerd: Yes. Consider a hot bath to relax the muscles but go see a doctor.
stevan heroin will do yah :P
Corion Sweet sweet crack will do too.
Juerd Corion: The entire right side hurts continually, and everything is sensitive
stevan Corion: he might go crazy from the crack and make it worse 19:06
Shillo Juerd: Recent and sudden? Oif.
Juerd: See doctor.
eric256__ nmake has paused for a very long time on Pugs.AST.Internals
Corion Juerd: The entire right side? That sounds like a pinched nerve. Go see doctor.
Juerd Shillo: It's a Sunday - will have to wait till tomorrow
That sounds bad.
stevan Juerd: I would go with Shillo, if it doesnt get better, go see a doctor
Corion Juerd: Yes, wait until tomorrow. People in the emergency station don't like people with back aches ...
Juerd Oh, and it hurts when I breathe in
stevan backs are importatnt things
Juerd So something must be stuck. 19:07
eric256__ yea doctors are great unless you need help, or its after 3:30pm or before 9am or the odd thursday they have off for golf. /me hates doctors
Corion Juerd: That sounds like a nerve that got pinched/stuck, yes... Maybe the hot bath could help but I don't know in such cases.
Juerd Well, I'm going to try the bath anyway
Corion (by relaxing and thus unsticking the nerve)
eric256__ make you wait 40 minutes, but if you are 10 late they skip your appointment.../me ends rant to find food
Juerd Thanks for the advice
Bath's filling 19:09
If it doesn't help, at least It'll clean :)
Shillo hmms at ./method syntax. It looks really cute, but it's really easy to typo as .method and it'll work 90% of the time.
Juerd Shillo: You are right. And as the current invocant is useful mostly to call other methods on, maybe it shouldn't be the topic 19:10
Shillo: Consult p6l re this.
Corion ./numerator / ./denominator
Juerd Corion: .first .. .last, $foo ?? :bar :: :baz, $foo ^ ~^ $bar 19:11
Corion: Having one character to have several meanings is common to Perl. You just have to get used to the new one. 19:12
Corion Juerd: Yeah :) When I finished -p / -n , I tried to replicate Abigails JAPH, but it didn't work for some reason ... But it'll make for great aesthetic differences, having different characters to work with now ;) 19:13
I have big hopes for the -ing operator :)
print %(/Ā§$-ing $error and $)(/%Ā§$-ing die.
Shillo Juerd: That makes sense. Sabotage .method when ./method is called for and I like it a lot. :) 19:18
cognominal what "Haddock" means in autrijus journal? 19:19
Corion cognominal: "Haddock" is the Haskell Perldoc
Juerd cognominal: pugs.kwiki.org/?Perl6Nomenclature
Corion ... they need to make up names for everything that Perl already has. Weird people. :)
Haddock also is the captain in Tintin 19:20
Juerd Kuifje.
cognominal yea, in #perlfr we have a bot that spout Haddock's insults 19:21
Alias_ cognominal: Are you parisian? 19:24
cognominal I was born in Paris, I live in Arcueil a close suburb south of Paris 19:26
Alias_ I've been trying to find the spelling for a bit of parisian slang
something like chegasse...
cognominal btw Herge, the Tintin'a author was from Belgium as many Francophone comics writers
Alias_ Pronounced "Shag Ass" to english ears, and roughly translated to me as "the bitch that does not pay" 19:27
cognominal chegasse?
Alias_: you are free to drop on #perlfr on irc.perl.org :)
Alias_ done
Shillo *yawn* Later, folks! 19:32
wilx whoa! 19:35
Question!
Is Perl6 going to have some kind of C++-like destructor?
Some method that would be called if object gets out of scope? 19:36
obra wilx: you mean like perl5's DESTROY ? 19:37
wilx Dunno how P5's DESTROY works, I mean like C++'s destructor :)
Alias_ P5 is probably close to C++ destructor 19:38
But it isn't called at a guarenteed time 19:39
wilx I hope it will. 19:42
I am so used to it from C++ :)
Alias_ I think we'd all like it available at guarenteed time 19:47
It pretty much is... 19:49
I've never been bitten by it
It's just that you have to avoid relying on it
Corion There are ways to get a callback when a scope is left, and there are ways to get a callback when an object is about to be garbage collected. The two events are unrelated in Perl6, but they are related in Perl5 20:00
svnbot6 r3266, Stevan++ | Perl::MetaModel - added a create_your_own_object_model.pod document explaining more about meta-classes through examples (warning it has not been spell/grammer checked, so it is kind of rough)
Corion s!grammer!grandma! 20:01
pjcj In perl 5, DESTROY is always called when an object's refcnt drops to zero. 20:09
nothingmuch pjcj: absolutely correct
pjcj Which happens when the last reference to it goes out of scope.
nothingmuch sub DESTROY { my $self = shift; $global_var = $self }; # object will have DESTROY called again when $global_var is destroyed 20:10
you get funky messages when you do that crap in global destruction
it's fun
Corion shakes his fist at the mod_perl developers. Don't write interactive Makefile.PL files :( 20:14
Alias_ it seems to get called twice regardless 20:15
even if you just $_[0]->something
But then I don't pretend to understand... if I can make it not crash or warn, that's enough for me 20:16
Juerd That helped. A little, but enough to breathe without pain again. 20:18
svnbot6 r3267, iblech++ | Fixed some typos and added the usual svn properties to 20:41
r3267, iblech++ | create_your_own_object_model.pod (Stevan++!).
stevan :D 20:53
my spell checker just wanted to change 'MetaClass' to 'meatballs'
Juerd So would I 20:54
stevan :P
Juerd: BTW - very nice solution on the ./method() thing 20:55
I really like that
Juerd stevan: Thank you 20:56
stevan: Do you dislike autoquoting on =>'s LHS, or is it not yet implemented?
stevan Juerd: why do you ask? 20:57
I use it all the time in perl5
but I think I got into the habit in perl6 because it wasn't implemented at first
Juerd stevan: cyoom.pod
stevan Juerd: ah,.. no I do it in there because I want to make sure they are seen as strings 20:58
Juerd stevan: And re mmc.pod, note that most formatters add even more indenting, even to verbatim paragraphs
stevan in contrast to the Class and such which are bareword pointers to Class instances
is pseudo perl6 :)
Juerd stevan: This makes the drawing not fit in a standard terminal, with pod2text
svnbot6 r3268, Stevan++ | Perl::MetaModel - create_your_own_object_model.pod - Now with imroved spelling and grammer :)
Juerd imroved spelling. Heh. 20:59
stevan :D
no spell checker for svn commit messages :)
Juerd: I will reformat those verbatim sections then 21:00
but it is dinner time for me now, so I have to run
Juerd Have fun 21:03
svnbot6 r3269, iblech++ | Reformatted some lines to make them <80 chars. 21:10
Juerd Thanks 21:29
svnbot6 r3270, mugwump++ | Hand-over version from Rod Adams 21:54
Darren_Duncan so I just noticed the fixes that Autrijus did last night in response to my reports, which I had to work-around in Locale-KeyedText 22:05
so thanks for those! 22:06
and also LKT was updated to replace my work-arounds with the actually desired syntax
okay, I notice that Pugs is parsing code in a case-insensitive manner, rather than case sensitive - that looks like a bug to me 22:13
or alternately, the problem is that it's not in strict mode by default, even though I said "use v6" at the top 22:16
eg, I declare a variable $message and then try to invoke it as $messAge and I don't get a syntax error 22:17
regarding the problem yesterday where I said "map:{ .key~'='~(.value // '') }" didn't work, it seems that only the "//" doesn't work; putting a "||" in its place will result in a compile, though not the desired behaviour 22:20
mugwump those sound like great tests just waiting to happen, Darren_Duncan ! 22:32
Darren_Duncan I just committed a few LKT cleanup things
essentially finishing what Autrijus started yesterday in LKT after adding some required Pugs features
mugwump LKT? 22:33
oh, Locale::KeyedText
Darren_Duncan my abbreviation for Locale-KeyedText
I also noticed that Hash/hash are interchangeable in a 'return' statement but Array/array are not; only the latter works. 22:34
at least interchangeable meaning compiles
capital A Array does work in other places
mugwump I've heard of lots of such weirdness to do with how slurpy arrays works, I believe that the details of it are still being nutted out... capturing your experience in a test script will therefore be helping charting the 'corner' cases 22:35
not that I'm telling you anything new there of course
anyway, what about SRT?
Darren_Duncan that will come asap
its much larger and more difficult
I will commit it in pieces 22:36
since it has a multi-layered api, I'll just commit the lowest level api first and work my way up
mugwump a good plan..
Darren_Duncan I have about 4-5 large revisions of the perl 5 version to factor into the last perl 6 port I did 22:37
svnbot6 r3271, Darren_Duncan++ | Locale::KeyedText - minor updates to 5 methods as further corrections or cleanup to replace workarounds with what was intended but unsupported last day
Darren_Duncan whereas with LKT there was only 1 revision done since the last port
I plan to have it in this week though
my very next task, now, is the LKT test suite - this is the main thing that changed in that 1 perl-5 revision 22:38
the 1 test file was split into 9 files
working ...
mugwump cool. Hey, did you ever get it to handle Locale::MakeText-style strings? 22:39
or does it start and end at GetText-level stuff? 22:40
Darren_Duncan it's different from both of those 22:41
I haven't tried to make it like the others
where appropriate that may come later
mugwump ok. which languages have you successfully internationalised to? any far or middle east languages?
Darren_Duncan I did a French sample, but I don't speak french so its rough 22:42
the template is there, with one file per language, and its a UTF-8 file, so those in the know can make ones for other languages
or I would eventually 22:43
cognominal Darren_Duncan: I did not read the backlog, but if you need help for French, go to #perlfr in irc.perl.org and ask help 23:00
clkao cognominal!
cognominal: fyi, your svk bug is fixed 23:01
cognominal which one?
I don't remember filing a bug? :)
clkao switch
23:02 sbkhh is now known as Odin-
clkao bah, someone with similar id 23:02
sorry
cognominal you may speaking of Alias :)
svnbot6 r3272, chromatic++ | Added more tests for Test::Builder::Test::Pass. 23:17
r3272, chromatic++ | Fixed a display bug in test report() methods.
Darren_Duncan cognomial, the French in question was a few examples in my documentation; nothing too important, and the original English wasn't that great grammar either 23:42
I'll keep your suggestion in mind when I have any real localization to do, though