6.2.11 released! | pugs.blogs.com | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | < audreyt> my fingers juxpatosed
Set by nothingmuch on 24 February 2006.
00:16 K joined 00:22 robkinyon joined 00:24 Khisanth joined
svnbot6 r9205 | gaal++ | a few more updates to the Peek talk, mostly arrangement. 00:32
r9205 | gaal++ | audreyt++ and nothingmuch++ for the help.
01:09 lao joined 01:10 vel joined 01:33 putter joined
putter gaal: non-toy lisps do indeed have parsers. called "readers". 01:36
pasteling "putter" at 66.30.119.55 pasted "an example lisp reader (from bigloo scheme)" (657 lines, 22.3K) at sial.org/pbot/16066 01:40
putter "interesting bits" are about half-way down. 01:41
perhaps some non-toy stack language doesnt have a parser. postscript doesnt have much of one. 01:43
problem is non-toy => lets have lots of types, and distinguish them syntactically => have at least a rather parser-like tokenizer 01:45
01:58 rgs joined 02:07 rgs joined
putter end of day. drat. tomorrow & 02:12
02:59 justatheory joined 03:04 oylenshpeegul joined 03:11 oylenshpeegul left 03:14 K joined 03:20 stevan_ joined 03:23 locksy- joined 03:25 locksy- is now known as locksy 03:42 joepurl joined 04:23 Cryptic_K joined 04:31 orafu joined 04:53 beppu_ joined 05:17 K joined 05:18 SamB joined 05:38 clkao joined 05:50 Nouk joined 06:01 Smurf-BR joined
Smurf-BR how can i get an archive from the internet using perl? 06:01
PerlJam Smurf-BR: I think you're on the wrong channel. 06:02
Smurf-BR huh
sorry. 06:03
06:03 Smurf-BR left
obra heh 06:09
06:25 Fran joined 06:26 Fran left 06:45 GeJ joined 06:47 nothingmuch joined
nothingmuch morning 06:49
06:51 spo0nman joined
nothingmuch spo0nman: are you the guy who gave the ruby talk yesterday? 06:57
talks?
07:03 Aankhen`` joined 07:11 tcliou joined
GeJ morning all 07:12
07:12 bsb joined 07:14 KingDiamond joined 07:18 fandango joined 07:21 szabgab joined
svnbot6 r9206 | audreyt++ | * last-minute JIT fixes to gaal talk 07:23
07:25 tcliou joined
spo0nman nothingmuch: NO ... I didnt do anything. 07:27
nothingmuch: was he a india guy with long hair? 07:28
nothingmuch: that would be KingDiamond. 07:29
07:30 iblechbot joined, shmar joined
shmar morning all... 07:30
07:34 K joined
nothingmuch spo0nman: i just saw your yahoo ip 07:38
hola shmar
shmar hiya...
07:40 marmic joined 07:47 drrho joined 08:00 xinming joined 08:31 szabgab left 08:36 ghenry joined
spo0nman nothingmuch: yeah! we work together ... I dont do ruby though. 08:41
nothingmuch: you're at the conference in israel. 08:42
nothingmuch yes =)
small world ;-)
spo0nman nothingmuch: :) 08:43
08:44 shmar joined 08:48 KingDiamond joined 08:50 xinming joined 08:54 kane_ joined 09:07 TimToady joined
azuroth hi TimToady 09:11
TimToady greetin's
anatoly TimToady: thanks for explaining the word 'tuits'! Even though you wrote about it 7 years ago or so :)
Google found it for me today :)
TimToady You're certainly welcome. I'm sure I wasn't the first person to explain it though...
azuroth I found somewhere selling round plaques when I was trying to figure out the meaning 09:12
anatoly I grokked its meaning from context, but never knew where it came from 09:17
somehow I had weird associations with "twit".
09:38 Kuon joined 09:40 elmex joined 09:42 mj41_ joined 09:46 kisu joined 09:56 nnunley joined
TimToady audreyt: the idea that /[|foo]/ should mean /[<fail>|foo]/ is...interesting... 10:17
10:25 Nouk joined
ingy TimToady: greetings. What are you doing in .il? 10:45
TimToady ingy: wonderful, now that I'm done with my talks, and almost done with my cold. 10:47
10:48 bsb joined
ingy TimToady: I hear you are coming to Tokyo? 10:48
I'm living in Taiwan these days so no Tokyo jetlag for me! 10:52
TimToady Well, at least the bad jet lag is coming back for me. I don't mind flying west since it's just staying up later... 10:54
10:56 christo joined, christo left
ingy hmmm, I recently flew East from Taipei to SFO and somehow also cured it by staying up later 10:56
the flight left at 7pm and arrived at 2pm of the same day (by crossing the IDL) 10:57
I stayed up until midnight and then slept until 8am
I did that every night afterwards 10:58
the hours leading up to midnight were a decreasing hell for 5 days
my jetlag going back west to taiwan, which I'm in the middle of, seems harder. Probably because I have a cold, and pushing staying up longer seems counterproductive 11:00
then again, in Taiwan it seems there are no set hours of sleep vs hacking. audreyt and friends showed me that ;) 11:01
11:02 rantanplan_ joined, r0nny joined
lypanov umm 11:10
lypanov ponders and plots
is rules ready for e.g parsing ruby?
11:20 nnunley_ joined 11:23 netanya_goy joined 11:45 nnunley joined, elmex joined 11:47 anatoly joined, shmar joined 11:49 KingDiamond joined 11:57 iblechbot joined 11:59 putter joined
putter good morning all 11:59
shmar morning
putter lypanov: re ruby parsing... maybe. at least for another couple of days, the only rules are pugs on pge. you have to keep the grammar flat (unless the hackathon changed things, rules are in a single flat global namespace). might work. 12:02
lypanov: I've a partial ruby grammar extracted by running ripper over rubicon. and the extractor, so you could do an up-to-date rb1.9 pass. 12:05
err, s/I've/I believe I have/
let me know if you care. ;)
azuroth rubicon... sounds like magic 12:06
wait, ripper sounds like the magic one 12:08
putter audreyt, etal: re parsing, one oddity. when parsing a circumfix token, pge treats the second half as a separate CLOSE-type token. When they show up, it checks that the close token matches that of the operator on top of the stack. But...
azuroth: :) rubicon is a ruby test suite. ripper is a mutant version of ruby's yacc grammar, so you can get (parts of - it's a work in (very slow) progress)) the parsetree. while ruby is quite dynamic, it's syntax isnt, so it's actually a close match to the source file. 12:11
azuroth ahh. it sounded a bit like ripper just went through the whole rubicon and made a grammar 12:12
12:14 lilo joined
lilo hi.... is anyone around who can provide me some clarifying information on the accessibility and use of feather.perl6.nl for acccess to freenode? 12:14
putter ... but, the CLOSE tokens for all the circumfix/etc operators are tossed on token list at definition time, and left there. I may well be confused, but this seems "not the right thing". I would have thought the CLOSE token should only be active when it's operator is on top of the stack.
12:15 Aankh|Clone joined
lilo we noticed a connect limit was hit in the last few hours and I want to provide additional connects if possible 12:15
I can come back if no one has any information 12:16
azuroth Juerd would know best, I believe
12:17 SolidState joined
putter which means if you separate the tokenizer from the parser (pge doesnt, so it doesnt arise), you need a backchannel from parser to tokenizer. and while the tokenizer can optimize it's the rest of it's tokens (eg, using a trie), the "current close" token is going to be changing with say every other token. 12:17
eeep.
lilo I can try to check back later 12:18
azuroth I guess so, lilo
lilo if anyone with information could /msg me when they see this, I'd be obliged 12:19
I may be a bit busy later
lilo waves
12:19 lilo left 12:21 levengli joined
putter azuroth: the idea is rather than extracting a grammar from yacc by hand, you just get a lot of parse trees (a lot meaning good coverage of the language/grammar, which rubicon is ok for), and simply grovel over them ("ahh, node x can also have a subnode y, add it to the list"). so with little effort, you can get the core of a grammar. and track grammar changes without a lot of pain. 12:21
azuroth ahh, cool 12:22
shmar bbl 12:30
blm Is there an interface to load C libraries in pugs? Can someone point out where it is? 12:39
lypanov blm: with ffi i guess. no idea how to tho unfortunately 12:41
blm lypanov: OK Thanks :-)
azuroth ?eval [/] (1,2,3) 12:51
evalbot_9206 1/6
azuroth is there a way to fold right-associatively? 12:54
?eval (1,2,3) [/]
evalbot_9206 Error: unexpected "[" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
broquaint (1,2,3) <<[/] 12:57
?eval (1,2,3) <<[/]
evalbot_9206 Error: unexpected "<" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
azuroth ?eval [/] (1,2,3).reverse
evalbot_9206 3/2 12:58
azuroth ;-p
not quite
broquaint Where's the hyperoperator there?
Are has the hyperoperator changed from <</>> to [] ?
azuroth hmm. I didn't think fold was a hyper
broquaint s/Are/Or/
xinming ?eval my @a = (1, 2, 3); @a>>++
evalbot_9206 Error: Can't modify constant item: VInt 1
xinming hmm 12:59
broquaint Brain teh b0rk. Ignore me.
xinming ?eval my @a = [1, 2, 3]; @a>>++
evalbot_9206 Error: Can't modify constant item: VInt 1
azuroth but I don't think single-sided hypers are done, yet
?eval my @a = [1,2,3]; @a >>+=<< 1;
evalbot_9206 Error: unexpected ">" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
azuroth ?eval my @a = [1,2,3]; @a >>+<< 1;
xinming yes, there are many parts haven't been covered yet
evalbot_9206 (4.0,)
azuroth ?eval my @a = (1,2,3); @a >>+<< 1; 13:00
evalbot_9206 (2, 3, 4)
13:03 Aragone is now known as Arathorn
lypanov p/win 6 13:13
13:13 chris2 joined
lypanov eep 13:13
13:20 shmar joined 13:22 kolibrie joined 13:26 alexe joined 13:39 SolidState joined 13:54 qwacky joined 14:00 Qiang joined 14:12 frobnitz joined 14:18 f0rth joined 14:24 hexmode joined 14:30 pdcawley joined 14:32 nothingmuch joined
pasteling "nothingmuch" at 192.118.100.254 pasted "S12 patch for Match coerces to result" (95 lines, 4K) at sial.org/pbot/16081 14:32
nothingmuch the problem with audreyt: 14:33
"Whenever you are going to tell audreyt something, assume she already knows it"?
this is a paradox though
if you don't tell her you can never really be sure 14:34
audreyt heh, it's just I've been keeping an eye on IRC
my real brain is the IRC hivemind
TimToady I put it in the same category as taking your umbrella to make sure it doesn't rain.
nothingmuch yes
audreyt the laptop and my wetware brain are just L1 and L2 caches
nothingmuch i agree
that's why i bought that toothbrush
i lost my toothbrush, so i went to the store, bought a new one
and then I found it 14:35
TimToady whatever works...
lypanov aahh. genius
now i have an excuse for getting a new laptop
"i lost the old one, needed to find it quick"
nothingmuch lypanov: svk also functions as delayed write
rgs you wouldn't have found your toothbrush if you didn't bought another one 14:36
nothingmuch so even if your bus is not working right now and you can't *read* new data from your hive brain....
rgs: exactly =)
lypanov nothingmuch: svk doesn't love me unfortunately :(
rgs so money disantangles the wave function of toothbrushes
nothingmuch lypanov: darcs! 14:38
darcs is lazy write by default though 14:39
so it doesn't fit well with the my-brain-is-on-the-internet-and-i-have-no-access metaphor
lypanov nothingmuch: darcs doesn't integrate so well with svn 14:40
and its slow, horrifically so
nothingmuch i have never met darcs' slowness 14:41
but i agree
for svn it's not good enough
that's why I use both
14:41 cdpruden joined
lypanov (its a 440mb repo i work with, and svk handles it in style, other than strange spurious merges) 14:41
shmar SVN is definately the best for bad line connectivity...
audreyt nothingmuch: 14:42
lypanov i should scrap the repo and start from scratch, i think i messed it up while learning the syste
shmar "The script is written by microsoft" - That's how they always like it...
lypanov s/$/m/
audreyt sub f { say $x.from }; my $rv = m//; f($rv); 14:43
nothingmuch: why should this die? 14:44
nothingmuch: I'm not comfortable of junctive autocoercing.
nothingmuch die?
audreyt my suggestion was just to let the result object handle coerce.
nothingmuch oh
it shouldn't
well
audreyt your patch: 14:45
+Additionally, the C<Match> object automatically coerces into a it's underlying
+result whenever it's sent into a function
nothingmuch sub f ( Match $x ) { }
the reason is:
audreyt we tried that with pairs.
ain't working.
ayrnieu discovers Perl6::Bible
nothingmuch okay
fair enough
my point is:
it's more likely that someone will forget to coerce
than that someone will have nice annotations
and this could leak match objects into ASTs and stuff
audreyt now, to _typed_ functions, I'm fine with that
nothingmuch yeah 14:46
audreyt because they call coerce
nothingmuch exactly
audreyt but juctive autocoercion on just any items...
nah.
nothingmuch junctive autocoercing is not my favourite either
in fact, i hate it
but I've learned to accept it, and i just feel that this is consistent
without pissing me off =)
(I am indifferent about typing since I thinkin typing is good documentation anyway) 14:47
(that is, i will add types, i don't care if Match autocoerces or just coerces)
(but others might not agree, and larry seemed to like autocoercion)
TimToady: comments?
14:47 vel joined
audreyt I like autocoercion 14:48
just not junctive ones.
nothingmuch wait
explain not liking junctive ones
is this a digression?
or directly related to my patch?
audreyt &f := { $_ } 14:49
&f := -> SomeType $_ { $_ }
junctions explode on both
but I don't want match explode on the first.
nothingmuch okay 14:50
again, i'm indifferent
since I will SomeType it anyway
audreyt cool then
nothingmuch but larry seemed to like the first too
when I brought it up
(i thought that's what you meant yesterday)
audreyt in the first case, we reasoned that Junctions are not items 14:51
I'm not comfortable with saying Matches are not itms.
14:52 pdcawley joined
nothingmuch aha 14:52
i agree
it isa Item
but...
it might not DWIM
and that's not my decision
=)
TimToady wouldn't multi delegation allow it to be an Item? 14:53
audreyt sure will, but then it'd not be nothingmuch's multi
TimToady (presuming --> Type is possible multi tiebreaker)
audreyt which makes it explode on any unsuspecting function
just like junctions do
svnbot6 r9207 | audreyt++ | * openFile now turns the autoflushing bit on with a file, as
r9207 | audreyt++ | otherwise it doesn't get closed upon program exit.
nothingmuch not explode
just unwrap
Match objects unwrap
mc parsec wraps
audreyt but why function call boundary?
it means it explodes on given 14:54
on for
on if
nothingmuch hmm
i see
i agree with that being broken
audreyt again, we tried with pairs
it doesn't quite work out
nothingmuch but "remote" code probably wants the results
the solution can change
i don't mind
in fact, i don't even feel the problem 14:55
i'm just noting that the problem might exist:
audreyt if they want to do anything with it, they'll probably demand a type down the call chain
nothingmuch Match objects instead of nodes in ASTs
yes, presumably
but it still doesn't DWIM
audreyt but that's fine, as they autocoerce still
lypanov ooo.its snowing
audreyt I think it DWIMs
that saves us the trouble
nothingmuch hmm
audreyt of inquiring annotated positions in notes
I mean nodes
nothingmuch well
whatever, i really don't care ;-)
i will annotate
and those who don't can learn to do that 14:56
we'll tell them "performance" if they don't by "self documenting"
audreyt well
<moose> { MooseContainer( $<moose>.() ) }
you are calling
$<moose>.() as MooseContainer
so that's actually an explicitly coerce call 14:57
so you win anyway
nothingmuch class nothingmuch { has $TimToady handles &discussion }
audreyt regardless of it acts junctively or not
nothingmuch i know i win =)
audreyt "you can solve any problem with one extra level of redirection"
I mean, indirection
wait, I do mean redirection
wolverian (does 'handles' take &s?)
nothingmuch =)
wolverian: i dunno
audreyt wolverian: problly not.
nothingmuch "discussion"
TimToady except the problem of too many levels of indirection...
wolverian ok, just checking :) 14:58
nothingmuch unless it's a multi
audreyt handles <discussion>
nothingmuch right
audreyt nothingmuch: &discussion isn't even in scope
TimToady or redirection...
nothingmuch audreyt: unless it's a multi =)
that's why i got confused
audreyt where it still isn't in scope :)
nothingmuch because we were discussing 'multi handles'
audreyt (you closed the class definition)
nothingmuch isn't it in GLOBAL::
wolverian do we need a sigil for not-yet-declared subs now? :)
TimToady What't the expected return type of this discussion?
nothingmuch ah
yes
TimToady: Either Yes No
data Yes = Yes String -- reasoning 14:59
(that was for lumi)
sorry
newtype
or just type?
audreyt I got the repatch. 15:02
nopasteing.
pasteling "audreyt" at 192.118.100.254 pasted "S05: only typed coercions explode Matches." (48 lines, 1.7K) at sial.org/pbot/16083
audreyt wolverian: no, thank $deity, no. 15:05
wolverian ;) we don't have Ā¢ anymore either?
audreyt you mean ?foo ? 15:06
svnbot6 r9208 | audreyt++ | * Add Gaal's peek.spork to docs/talks/README.
r9208 | audreyt++ | * In the talk slides, the $var in rules should really be
r9208 | audreyt++ | $<var>. Mea culpa.
audreyt it's boolean coercer
wolverian no, I mean the cent sigil. sorry if that didn't come out right
(utf8 here)
audreyt oh. no, it's ^Foo now, which talks about the metaclass ("real" class object)
(not yet implemented inpugs) 15:07
wolverian ah. right. and Foo is the undefined object, or so. I need to think my way through the implications there.
audreyt Foo is the prototypical object
that is both false and undefined by default
but nevertheless has an .id. 15:08
wolverian what's .id?
audreyt it's what ruby calls .object_id.
or .__id__ 15:09
wolverian hm. so .ego is..
chris2 or .id in <1.8 without warnings :)
15:09 alexe left
audreyt chris2: yeah. why is it deprecated anyway? 15:10
namespace protection?
chris2 too easy to nameclash, i think
audreyt I s'ppose
wolverian I'd imagine db-type things would like .id
chris2 yeah
like AR, which clobbers it by default (suckers)
ayrnieu audreyt - Perl6::Bible::contents should probably have this instead of line 138 (right after: close MOD;) $text =~ s/^.* \Q =head1 \s CONTENTS \E (.*?) \Q =head1 .* $/$1/sx or die "Can't find contents\n"; 15:11
audreyt active records?
chris2 yep
15:11 pdcawley joined
ayrnieu audreyt - 5.8.6 , at least, parses what you have in such a bizarre way that it acts like: $text = "(.*?)" 15:11
nothingmuch instance Monad AcmeSOmethingOrOtherAgent
audreyt ayrnieu: fixed, uploading 15:12
15:12 bsb joined
audreyt TimToady: the S05 patch looks okay? 15:12
ayrnieu oh, but those \Q and \E aren't necessary, sorry. Artifact of debugging. The whitespace and /x does the trick. 15:13
TimToady I suspect .id is really .^id, assuming that .meta.id actually still 15:15
has access to the self that called it.
So if the user overrides .id, they can still get at the .meta.id.
Though I suppose some people could get burned writing .id and then 15:16
nothingmuch $?CALLER::SELF ?
TimToady getting it overridden...
nothingmuch i think we also need $?CALLER::INVOCANT
$?INVOCANT ::= $?SELF
that reads better whne it's not *really* "my self
"
in the english sense
audreyt TimToady: having .meta.id handling self is quite dangerous 15:17
it'd mean that no two .meta are alike
which leads directly to singleton classes
which I'm not sure S12 allows as of this moment :) 15:18
TimToady I'm not suggesting that it be the invocant of .meta, just available. 15:19
integral there's not something simple like: $obj.Perl6::IdRole::id; ?
15:20 levengli joined
TimToady audreyt: patch looks good 15:20
audreyt TimToady: available as a property?
nothingmuch so the metaclass id is $foo.meta.^id ?
audreyt or as $+id?
nothingmuch and ::Class.^id == ::Class.id ?
TimToady caller something might be adequate
er, except we're called directly, hmm. 15:21
nothingmuch btw, I changed my mind about protos being undef
audreyt indeed.
nothingmuch my Dog $fido;
$fido.meta.methods; # this is still very useful
but the problem is that:
if $fido has been .= newd
then it's .meta
but if not, than it isn't
which is slightly not like the '.isa' test
but nevertheless, it's still useful 15:22
TimToady I don't see why it wouldn't still be .meta. It's just the .meta of something that doesn't exist.
audreyt right.
$fido has an .id even it it doesn't have an .defined.
so obviously it has a .meta. 15:23
nothingmuch isn't ::Dog the instance that *is* Dog?
audreyt TimToady: if we have
class Dog { has $head_count = 3 }
does
Dog.head_count
return 3, or undef?
TimToady undef 15:24
nothingmuch and 'my Dog $fido; $fido.head_count' ?
TimToady lr\\
or "undef method"
should throw an exception.
audreyt yup.
meaningful accessors are only generated for instantiated objects where there's something to access. 15:25
nothingmuch so is ::Dog the same?
audreyt cool. I think that makes sense :-)
levengli at the risk of repeating myself (i forgot :-[), where can i find the equivalent to the camel book on perl6?
audreyt nothingmuch: yeah.
nothingmuch and if so, why is ::Dog.meta the same as Dog.new.meta?
isn't it more like Dog.new.meta.meta?
audreyt levengli: first, run this short perl6 program 15:26
sleep((1..50000000).pick)
then go out and buy a camel book :)
shmar :) 15:27
15:27 szabgab joined
audreyt but seriously, the Synopses are currently the closest we have 15:27
nothingmuch that's only a year and a half
levengli aghhhhh. too much to read. all my knowledge is down the toilet
audreyt levengli: dev.perl.org/perl6/doc/synopsis.html
nothingmuch hola szabgab
szabgab rehola
wolverian hm. is there a .= type syntax to do $foo *= $foo.bar;
TimToady nothingmuch: because every Dog has the same metaclass whether it exists or not. 15:29
audreyt mmm *.=
ayrnieu levengli - the Perl6 Camel will come in time.
wolverian audreyt, yeah. then >>*.= ... hrm. :)
15:29 SamB joined
audreyt [*%$/{}] 15:29
wolverian $work_left / [+] @workers>>*.= tuits
audreyt starts to resemble APL 15:30
nothingmuch TimToady: so please correct these definitions:
Dog.new is an instance of dog
::Dog is an instance of dog, with no value
Dog is an instance of the metaclass
(probably Class)
::Dog is the prototype of Dog.new 15:31
TimToady No, ^Dog is the instance. Dog is either synonymous with ::Dog or a compile time error because Dog hasn't been declared.
ayrnieu audreyt - not quite, at least not quite J. J has special syntaxes for 'forks' and such, which rely on functions being definitively monadic or dyadic.
15:32 levengli left, levengli joined
nothingmuch ah 15:32
so my Dog $fido desugars to ^Dog?
15:32 lisppaste3 joined
nothingmuch okay 15:32
15:32 levengli left
audreyt no, it desugars to 15:32
my $fido ::= ::Dog; 15:33
as well as put a constraint on the container $fido.
nothingmuch oh
it binds
i thought it assigns
err
please explain that
audreyt hm, I'm wrong. it has to be a compile-time assignment.
not binding.
nothingmuch how can you do container assignment at compile time with a class name as the rvalue
oh
okay
=)
compile time assignments don't make sense... or do they? 15:35
like... just for constants? 15:36
in which case the value is cow'd?
or just read only?
15:36 szabgab left
TimToady doesn't matter as long as the semantics are preserverd. 15:36
when the assign happens depends on the declarator 15:37
constant = compile time
state = first time
has = build time
audreyt my = each time closure is entered 15:38
15:38 levengli joined, vel joined
nothingmuch hmm 15:38
that's a nice sort of hierchy
is it found verbatim in e.g. S04? 15:39
15:39 levengli left
audreyt no ;) 15:41
nothingmuch is anyone patching? 15:43
TimToady my should assign at ordinary assignment time because you could have multiple of them.
15:44 levengli joined, levengli left 15:45 SolidState joined 15:46 netanya_goy joined
nothingmuch netanya_goy: cure nick 15:47
15:47 levengli joined
nothingmuch $fido; BEGIN { = ::Dog } 15:47
SolidState Is chomp implemented in the latest pugs release? 15:48
nothingmuch .new
SolidState nothingmuch: is that an answer to me? 15:49
nothingmuch SolidState: no 15:50
sorry =)
SolidState nothingmuch: no you were not answering me, or no chomp is not implemented yet? 15:51
15:52 levengli left
nothingmuch meta meta meta no 15:52
seriously though
that answer was not to you =)
check the smoke tests 15:53
smoke.pugscode.org/
audreyt SolidState: I think chomp is implemented as in p5
nothingmuch it probably is in the last release
audreyt sorry
it's actually implemented correctly
as in P6
which returns the chomped thing
to do an implace chomp, sayso:
$str .= chomp; 15:54
15:55 szabgab joined, szabgab left, levengli joined 15:58 _SamB_ joined
SolidState audreyt: thanks, using chomp as you suggested works. Thanks! :) 15:59
16:01 szabgab joined
ayrnieu SolidState - quick, quick! How would you perl6ly write chomp($foo = <FH>) ? 16:01
16:01 epsalon joined
SolidState ayrnieu: $foo .= <FH> 16:01
ayrnieu: ?
szabgab everyone invited to #osdc.il for the auction soon
ayrnieu SolidState - does that chomp? 16:02
audreyt you can order auction items remotely?
ayrnieu SolidState - also, <> operates differently for perl6...
epsalon only if you pay and collect them locally.
16:02 szabgab left
stevan_ how much is the starting bid for a lock of nothingmuch's hair? 16:03
shmar steven_: LOL! 16:04
ayrnieu SolidState - I would guess: =$foo .= chomp 16:05
wolverian handles autochomp by default, afaik 16:06
SolidState ayrnieu: any idea why "for chomp($input.readline) { ... }" doesn't work as expected?
wolverian (i.e. the :chomp layer, or whatever its name)
SolidState wolverian: noope
wolverian: nope*
wolverian SolidState, nope? not in pugs or in perl6?
SolidState wolverian: pugs
wolverian ah, well. that's implementation.. ;)
SolidState wolverian: 6.2.11 at least. Audrey changes things awefully fast :) 16:07
16:08 levengli left
SolidState ayrnieu: any idea about my question? Shouldn't "chomp" when given an array return an array of chomped elements? 16:08
audreyt actually, autochomping should be the default 16:09
and we havn't implemented them, hmm.
the test is t/builtins/io/readline_chomped.t 16:10
SolidState ayrnieu: in case you're wondering, right now the code I wrote returns just the first line of $input ...
ayrnieu SolidState - for "hello" { ... } 16:11
perl5 is the same, with: perl -le 'for (chomp($foo = <>)) { print $foo }' 16:12
audreyt maybe I turn on autochomping now 16:13
rgs ayrnieu: surely you didn't mean that
audreyt and see how many hundreds of tests break
ayrnieu audreyt - you'll break use.perl.org/~rafael/journal/26426 , but it's probably for the best in the end :-) 16:14
rgs - why didn't I?
SolidState - try: while chomp($input.readline) { ... }
rgs not a valid perl 5 code that does something useful.
audreyt ayrnieu: no I won't, chomp is a projection
ayrnieu (actually, autochomping won't break that bot)
audreyt which means it's idempotent for the second application onwards 16:15
rgs and well, my irc bot is not really "in production" right now.
ayrnieu audreyt - *nod*, "assumes !autochomp" got crossed with "breaks on autochomp" for a moment.
rgs use more 'chomping'
PerlJam Is it just me or is there a lull in the perl6 universe? 16:16
integral PerlJam: filled by chromatic's journal post?
audreyt PerlJam: like, now?
rgs lull before the tempest ?
PerlJam rgs: hopefully :-)
ayrnieu searches for antonyms of 'lull' 16:17
PerlJam hasn't read use.perl today
integral it's another "everyone hates perl6, but it's okay because they're not contributers" :-P
ayrnieu oh, that happened recently in perlmonks 16:18
also a post of chromatic's.
audreyt pops the journal-reading stack
okay, so autochomping doesn't seem to break too many stuff. 16:19
PerlJam wants to ++ Ovid's comment to chromatics journal entry
audreyt I'm committing it. brace for impact
TimToady shall I smoke it? 16:20
ayrnieu felt guilty, reading Dan's quitting-parrot blogpost.
audreyt SolidState: "Offer Kaye" is your realname?
PerlJam ayrnieu: why? You didn't have anything to do with it
(and nothing you could have done would have made any difference I think) 16:21
ayrnieu PerlJam - well, I don't like thinking that I couldn't have done anything to make a difference.
PerlJam ayrnieu: not all problems have solutions. *Especially* social problems. 16:22
SolidState audreyt: yes
audreyt cool, welcome to AUTHORS. you have a commit bit yet?
SolidState audreyt: lol :) no i don't
xerox audreyt deserves an hug. 16:23
audreyt oferk at oren dot co dot il?
PerlJam predicts a commit bit is in SolidState's immediate future
SolidState audreyt: god no, where did u get that?
audreyt: offer . kaye AT gmail . com
audreyt okie 16:24
SolidState audreyt: seriously, where did u get the oren email? I thought I expunged all references to that...
audreyt google ;)
SolidState: did we meet in realspace today? 16:25
ayrnieu SolidState - indeed, third hit for 'Offer Kaye'.
svnbot6 r9209 | audreyt++ | * Pugs.Prim: $fh.readline and =$fh is now autochomping, as
r9209 | audreyt++ | 1)S29 is made canonical and 2)it says autochomping is default.
r9209 | audreyt++ | Expect test breakage (which we'll fix.)
r9209 | audreyt++ | Suggested by: Offer Kaye
r9209 | audreyt++ | * t/builtins/io/readline_chomped.t: unTODO passing tests.
audreyt SolidState: in any case, a commit bit is on your way. welcome aboard! :) 16:26
xerox: *hugs*
SolidState audreyt: I'm the annoying guy with the sweater who asked you about the close problem
audreyt ah right. it works in the pugs trunk
SolidState audreyt: answered my next question :)
audreyt TimToady: a smoke would be lovely, yes :) 16:27
SolidState audreyt: Thanks for the commit bit. I think ;-)
audreyt <- battery rapidly going out, unless nothingmuch can hook it up for her
16:27 SamB joined
SolidState audreyt: cigarettes are not healthy 16:28
audreyt I've never ate one.
SolidState audreyt: what's your laptop? an ibm?
audreyt no, asus m2c
SolidState audreyt: ahh, 2 bad 16:29
audreyt only advantage is that it's cheap, which is important as it's my 3rd asus M2 laptop so far
I think in only 1.5yrs
they are replacable parts
16:29 m joined
SolidState audreyt: better close any open work before you loose it... 16:30
audreyt 162 committers now, mmm.
SolidState: it's already uplinked, so I'm safe now
ayrnieu now that there's nothing at all clever about reading from a filehandle and chomping at the same time, we are all freed to be clever elsewhere. 16:32
audreyt and all it took is to take off a (++"\n") call 16:34
(because Haskell already autochomp, I was stupid enough to add the line ;))
SolidState audreyt: does this make the "-l" (small-L) flag totally obsolete? 16:36
audreyt I s'ppose so
so we can free it to mean linking 16:37
;)
rgs hmm -l is already ignored, no ?
ayrnieu well, $\
audreyt indeed.
rgs++ # _very_ long term memory 16:38
rgs no, I just tried to use it once :)
ayrnieu Something indistinguishable from a very long term memory is probably good enough :-)
audreyt hm 16:39
$ ./pugs -Z
pugs: -Z: openFile: does not exist (No such file or directory)
instead of
$ perl -Z
Unrecognized switch: -Z (-h will show valid options).
arguably broken behaviour?
(it was trying to read from the program named -Z)
Perl6::Bible 0.30 released meanwhile btw. 16:40
svnbot6 r9210 | audreyt++ | * ./pugs -l totally means nothing now. SolidState++ for noticing this,
r9210 | audreyt++ | and rgs++ for pointing out that it wasn't doing anything useful.
integral oh, I actually have a sort of argument parsing rewrite floating around... 16:42
audreyt oh ok, I'll just put -l as -w then 16:45
i.e. ignored for now
do you think a warning is warranted?
"you said -l, you don't need to say it now, but I'll run your program anyway"
anyway, I'll just let it silently drop now. 16:47
rgs notices that -p and -l already chomp $_ 16:48
audreyt you mean -n.
rgs yes.
svnbot6 r9211 | audreyt++ | * as ./pugs -l no longer desugars into anything, put it to
r9211 | audreyt++ | our list in Pugs.hs as "ignored silently, may uselater" flags.
r9211 | audreyt++ | Not sure if a warning is warranted.
audreyt then they do not to do it now... I'll rerun t/pugsrun/03-dash-p.t and -n 16:50
SolidState audreyt: if you know mjd, tell him about this (500 nis for his book :)) 16:53
audreyt SolidState: he's yrlnry on irc.perl.org :) 16:55
interestingly,
$_.=chomp 16:56
can be written as
.=chomp
SolidState audreyt: Also as "chomp;" 16:57
svnbot6 r9212 | audreyt++ | * Pugs.Run.Args: Now that autochomping is the default,
r9212 | audreyt++ | we don't need to do .=chomp anymore for -p and -n.
ayrnieu for $foo { .=chomp; .=frobnicate('counterclockwise') } 16:58
a bit more readable, and it doesn't have second-class citizens. 16:59
audreyt mm sndclsppl?
what does that mean in this ctx? 17:00
17:00 _SamB_ joined 17:13 justatheory joined
integral try seems to be used pretty liberally in the parser :-/ 17:14
17:14 aufrank joined
aufrank hello! 17:14
stevan_ agrees with "Audrey hands out commit bits like a drug dealer drumming up more business." ;) 17:15
Pugs is My CracK!!!!!
wolverian ayrnieu, s,for,given,
imho. maybe. 17:16
ayrnieu wolverian - no, that's better.
audreyt ... OSDC.il just auctioned off a commit bit
to pugs
from nothingmuch
ayrnieu hee
audreyt for 200 shekels 17:17
that's USD$50 or so
stevan_ wow,.. I will sell mine for USD$35
aufrank feels like he's $50 the richer for just asking ;)
audreyt nono, an _invite_
not a _transfer_
stevan_ your right,.. a transfer should be worth more,.. 17:18
audreyt itzik: welcome aboard, anyhow :)
stevan_ cause you get all my past commits :)
aufrank has some beachfront property in Arizon...
audreyt rofl
stevan_ is still wondering how much one of nothingmuch's golden locks is going for?
audreyt now nothingmuch is pimping himself at the auction... 17:20
18:22 < nothingmuch> if am williong to sell myself as a partner
ayrnieu coding|sexual|speech|business|travel|poker
stevan_ partner for what? I want specifics before I bid
wolverian I'm willing to sell myself to a cute girl. actually, you don't have to pay. 17:21
aufrank Perl6 Overview is good, btw
rgs hire greg mccarroll, he will make the public forget to ask questions.
ayrnieu |crime # !
audreyt aufrank: woot
aufrank variable scoping is missing
but your probly know that
audreyt I don't; commit a note to say that ? 17:25
(or fill them in, or something) 17:26
aufrank goes to do semi-meaningful work on perl6! 17:29
audreyt aufrank++ 17:30
17:30 Aankh|Clone is now known as Aankhen`, Aankhen` is now known as Aankhen`` 17:31 Aankhen`` joined
integral ?eval my $a = "abc"; :$a 17:31
evalbot_9212 ("a" => \"abc")
integral is that what's meant to happen?
ayrnieu woah.
SolidState ayrnieu: any idea why "for chomp($input.readline) { ... }" doesn't work as expected? 17:32
integral because I think it's unintended and that bit of parsing is specifically for: sub foo (:$bar) { }
ayrnieu ?eval my $a = "abc"; %a = :$a; %a{a}
evalbot_9212 Error: Undeclared variable: "%a"
integral ayrnieu: (use strict is default finally)
ayrnieu SolidState - it's equivalent to given chomp($input.readline) { ... } , no?
?eval my $a = "abc"; my %a = :$a; %a{a}
evalbot_9212 Error: No such sub: "&a"
integral so, that looks buggy, huh? 17:33
audreyt SolidState I think it's because chomp doesn't do list context
ayrnieu ?eval my $a = "abc"; my %a = (:$a); %a{a}
evalbot_9212 Error: No such sub: "&a"
audreyt SolidState: as per search.cpan.org/dist/Perl6-Bible/li...le/S29.pod 17:34
integral hmm, I don't think Pugs.Shell is clearing some state properly either, since if you do "xyz", and then sub bar{} for the next statement, you get "xyz" back again
SolidState ayrnieu: no idea. if it doesn't do list context that's a break with perl5, as I understand it. audreyt, any thoughts? 17:35
audreyt (well, it already broke with perl5 by being nondestructive) 17:36
rgs chomp doesn't do list context in perl 5
audreyt right, it just takes a list.
of containers
and destructively update them.
rgs actually it's one of the horrible built-ins that you can't mimic with prototypes. iirc.
ayrnieu aforementioned first-class citizen :-) 17:37
audreyt ahhhh.
rgs and thus you can't override it.
audreyt though I don't see anything wrong with @x.chomp returning chomped lists
rgs neither do I
audreyt ?eval (1..10).chomp
rgs although actually p5's chomp returns the number of chomped things
evalbot_9212 "1 2 3 4 5 6 7 8 9 10" 17:38
audreyt currently we interpolates the array as if it's a string
ayrnieu p5's chom?p don't return very useful values, generally.
audreyt and then chomp it (i.e. only cares about hte last elem
)
is that useful in any real sense?
ayrnieu audreyt - as bizarre stringification
audreyt SolidState: write a test for list chomping 17:39
either add to t/builtins/strings/chomp.t or make a t/builtins/arrays/chomp.t
SolidState audreyt: as soon as the auction is over and I get back home :)
rgs hopes perl 6 doesn't have chop
audreyt the first choice is perhaps more interesting
SolidState thinks he agrees with rgs about chop :) 17:40
audreyt TimToady: is it okay that we retire chop from Str?
wolverian I always thought it was a pity that chop didn't chop the head, anyway.
wolverian coughs
audreyt wolverian: you just need to learn hebrew for RTL 17:41
wolverian hm, good point
TimToady audreyt: hmm...gotta think about that...
rgs thinks that the subtle differences between chop and chomp occasionnally surprise the expert.
like, er, their return value in list context. 17:42
audreyt it's wonderful for trivia
ayrnieu void context for the both of them, arr.
integral hmm, I can't find the code that assigns the result of a line at the shell prompt into $*_ 17:43
audreyt integral: what?
integral audreyt: when you evaluate an expression at the Pugs.Shell prompt, it's return value ends up in $*_ 17:44
audreyt oh, qx//
integral but I can't figure out were that happens
audreyt oh.
integral *where
audreyt line 295 Eval. 17:45
17:46 bsb joined
integral thanks! 17:46
audreyt wow, you can also chomp a hash. didn't know about it. 17:47
integral: where are you based in realspace?
integral audreyt: Cambridge, UK, or Edinburgh, UK in the hols 17:48
SolidState audreyt: does it chomp both keys and values?
audreyt SolidState: I was talking about p5. chomp and chop both operate on values.
hm, I might as well fill in the missing poetry
Pugs.DeepSeq, Pugs.Prelude, and Prereq.hs 17:49
SolidState audreyt: Just finished registering on the openfoundry site:"You are now a registered user on OSSF" 17:51
svnbot6 r9213 | audreyt++ | * Poetry for DeepSeq:
r9213 | audreyt++ | All that is gold does not glitter,
r9213 | audreyt++ | Not all those who wander are lost;
r9213 | audreyt++ | The old that is strong does not wither,
r9213 | audreyt++ | Deep roots are not reached by the frost.
audreyt SolidState: excellent, now you can use the name/pwd to commit to svn.openfoundry.org/pugs/ 17:52
integral feels like he's got the next move in a very nearly finished game of jenga 17:53
aufrank my new favorite listening online: thespps.org:8000/listen.pls
PerlJam I just built pugs for the first time in a long time and *man* those tests run forever
tests++ 17:54
ayrnieu You could have a test that fails only when too much time has passed since a file was touched by 'make tests' 17:56
svnbot6 r9214 | audreyt++ | * Poetry for Pugs.Prelude:
r9214 | audreyt++ | The world was young, the mountains green,
r9214 | audreyt++ | No stain yet on the Moon was seen,
r9214 | audreyt++ | No words were laid on stream or stone,
r9214 | audreyt++ | When Durin woke and walked along.
spinclad ?eval my $a = "abc"; my %a = :$a; %a<a>
audreyt integral: the real test is whether Hs is more refactorable than XS :)
evalbot_9213 \"abc"
ayrnieu spinclad - yow, I am lame.
audreyt (and having done it almost completely for 2 times on Pugs, I think we'll do fine :))
integral audreyt: it's easy to rewrite whole modules, but it's the small changes to a single function in a big file that stump me 17:57
spinclad ayrnieu: many eyes
audreyt integral: which is why the moose wrote the hs refactorer
spinclad make light work
audreyt to analyze inlinks for toplevel function calls 17:58
though it doesn't help with huge functions themselves.
ayrnieu integral - make your modules single-function long
integral ayrnieu: have you seen the size of Pugs.Parser recently? 8-) 17:59
ayrnieu ?eval my $a = "a"; $a++; $a
integral ah, that'll be helpful.
evalbot_9213 \"b"
integral one problem with lots of small funcs inside a module is that their interface/contract/spec isn't very clear
PerlJam audreyt: what tolkienism will you use for the version of pugs that bootstraps us into "the real" perl6 compiler? I think the final lines of the verse for DeepSeq would be most appropriate. :) 18:01
ayrnieu ?eval my $a = "abc"; my $<$_ = (:$a)[0]; $_++; $_> = $a; $b
evalbot_9214 Error: Undeclared variable: "$b"
spinclad audreyt: s/walked along/walked alone/
18:02 mauke joined
audreyt PerlJam: it's going to be "a ship then new they built for him", in elvish 18:02
obra seen coke
jabbot obra: coke was seen 181 days 2 hours 51 minutes 42 seconds ago
audreyt I think
obra seen particle
jabbot obra: I havn't seen particle, obra
PerlJam audreyt: that sounds good too.
I'm probably hung up on all the negativity people have towards perl6, so "renewed shall be the blade that was broken" seems to fit (even if it's only "broken" in the sense the many people believe it to be) 18:04
svnbot6 r9215 | audreyt++ | * Pugs.Prelude: s/walked along/walked alone/, spinclad++
audreyt PerlJam: I thought you meant p5 was broken :D
(and I don't think it is, really) 18:05
PerlJam audreyt: hey, that too. :)
SolidState lol
audreyt and it's already used in Pugs.Rule
PerlJam yeah, I know.
(who said there were rules? ;-) 18:06
SolidState audreyt: In a little while it will be Pugs Rulez :)
ayrnieu ?eval join(<:>): 1,2,3
evalbot_9214 Error: unexpected ":" expecting word character, block construct, term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input 18:07
PerlJam springs a light from the shadow and shines it on everyone.
just making sure you're all awake ;)
audreyt I'll find a poem for Prereqs.hs later
going to go 1)eat 2)sleep now
bbl :) /me waves 18:08
PerlJam be well audreyt
rgs waves too
rgs wonders what time it is in .il
anatoly 8:08pm
SolidState 20:10
rgs my $localtime + 1 then :) 18:09
SolidState but the auction is still going strong :)
anatoly what's being auctioned and why? I missed the whole conference thing.
TimToady should eat too. ciao. 18:10
rgs anatoly: anything, and for money.
SolidState anatoly: mostly books
rgs and for fun, too, of course.
ayrnieu ?eval $::*<b> = 1; $b
evalbot_9214 Error: unexpected "<" expecting word character
ayrnieu gives up for now. 18:11
PerlJam TimToady: you be well too. There's this truck number I keep worrying about :0)
SolidState battery running low, so bye for now
PerlJam er, :-)
18:11 SamB joined
ayrnieu search.cpan.org/~autrijus/Perl6-Bib...le/S28.pod # $0 and $0 are contradictory, aren't they? 18:13
18:14 sandrina joined
ayrnieu ?eval $::(b) = 1; $b 18:16
evalbot_9215 Error: No such sub: "&b"
ayrnieu ?eval $::('b') = 1; $b 18:17
evalbot_9215 Error: Undeclared variable: "$b"
PerlJam ayrnieu: it would appear so. 18:18
the second $0 should probably be $/
or perhaps it's a scoping issue.
no, $/ is string context is the "string matched by the last successful match" 18:20
s/is/in/
18:22 blm_ joined
ayrnieu ?eval $test = rx/(.)(.)/; "hello" =~ /$test/; $0 18:23
evalbot_9215 Error: Undeclared variable: "$test" 18:24
ayrnieu ?eval my $test = rx/(.)(.)/; "hello" =~ /$test/; $0
evalbot_9215 Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode)
ayrnieu ?eval "hello" =~ /(.) (.)/; $0 18:25
evalbot_9215 Error: cannot cast from VUndef to Pugs.AST.Internals.VCode (VCode)
svnbot6 r9216 | iblech++ | Usual svn props. 18:28
r9217 | iblech++ | Fixed most (all?) tests, examples and files in ext/ WRT r9209 ($fh.readline and
r9217 | iblech++ | =$fh is now autochomping).
PerlJam Isn't autochomping only appropriate if the :autochomp (or whatever it's called) property is set? 18:29
(or if you're reading via =<>) 18:30
i.e., for =<> { ... } autochomps, while for =$fh { ... } does not.
ayrnieu S29 makes it default 18:31
PerlJam oh, I have haven't yet read the changes to S29
ayrnieu "Note: Most users should just let their I/O handles autochomp instead. (Autochomping is the default.)" 18:32
18:35 marmic joined
PerlJam boggles at "constant Int Int::pi = 3;" 18:37
ayrnieu ?eval constant Str Str::asciibet = "abcdefghijklmnopqrstuvwxyz"; asciibet.say 18:40
evalbot_9217 Error: unexpected "S" expecting term postfix, operator, ":", ",", postfix conditional, postfix loop, postfix iteration, ";" or end of input
ayrnieu ?evas sub Str::asciibet { "abcdefghijklmnopqrstuvwxyz" } asciibet.say 18:41
?eval sub Str::asciibet { "abcdefghijklmnopqrstuvwxyz" } asciibet.say 18:42
evalbot_9217 OUTPUT[asciibet ] bool::true
18:43 lypanov left
ayrnieu ?eval sub Str::asciibet { "abcdefghijklmnopqrstuvwxyz" } Str::asciibet().say 18:43
evalbot_9217 OUTPUT[abcdefghijklmnopqrstuvwxyz ] bool::true
PerlJam P5chop and P5chomp are weird. Why do we have these? 18:46
and why aren't they named Perl5::chop and Perl5::chomp? 18:47
18:48 lypanov joined
chris2 wb lypanov 18:51
lypanov thx chris2
18:58 Arathorn is now known as Aragone
aufrank waits... 18:59
svnbot6 r9218 | aufrank++ | Filled out previously empty 'Variable scoping' section. 19:08
r9218 | aufrank++ | At best incomplete; most likely needs to be corrected.
aufrank w00t!
19:26 typonaise joined
xerox Do you know of a wiki who does LaTeX syntax? 19:27
aufrank the math articles on wikipedia have nice markup, but I don't know how they do it 19:28
integral just for maths? mediawiki has a plugin, I'd guess that oddmuse did
wikipedia use TeX
usemod should do too
wolverian mediawiki. some perl wikis have a plugin for it too 19:29
xerox Hmm, no, more generally
wolverian (but anyway, I wonder how mathml is doing nowadays)
integral bloody awfully :-( even mozilla seems to not like doing it out of the box. Amaya appears to be just about it
avarab xerox: there's an extension for MW but you'll have to hack it to get it to work
probably
it's simple to make it work though
integral (and mathematica, and stuff)
19:29 mj41__ joined
avarab i.e. to make an extension that does that 19:29
wolverian integral, sigh :/ 19:30
xerox Danke.
avarab just a matter of hooking into the parser, taking latex input and producing pdf,ps,dvips on demand
wolverian hm, epiphany does render it here out of the box
(ubuntu 5.10)
xerox I want html out!
integral latex2html
wolverian: ooh! 19:31
avarab latex2html probably isn't in ubuntu by default
(non-free)
wolverian missing some fonts, though
don't know if they're installable from the packages.
integral oh, that's what I mean
19:32 putter joined
wolverian oh, take that back. it seems to be some weirdness in interpreting the mathml, rather. particularly the set "in" test 19:32
I guess it's not that ready, yet :) 19:33
avarab wolverian: mediawiki mathml?
wolverian avarab, epiphany mathml rendering
avarab ah
avarab lost 19:34
wolverian I'll try with the latest dapper version when I'm home
19:34 Nouk joined 19:37 dduncan joined
putter wonders if he should mention to audreyt and nothingmuch that he is reblessing transparent-api Match objects into asts... na. ;) 19:39
integral: I like your warnocked "there's not something simple like: $obj.Perl6::IdRole::id; ?" 19:40
integral *shrug* ever time I mention that you should be able to talk about methods provided by a specific role of a class, I get ignored. 19:41
I guess it's just too bloody simple.
I tried posting to p6l once too (about sometime else), also warnocked. 19:42
putter :(
integral my post which wasn't warnocked, was replied to, but the questions/points weren't answered/addressed.
putter one thing it seems p6 still doesnt have a good story for is how to deal with the usual "people design really bad method api's, and then you are stuck with them". 19:44
PerlJam putter: Isn't the answer "grow a good API"? 19:46
putter you can locally abandon .foo and use multi foo($o). perhaps selectively macro from .foo to foo(). but class identity and set-of-methods still seem rather tightly bound. 19:47
PerlJam: explain? 19:48
integral predicts warnocking of this on p6l since it's about something the other people haven't though of, and don't understand without thinking about it
PerlJam I'm sure there's some name for it in the style of the GoF book, but if the method API sucks, you can always slowly create a new one in the same class or create a new class that has the "good" API and proxies for the old class 19:50
putter ah yes, but say...
PerlJam Given perl6's ability to alias anything, getting the names right shouldn't be a big problem.
putter beginning p6 programmer creates first of breed class Zog with unfortunate implementation and method names. lots of code starts using Zogs and it's methods. Zogs show up in lots of folks' sub signatures. 19:52
ayrnieu *bam*! Perl6 is ruined forever. 19:53
Its culture Zogified, as with the Pickaxe and Ruby.
integral you have to make something that does Zog, but isn'ta Zog... 19:54
putter Someone does Zog2, Zim. (hmm, I should have called "Zog" "Doh";) how does the world gracefully and rapidly migrate to Zim? Say ideally requiring a one-line change per application.
integral surely the key part isn't upgrading signatures, but upgrading where .new is called? 19:55
I mean, if this were haskell, you just make Zim an instance of Zog's typeclass
putter if we can class A{}; class B does A{}; sub f(A &x){} f(B.new);, then yes, signatures arent an issue. 19:56
integral we must be able to do that surely?
putter I don't know what the current state on classes being roles is.
19:56 bd_ joined
putter hmm, .new ... 19:57
actually, i guess the "one line per application" isnt the interesting case. that would be something like "require Zog; (# so it doesnt get loaded later #) Zog := Zim;" 19:58
integral "require Zog;"? I wonder how %INC is handled now, could be it just looks for a Zog module, in which case Zog := Zim is sufficient 19:59
but then, there's also the module versioning stuff that could be used for this aliases
putter hmm, there's another story - someone creates a Zog-n.nn-betterprogrammer module fork. 20:01
PerlJam putter: you know, Larry's work with the p5<->p5 translator could come in handy with this problem. It might even be easyish given we start and end with perl6
20:01 avar joined 20:02 binary42 joined
integral PerlJam: you mean a tool that helps a mass module name change in an app? 20:02
putter expects to write use Foo-(undef)-quz; a great deal. Ie, I don't care about the version, but I want Joe's.
integral for some webapps, I have found it semi-useful to be able to hook in customisations just from the cgi script frontend, without modifying the main source
PerlJam Someone builds a mapping from Zog->Zim and the one line change becomes "use ZogZimTransmogrifier;"
putter re .new... my method BUILD(... no that doesnt work... my method new() {...}; ...? 20:03
err, s/new()/new($cls where $cls ~~ Zog)/ ? 20:04
my method new(Class $cls where $cls ~~ Zog){...}; ?
PerlJam putter: Re: use Foo-(undef)-quz; the other question is, how do we as a community decide whose Foo you get by default if you just type "install Foo"? (or do you even get a default at all) 20:05
20:06 lisppaste3 joined
putter ooo. hmm. can we create loadable "namespace map" modules so the choice is somewhat less critical? 20:06
on a p6 level, if you load Foo-(undef)-quz and Foo-(undef)-hee, which one do you get when you say Foo? 20:08
oh, before I forget again... 20:09
PerlJam putter: And where's the policy information stored? And how do we change it? 20:10
putter nothingmuch, audreyt, etal: what is the intended behavior of incomplete Match objects? eg, in p5, /(a\1)/ has the match object appear to stringify as "a" when you are at pos 1, and "aa" later. is this p6 spec too? eg /(a{ $/[0] eq "a" })/ hmm, what happens if I return out of an unfinished capture? ;) 20:13
looking at dev.perl.org/perl6/doc/design/syn/S11.html /Versioning, 20:18
can one do simultaneously constrain both version and authority? ie, 1.whatever-joe, or >2.0-bob? 20:20
ok, "its full name is automatically aliased to the short name for the rest of your lexical scope." So I guess use Dog-0.1; use Dog-0.2; my Dog $spot; makes spot a 0.2. 20:26
20:27 sandrina is now known as sandrina_l
putter hmm. does that mean {use Dog;} die "bug?" if exists ::Dog; 20:29
20:29 SamB joined
putter Is the whole use()d shortname module hierarchy (eg Foo::Bar::Hee) merely a hallucination of the current lexical scope? 20:30
20:31 nnunley joined 20:36 Maddingue joined
putter If so, does that mean if $o.ref eq 'Dog', you may have a dioxygenase and not a canine? 20:37
(ok, that should just be said $o.ref ~~ ::Dog and it works.) 20:38
20:39 SolidState joined
putter is puzzled. intrigued, but puzzled. 20:39
ayrnieu: :) # re bam 20:41
{package A{our $x=3}} {module B-2.3{our $x=4}} {module B-3.1{our $x=5}} I expect $A::x == 3;. What about $B::x? 20:46
is it even defined? 20:47
re .id, can someone make a case for its deserving such prime huffman encoding? for its use in perl6 being much more common than in ruby? as mentioned, ruby started with .id(), and it was a silly idea even back then. so bad, they are paying the change-cost to switch to .object_id(). please let .id() just be a placeholder till we think of something nicer. ;) 20:56
PerlJam putter: can you make a case *against* the huffmanization of .id? 20:57
(i.e. what are the specific reasons that ruby is paying the change cost?) 20:58
integral I could make a case that any object is only ever going to have one primary key that you're going to want to use for hashes, ORMs, etc
and that if you want different ids for different things, you just throw an adaptor object around it
putter PerlJam: google "id" returns 3,780,000,000 hits.
;)
ie, "id" has domain specific meaning in a lot of domains, and thus is too valuable to users to be taken by the language. 21:00
PerlJam integral: Hmm. .id, .hash, .repr, ... we already have many.
integral *sigh*
I still like the way haskell does methods, where you have to actually import the typeclass before you see them. But people seem to swoon over ducktyping and think it's so brilliant 21:01
PerlJam putter: That's an odd way to put it. I'd say that .id is too generic and not specific to any single domain what-so-ever.
(and as such, too valuable to users to be taken by the language)
putter user works-in domain, has-concept-of "id". for large number of users/domains. ;) 21:03
integral the same applies to the "bark" method. Dog lovers want to hear their favourite canine, but tree huggers want their favourite silver birch 21:04
putter hmm, how many "bark" methods have you seen outside of oo docs? how many id methods? (for me, "I can't think of a one", and "lots") 21:06
integral hmm, no id's from my ORM use, since I tend to go with person_id as a field of the person tuple 21:07
I have lots of as_strings
21:07 amnesiac joined
putter cpan "bark", 10 hits, all p6 related. "id", 3613 hits. 21:09
integral: right. hmm, "uid" 398 hits. "unique_id" 20, "unique id" 223, "person id" 10. 21:11
"person_id" 7 21:12
including Rosetta :) 21:13
module A-1{module B-2{module C-8{}}module B-3{module C-9{}}}} {use A-(1|5)::B-(1..2)::C-(/8/); A::B::C->new("neat:)")} 21:21
BEGIN{@usable = ( ({$^v>1.3},'ernie'), (undef,'bert'), ({$^v>0.4},'snuf') ); } use Foo-(@usable); # non-spec 21:29
integral: ORM? 21:30
integral object-relational mapping 21:31
putter ah
integral like Class::DBI, Alzabo, etc
but not really including phrasebooks, and I suspect Rosetta
putter googles/cpans for Alzabo...
lol. Alzabo's SYNOPSIS: Cannot be summarized here. 21:32
ah, interesting 21:36
integral hmm, DBIx::Class seems to be moving away from Class::DBI and more towards alzabo 21:39
21:40 r0nny_ joined
SolidState Has anyone here managed to build Pugs on Windows XP? 21:41
szbalint I would think so. I'm the wrong person to ask about it though. 21:43
21:43 pulsar joined
putter DBIx::Class uses Class::C3 (and ->reinitialize() ;) 21:43
SolidState: win32, www.jwcs.net/~jonathan/perl6/ ? 21:46
integral that's Jonathan's website, and Jonathan can be found on irc.perl.org #parrot 21:47
21:48 binary42 left
stevan_ putter: DBIx::Class uses Class::C3 in a pretty sane way though 21:48
SolidState integral: thanks, I'll try to find him
putter SolidState: there is also a note in the README that embedding perl5 should be avoided. 21:49
stevan_: hi stevan. so, there are sane and not-sane ways to use C3? :) 21:50
stevan_ putter: hey :) of course there is,.. all my modules have a "use sane" pragma :P
putter lol
stevan_ use sanity; { no sanity; }
lexical pragmas 21:51
SolidState putter: thanks, I read that and am following that instruction
stevan_ putter: using Class::C3 with lots of reinit calls is not sane
putter like strict? perl6 -e '...defaults to no sanity?...'?
stevan_ but as of 0.11 Class::C3 must be manually initialized
package Pugs; ^sanity ::= ^insanity; 21:52
package Pugs; ^sanity ::= (^insanity | ^sanity).pick;
putter just how costly is the reinit stuff? any why? being somewhat unmotivated to doing a correct-but-slow p6 on p5, I was pondering C3-like "mash all the symbol tables so the right thing happens" games. 21:53
lol # .pick
stevan_ putter: reinit removes all the methods, then adds them back again
putter right 21:54
stevan_ if you are only affecting one package,.. not a big deal, but if its a lot of package, then it might be
putter might be? known to be? profiled? :)
stevan_ a) might be 21:55
putter lol
SolidState Jonathan not answering on #parrot on irc.perl.org, so I guess he's offline. I have to go now also, so bye for now :)
putter SolidState: sorry, good luck. and, 21:56
several developers use windows, so answers likely exist, this is just the quiet time of day on #perl6.
SolidState putter: np, getting late here too - will pick this up tomorrow... 21:57
putter right. good night.
stevan_: do an XS dispatch table so multi's are as fast as subs? :) 22:00
stevan_ putter: you mean CLOS like multis? where they are all global? 22:01
oh wait ... I see what you mean
putter actually, that doesnt quite work. still need to pay .ref costs. really want type inference info passed with calls. and that can be pure p6. 22:02
s/p6/p5/
stevan_ putter: have you see Devel::TypeCheck (or whatever it is called)?
svnbot6 r9219 | SolidState++ | Added tests for chomp on arrays. Should not break anything as all tests marked as todo (feature).
putter don't think so, looking... 22:03
stevan_ I am not sure it is useful for our (evil) purposes 22:06
putter neat. Fail(3). :( if it did objects, I'd be tempted to play, but it looks like that's todo. 22:11
stevan_ yeah
putter one advantage we have is we control the classes being used (not random p5 pkgs), so they can cooperate to assist dispatch.
stevan_ true dat 22:12
putter eg, maybe class uid numbers and a goo-like compressed-sparse-multimethod-dispatch-tab le
putter looks for goo reference... have to go soon... 22:13
22:14 justatheory joined
stevan_ Class::MultiMethods and C::MM::Pure might be a good ref 22:14
22:15 typonaise joined
putter people.csail.mit.edu/jrb/goo/goo-at-harvard.pdf 22:15
22:16 Limbic_Region joined
stevan_ :D 22:19
people.csail.mit.edu/jrb/goo/
chris2 goo
ooh. a wonderful thing 22:20
putter people.csail.mit.edu/jrb/goo/ 's people.csail.mit.edu/jrb/goo/goo-imp.pdf and people.csail.mit.edu/jrb/goo/goo-boot.pdf are quick skims. but goo is dead (jrb has too many other interesting things to do). and it's not clear the fast subtype/dispatch stuff was ever actually implemented? 22:22
chris2: :) 22:23
chris2 too bad it fell asleep
xerox Waffle waffle waffle.
putter thinks part of the problem was the goo documentation was really crufty, which didnt help the language catch on. 22:25
22:26 ghenry joined
stevan_ cant even find a simple hello-world in goo 22:26
avar what's goo? 22:27
chris2 putter: yeah 22:28
putter: and that the first releases didnt ship the (meta)compiler
xerox Some creditable sources thinks that he recalls hearing jrb was working at a new startup or something. 22:29
chris2 really?
i heard jrb in november say he wanted to revive goo
well, "heard". read.
22:32 blm_ is now known as blm
putter neat. gotta go. is anyone playing with the new pugs p6 parse tree output? -CYaml-Parse is it? to do syntax coloring / ide-ish stuff? or sucking the yaml into p5 and playing with simple transliteration to get a new runtime going? 22:33
22:35 xinming1983 joined
putter or fleshing out the Prelude.pm, now that its speed is no longer a bottleneck? I believe the plan is to move as much of Prim.hs to Prelude.pm as possible (audreyt: yes?). 22:35
putter wishes audreyt backed up her work, so there was a blog entry on all the new hackathon toys. but toys there are, so its playtime, no? 22:36
chao &
22:41 cjeris joined 22:42 stennie left, szabgab joined 22:47 xinming1983 joined 22:49 vborja joined
Limbic_Region the other day I pointed out that on Win32, an nmake realclean; svk pull; perl Makefile.PL; nmake results in... 23:02
pugs spitting out user error (Error loading precompiled Prelude: Left "syntax error: line 2, column 2") 23:03
Reloading Prelude from source...
and then the program working
it is still happening as of the most recent revision
23:24 elmex joined
Limbic_Region if anyone gets around to that and needs me to do some debugging - probably best to /msg me at the Monastery 23:28
I am out
23:28 Limbic_Region left 23:38 cdpruden joined, cjeris left 23:54 macli joined 23:56 larsen joined