Pugs t-shirts www.cafepress.com/pugscode | Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net Set by stevan on 15 August 2005. |
|||
elmex_ | ? | 00:19 | |
;-) | |||
00:19
elmex_ is now known as elmex
|
|||
elmex | perl6 isn't on topic in perl related communities :) | 00:19 | |
coral | neither is perl5 | 00:28 | |
elmex | perl5 is more perl than perl6 | ||
coral | to quote the old #perl-social topic, "no web/cgi/help/go/away/losers" | ||
elmex | ;-) | ||
*g* | |||
ruz | Hello. What does "frozen" perl6 RFC mean? Is it standard? How I should take this status? | 00:33 | |
buu | /topic in #perlcafe: <buu> Why do people keep asking questions in here? <dooky> because they are cockfaced motherfuckers | 00:34 | |
coral | wow | 00:56 | |
luqui | ruz, it's not the "frozen" word you should be interested in | 00:57 | |
the word RFC means "wrong" these days :-) | |||
(that is, you should look for more up-to-date documents, like the synopses) | |||
ruz | hmm. So I can safely ignore all that RFCs and read all that synopses? | 00:59 | |
May be can I read somewhere about status of all that documents RFCs, PDDs,Synopses... | 01:00 | ||
dudley | ruz: probably not... | 01:01 | |
The synopses are the "official" design documents these days | |||
but they're slightly out of date in places | 01:02 | ||
and it helps greatly to read the Apocalypses with the Synopses, even though $larry says the Apocalypses are just for "entertainment" now | 01:03 | ||
ruz | uhh... looks like I should read all that | 01:04 | |
landover | i love the smell of perl6 in the morning | 01:12 | |
stevan | dudley: ping | 01:16 | |
dudley | stevan: pong | ||
stevan | dudley: I just commited a Mini-MetaModel with bootstrapping roles | 01:17 | |
can you please look it over for sanity? | |||
svnbot6 | r7027 | stevan++ | MiniMetaModel with Roles added | ||
r7027 | stevan++ | - self-bootstrapping Roles added to the mini-meta-model so that | |||
r7027 | stevan++ | - Class does Role | |||
r7027 | stevan++ | - Role is a instance of Class | |||
dudley | Oh, cool | ||
stevan | if it makes sense, then I think i will try to put it into the real model this weekend | ||
this version only does Roles one level deep | 01:18 | ||
meaning you can only incorporate your immediate roles | |||
and not their subroles | |||
but the real model will do that | |||
anyway,.. time to watch a movie with the in-laws | 01:19 | ||
be back later on :) | |||
stevan & | |||
dudley | have fun :) | ||
stevan | dudley: thanks :) | ||
dud | |||
dudley: please just comment in here and I will backlog or feel free to email me | |||
:) | 01:20 | ||
dudley | Okay | ||
coral | oo, friday | 01:27 | |
Supaplex | WEEKEND! | 01:28 | |
luqui | hoooooooraaaaaaaaayy | 01:31 | |
dudley | stevan: Re Son Of MiniMetaModel: On first read through, it looks really good. I don't see any problems offhand. | 02:07 | |
'resolve' makes me think of MRO rather than composing methods into a class, though | 02:09 | ||
You can paint the bikeshed whatever color you like though, as long as it keeps my bike dry in the rain. | 02:12 | ||
svnbot6 | r7028 | stevan++ | Perl6::MetaModel 2.0 - | 05:30 | |
r7028 | stevan++ | * MiniMetaModel_w_Role.pl now bootstraps properly now so that | |||
r7028 | stevan++ | - Class does Role | |||
r7028 | stevan++ | - Role does Role | |||
r7028 | stevan++ | * added p6_role_model.* to visualize it | |||
r7028 | stevan++ | * fixed p6_object_moddle.* updated | |||
r7029 | stevan++ | Perl6::MetaModel 2.0 - | 05:42 | ||
r7029 | stevan++ | * fixed test plan in MiniMetaModel_w_Role | |||
r7029 | stevan++ | * some ASCII art of the role model | |||
QtPlatypus | Is there a neat way to do notization in pugs/perl6 ? | 08:24 | |
luqui | notization? | 08:27 | |
google notization: 14 results | 08:28 | ||
what are you talking about? :-) | 08:29 | ||
gaal | [haskell] is there an idiom for pattern matching, when I want to bind directly into the pieces of a named data type? | 08:30 | |
that is: | |||
like i can do all@(first,others) | 08:31 | ||
oops | |||
QtPlatypus | notarisation. ummm the caching of function return values (sorry spelling disability) | ||
luqui | memoization? | ||
gaal | all@(first:others) | ||
QtPlatypus | Yep | ||
luqui | gaal, yeah, that works | ||
gaal | on a list | ||
yes i know it does :) but if instead my type was something like | |||
luqui | :-p | 08:32 | |
QtPlatypus, the perl6 spec says "is cached" is the trait that does that | |||
but I don't believe it is implemented | |||
QtPlatypus | Thanks | ||
gaal | data MyOwnList = MyNil | MkList { first :: Int, rest :: MyOwnList } | ||
this is a silly Int-only cons list | 08:33 | ||
luqui | ahh | ||
well, if not: list@MkList { first = x, rest = xs } | |||
then certainly: list@(MkList x xs) | 08:34 | ||
gaal | let me try that :) | ||
luqui | (you might need some parens) | ||
svnbot6 | r7030 | Darren_Duncan++ | /ext/Locale-KeyedText : resync with today's changes to the Perl 5 version | 08:43 | |
gaal | let me try that :) | 08:48 | |
whoops, keyboard-happy on irssi | |||
luqui | gaal, did it work? | 08:56 | |
gaal | i ended up needing a different expression :) | 08:57 | |
haskell brings great humility. or humiliation | 08:58 | ||
luqui | usually come in pairs :-) | ||
knowing enough languages to usually not have much trouble picking up a new language in one or two days | 08:59 | ||
haskell was quite humbling :-) | |||
buu | Haskell makes my bathing suit area feel special | 09:02 | |
luqui | your boobs? | ||
gaal | okay, i think i did most of the hard stuff. now just one more issue. the parser finished executing the BEGIN block and magically has some new information. How does it install it in the Env? | 09:04 | |
I don't want the regular pragma list to be a TVar. can i avoid that at all? | |||
luqui | uh, I don't know much about pugs internals | 09:06 | |
gaal | more generally: once an Env has been created, can anything that isn't a TVar be modified in it not only locally? | ||
luqui | Env is inside a Reader? | ||
gaal | ah, there seems to be putRuleEnv. coool | 09:07 | |
yes. | |||
svnbot6 | r7031 | qtplatypus++ | A modication of Base64 to keep it from using bigints. This version | ||
r7031 | qtplatypus++ | is very carefull to keep everything within the limitation of what | |||
r7031 | qtplatypus++ | can be expressed by an octet. This should stop it from crawling | |||
r7031 | qtplatypus++ | to an impossably slow state on some hardware. | |||
r7031 | qtplatypus++ | When pugs is a little more advansed it may be possable to rewrite | |||
r7031 | qtplatypus++ | this so that it detects and makes use of the widest possable bit | |||
r7031 | qtplatypus++ | representation advalable. | |||
luqui | well then you can change anything | ||
but it seems you figured that out :-) | |||
QtPlatypus | Can anyone who was having trouble with the old MIME/Base64 have a look at the new one and see if what I did improves mattors. | 09:08 | |
10:21
integral is now known as i0tegral
10:56
acme__ is now known as acme
|
|||
dudley | stevan: Should 'does' return a superset of 'isa' with roles included, instead of just the roles? | 11:33 | |
bbl | 11:35 | ||
12:20
i0tegral is now known as integral
|
|||
nothingmuch | dudley: wrt does - i think just the roles | 13:04 | |
if you want an easy way, use smart match | |||
so ~~ lets you just ask | |||
and .does and .isa let you check carefully for when it does matter | |||
luqui: pin g | 13:05 | ||
ods15 | hya nothingmuch | ||
nothingmuch | hi ho | ||
ods15 | nothingmuch: where do you live | ||
nothingmuch | near beer sheva | ||
Lehavim | |||
ods15 | heh, not close at all, nm | ||
nothingmuch | not close at all to what? | ||
ods15 | was gonna suggest you come to my lecture :) | ||
haifux | 13:06 | ||
nothingmuch | ah | ||
ods15 | MPlayer | ||
nothingmuch | haifa is difficult | ||
tel aviv is manageable but unpleasant | |||
ods15 | yup | ||
i can barelyy manage it and i'm in ta | |||
nothingmuch | the problem is that by the time i'm done with work, it's too late to be able to make a round trip via public transportation | ||
and in the weekends there's no such thing anyway =( | 13:07 | ||
dudley | nothingmuch: I thought that $larry had said something about wanting people to use .does instead of .isa | ||
but I can't seem to find it now | 13:08 | ||
nothingmuch | hmm | ||
could be | |||
dudley | I may have misunderstood anyway | ||
nothingmuch | The smartmatch: | 13:09 | |
$obj ~~ Dog | |||
actually calls: | |||
$obj.meta.does(Dog) | |||
which is true if $obj either "does" or "isa" Dog (or "isa" something that "does" Dog). | |||
you're right | |||
bottom of s12 | 13:10 | ||
nothingmuch wants haskell data types in perl | 13:11 | ||
they make everything so clean | |||
data Type = Bottom | Named String | Unknown | |||
data TypeSignature = Sig [Type] Type | |||
search.cpan.org/~leijon/Data-Varian...Variant.pm | 13:13 | ||
stevan | dudley: part of the plan for ROles is that they will likely wrap classes somehow | 13:14 | |
so that does() and isa() will work as you describe | |||
I am not sure how this will work out actualy | 13:15 | ||
the plan was basically that auto-generated accessors would be implemented with a role | |||
the Role would be named the same as the class | |||
so that Foo.does(Foo) | |||
but like I said,.. not sure if thhat will work/make sense | 13:16 | ||
we will see when the roles are in place | |||
stevan & | |||
dudley | thanks, stevan | ||
nothingmuch makes a loud thud sound hitting a walll | 13:44 | ||
test driven development doesn't work for non practical applications =( | 13:58 | ||
nothingmuch has barely written any tests for Blondie so far | |||
nothingmuch is nearly done with a type annotator for Blondie trees | 14:50 | ||
it supports simple types | |||
return values of thunks may not depend on their parameters yet | |||
as the thunk is resolved before the parameters and forces a certain context on them, so there aren't any generic operations yet (which makes higher order functions rather useless, but whatever) | 14:51 | ||
putter | QtPlatypus: Base64.t still hangs for me. sorry. I killed pugs_bin after 10+Gcycles. but... if you think it's a x86_64 specific bug, it might be best just to check OS(?) and skip_rest. The old 6.4.1 development snapshot I'm using may hang, but perhaps one | 15:14 | |
more recent would work. If it still hangs when 6.4.1 is released, that would be an issue. Now... not so much. | 15:15 | ||
I tried using alternate backends, but JS can't find it, and Perl5 has issues with use/require, and doesnt have gather() implemented. So no-backend cross-check. | 15:16 | ||
Pretty work though. | 15:17 | ||
nothingmuch: want tests? muaahahahahaha. plug into PIL-Run and you get all of t/. :) if a toggleable plug isn't feasible, well, the reason the files have odd names like EvalX.pm is so one can have EvalX2.pm, EvalY.pm, etc. | 15:19 | ||
If anyone would like a -C Perl5 pil -> massaged p5 tree -> unparse to -C Perl5 pil, or "unparse" -> perl6, round trip tests. I wrote them mainly to see if I really understood pil (didnt/dont), but they might be an alternative to everyone roling their own p5 rep of pil1. And they could be a test for just what pil isnt really working yet. | 15:25 | ||
Aside: using blessed arrays strkes me as an unfortunate premature optimization. Little is gained, especially since each is accompanied by a second, hash-based object. So it just complicates the backend, with no benefit. | 15:27 | ||
(context: -C Perl5 pil1 rep) | 15:28 | ||
cheers & | 15:29 | ||
gaal | any lambdaheads about? | 16:22 | |
autrijus | yes? | 16:24 | |
gaal | autrijus-san! welcome back :) | 16:25 | |
my problem: to lift or not to lift. both don't work in the following: | |||
idat <- liftSTM $ readTVar $ envInitDat env | 16:26 | ||
autrijus | not really "back" -- I'm still in visa hell, fancy that | ||
my passport is nowhere, according to DHL | |||
so I'm mildly nervous. | |||
gaal | where "envInitDat" is a (TVar something) | ||
oy | |||
that's not good :-( | |||
autrijus | yeah. it's not in .jp, it's not in .tw, it's not somewhere inbetween, and the central tracking knows of no such tracking number, but the regional ones do, but they have no info | ||
and I need it Monday :-/ | 16:27 | ||
and all the office are closed. | |||
gaal frowns | |||
autrijus | but enough about my little misery. | ||
gaal | lol | ||
autrijus | envInitDat is TVar, not Eval TVar? | ||
and what's the errmsg? | |||
gaal | it's TVar. this is in the parser. the error for the above code is: | 16:28 | |
No instance for (MonadSTM (GenParser Char RuleState)) | |||
arising from use of `liftSTM' at src/Pugs/Parser.hs:905:20-26 | |||
autrijus | oh, you are in parser. | ||
gaal | without the liftSTM I'd get | ||
autrijus | you need unsafePerformSTM | ||
gaal | Couldn't match `GenParser Char RuleState' against `STM' | ||
autrijus | or rather, unsafePerformIO . liftSTM | ||
gaal | okay... | 16:29 | |
wolverian | are those error messages actually useful? | ||
autrijus | wolverian: quite so, to me | ||
wolverian | (just curious if I could read them and understand what is wrong if I really learned haskell.) | ||
autrijus, ah, right. that's good. | |||
pasteling | "gaal" at 192.115.25.249 pasted "closer" (14 lines, 605B) at sial.org/pbot/13156 | 16:30 | |
gaal | "Couldn't match `GenParser Char RuleState t' against `InitDat'" -- another lift needed? | 16:32 | |
autrijus | gaal: no | 16:42 | |
unsafePerform makes it pure | |||
let idat = unsafePerformIO $ ... | 16:43 | ||
or | |||
idat <- return (unsafePerformIO ... ) | |||
gaal | ah! | 16:44 | |
yay, that compiles. now to see if it actually works :) | 16:45 | ||
autrijus | it compiles, ship it! | ||
gaal | :-) | 16:46 | |
nothingmuch | hah | ||
you're sick | |||
nothingmuch backlogs | |||
Khisanth | what happened to testing? :) | ||
autrijus | no, just a bit distressed | ||
nothingmuch | autrijus: i need some type theory schooling... got a few minutes later? | ||
autrijus | nothingmuch: try #haskell people -- I'll be asleep soon | ||
nothingmuch | i'll wait then | 16:47 | |
i still have to finish this | |||
QtPlatypus: Base64.t hangs for me on darwin (powerpc: 32 bits, big endian) | 16:48 | ||
so it's not x86_64 | 16:49 | ||
putter: i mean unit tests, not system tests | |||
gaal | grlup, why are my Prims not visible? | 16:51 | |
they're safe, their definition looks correct... | 16:52 | ||
pasteling | "gaal" at 192.115.25.249 pasted "what's wrong with this Primture?" (59 lines, 2.4K) at sial.org/pbot/13158 | 16:55 | |
gaal hopes it's something obvious and silly | |||
or at least just obvious :) | 16:56 | ||
nothingmuch | that's a weird diff | ||
gaal | just part of a patch, svn diff on one file | 16:58 | |
why's it weird? | |||
nothingmuch | because the install_pragma_value is repeated | 17:02 | |
gaal | how do you mean? | 17:03 | |
nothingmuch | in the nopaste that chunk of code is repeated | 17:04 | |
gaal | oh, my bad, i pasted incorrectly. sec | 17:06 | |
pasteling | "gaal" at 192.115.25.249 pasted "missing prim, correct paste" (44 lines, 1.9K) at sial.org/pbot/13159 | 17:07 | |
gaal | so, it just looks like the prims aren't being installed at all | 17:08 | |
autrijus | "Void | 17:10 | |
hm, weird. maybe it's masked by precomp | 17:11 | ||
gaal | neither function is visible | 17:12 | |
is there any problem with Void? I'll change it. | 17:13 | ||
autrijus | there's no problem | ||
just mispaste | |||
nothingmuch | oh god... the best practices book is really doing some damage | 17:16 | |
every 2nd post on perlmonks starts with "Perl best practices says..." nowadays | |||
gaal | oh, crap, it was a local shell stupidiy thing. sorry... | 17:17 | |
nothingmuch | heh | ||
gaal | for some reason i had an executable called 'pugs' in my tree | ||
shouldn't have had one, this is windows | |||
but i was running from a cygwin shell | |||
nothingmuch | aha | ||
gaal | so when i said ./pugs it took that one instead of pugs.exe | 17:18 | |
nothingmuch always runs | |||
./pugs and never 'make install's | |||
gaal | of course | ||
but <pugs> ne <pugs.exe> | |||
however ./pugs on cygwin is [//] <pugs pugs.exe> | 17:19 | ||
well not [//], but the first one that exists, heh. | |||
stevan | nothingmuch: you need to get a copy of TAPL I think | 18:04 | |
nothingmuch | yes, i'm thinking about it all day | ||
trying to remember how much money i have now | |||
stevan is reading it right now | |||
nothingmuch | (was not neear the computer) | ||
stevan is pondering an object model in pure lambda calc | 18:05 | ||
nothingmuch: did you see my MiniMetaModel_w_Role? | |||
nothingmuch | nope | ||
will look in a few mins | |||
stevan | k | ||
nothingmuch | i | ||
'm on a break... | |||
stevan | ah | ||
pasteling | "nothingmuch" at 82.81.247.180 pasted "know how to find type of perl var" (15 lines, 295B) at sial.org/pbot/13163 | 18:06 | |
nothingmuch | now i'm having trouble unifying the types of params and symbols based on them | 18:09 | |
wow, almost there | 18:19 | ||
B[A | |||
how do you call the printish debugging? | 18:20 | ||
www.readability.info/index.cgi?u=ht...Blondie.pm | 18:22 | ||
Juerd | nothingmuch: debugging with print :) | 18:34 | |
nothingmuch | fair enough | ||
Juerd | Was this a poll? | ||
nothingmuch was fixated on the notion that there is a cute name for it | |||
Juerd | Hm | 18:35 | |
There must be, given that there is a name for "computer science" too. | |||
justatheory | seen robrt | 18:43 | |
luqui | nothingmuch, pong | 18:46 | |
(when you pinged me, it was 7am. fat chance :-) | 18:47 | ||
nothingmuch | i wanted to consult you on crap | ||
heh | |||
luqui | nothingmuch, you said you want haskell data types in perl | 18:49 | |
well, larry wants them too | |||
nothingmuch | good =) | ||
luqui | we just have to find a better name than "data" | ||
nothingmuch | structure? | ||
why is data so bad? | |||
luqui | well, because it's not really data you're declaring. it's more of a data structure (as you said) | 18:50 | |
but there are many kinds of data structures | |||
lwall: "I think "data" is actively misleading to blue-collar people" | |||
lwall: "more like "a pattern of data"" | 18:51 | ||
nothingmuch | oh, that was what that was all about | ||
shape Bool = True | False | |||
shape Type = Bottom | Unknown | Named StringD | |||
my %hash is shape ... ;-) | |||
i think that's a nice candidate for reducing redundancy | 18:52 | ||
luqui | we might be able to extend "enum" to gadt, but it would be awkward | ||
nothingmuch | i don't think it's fitting, shape describes it much better | ||
luqui | hmm... | 18:53 | |
shape is pretty good, I think... still doesn't quite hit the spot. | |||
oh, Data::Variant. So Symbol::Opaque wasn't the first one (I kinda figured) | 18:55 | ||
Plus, that one looks typed, too | 18:56 | ||
gaal | oh, crap, import doesn't work correctly. | ||
nothingmuch | where is $SIG{__WARN__} documented? | 19:01 | |
luqui | perlvar | 19:02 | |
nothingmuch | thanks | ||
wow, cool | 19:07 | ||
that was the simplest module ever | |||
nothingmuch uploads to CPAN | |||
luqui | what module? | 19:09 | |
nothingmuch | Devel::STDERR::Indent | ||
luqui | oohh | ||
s/h$// | |||
stevan | nothingmuch: what does it do? | 19:17 | |
pasteling | "nothingmuch" at 82.81.247.180 pasted "Devel::STDERR::indent docs" (37 lines, 901B) at sial.org/pbot/13166 | 19:18 | |
stevan | nothingmuch: interestng | 19:22 | |
so does it use $h's scope to know when to un-indent? | 19:23 | ||
nothingmuch | when it's destroyed it just sets $SIG{__WARN__} to the prev value | ||
i actually ought to keep a stack, to ensure that it's ordered | |||
stevan | cool | ||
stacks++ | |||
or some kind of hack with local :) | |||
nothingmuch | stevan: can't | 19:24 | |
if indent is being called it loses it's scope | |||
stevan | k | ||
nothingmuch | i wish, actually =) | ||
svnbot6 | r7032 | stevan++ | Perl6::MetaModel 2.0 - | 19:25 | |
r7032 | stevan++ | * moving the ::Package and ::Module to pneuma since they are really part of | |||
r7032 | stevan++ | the core elements like ::Object is | |||
r7032 | stevan++ | * moving ::Role to a new file psyche.pl (see the comments in the file for | |||
r7032 | stevan++ | the naming rationale and how it fits into the gnostic naming conventions) | |||
r7032 | stevan++ | * genesis is now purely about bootstrapping | |||
gaal | ?eval "why here?".split("").grep:{rx/\d/} | ||
"why here?".split("").grep:{rx/\d/} | |||
?eval "why here?".split("").grep:{rx/\d/} | |||
evalbot_7032 | ('w', 'h', 'y', ' ', 'h', 'e', 'r', 'e', '?') | ||
gaal | shouldn't these chars be filtered away? | ||
luqui | ?eval "why here?".split("").grep:{$_ ~~ rx/\d/} | 19:26 | |
evalbot_7032 | *** Cannot parse PGE: :w::\d *** Error: end of file | ||
nothingmuch | heh | ||
luqui | gaal, yes, they should | ||
gaal | ?eval "why here?".split("").grep:{$_ ~~ rx:Perl5.\d/} | ||
evalbot_7032 | Error: unexpected ":" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input | ||
gaal | ?eval "why here?".split("").grep:{$_ ~~ rx:Perl5/\d/} | ||
evalbot_7032 | () | ||
gaal | that's better :) | ||
?eval "4why 2here?".split("").grep:{$_ ~~ rx:Perl5/\d/} | |||
evalbot_7032 | ('4', '2') | ||
luqui thinks that grep is going to look like this: | 19:27 | ||
nothingmuch | does anybody have perl 5.005? | ||
luqui | .grep(/\d/) | ||
not .grep:{/\d/} | |||
that is, grep's signature "sub grep(Pattern $pat)" | |||
where Pattern is something that is smartmatched against | 19:28 | ||
oh, and an array also :-) | |||
gaal | well, fwiw, .grep() doesn't work in pugs. | 19:29 | |
nothingmuch, i have a perl4 somewhere. | |||
nothingmuch | no thanks ;-) | 19:30 | |
luqui | gaal, you mean the non-codeblock form? | ||
gaal | yes | ||
luqui | yes, that's because it's specced not to work | ||
gaal missed the "going to" above. | |||
nothingmuch | okay, uploading to pause | 19:31 | |
nothingmuch.woobling.org/Devel-STDE....01.tar.gz | |||
luqui | can anybody think of a way to install lexical hooks into the caller's scope without having to put it in a variable (like $h) | 19:36 | |
svnbot6 | r7033 | gaal++ | first argument to &import should be the called package's name, not | ||
r7033 | gaal++ | the caller's. | |||
gaal | what do you mean by hooks? | ||
i'm working on lexical pragmas right now. | 19:37 | ||
luqui | no, I mean in perl 5 | ||
but thanks for pragmas :-) | |||
nothingmuch | luqui: finer control over temp and local | ||
luqui | I mean code that gets called at the beginning/end of the caller's scope | ||
nothingmuch | temp $CALLER::foo ;-) | 19:38 | |
CALLER::temp $foo | |||
you tell me the diff | |||
gaal | yikes, you want to hook::lexwrap at runtime the code that's calling you? scary :-) | ||
plus hook::lexwrap doesn't. (wrap lexically) | 19:39 | ||
nothingmuch | right | ||
i've always hated that module because of it | |||
gaal | ?eval sub x (?$arg = 0 is copy) { $arg++ }; x(2) | 19:42 | |
evalbot_7033 | Error: Can't modify constant item: VInt 2 | ||
gaal | oops | ||
?eval sub x (?$arg = 0 is copy) { $arg++ }; my $zzz=2; x($zzz) | 19:43 | ||
evalbot_7033 | Error: Can't modify constant item: VRef <Scalar> | ||
gaal | oops still | ||
?eval sub x ($arg is copy) { $arg++ }; my $zzz=2; x($zzz) | |||
evalbot_7033 | 2 | ||
gaal | getting interesting :-) | ||
wolverian | wow, doesn't copy imply rw? | 19:44 | |
gaal | ?eval sub x (?$arg = 0 is copy) { $arg++ }; my $zzz=2; x(arg => $zzz) | ||
evalbot_7033 | Error: Can't modify constant item: VRef <Scalar> | ||
wolverian | ?eval sub foo ($arg is copy) { $arg++ } foo 2 | ||
evalbot_7033 | 2 | ||
gaal | it's the optionality that's brraking things. | ||
wolverian | oh. now it worked. | ||
ah! | |||
well, that's certainly broken indeed :) | |||
gaal | pugsbugs++ :) | 19:45 | |
wolverian | so, uh, I had a silly idea yesterday | ||
in the shower.. | |||
what if I have an argument that I only want to pattern match against but don't want to refer to in the body of the sub | 19:46 | ||
that is: | |||
sub foo ($x where { ... }) { ...$x never used here... } | |||
would it be ambiguous to allow me to simply put the where body into where $x is: | |||
sub foo ({ ... }) { ... } | |||
gaal | ?eval sub x (?$arg is copy) { $arg++ }; my $zzz=2; x(arg => $zzz) | 19:47 | |
evalbot_7033 | 2 | ||
gaal | ?eval sub x (?$arg = 0 is copy) { $arg++ }; my $zzz=2; x(arg => $zzz) | ||
evalbot_7033 | Error: Can't modify constant item: VRef <Scalar> | ||
gaal | ah: not the optionality, the default valuability! | ||
wolverian | multi foo ({ $_ % 2 }, $foo) { say $foo } multi foo ({ not $_ % 2}, $foo) { # don't say $foo } | ||
probably not worth the confusion. | 19:48 | ||
gaal | my cat is increasing my productivity | 19:52 | |
svnbot6 | r7034 | gaal++ | add test for 'is copy' not working with arguments with default values | ||
r7034 | gaal++ | (even when a value is passed explicitly) | |||
gaal | she is sleeping on the mouse | ||
so i have to use the keyboard | |||
i guess if she accidentally causes some code to be pasted i will offer her the committer bit. | 19:53 | ||
# Failed test (t/packages/lexical_pragmas.t line 38, column 3-94) | 20:03 | ||
# Expected: '5' | |||
# Got: 'undef' | |||
ok 14 - Scope is lexical, not dynamic | |||
not ok 15 - Outer value is restored | |||
# Failed test (t/packages/lexical_pragmas.t line 41, column 1-90) | |||
# Expected: '3' | |||
# Got: 'undef' | |||
ok 16 - Absent pragma is undef | 20:04 | ||
ok 17 - Scope is lexical, not dynamic | |||
not ok 18 - Caller pragma value 3 | |||
# Failed test (t/packages/lexical_pragmas.t line 62, column 3 - line 63, column 41) | |||
# Expected: '3' | |||
# Got: 'undef' | |||
not ok 19 - Caller pragma value 6 | |||
# Failed test (t/packages/lexical_pragmas.t line 62, column 3 - line 63, column 41) | |||
# Expected: '6' | |||
# Got: 'undef' | |||
not ok 20 - Caller pragma value 6 | |||
# Failed test (t/packages/lexical_pragmas.t line 62, column 3 - line 63, column 41) | |||
# Expected: '6' | |||
# Got: 'undef' | |||
not ok 21 - Caller pragma value 7 | |||
# Failed test (t/packages/lexical_pragmas.t line 62, column 3 - line 63, column 41) | |||
# Expected: '7' | |||
# Got: 'undef' | |||
ok 22 - Scope is lexical, not dynamic | |||
not ok 23 - Caller pragma value 6 | |||
# Failed test (t/packages/lexical_pragmas.t line 62, column 3 - line 63, column 41) | |||
# Expected: '6' | |||
# Got: 'undef' | |||
not ok 24 - Caller pragma value 8 | 20:05 | ||
# Failed test (t/packages/lexical_pragmas.t line 62, column 3 - line 63, column 41) | |||
# Expected: '8' | |||
# Got: 'undef' | |||
ok 25 - Scope is lexical, not dynamic | |||
# Looks like you failed 17 tests of 25 | |||
errr | |||
sorry about that | |||
please welcome our new commiter? | |||
luqui | wolverian, no it wouldn't be ambiguous | 20:08 | |
wolverian | luqui, okay. | 20:09 | |
luqui | but I think it would be a cognitive problem; it's not a very common thing | ||
best just to do sub foo(_ where {...}) {...} | |||
actually, if we end up allowing anonymous hashrefs in signatures, then it would be ambiguous | |||
or rather, it wouldn't, it would just not be what you wanted | |||
wolverian | what would anonymous hashrefs in signatures mean? | 20:10 | |
luqui | same thing as an anonymous array ref | ||
an unpacking pattern | |||
sub foo({ a => $x }) {say $x} foo({a => 4, b => 5}); # 4 | |||
nothingmuch wonders what CD to get from his wish list along side TaPL and adv TaPL | 20:12 | ||
gaal | Lisa Germano | ||
_Lullaby for Liquid Pig_ | |||
since you asked :-( | |||
s/\(/)/ | 20:13 | ||
luqui | my TaPL and ATTaPL are coming on monday, so the tracker says | ||
luqui thinks he will read it backwards, so that he gets ideas in a different order from everybody else | |||
:-) | 20:14 | ||
gaal | i know a translator who worked on a novel that way. | ||
more precisely: he did the first chapter, then the last; then the second, and the next to last; and so on. | 20:15 | ||
luqui | weird | ||
nothingmuch | luqui: i do that occasionally | ||
i almost always do it with the newspaper | 20:16 | ||
gaal | a very good strategey in this case. it was a Nabokov novel with hundreds of in-jokes and backwards references | ||
nothingmuch | do you guys want to help me choose? | ||
gaal | it proved a pretty effective tool to spot things. and in any case, i think it's a good way to keep the mood harmonized. | 20:17 | |
choose what? music? we did! | |||
nothingmuch | nono, from my list ;-) | ||
gaal | ah, that's simple then. first, put that on your list. then pick it | ||
it's all right, you can thank me later | 20:18 | ||
nothingmuch | she has some representation on emusic | ||
care to reccomend anything off that? | 20:19 | ||
gaal | i don't know what that is | ||
nothingmuch | www.emusic.com/artist/10555/10555233.html | ||
it's a subscription website thingy for downloading music el cheapo | |||
pretty nice, since it's mostly independant artists | 20:20 | ||
btw, lullaby for liquid pig is out of stock | |||
gaal | i hardly know anything from your list | ||
nothingmuch has a look | 20:21 | ||
luqui | nothingmuch, do you have end of the world party yet? | ||
gaal | forum2.org/cgi-bin/mymusic50 | ||
nothingmuch | luqui: nope | 20:22 | |
luqui | that would be a good one | ||
gaal | MWM are cool. | ||
nothingmuch | woo! it's in stock! www.amazon.com/exec/obidos/tg/detai...0T6E3GMWJN | ||
i'm buying this one. i've waited for ever | |||
idiots... they're hiding my address from me | 20:23 | ||
luqui | never heard of it... | ||
nothingmuch | it's lounge | ||
i heard some stuff from it on somafm | |||
secret agent, i think | |||
somafm.com/ | 20:24 | ||
that's a lot of money =( | 20:25 | ||
nothingmuch reminds everyone that it's talk llike a pirate day in a few days | 20:27 | ||
specifically - monday | |||
i won't be at work to show off because there is scheduled power outage =( | |||
nothingmuch doesn't have enough happy music | 20:33 | ||
nothingmuch puts on some Ennio Morricone | 20:34 | ||
dudley bought Ultravisitor by Squarepusher today | 20:54 | ||
and was surprised to find he's a pretty good bassist | |||
nothingmuch | bbiab | 20:57 | |
21:00
kgftr|wedding is now known as kgftr|honeymoon
|
|||
gaal | w00t! | 21:00 | |
svnbot6 | r7035 | gaal++ | Lexical pragmas (WIP). See Pugs.AST.Prag. Dominus++. | 21:01 | |
r7035 | gaal++ | This doesn't work yet, my pragmas got lost somewhere between the parser | |||
r7035 | gaal++ | and the evaluator. | |||
r7035 | gaal++ | TODO after it's fixed: | |||
r7035 | gaal++ | - throw away the cons list in favor of a primitive [] - it's enough | |||
r7035 | gaal++ | - figure out how to install other kinds of pragma data, not just Int | |||
r7035 | gaal++ | And, the fun part: | |||
r7035 | gaal++ | - use fatal | |||
r7035 | gaal++ | - use sort 'mergesort' | |||
r7035 | gaal++ | - no strict :-) | |||
r7035 | gaal++ | - other ideas from perl.plover.com/TPF/Pragmas/PROPOSAL | 21:02 | ||
Khisanth | gaal: so these are only for p6 and not p5? :) | 21:06 | |
nothingmuch follows autrijus's legacy and takes the comp to the shower | |||
but not for chat, for music | |||
Khisanth | he probably has a waterproof computer! :) | 21:07 | |
Juerd | And still he wonders where all the hardware failures come from... | ||
nothingmuch | well, unlike autrijus i'm not planning on actually using it in the shower | ||
so it's satying at a safe distance away from the water | |||
Khisanth | Juerd: now that you mention it ... | ||
nothingmuch | Yeah, he lugs the laptop around everywhere too | 21:08 | |
he told me he spends lots of money just because his computer falls occasionally | |||
Juerd | You can only do that with a thinkpad or toughbook :) | ||
Though no notebook I know is water proof :) | 21:09 | ||
Can't use a sack around it either, because they're all air cooled | |||
wolverian | hmm, how expensive are rain proof notebook carry cases? | ||
Juerd | Not very. | ||
nothingmuch | (by everywhere I mean not in the backpack everywhere, but in his hand everywhere - he just walks in the street and types with one hand) | ||
wolverian | Juerd, under 100e? | 21:10 | |
Juerd | They're available for much less. | ||
wolverian | ah, good. thanks. | ||
Juerd | I've used a regular laptop back, and it's worked great in the rain. | ||
It's not officially rain proof. | |||
I bought a new laptop bag yesterday. | |||
(Fjallraven DePendler) | 21:11 | ||
I use it with sfbags.com's SleeveCase | |||
wolverian | I have a fjƤllrƤven jacket :) | 21:12 | |
Juerd | That's no reason to mess with my terminal. | ||
wolverian | it's just utf ;) | 21:13 | |
Khisanth | you and your dots! | 21:14 | |
luqui | oh my god | 21:48 | |
Arthur made a perl 5 lexical hooks module | |||
Hook::Scope | |||
he uses a very clever technique (otherwise known as a sledgehammer): walking the optree! | 21:49 | ||
integral | brave guy :) | 21:53 | |
luqui | darn, but optimizer.pm is broked | 22:01 | |
rather, B::Generate is broken | 22:02 | ||
integral | Just imagine: if more people used it, it'd be totally bugfree :-) | ||
luqui | I don't get it | 22:03 | |
Juerd | Bugfree in the sense that Windows is | 22:05 | |
An occasional system freeze or severe unrepairable crash is accepted from Windows, because most people use Windows. | 22:06 | ||
Another system better be more stable, or else, because not as many people use it. | |||
</guess> | |||
luqui | that sorta makes sense... | 22:07 | |
it could also be that people would bug arthur more about it | |||
Juerd | Relatively nobody's complaining about the warning of uninitialized values for initialized but undef values. We've gotten used to it :) | 22:08 | |
But it should really be construed as a bug. | 22:09 | ||
luqui | I'm not complaining, because I start my programs with: use strict; use warnings; no warnings 'uninitialized'; | 22:12 | |
Juerd | hehe | ||
I quite like the warning | |||
Usually indeed something is wrong when it shouts that | |||
luqui | I got about a 50/50 correctness ratio | ||
Juerd | Probably depends on what you're writing | 22:13 | |
luqui | Yeah, and I'm pretty liberal with my undef use | ||
Juerd | Though I would know no specific areas of programming in which it does or does not matter |