Run Perl6 Now! | pugscode.org ('Overview', 'Journal') | pugs.kwiki.org | channel log: xrl.us/e98m
Set by autrijus on 6 March 2005.
nothingmuch *yawn* 00:04
nothingmuch goes to bed
lucs See ya. 00:05
nothingmuch looks at svn log and thinks he may be a bit trigger happy 00:07
someone remind me to fix quoting.t and write smartmatch.t tomorrow
lucs Do we have a bot servant here? 01:03
nothingmuch bot servant? 01:14
nothingmuch should shut up
shower et al are done
now covering up sofa with newspapers so cats won't give it a different color
ciao 01:15
lucs Aren't you sleeping yet? :) 01:16
nothingmuch well, sleeping depends on higene
hygene
and hygene depends on warm water
and sleep also depends on a non-empty stomache
and i am usually very very slow at going to sleep 01:17
*poof*
Darren_Duncan Hello, is this thing on? 01:19
lucs what? 01:22
Er,
On what?
Darren_Duncan that answers my question - I've been on private with nothingmuch the last few minutes to hash that out 01:34
nothingmuch shutup, i'm sleeping
you're ruining my credibility
;-)
Darren_Duncan yes, he's sleeping -- sshh
lucs :) 01:35
Darren_Duncan ... for real in a few minutes
to prove you're asleep, you must not reply to anything said here
nothingmuch Darren_Duncan: mark.stosberg.com/Tech/darcs/cvs_switch/
Darren_Duncan back later ... 01:50
ingy hola 02:00
MakeMaker is kicking my ass
Darren_Duncan how hard?
ingy not too hard yet... 02:01
hard for an amateur
but I've been here before
I will prevail
and we will be able to write Perl6 modules
Darren_Duncan I haven't seen most of the uglies yet, since a very short WriteMakefile() has done what I need. 02:02
I still haven't written the missive on Perl6 modules naming that I was planning to send to the email list, but maybe I'll say a bit here first, if that's better. 02:03
In brief ...
ingy listens
Darren_Duncan 1. I agree with what was said here that Perl 6 code should be kept off CPAN for now ... 02:04
and just include it in the Pugs repository 'til we have time to do CPAn right
2. I think that Perl 5 module names shouldn't be a limitation for Perl 6 ...
We should be able to learn from the decade plus of actual modules that were put into CPAN as it currently is, to get an idea what kind of stuff actually gets made and used. 02:05
The current perl 5 module organization is very ad-hoc, ... 02:06
The main categories as they exist today were planned many years ago, when the major uses of Perl were a bit different ...
ingy I agree with both points. I also don't mind the ad-hoc ness
lucs s/ness/mess/ ?
Darren_Duncan Ad-hoc isn't bad per se, but let me finish ...
ingy I think policing the namespaces is futile
hi lucs 02:07
lucs BOnsoir ingy
Darren_Duncan What I propose is a separate CPAN name space for Perl 6 modules, which starts out with zero names used or reserved ...
No old module name is sacred ...
ingy nods 02:08
Darren_Duncan The new one can still be ad-hoc
But it will start over, with stricter entry requirements from the start ...
Kind of what [email@hidden.address] is trying to do with Perl 5 modules, but that is hampered by all the legacy stuff ...
With Perl 6, legacy stuff isn't a holdback right now ... 02:09
obra stricter entry requirements?
mugwump How about "has read and reviewed alternate solutions that exist on CPAN already" as a strict entry requirement :)
Darren_Duncan What I mean, is that to get a lock on a module name, you need to convince people that it should be used, rather than it just being yours by default
obra so you want to get rid of first come first serve?
Darren_Duncan This speech now is a draft, grammer isn't my biggest concern
ingy imo, much of the cpan mess could be untangled with metadata 02:10
Darren_Duncan Some aspects of the current system are fine
But if we start over, we should have some approval process for when the first person comes along and wants a "prime" name.
mugwump [email@hidden.address] 02:11
obra I think this is something larry will really need to comment on
Darren_Duncan anyway, how I suggest we start off ...
Examine what modules currently exist on CPAN, and pretend we have free reign to reorganize and rename them into more logical ways, not worrying about backwards compatability ... 02:12
We don't have to do every module per se...
mugwump That's a mammoth task in itself, Darren.
ingy and a boring one
rooneg thinks it sounds like a long, pointless argument just waiting to happen, for little gain
Darren_Duncan But essentially come up with, say, 50-100 categories that they could fit into, and or semi-formal schemes for grouping
mugwump But what about modules that don't fit cleanly into one category or another? 02:13
Darren_Duncan That will be adapted to
My main point is that things don't have the exact same categories as now just because that's the way it always was ...
ingy I am going to opt out of this can of worms for now, and go back to fighting MM
Darren_Duncan This can and should be done and agreed to as a community of course, though a few individuals can make suggestions to start off... 02:14
The suggestion doesn't have to be exhaustive
mugwump OK. First of all, I think that you need to remove the conceptual hard link between module namespaces and module "categories", whatever that means
The names of individual modules need to be carefully considered, for sure. But too much emphasis on categorising by names leads to overly long package names 02:15
rooneg I really don't see what's wrong with the current scheme... The one thing I think is probably worth worrying about is a "land grab" effect when you open up the new namespace and people start running to stake a claim on top level useful sections of the namespace.
Darren_Duncan When I say "category", I mean that hierarchy you see on search.cpan.org
mugwump I agree that modules shouldn't be *indexed* (ie, automatically installable via perl -MCPAN -e'install Foo' without the module being announced 02:16
Darren_Duncan Mainly I propose re-evaluating what the top-level namespaces are
The new one could be loosely similar, but we can be free to "clean up"
For example, move the DBI Drivers from "DBD::*" to "DBI::DBD::*, to more clearly illustrate their relationship to DBI. 02:17
obra darren, how long have you been involved with modules@ and the current module list?
Darren_Duncan I've been a CPAN contributor for almost 5 years now.
obra differerent question 02:18
mugwump Darren, if you think about it - do you think that if the "categories" on the front of the CPAN page were actually generated from modules, each with seperate maintainers, that the *real* problems would be fixed?
obra I mean volunteering to help keep things sane.
(by answering inquiries on modules@)
mugwump ie, the problems of not being able to see all the modules that solve a particular or related set of problems...
Darren_Duncan I'm just throwing ideas out there ... some that other people seem to agree with.
If nothing else, the idea is that things would be as if [email@hidden.address] vetted all module names, and not just the newer modules. 02:19
obra Fear. That would imply that they'd have to approve every name. 95% of the time, they don't even acknowledge a request for namespace reservation 02:20
ingy due to the nature of MM, putting perl6 modules in blib is problematic. does `blib6` sound reasonable?
Darren_Duncan Sure, groupings and lookup on the search web sites are a separate issues from actual module namespaces
mugwump sounds good to me, ingy
Darren_Duncan I think that part of the fear is because so many people are trying to get in, and there is some legacy cruft to deal with ... 02:21
ingy unfortunately, a pugs `make install` installs perl5 *and* perl6 modules, which is making life hard for me 02:22
obra Also, I thought that perl6 would allow us to have, for example, two entirely different versions of a module in use within a single program
so, module names become much less important than distnames
Darren_Duncan I am at least hoping for the "good practice" namespace choices of the Perl 6 modules to be looked at like Perl 6 itself was, and consider fixing things.
ingy obra: distnames are articial too
they aren't important
obra well, they'll still need to be unique for 6pan to not be terribly hurtful to build 02:23
ingy say they are prefixed with ingy/Foo-Bar and obra/Foo-Bar
Darren_Duncan I consider Perl 6 module names to exist in a completely separate namespace from Perl 5 ones anyway, just as each is a completely separate namespace from Python or Ruby etc modules. ...
Hence, a Perl 6 module "foo::bar" can be completely unrelated to a Perl 5 module with the same name, and programs in either language that include the module won't be confused ... 02:24
By default, if you require "foo::bar", you'll get the one in the same language ...
You require the one in the other language the same way you require, say, a Python module
does that make sense?
the 'require' has a namespace addition to specify language 02:25
obra unless transparently calling perl5 code from perl6 actually ends up being a requirement.
Darren_Duncan I hope that it doesn't
While Perl 6 is itself quite similar to Perl 5, each should regard the other as if it were Python or Ruby etc 02:26
mugwump why?
Darren_Duncan that's simpler, isn't it?
I'm just talking about linking
ingy Darren_Duncan: nobody says we're going to do things the same. almost everything will change.
I plan on replacing cpan for instance :) 02:27
Darren_Duncan is that different than what I said?
re replacing cpan?
ingy but you are talking in terms of cpan
instead of thinking way beyond it 02:28
Darren_Duncan So you are starting more from scratch while I was talking about deltas?
Is there still a need, in your new system, that the community coordinates what each person uses for their module names, so they don't conflict and group together nicely? 02:29
ingy probably not
I need to know a bit more about perl6 namespacing 02:32
Darren_Duncan So then each person can name their module anything they want, and it won't cause anyone trouble?
ingy not from the dist sense
Darren_Duncan okay, I'll wait
ingy from the internals sense
mugwump read S10-S12 if you haven't already, Darren 02:33
Darren_Duncan I'll review them
mugwump I see quite a few situations in which a module with the same name might potentially have multiple candidates;
Darren_Duncan even when those modules are unrelated?
mugwump 1. another programmer releases another version of a module without there being an official torch-handover 02:34
obra Sub::Versive
mugwump 2. different production levels (live vs dev vs test...)
Darren_Duncan Take, for example, one person using "Db::Simple" for a general debugging module, and another uses the same for a database module ... is this a problem?
mugwump 3. programs *requiring* old versions of a module
obra it's unlikely anyone will want to compete with tim bunce for DBI::, but I can see different people doing a module called, for example, "Test" 02:35
Darren_Duncan I'm hoping for at least a bit more controls in the community to prevent big namespace abuses. 02:36
mugwump 4. two completely different modules that happen to be named the same
One observation;
Darren_Duncan Eg, most existing modules use 'Db' for debug, but a largeish distro from 2000- uses it for databaase
mugwump - when you "use Foo", you are requiring an *API*, not a module
that API might be provided from several places 02:38
Darren_Duncan Re DBI, sure, while nothing's sacred, we can probably assure that this is one of the few that stays with its previous owner
If 'use' refers to an API requirement, do we need to register API names then, instead of modules, so several unrelated modules don't pick the same one? 02:39
I see that as being loosely the same kind of problem
obra I think that "control" is one thing the perl community has been good at avoiding. 02:40
and that it's one of the reasons that perl has flourished.
Darren_Duncan It doesn't have to be strict.
obra what's the advantage of having "loose" control? making sure that unknowns don't grab "useful" namespace? 02:41
Darren_Duncan I just mean having [email@hidden.address] (eg) type discussion prior to people uploading modules
obra but having it be required and having the group have to say "ok", If I understand you right.
Darren_Duncan 'control' as in 'more encouragement and feedback to developers as to what would be good descriptive names for their modules
in the end, developers can still upload what they want 02:42
as they do now
maybe 'control' was the wrong word
obra so, you just want [email@hidden.address] to continue to exist?
possibly, as a more open forum?
Darren_Duncan yes, I just prefer that every Perl 6 module use it, rather than just the newer ones
obra but what does "use it" mean?
"Hi, I have a module that I call HatePerl. I'm uploading it!" 'that's a bad name, it should be Perl::Hate' "Too late, I uploaded it" 02:43
Darren_Duncan Unless I'm wrong, the earlier CPAN modules were created prior to the modules@ forum existing, ...
obra modules@ doesn't add much value
most inquires get blackholed.
Darren_Duncan Okay, a replacement for modules@ that does what it was intended to do
obra and authors just upload anyway, without any feedback 02:44
rooneg so you want people to ask modules@ before uploading, but you don't want to require aproval? i fail to see how this is any different from what we have today? nothing requires people to ask, and nothign requires people on modules@ to respond, so what have you gained?
i'm not saying that something more strict is needed, but if the consensus is that it is, then you aren't going to change anything by saying "please do this, it's the right thing to do". 02:45
Darren_Duncan details aside, I hope that it would be easier for developers to get more feedback on their namespace choices early, prior to new legacy code being made that creates a lock on a name change
mugwump OK, I've put a little brainfart at svn://utsl.gen.nz/trunk/Guide, probably only lib/Guide.pod is worth reading, even though it contains completely unfinished sentences in places :) 02:46
Darren_Duncan As I said, a fair number of modules have less than optimal names, at least by current standards, but they stay as they were because legacy code expects it
mugwump The idea is, that the "Guide::" namespace is for reviews and maps of CPAN
the namespace remains in its current state of anarchy
people who do research can put stuff in that namespace
(ie, research into options on CPAN) 02:47
There's also Review:: for individual module reviews, and HOWTO:: for task-oriented stuff
obra but I want to use Guide:: for tools for the blind
Darren_Duncan perhaps a better solution could be to have an elegant technical way for people to rename modules later, and old code not break ...
mugwump wedgies obra
Darren_Duncan because something in Perl will automatically translate requests for the old module name to the new name ... 02:48
obra actually, I believe there are symbol table alias modules in cpan now that will do that, darren
Darren_Duncan are they elegant and simple to use?
obra dunno. I've never renamed a module.
Darren_Duncan and old code doesn't have to be modified to employ them?
obra maybe it makes more sense to spend time on that question
mugwump So, anyway ... in these "Guide" modules (or whatever namespace is eventually picked, bearing in mind that namespace clashes aren't a problem per se), the One True namespace is mapped out... 02:49
Darren_Duncan if this can be done elegantly, then the names people pick will become a lot less important, and anarchy can reign without problem
mugwump The only thing special about the "One True" namespace is that you don't have to "use lib" (or an equivalent) to specify it
ie, make it a common practice that if you want to include non-"Core" modules, then you have to include a namespace administered by someone else 02:50
Darren_Duncan On the other hand ...
mugwump The terms are all a bit hazy there. So, you could go, 'use Namespace "DUNCAND"' or something like that
Darren_Duncan Perhaps it would be useful to maintain a FAQ-like document that works sort of like a standards committee ... 02:51
Pre-define some suggested namespaces for Perl 6 ...
people can still do what they want, but if a lot adapt that suggestion, things can be much cleaner
If such a document were made and worked on by the community now, before any Perl 6 modules exist, then it can be a lot more beneficial 02:53
mugwump or you could go, "namespace FreePAN;" to default to ingyful delights
something like a meta-@INC
Darren_Duncan In any event, the new Perl 6 module collection should be free of abandoned modules and have a much higher signal-to-noise ratio ... at least for a little while 02:56
mugwump the biggest problem is creating the map of cpan to use as a base for this new improved list, imho 02:57
mugwump re-reads dev.perl.org/perl6/synopsis/S11.html 03:01
obra the Versioning section is an interesting read 03:04
mugwump sure is 03:05
obra I'm pretty sure we can do that today
mugwump in pugs?
obra perl5
Darren_Duncan still reading S11
obra now I want that in perl5. badly
mugwump ok. one thing I think is missing in S11's versioning section is the implementation rules for what (Any) means... 03:06
obra you mean a precedence? 03:07
I'd bet on "first in search path"
mugwump sure. Which is a nice system, especially if it's guaranteed that you can install modules to non-Perl locations (ie, not just site_perl) 03:08
it's simplicity and principle of least surprise may mean that it will be the final answer,
obra it should get specced, though 03:10
mugwump This comes back a bit into the @INC problem that ingy's bashing his head against, too
there is a *lot* of systems integration behaviour that needs to be covered by the design 03:13
see also dev.perl.org/perl6/rfc/78.html 03:26
Darren_Duncan Right, so from what I've seen in S11, the Versioning section, it is easy enough to get rid of any technical problems from multiple individuals giving their modules the same name. 03:27
So then what I was discussing earlier just relates more to best practice suggestions for module names, to make them descriptive, evoke similarity in related modules, and dissimilarity in unrelated modules. 03:28
mugwump Again, I think that the amount of space in a module name is too short for that to work all the time 03:29
Darren_Duncan Obra, I agree with wanting this Versioning feature in Perl 5.
mugwump tie @INC, 'Muahahaha' 03:30
Darren_Duncan I haven't read the part where name size limitations are mentioned, will get to it ...
obra tied @INC is very doable 03:31
that wasn't what I had in mind though. to do thsi right, you need to do some deep symbol table magic 03:32
"Tied symbol table"
mugwump tying stashes works, apparently - for some definition of "to work", that is
multiple versions of the same module in memory at once is probably not a good idea right now 03:33
But hey - there's nothing to say that Perl 6 features can't be backported to Perl 5 :)
obra -freenode2 mugwump, you know about only.pm, right?
mugwump no, I didn't. that is probably the most relevant Perl 5 module that relates to what we're talking about, I guess 03:35
obra there's other stuff out there, but I don't recall where
mugwump that's ok, ingy's officially cargo cult afaik 03:36
looks like a decent enough API for Perl5 03:37
fayland autrijus, can i ask u something about the translation work of Apocalypse. 03:38
obra fayland, he'll see it when he wakes up. you should just ask 03:39
fayland I'm Chinese. and I heard from hoowa that u guys are doing this work, i want to join.
Thanks obra
04:06 edgewalk1r is now known as edgewalker
autrijus greetings lambda camels. 04:30
autrijus finished backlogging
needs to be at $client_site for $silly_meeting
in an hour. 04:31
autrijus tries to lift a finger and get off bed
nothingmuch++ # absolutely fantastic rate of productivity
obra call in sick, autrijus? 04:34
autrijus not going to happen 04:35
obra :/ 04:37
autrijus sighs and starts to get up
lucs Morning autrijus. 04:38
Say, can you point me to which file(s) you needed to change to correct the int() bug please? (Just trying to get a handle on the code.) 04:39
autrijus sure
AST.hs governs casting 04:40
lucs Oh, it was a casting issue?
autrijus yup, since int() is a caster
like ~ and ?
lucs Ah. Thanks. I need to keep reading about Haskell :)
autrijus so "instance Value VInt" is the caster
I just changed "round" to "truncate"
lucs Aha. 04:41
autrijus so the block starting liene 16 reads:
"to cast a VInt type into a Val, apply the VInt constructor to it" 04:42
"to cast a Val into a VInt type, analyze its constructor:
if it is a VInt, simply take its value
if it is a VStr, try to read a int from the beginning of the string; if fails, yield 0
otherwise, cast it into a floating number, then truncate that number." 04:43
clear as ink :)
lucs Er, right :)
Hmm... Are you reading that in AST.hs? I don't seem to have such text in my copy... 04:44
autrijus I'm commenting on it
the code is
instance Value VInt where
castV = VInt
lucs Oh, sorry, I thought you were quoting the code.
autrijus I didn't add any comments in the code :) if you'd like to start docs/src/AST.(kwid|pod), be my guest 04:45
lucs Hehe :)
autrijus hmm nothingmuch is not here 04:47
but I know he backlogs, so here goes:
lucs He went to bed about an hour ago.
autrijus nothingmuch: I've set up pugscode.org/donate.html at your request; it's not linked from anywhere; it's just there to save you from programming WWW::Mechanize to do the same thing :)
autrijus ponders whether linking to it from pugscode page is a good idea. 04:51
but, work. &
nothingmuch morning 05:44
lucs Wow. You didn't get much sleep, did you. 05:45
nothingmuch no 05:46
=
P
nevermind, i had fun 05:47
lucs Heh
05:52 Aankh|Clone is now known as Aankhen``
Darren_Duncan Okay, personal status report ... 05:55
1. I completed the rt.openfoundry.org registration 05:56
2. Installed SVN and checked out Pugs.
3. There is no #3.
Fairly soon I'll upload the start of Locale-KeyedText under /ext, such as tomorrow.
nothingmuch Darren_Duncan++ 06:03
Darren_Duncan les'un I'm confusing names, weren't you supposed to be in bed? 06:04
nothingmuch time to go to working
as you can see by my typing, i've clearly slept enough 06:05
Darren_Duncan sounds good -- on my end, I was last talking to you around 17:30h; it is now 22:00h here, and *I* will soon go to bed 06:06
anyway ...
svn seems easy enough to use so far
nothingmuch started talking to you at 3:30
it's now 8:06
=/
svn indeed is rather simple
if you know cvs, 06:07
Darren_Duncan my next step is to actually run the Pugs program, which I haven't done yet ...
nothingmuch get the GHC binary on mac
it tends to work the best
Darren_Duncan I see you stayed up late ... I'm up 'til 3am sometimes, usually just to 1am though
Oh yeah, actually I downloaded GHC yesterday
just have to install and run it ... or just run it
nothingmuch well, good luck then 06:08
anywho, i have to go to work
see you when i get there
Darren_Duncan right then
is your work connected with this?
nothingmuch no
that's why i stay up till 3 am to work on hobbies
since at work i must do other things ;-)
err, 4 am
Darren_Duncan I'm on the verge of starting my own business, and so "this" plus work are connected 06:09
gotta do what you love
nothingmuch indeed
nothingmuch doesn't see himself starting a carreer in sw engineering though
academia... math & linguistics
Darren_Duncan what do you do then?
or maybe you answered that 06:10
nothingmuch maybe make extra playing at some sleezy nightclub
and writing screenplays every once in a while
oh well, we'll see
my whole life is ahead of me
ride is here
*poof*
ingy autrijus: ping 06:39
Darren_Duncan ping ping ping
maybe this was already said, but on my first install of Pugs just now, the Makefile gives a missing file error: t/op/assign.t 06:40
lucs Yeah, it's just an error in the MANIFEST. 06:45
Darren_Duncan I think I know what needs doing ... is it fine if I make this MANIFEST change as my first commit? 06:46
Regarding revision 483, it looks like t/op/assign.t became t/syntax/decl_vs_assign_prec.t ... maybe. 06:47
lucs Yes. nothingmuch did that. 06:48
Darren_Duncan The change note said assign.t was moved to syntax, and this is the most similar looking file name.
nothingmuch is currently on his way to work; he said he would check in on arrival but no comment yet; he left home 39 minutes ago 06:49
do you see any problem if I perform this MANIFEST change?
don't want to step on someone else's section
ingy it's a MANIFEST for fook sake 06:50
just commit it if you want
Darren_Duncan just being cautious, but I'll go ahead
nothingmuch works now 06:57
lucs &#ZZ 07:05
nothingmuch good night, lucs!
lucs Thanks, see ya.
Darren_Duncan right then, my first commit seems to work, r486 ... very trivial MANIFEST update
more important stuff to go in later 07:06
nothingmuch argues that make manifest should be used 07:10
i wonder why it isn't
Darren_Duncan who knows ... to be honest, I didn't know that command existed ... just updated it manually this time, as with every other time 07:12
nothingmuch dear god 07:13
s02 is giving me the heebie jeebies about quoting
Darren_Duncan I ran it now ... and it added 12 more files (actually 14, but I'll get rid of the .DS_Store ... or I'll add that to SKIP) 07:14
nothingmuch always add to MANIFEST.SKIP
MANIFEST should be in the VCS list of files never to add to revision control
Darren_Duncan I added .DS_Store to MANIFEST.SKIP, and a subsequent "make manifest" then deleted the 2 such lines the previous one added. 07:18
About your last comment, does this indicate something I should do? 07:19
Don't see why, though, since distros need that file.
nothingmuch make manifest will do it properly
'make manifest' should be part of the release making shell script 07:20
in darcs it goes into 'darcs prefs predist "blah blah"'
other VCSs prolly have other hooks
the point is, you're supposed to be able to say 'sh make_dist.sh'
Darren_Duncan anyway, I'll commit the 2 updated files in a minute
nothingmuch and get a complete release, with correct version info, correct MANIFEST, SIGNATURE, META.yml 07:21
and there are good, reliable tools to do this
Darren_Duncan I know that "make dist" did the META.yml for me
nothingmuch my ($foo, $bar) = ("FOO", "BAR"); say "foo=-$foo- bar=-$bar-" 07:25
ugg
Darren_Duncan svn question ...
nothingmuch ask away
Darren_Duncan on asking "svn status", I got a line saying "? MANIFEST.bak"; do I need to do anything special to prevent this from being included in the commit; the .SKIP file mentions it, if that matters 07:26
nothingmuch it won'
rgs It's not part of the working copy, so it won't be committed (as the ? indicates)
nothingmuch t be committed 07:27
it has no A at the begining
that is to say, you did 'svn add' on it
Darren_Duncan okay
I did not "svn add" it
right, that's good
okay, that commit is done; and I see you did one too 07:30
nothingmuch commits like a madman
in fact, 3-4 of luqui's commits from yesterday were patches i submitted =)
Darren_Duncan I'll add+commit the first Locale::KeyedText in a few days, after I've completed my current round of Perl 5 module CPAN uploads, and have more time to think about the details of Perl 6 07:31
nothingmuch good luck!
note that we have many many missing features
objects
rules
proper quoting 07:32
it won't be easy
Darren_Duncan I don't expect the code to run the first time
so it's now 23:32h here, I'll sign off and try to sleep at normal hours, see youse later 07:33
nothingmuch what I really really hope you do is write a test for every feature you want to use while you write it
and also write unit tests for that module, making use of a broad range of features
Darren_Duncan my Perl 5 unit tests should, while I didn't test it, give 100% code coverage ... or maybe 98% 07:34
nothingmuch well, good night!
welcome aboard!
Darren_Duncan and I'm glad
this is the closest to core Perl 6 development I've ever been ... previously I was hanging out in the database modules groups mainly 07:35
... or the core list for SQLite itself, and having some influence there
nothingmuch morning luqui 07:36
luqui evening nothingmuch
Darren_Duncan evening luqui
nothingmuch many tests for you to implement, if you feel like it =)
a few bugs
luqui any requests? 07:37
Darren_Duncan my "make test" says t/parser.t is dubious but yet "all tests pass"
luqui that's the kwid thing... weird
Darren_Duncan t/parser....v-strings are deprecated at t/parser.t line 1.
Perl v6.0.0 required--this is only v5.8.1, stopped at t/parser.t line 1.
BEGIN failed--compilation aborted at t/parser.t line 1.
nothingmuch r489
r487 (should be trivial) 07:38
r484
get commented out things in r485 to parse, but perhaps be no ops
luqui trivial... I like the sound of that
nothingmuch what about r482? you were working on that yesterday 07:39
i guess it's just a matter of the allowed charset in what is an variable name molecule
luqui this morning, yeah...
I couldn't get it
nothingmuch your morning, my yesterday... same thing ;-) 07:40
hoowa good afternoon!
Darren_Duncan updated to r489, which said t/assign.t was added ... didn't you move it elsewhere in 483?
nothingmuch that's a different t/assign.t
it checks an operation bug
Darren_Duncan I meant /op
nothingmuch the previous tested a parsing bug
that happenned to have to do with assignments
since that was moved to t/syntax/.... another file was added 07:41
Darren_Duncan ok, same filename, different reason
nothingmuch otherwise they would have been one file
uhuh
Darren_Duncan "make test" on v489 gave same error 07:42
wasn't sure if your "r489" comment meant you fixed it or not
luqui uhh... it looks like ! is explicitly included in the list of characters to match
I wonder why...
nothingmuch Darren_Duncan: perl Makefile.PL
ingy Darren_Duncan: did you check in a MANIFEST?
Darren_Duncan yes 07:43
to the MANIFEST
nothingmuch that should look for tests again
ingy It seems wrong
nothingmuch VCSing MANIFEST files /is/ wrong ;-)
Darren_Duncan that policy wasn't set by me 07:44
luqui ahh.. autrijus added ! because of $!
nothingmuch oh, right
i think that's a special case, not a general rule of how var names are allowed to be named, is it? 07:45
luqui right. that might be the only punctuation variable
no, there's $/ also 07:46
nothingmuch $/ is still there?
luqui it's what I said $0 was earlier
the match object
nothingmuch ah
so what is $0?
luqui the first match :-)
(it's zero-based now)
nothingmuch heh
Darren_Duncan that's more normal 07:47
nothingmuch that's bound to make people cry
it is
Darren_Duncan pfft
nothingmuch but the question is whether you're consistent with your past or others'
nevermind, i prefer consistency over backwards compatibility
Darren_Duncan I do too 07:48
waaaay better that Perl 6 is consistent with itself than it is with Perl 5
nothingmuch luqui: so, will var be now a punct | \w?
luqui hmm?
nothingmuch ruleVarNameString = do
...
luqui ahh
yeah
nothingmuch name <- many1 (choice [ wordAny, char ':', char '!' ])
should it be made so that name is either that, or that? 07:49
luqui hmm, $*!?
nothingmuch don't ask me
=)
luqui let's say no
so it's either $!, $/, or [$@%&]\w+
nothingmuch uhuh 07:50
Darren_Duncan okay, I'm really outtahere this time
nothingmuch ciao, Darren_Duncan!
Darren_Duncan same to you
3
2
1
nothingmuch ok, i'm moving that test into t/syntax/var_names 07:52
and also testing that $! parses, despite the fact that $fo!o does not
luqui okay, i just fixed it... running a test before ci 07:53
of course, $fo:o::b:ar still parses, and it certainly should not
nothingmuch oi oi oi 07:54
luqui what? 07:55
nothingmuch your comment
it's ouchy 07:56
luqui fix committed
nothingmuch ok, i'm actually going to zap the change to t/op/string_interpolation.t and move it to t/syntax/varnames.t 07:57
with a test for $! is ok, $f!ao is not, and $fo:o::b:ar is not
the latter todo
luqui okay 07:58
nothingmuch and for $/ too, as todo
luqui I made $/ parse
but I don't think it means anything yet
nothingmuch hmm 07:59
it's not parsing
i think
or maybe that's because it's undefined
luqui yeah it's parsing, it's just undefined
nothingmuch ok
luqui you might be able to declare it an assign to it.
nothingmuch ok((eval 'my $!; 1'), '$! parses ok'); 08:00
ok((eval 'my $/; 1'), 'as does $/');
how will that handle if these become undeclarabe?
they pass now
luqui it'll probably die 08:01
but we'll cross that bridge when it falls over
nothingmuch morning larsen!
larsen Good morning.
nothingmuch i'll leave string_interpolation.t in place, i think 08:02
regression can't hurt
if some day the logic for interpolated and non interpolated var name parsing is split, this can serve as a sanity check
luqui good 08:04
nothingmuch now back to t/op/quoting.t 08:05
yuck
luqui umm, the first test in quoting.t is wrong 08:06
nothingmuch yup
ingy I WON!!
luqui really!?
nothingmuch won what?
luqui the race?
ingy I beat MakeMaker
luqui oh
nothingmuch Beat it? 08:07
ingy perl6 modules are installable now
luqui schweet
nothingmuch ingy++; # all though i don't really know what happenned ;-)
ingy nothingmuch: obviously you've never wrestled with MakeMaker
nothingmuch never 08:08
not going to either
ingy I have Test.pm in ext/
nothingmuch unless i get paid, like, $200 an hour
ingy as a regular Perl6 module
and it still gets used properly for pugs tests
luqui very nice 08:09
ingy and then gets installed properly
I also wrote Pugs::MakeMaker in ext
for 3rd party perl6 modules
drop in replacement for ExtUtils::MakeMaker 08:10
I need to clean up a bit then checkin
nothingmuch wow, we have <word word2>! 08:13
coolness 08:14
beh 08:22
nothingmuch can start weekly build at work
pugs is going on hold,,
want to see quoting.t so far?
larsen does 02atoms.t need a plan ? 08:26
nothingmuch i bet it does 08:28
larsen: are you a committer? 08:37
larsen no
nothingmuch sign up at openfoundry.org 08:38
ingy perlbot: seen autrijus
nothingmuch perlbot seen autrijus 08:39
beh
Khisanth perlbot does not have such a function
nothingmuch info says idle: 3 hours 39 minutes
larsen: 08:40
rt.openfoundry.org/Foundry/
wolverian wolverian@chronoa:~/code/remote/pugs$ svk 08:42
Weak references are not implemented in the version of perl at /usr/share/perl5/PerlIO/via/dynamic.pm line 61
ouch.
nothingmuch 5.005_3?
wolverian 5.8.4 08:43
larsen nothingmuch: I'm registered
wolverian this is on ubuntu; trying debian now.
larsen but I esitate to begin committing 5 minutes after my first checkout 08:44
nothingmuch larsen++
if you have input, why not?
no one will shoot you if you make an error
nothingmuch.woobling.org/pugs/t/op/quoting.t 08:49
joejiang help 08:56
08:58 sorje_ is now known as sorje
cls_bsd_ 1/1 skipped: No Kwid parser yet 09:02
ok, sync again
nopaste.snit.ch:8001/2001 # hmm 09:05
wolverian okay, svk works on debian. :) (I have to ask someone why ubuntu's perl doesn't have weakrefs..) 09:16
interesting, ghc on debian sid depends indirectly on gcc-2.95 09:27
that is pulling in too much on this poor old computer :)
ingy hola 09:28
is pugs repos down again?
wolverian works here.
ingy hmm. worked 2nd time 09:29
stoopid intarweb
fayland is autrijus here? 09:30
ingy no 09:31
fayland when will he come back?
ingy I don't know 09:32
fayland o, Thank u anyway.
ingy ok
huge patch incoming....
anyone around to test? 09:33
fayland me.
ingy ok good. give me a couple minutes
fayland fine.:)
ingy fayland: still there 09:49
492 committed
fayland ya 09:50
ingy Perl6 module support is here
could you up and test for me
fayland ya, i'm just svn update
cls_bsd_ test?
svk up -s
oops
ingy what is -s? 09:51
ah... svk
fayland Simple::Module?
ingy ?
Sample::Module
fayland o ,i see. 09:52
clkao waves at ingy
ingy hi clkao
I just added module installation and authoring support to pugs
the tests for Sample::Module fail because pugs can't use a multinode module, like 'use Foo::Bar' 09:53
we now have Pugs::MakeMaker 09:54
theorbtwo Don't you need to quote that, or put a :: sigil on it? 09:55
fayland perl makefile.pl? Cann't locate Pugs/MakeMaker.pm
forgot to add path to lib?
ingy no
fayland: you need to install pugs first :P
fayland ya, i install it 09:56
installed
pugs test.t?
ingy where did Pugs::MakeMaker get installed?
fayland the svn folder 09:57
ingy what?
fayland need cpan Pugs::MakeMaker?
cls_bsd_ No tests defined for Pugs::MakeMaker extension.
No tests defined for Test extension.
oops, wrong way
ingy gah, listen all 09:58
svn up; make purge; perl Makefile.PL; make test; make install
fayland make purge? what's that? i'm new to svn 09:59
ingy gah... it's not svn
it's a *make* target
anyway, just do it
fayland o ,i use nmake , it don;t know 'purge' 10:00
ingy make purge resets your dist
deletes all the intermediate build files
oh good, windows 10:01
need to test this on windows
fayland and cd the modules/Sample-Module?
then perl makefile.pl?
ingy did you do the other stuff? 10:02
fayland no 'nmake purge';
no
ingy are you saying it doesn't work, or you didn't do it?
fayland Cann't locate the Pugs/MakeMaker.pm 10:03
when i perl makefile.pl
ingy nopaste pugs -V
wolverian perlbot: nopaste?
perlbot Paste your code here and #perl will be able to view it: sial.org/pbot/perl
ingy wolverian: did you test this patch? 10:04
nothingmuch did anyone look at the quoting tests prototype?
wolverian ingy: no. give me a sec to up.
fayland :) I have to go to class.
ingy ok
fayland sorry.
see u later.
nothingmuch can perlbot be convinced that nopaste for perl6 is different 10:05
ingy teaching windows users is hard
wolverian few files are missing. 10:06
ingy ?
wolverian it scrolled by already. MANIFEST stuff I assume. I'm on windows and I can't figure out how to make putty STOP THE SCROLLING while I try to look at the backlog. 10:07
(I want home already. :/)
mauke hmm, does ctrl-s work?
wolverian yes! thanks. 10:08
pasteling "wolverian" at 80.222.110.168 pasted "missing files" (6 lines, 185B) at sial.org/pbot/7946 10:09
wolverian I don't know how important that is. :)
mauke: how do I make it run again? help! :)
pjcj ctrl-q 10:10
mauke ctrl-q
wolverian thanks.
ingy wolverian: fixed. thanks 10:11
wolverian ingy: you're welcome.
testing now.
ingy wolverian: what is your os? 10:12
wolverian ingy: ubuntu hoary
(not very special I guess.)
autrijus greetings /\camels...
autrijus backlogging
wolverian greetings, autrijus. 10:13
ingy autrijus!
wolverian when are we going to have real multidim arrays? :)
autrijus wolverian: sure, just a bit
wolverian all tests succesful.
autrijus still reading logs 10:14
ingy wolverian: do a make install, and test modules/Sample-Module
wolverian failed 10:15
ingy ?
the tests failed
but did perl Makefile.PL work? 10:16
wolverian yes.
ingy excellent
when autrijus is back we can fix the problem with the tests
wolverian: do a make install on Sample::Module 10:17
what path does it install to?
wolverian Installing /usr/local/share/perl6/Sample/Module.pm 10:18
ingy :)
wolverian nice. :)
ingy no collision with the perl5 version
wolverian it then adds itself to the perl5 perllocal.pod, which is a tad strange :) 10:19
ingy yeah, well...
it's all very rough at this point
wolverian getting there, though! nice. 10:20
ingy autrijus: ping
wolverian I need to write a perl6 vim syntax file.
perl5 syntax highlighting isn't very good for perl6.
ingy autrijus: I need to go to bed, can we discuss the patches quickly?
rgs wasn't luqui looking at this ?
wolverian rgs: vim? I don't know. awesome if he is. 10:21
autrijus ingy: sure.
rgs wolverian: yup.
ingy did you read my checkin notes?
autrijus eclipse highlighting seems good enough
reading
wolverian I wonder if he needs help. I'm not practiced in vim scripting but I want to help.
autrijus: I'd like to highlight types and traits, at least. 10:22
autrijus looks correct.
wolverian: *nod* that'd be cool
nmake passed. doing nmake test
ingy basically we have ext for core modules and modules for other stuff, and we have Pugs::MakeMaker for perl6 Makefile.PLs 10:23
autrijus passed.
nmake install does something weird
Installing C:\Perl\bin\pugs.exe
Installing C:\Perl\site\lib\Pugs\MakeMaker.pm
Installing C:\perl6\lib\Kwid.pm
ingy yep 10:24
autrijus @*INC:
./blib6/lib
C:\perl6\lib
(skipped a few)
okay. maybe I'll use native separator
i.e. .\blib6\lib
but that's fine for now
great work!
ingy it's still rough
autrijus reading WritePugs()
ingy autrijus: now see what happens in module/Sample-Module 10:25
autrijus ok. what's diff between ext/ and modules/ ?
to me they look fairly similar?
is modules/ non-core?
ingy ext is for core modules
all the ext modules are installed when you install pugs 10:26
autrijus gotcha. already grokked.
ingy and they need the pugs framework
autrijus yup yup
we totally need 6.0.11.
ingy modules/ modules are standalone, after pugs is installed
autrijus nmake dist produces 10:27
Sample-Module-0.01.tar.gz
is it supposed to be correct?
ingy yes
autrijus larsen: you were seeking committer right?
I thought it's all x.y.z now
ingy ?
autrijus 0.01 is barely legal
0.0.1 maybe? 10:28
ingy sure, ok
I didn't know this standard
autrijus S11 says that
ingy fine
wolverian hrm, allowing the , in 'sub foo (...) returns bar, is baz { ... }' makes it surprisingly much easier to read for me.
I wonder if that is legal.
autrijus it is not. p6l. :) 10:29
larsen autrijus: I just registered on openfoundry
ingy C:\perl6 should really be C:\Perl6
larsen autrijus: I didn't anything so far
autrijus ingy: your sample-module put things to blib/lib
not blib6/lib
so "make test" fails 10:30
bzzt
ingy autrijus: so does pugs handle two node modules?
wolverian autrijus: oh, it has been discussed?
ingy use Foo::Bar
I thought that was the problem 10:31
autrijus it does of course
ingy ok fixing...
autrijus parser line 239: 10:32
names <- identifier `sepBy1` string "::"
return $ App "&require" [] [Val . VStr $ concat (intersperse "/" names) ++ ".pm"]
so it split by :: then join by /
and add .pm
again, clear as ink
wolverian: no, I mean, "for discussion, post to p6l"
wolverian autrijus: ah, right. thanks.
(I'm a bit scared about p6l. not wanting to look foolish and so.) 10:33
autrijus mmm lwall calls p6l is typically cluttered with "idle speculations"
wolverian well, that makes it easier for me.
autrijus so the comma suggestion should feel right at home.
:)
wolverian okay, firing away.
oh, and I still haven't written the pattern matching post, because I'm not at all sure on how to phrase it. I need to learn haskell well first, I think.
autrijus just YAHT is enough :) 10:34
ingy: also, while you're at it, change t/test.t to say 'require' not 'use'
wolverian I'm trying. :) 10:35
autrijus larsen: so, you going to add a plan to 02atoms.t?
(btw, you're a committer now; welcome aboard)
larsen autrijus: thanks :) 10:36
autrijus :)
larsen yes that could be my first patch
autrijus is still writing "Choreography Specificationdesign document for @crazy_clients 10:37
will take another hour or so :-/
ingy: your makemaker foo is truly crazy. 10:38
theorbtwo Choreography? What is it that @crazy_clients does?
autrijus web services?
REST protocols 10:39
the document that describes how multiple web servers interact
is called choreography spec
larsen nice choice of word
autrijus the W3C folks use that all the time
ingy autrijus: it was really hairy 10:42
autrijus: it was not easy to do, but I think it was a reasonable solution 10:43
autrijus yup.
ingy++
ingy =)
I think perl6 modules outside of pugs core should build in blib, not blib6. But I'll use blib6 for now until I get the other parts in place 10:44
autrijus well 10:46
you can use blib
and fix
ENV->{PERL6LIB}
to not say Q*t*
q*t*
ingy right
autrijus but t, blib/lib, blib/arch
which is cleaner.
ingy or support -I
autrijus is it currently using -I? 10:47
harness I mean
ingy not sure
larsen ok, done. I hope I didn't messed up things with svn
autrijus works.
larsen++
ingy: I can add multiple perl5lib 10:49
but you need to add pathsep to config.
ingy sure 10:51
I can do it all tommorrow
I need to learn my haskell too :)
autrijus: are you sure require Foo::Bar works 10:52
i don't think it does
unexpected ":"
expecting word character, "-", ";", statements or end of input
NonTerm "./blib6/lib/Sample/Module.pm" (line 1, column 14)
autrijus pugs> . require Test::Foo
{{ App "&require" ('Test/Foo.pm')
}}
you sure you are using require?
ingy yes
autrijus don't use 'use'
oh. 10:53
fixed.
committing
ingy pugs> require Sample::Module
*** Evl: App "&require" ('Sample/Module.pm')
*** Ret: *** Error: "\nunexpected \":\"\nexpecting word character, \"-\", \";\", statements or end of input"
autrijus yup. r496 fixes it. 10:54
sorry, was only checking the require site.
wolverian sent. damn, that was the longest mail I've written about such a small thing. 10:56
ingy yay, it worked!
autrijus++
autrijus :)
wolverian++
wolverian thanks. :) 10:57
(if the importance/length ratio holds, my post about pattern matching will be roughly 300 pages long.)
autrijus lol. 10:59
wolverian my main worry about the pattern matching in perl6 is that it would be so ugly, compared to haskell.
(syntax-wise)
I'd be happy with just being able to match constants in signatures, and leaving it at that, I think. 11:00
(in addition to types, that is...)
ingy autrijus: could you retest windows with r497?
I need zzzzzzzz. 11:02
autrijus looks good.
ingy does it do the C:\Perl6 thing? 11:03
autrijus archlib: C:\perl6\lib
ingy :\
autrijus letme purge
now works. 11:04
yay!
ingy you must have a fast machine
autrijus I have a x86.
;)
mmm Installing C:\Perl\bin\pugs.exe.bat
autrijus wonders how to get rid of that
ingy ok, good night 11:05
zzzzzzzzzzz&
autrijus nite! 11:06
ingy++
autrijus dinner & 11:27
metaperl hey no absolute value function? 12:17
autrijus abs() you mean? 12:36
nothingmuch metaperl: i think it's broken sometimes, arith.t bails out if it isn't proper 12:37
autrijus no, arith.t defines its own abs
metaperl I wrote my on abs because the builtin didn't work
paste?
perlbot paste?
perlbot Paste your code and #perl will be able to view it: sial.org/pbot/perl dragon.cbi.tamucc.edu:8080 erxz.com/pb
autrijus right. let me take that away. 12:38
metaperl right here: www.hcoop.net/~terry/talks/p6-junct...lide5.html
autrijus abs() implemented.
r499, enjoy
it's just two lines: 12:39
op1 "abs" = return . op1Numeric abs
and
\\n Num pre abs (Num)\
so, if people wish to add cos, sin and other math functions
just copy and paste and commit (with tests!).
nothingmuch autrijus: two bugs 12:40
autrijus yes?
nothingmuch look at the new and improved t/op/assign.t
the old one was moved to t/syntax/decl_blah_prec.tsomethingorother
autrijus ok... ?
sliced assignment isn't there, I'm aware of that 12:41
nothingmuch and the bottom of t/op/array.t
also, two issues 12:42
i think make test should be using 'prove -r t'
and that MANIFEST should be 'make manifest'ed on each release
and MANIFEST.SKIP versioned instead
autrijus M.SKIP is already versioned. 12:44
...
shapr ,,,
really big semicolons?
nothingmuch whoops, hit cmd+q instead cmd+w 12:45
btw, you're on mac, right?
autrijus I could be. 12:46
i.e. not currently, but I have another G3 ibook
my %hash = undef;
will it make %hash contain (undef => undef) ?
nothingmuch subetha sessions could be fun occasionally
autrijus '' => undef I mean
sure; I worked out Kwid parser with ingy via SEE
nothingmuch i have no idea
metaperl autrijus, there is a make install problem with 499 12:48
pasted here: erxz.com/pb/515
perl Makefile.PL PREFIX=~/perl
used to work with no probs
now something is trying to write to /usr/lib
autrijus indeed. that's what I'm afraid.
ingy changed lib lookuppath from /usr/lib/perl5/lib/Perl6/lib
into
metaperl I dont have permissions for /usr
autrijus /usr/lib/perl6
metaperl I am trying to install in my local home directory 12:49
autrijus aye. you need to ping ingy for that 12:50
PugsConfig.pm needs to honour PREFIX=
either that, or Pugs::MakeMaker needs to do that.
for now, work in the local dir first. sorry.
I'll get this cleared up before 6.0.11.
hi trexy. 12:51
nothingmuch wonders if anyone wants to help expant t/op/quoting.t
there's lots of sysyphic work
test that all the adverbs and short versions work 12:52
test Ā«Ā» for shell quoting semantics
autrijus I'd like to help, but I'm fixing your other bug and try/catch instead. 12:53
t/op/array.......................ok
1/40 unexpectedly succeeded
nothingmuch thinks this good for someone starting out
a chance to get familiar with new things
autrijus t/op/push........................ok
5/27 unexpectedly succeeded
nothingmuch w00t 12:54
autrijus nice. I think I'm doing many things correct.
t/op/unshift.....................ok
2/39 unexpectedly succeeded
adding autovivification. 12:58
anyone care to help me unTODO the tests in unshift, push and array.t?
nothingmuch i'll do it 12:59
autrijus cool. sync up to r500 and see
I'll bbiab.
cls_bsd_ is doing >svk up -s .;make purge; perl Makefile.PL; make test 13:00
t/op/array.......................ok 13:05
1/40 unexpectedly succeeded
nothingmuch uhuh
cls_bsd_ t/op/push........................ok
5/27 unexpectedly succeeded
oh..
great, autrijus just pasted it ...
nothingmuch they need to be untotoed
nothingmuch will get to it in 2 mins
Limbic_Region out of curiosity, did you or someone else fix the chop bug yet nothingmuch? 13:08
scw nothingmuch: hello, in t/op/zip.t, the zip() is used as zip(@a; @b), shouldn't it be zip(@a, @b)? (As examples in S03)
nothingmuch luke said no 13:09
that's what i started with 13:10
but he corrected me
what is the chop bug?
autrijus greetings fayland! 13:11
sorry I missed you before 13:12
scw: (@a, @b) flattens.
nothingmuch: chop(@array) doesn't work
since chop is currently only a Str op in Prim.hs
just need to write up another implementation for List.
fayland hihi
autrijus hcchien: coordinate with fayland a bit?
he'd like to do p6l10n/zh-cn/
Limbic_Region could have swore it was nothingmuch that pointed the chop( @array ) bug out last night
fayland ya, i heard from hoowa that u floks are doing the translation work? 13:13
autrijus fayland: right: see svn.openfoundry.org/p6l10n/
Limbic_Region goes back to lurking
fayland ok.
autrijus oh, you can also start by fixing PA01 for me :)
svn.perl.org/perl6/pugs/trunk/docs/...rview.html is just converted from trad. chinese
so I'm not sure if the terms I use there is correct
hcchien sure, so fayland will take the zh_cn part? 13:14
fayland wait a moment
Limbic_Region hopes autrijus is feeling better
autrijus I am :) 13:15
fayland have a phone. :)
nothingmuch it was me
who noted the chop bug
fayland i saw 01Overview,that's great
nothingmuch it's tested
sorry, business at work 13:16
fayland nothing need to change.
hcchien, add a floder zh-cn, i'll do my best. 13:17
how can i add/update the document? use svn? 13:18
nothingmuch uhuh 13:19
funny
i changed diag in Test.pm to split the string on \n and then say "# $line"
so that multiline diagnoses are ok
this causes a problem: 13:20
autrijus fayland: right. give me your email
nothingmuch say("# Failed (TODO) test ($?CALLER::POSITION)");
autrijus or rather, give hcchien your email
nothingmuch when translated to diag(...)
autrijus he'll invite you to the p6l10n project
fayland [email@hidden.address]
autrijus and you can then commit using svn to svn.openfoundry.org/p6l10n/
nothingmuch then the test output becomes FAILED (TODO) test (.../Test.pm at line 57, column ...)
autrijus hcchien: give fayland an invitation? :)
nothingmuch i think haskell is lazifying the interpolation of $?CALLER::POSITION
and doing it later with a different callstack is changing the results 13:21
fayland maybe just convert is ok?
nothingmuch or maybe not haskell, the impl itself
am i on the right track?
nothingmuch will try to write a test for this sort of like Devel::FIXME's tests 13:22
autrijus fayland: maybe, I'm not sure.
hcchien autrijus: sure. a sec
autrijus nothingmuch: try $CALLER::CALLER::POSITION
nothingmuch anyway, i'll keep the change, since it allows comparing multiline strings without ruining harness results
autrijus: sure, that's a workaround 13:23
but it shouldn't happen
autrijus I agree it should not.
nothingmuch since the place $?CALLER::POSITION is put in is the same
autrijus and thanks for your willingness to test it :)
nothingmuch ok, so i'll try to test
autrijus is still writing weird choreography foo 13:26
nothingmuch explain?
autrijus just some $work thing. need to design how multiple company's web services work together
hcchien fayland: invitation is sent 13:27
autrijus the XML formats used, the order of GET/POST calls, dependencies, retry policy, &c.
at least REST is making this much easier.
autrijus wonders if it's possible to implement this case in perl6
Limbic_Region notes that the release of Parrot 0.1.2 (Phoenix) has happened 13:28
autrijus yeah, I noticed it too.
maybe I should try to compile it.
will the next version be called Firebird?
cls_bsd_ then firefox? lol 13:29
autrijus :)
fayland Thanks, i receive it.
autrijus parrot 0.2.1: Firefox
Limbic_Region is responsible for the last Parrot release name
autrijus Limbic_Region: it means that it's reborn? 13:30
Limbic_Region Phoenix - yes
but that's not the one I am talking about "Poicephalus"
0.1.1 release
autrijus ahh.
that's a nice name.
Limbic_Region Phoenix is a mythological bird that is consumed by its own fire and then rises again from the ashes
nothingmuch t/magicals/caller_pos.t 13:31
have fun
Limbic_Region Poicephalus is an actual real Parrot
autrijus danke.
what about the untodo work? :)
nothingmuch wait wait wait
i have a stack
i was doing something
then i found the bug
so i wrote a test
now i'm back to that
then i can go back to quoting.t, finish the bit i was working on 13:32
and preempt
and untodo
autrijus that's fine. I just unTODOed it.
r502 :)
so you can go back to quoting.t.t 13:33
nothingmuch ok =)
Test.pm updated
in a way that is correct
but currently annoying
so that you'll fix t/magicals/caller_pos.t faster ;-)
www.asianbridesonline.com/smart-match/ 13:46
smart match
beh
i hope perl6 raises the google rank
cls_bsd_ svk up -s again 13:47
nothingmuch are binding and flattenning tested properly? 13:48
ah 13:49
bootyful
autrijus: how hard will it be to stub ~~ with something? 13:55
autrijus very easy, as long as you define what something is 13:56
nothingmuch "eq"?
it seems like simple logic, really
it is basically a big if else/switch statement
i reckon you could implement 30-40% in under half an hour
autrijus where is ~~ on precedence table? 13:57
nothingmuch uh
(dyslexia)
chaining binary
right next to >= and eq 13:58
you find ~~ and !~
autrijus ok. 14:00
so ~~ is chaining?
how bizzare!
nothingmuch i have no idea how
but it appears so
autrijus $a ~~ $b ~~ $c
nothingmuch sometimes the rhs doesn't make sense being compares
s/s$/d/
but whatever
.reverse.tr/s/d/
nothingmuch starts thinking in perl6 14:01
fayland see u all later. 14:06
nothingmuch ciao
pmichaud good morning, all 14:11
nothingmuch morning, pmichaud 14:12
autrijus hey pmichaud!
pmichaud hello nothingmuch, autrijus
I'm looking at the question that was posed to p6c earlier about the error message with the dot operator
metaperl oh my question... 14:13
pmichaud I'm curious if perl6 allows spaces between the method dot and whatever follows
metaperl are spaces allowed around the dot?
pmichaud I dunno :-)
metaperl there's an echo in the room :)
nothingmuch before the dot, i think yes
after the dot, i think no
pmichaud well, spaces are clearly allowed before the dot, that's why it exists :-)
nothingmuch but before the dot must be unamibiguos because there's topicalizer
pmichaud otherwise we can't do $foo .($bar)
nothingmuch logically after the dot there shouldn't be 14:14
since it lets us extend whitespace up to it
so... =P
pmichaud but after the dot -- I didn't see any examples in the synopses that included spaces after the dot
nothingmuch luqui could prollly answer that
autrijus currently it's a syntax error to have space following dot.
in pugs.
pmichaud shall I forward it to p6l? 14:15
nothingmuch autrijus: how's the ~~ stubbing coming along?
i have a preliminary test
i'm sick of working on it for now
but just so you know, it's getting there
i'd rather not eval everything 14:16
autrijus oh, it's done
I just had not committed it
nothingmuch can i cherry pick with svn?
or maybe you'd like to take over the test stub, and commit them both at once? 14:17
autrijus you can cherry pick with svk.
nothingmuch or perhaps vice versa
svk is clunky on my box
autrijus with svn too, via a awkward "svn merge"
nothingmuch i haven't grokked it yet
autrijus yup, so I heard.
nothingmuch and something is wrong with it
autrijus anyway, up to r506
and commit your test
r506 has ~~.
nothingmuch i'll first make sure it compiles and all
give me 5 mins
autrijus sure 14:19
pmichaud: so, how's going these days? :)
nothingmuch do we have ^ ..^ ranges?
autrijus what is that?
I had no idea, so I didn't do anything about it.
pmichaud autrijus: better now -- for the past week and a half I got swamped by having to babysit sick kiddies :-(
nothingmuch 1 ^.. 5 == 2 .. 5
autrijus pmichaud: aww :( 14:20
nothingmuch: wow. and how useful it that?
nothingmuch uh
=P
autrijus where is it specced?
pmichaud autrijus: yeah, it kept me away from doing much perl 6 work. But I'm back :-)
nothingmuch num ~~ range...
pmichaud ^.. is listed in S03, methinks
nothingmuch so i just tested for it
i think it's silly
autrijus it's listed in S03. 14:21
not defined.
reading A03
not in A03.
so, hey, it's unspecced :)
nothingmuch: where did you get the idea that ^.. means +1.. ? 14:22
nothingmuch i don't remember
i heard it was excluding range
pmichaud ..^ means everything up to but not including
autrijus pmichaud: can we get that and unary = somewhere in either synopsis or apocalypse? :)
<- feeling uncomfortable implementing piles of unspecced features 14:23
pmichaud ..^ is mentioned in S09 and S11
nothingmuch that's what I meant by excluding...
autrijus true, but defined only implicitly :)
but ok, I'll implement them now. unary = as readline is unspecced, though? 14:24
pmichaud yeah, I think unary = is still unspecced
Steve_p No more assignments :)
nothingmuch unary, silly! 14:25
autrijus Steve_p: nah, assignment is binary
pmichaud it'll be interesting to note the differences between $x = $file, $x == $file, and $x = =$file :-)
autrijus all three are implemented in pugs :)
pjcj Looks like using hat with pugs isn't going to fly, as pugs uses some libraries which are unsupported in hat. 14:26
autrijus pjcj: can we leave them unhatted?
pjcj I'm not sure - I couldn't find an easy way, but I'm just learning about hat.
nothingmuch t/op/smartmatch.t 14:27
theorbtwo Hat works as a preprocessor; I think we'd have to leave the entire file unhatted...
pjcj theorbtwo: right
theorbtwo ...which doesn't fly because it wants to have the entire stack hatted.
Steve_p Oh, duh! 14:28
Steve_p gets more coffee to shake out the cobwebs
autrijus is it possible to "support" those libs 14:29
using stubs?
nothingmuch can't think of any generic feature other than OOP to test for
theorbtwo Bracketless if?
autrijus is again amazed by nothingmuch's prolificity
theorbtwo my <type> $x;
pjcj The problem is that files using unsupported libraries cannot be parsed at the moment.
nothingmuch theorbtwo: where is the introspection of that specced? 14:30
should i just test that my Int $foo; my Str $blah; can't be assigned to eachotheR?
my Int $foo;
$foo ~~ Int?
theorbtwo No, assigning to each-other isn't automatically dead...
That'd work, but tests for both my Int $foo and ~~.
Make a "I'm still here" test and a sepperate ~~ test? 14:31
nothingmuch i'm still here = ok(eval 'my Int $foo; 1', "did not die")?
i just committed ~~ ;-) 14:32
well, a partial ~~
theorbtwo Oh! Nifty.
Yep, nothingmuch.
nothingmuch since ~~ is now a synonym for eq, temporarily, it's a bit weird
some things are todo_ok, and some are just ok()
theorbtwo Hm... I should think it's quite possible to be a bit smarter then that...
nothingmuch i wanted to commit quickly, because autrijus already did the stub 14:33
so the Hash type ~~ is not there
and some things i did not 100% understand
by bracketless if you mean 'if 1 > 0 {}'? 14:36
or 'expr if 1 > 0'?
or ...?
autrijus: see t/op/smartmatch.t for array element truth:
@array ~~ .[1]
this is true if element 1 of array is true 14:37
metaperl wow, that is some wild syntax
nothingmuch (seems useless, but not in context of given @a { .[0] { } }
anywho, it doesn't parse
theorbtwo if 1 {ret "Wohoo"} else {ret "WTF?"}
metaperl what is wrong with @array[1] to test for that element being true?
autrijus nothingmuch: right. eval it.
nothingmuch it is evalled
mauke if { 1 > 0 } {} should compile, right?
autrijus it should. it currently does not. same bug as parenless. 14:38
theorbtwo Yes... but I'm not sure what it does...
autrijus hi stevan!
metaperl nothingmuch, what is the ~~ operator?
stevan morning autrijus
nothingmuch metaperl: smartmatch
stevan hola nothingmuch
metaperl I hope this group is for learning Perl 6 as well as Perl 6 development :)
autrijus metaperl: nothing is wrong with @array[1]. 14:39
the idea of smartmatch is to mimick given{} behaviour.
metaperl given?
nothingmuch hola stevan
mauke given .. when
metaperl given is not a keyword is it?
nothingmuch give $foo { when blah { } }
mauke like switch .. case, only smart
metaperl I think I understand you
nothingmuch s04
metaperl checks synopsis04
autrijus S04 explains it pretty well, yeah. 14:40
integral 1
autrijus also check out E04.
"And I'd se-ell my-y so-oul for flow of con-tro-ol ... over Perl"
nothingmuch theorbtwo: t/var/type.t added, for lives ok, and t/base/if.t updated for parenless 14:42
autrijus actually, E04 is a pretty good read for pretty much everything 14:43
nothingmuch autrijus: had a look at t/base/control_blocks.t? 14:44
theorbtwo makes some food, BRB.
autrijus yup, I had.
I need ~2 day of concentration 14:45
nothingmuch any idea on how to make it a bit better?
autrijus to do Rule in Eval
which is neccessary to make BEGIN work
nothingmuch Rule in Eval?
autrijus so maybe this weekend.
nothingmuch: "evaluation during parsing"
nothingmuch explain
ah
purdy
nothingmuch especially likes $var = BEGIN { "foo" }
autrijus so you can use eval'' to test them too
nothingmuch i didn't want to do that 14:46
autrijus eval 'my $x; $x = 2; BEGIN { $x = 3 }'
nothingmuch because of INIT vs. FIRST vs. ENTER
autrijus oh ok. just leave the comments in then
nothingmuch when we have these working, i'll retro glue eval behavior
autrijus I'll deal.
'kay.
nothingmuch so we don't have the mod_perl/require INIT { } block mess all over again
autrijus yup yup.
nothingmuch even though macros and a proper object system will prolly do away with 95% of the reasons for INIT blocks in perl5 code 14:47
what is the status of the rule engine?
autrijus you can ask pmichaud :) 14:48
the pugs rule engine won't happen before OO
as detailed in the roadmap 14:49
nothingmuch i'm curious as to how it relates to parsec, etc
autrijus I'm curious too.
<- has no plan
nothingmuch we have a roadmap?
autrijus maybe we use PGE to compile rules to parsec.
nothingmuch googles
autrijus nothingmuch: in PA01
"Do you have a roadmap for Pugs development?"
hcchien What is the answer? :p 14:50
autrijus # 6.0: Initial release.
# 6.2: Basic IO and control flow elements; mutable variables; assignment.
# 6.28: Classes and traits.
# 6.283: Rules and Grammars.
there you go.
we're close to 6.2 now
just need to fix the remaining prim todos and sync todos 14:51
and try/catch/given
nothingmuch prim todos?
que es?
autrijus the todo tests on primitives.
nothingmuch ah
autrijus on misimplemented primitives.
s/sync/syntax/
to be honest, I thought I'd take at least 6 months to reach 6.2 ;) 14:52
nothingmuch hopes his haskell fu can materialize sometime soon enough to be useful
i think the community has been very accepting 14:53
autrijus take your time; you're already amazingly useful
nothingmuch and overall there has been very little trouble
autrijus yeah. which also surprises me :)
nothingmuch well, haskell and fp are naughty words
but even so, you can't argue with facts
pmichaud well, I know the design team is very appreciative of all of the pugs efforts
nothingmuch fact is that pugs works
and it got here fast
and it gave everything a big kick in the arse 14:54
autrijus pmichaud: yup, and I'm really happy :)
nothingmuch a well needed one at that
theorbtwo Back. fp?
nothingmuch functional programming
theorbtwo (Arse-kicking)++
Ah.
pmichaud we're also glad that autrijus was able to see that haskell would be a good way to get some sort of implementation started
autrijus fun, as in joy
ction, as in ka-chin, as in big money
nothingmuch you'd have to be a hell of a naysayer to say 'pugs is stupid'
autrijus al, as in all, as in lots of people should join
nothingmuch only hopes more design people could lurk here to help answer questions 14:55
autrijus nothingmuch: luqui and pmichaud :)
nothingmuch pmichaud eq ?
pmichaud I'm the p6 compiler pumpking :-)
autrijus patrick michaud, perl6 compiler and pge pumpking
nothingmuch ah, leo
oh
otherwise
*blush* 14:56
i asked the thedamian and timtoady on PM, thedamian said ENOTUITS
and timtoady did not reply yet
autrijus via msg?
pmichaud I mean, with me and luqui you have the "compiler" representatives of the team
nothingmuch uhuh
theorbtwo Aye. I don't think Larry and Damian have time to lurk anywhere.
autrijus I know damian has no tuits. I don't blame him at all.
theorbtwo Or possibly inclination.
nothingmuch i don't blame
i just had to ask
pmichaud no, he really does have no tuits
theorbtwo I meant Larry re inclination. 14:57
autrijus pmichaud: seano and stevefink also visits here from time to time
nothingmuch luqui has been so useful in regards to writing tests correctly
but he's not always around
theorbtwo Never heard of him lurking anywhere; he prefers offline media.
nothingmuch that's what i sort of meant
autrijus although seano prolly isn't involved in P6C.pm anymore :)
pmichaud plus, it's not terribly efficient to have everyone on the design team lurking and chatting on irc -- between luqui and myself we try to keep up with pugs stuff
autrijus pmichaud: oh, re keeping up: ingy hacked together Pugs::MakeMaker today 14:58
pmichaud oooooh
autrijus so proper modules can be written and installed
pmichaud most excellent
autrijus already an example is there in examples/
nothingmuch autrijus: i can't make test since, btw
autrijus I mean modules/
pmichaud my goal for this week is to get PGE finished up with its stuff
autrijus nothingmuch: because of the make install trouble?
nothingmuch i prove -r with HARNESS_PERL and PERL6LIB set to ext/Test/lib
pmichaud although I have to go out of town starting Wednesday so it may be early next week
nothingmuch i didn't once make install
it's all in the src dir
./pugs foo 14:59
autrijus ah. so prove works
but not maketest?
nothingmuch exactly
autrijus weird. linux?
nothingmuch btw, prove -r uncovers two tests
autrijus osx?
nothingmuch osx
autrijus yeah the two tests isn't meant to be run.
it's there for _future_
ok, ingy is also on osx, so maybe you should check with him
in fbsd and w32 all passes
nothingmuch it's not urgent
i'll wait till someone gets around to it 15:00
autrijus nod. just let ingy know
nopaste the failure and post on p6c or tell him here or something
pmichaud: btw svn.perl.org is now closely synched 15:01
instead of by day
which should make life easier for some people tracking it
nothingmuch i told him by /query
pmichaud autrijus: I noticed that svn.perl.org is closely synched :-)
autrijus good then
nothingmuch++
pmichaud: you get commit mails?
pmichaud autrijus: I'm getting svn commit messages all the time instead of all at once :-)
autrijus: yes :-)
autrijus ahh. :D
nothingmuch sorry for that, pmichaud... =) 15:02
pmichaud nothingmuch: it's not a big deal -- I just browse through them quickly to see what's happening and remove them
if it becomes too big an issue I'll filter them
nothingmuch wasn't really serious.. =)
autrijus also pugs is the first time I've worked with the PM community 15:03
and I must say it's been wonderful. much better than ~3 years ago when I first joined there
theorbtwo Thank you, autrijus.
autrijus demerphq++ # for convincing me that perlmonks really rocks, when I was in germany 15:04
nothingmuch iit so does
ah! do we have gather?
is that in base or op? 15:05
autrijus we don't. I have a questions
nothingmuch because it's a block
autrijus question, even
is take{} a lexical sub
or a syn construct?
nothingmuch hmm
autrijus i.e. does given{} materialize a &take
nothingmuch i'd say it's easy to implement it as a lexical sub
autrijus or something else?
nothingmuch and i see no fault
autrijus sure. currently return() is implemented as such
except then you'd be able to \&take 15:06
nothingmuch ooh
autrijus and generally wreck havoc
wait! oh no
you can already \&return now
and it acts as a continuation
nothingmuch that's wonderful
autrijus boggles
pmichaud if it can be implemented as a lexical sub I'd say do it that way :-)
nothingmuch thinks if return_if can be implemented with that 15:07
autrijus pmichaud: but when happens if we take a reference to it? :)
nothingmuch without passing \&return
but accessing $OUTER somehow
\&return is GCed after sub exit, right?
pmichaud autrijus: well, perl always gives people enough rope to hang themselves if they want to take it
nothingmuch btw, this reminds me
is GC defined?
autrijus point well taken. let's do it as lexical sub then.
nothingmuch: parrot is using generational GC I think 15:08
anyway it's not refcounting anymore
pmichaud parrot is expected to use generational GC, although it doesn't do that yet
autrijus that much has been specced.
pmichaud at least I think that's what leo wrote recently
nothingmuch WANTS REFCOUNT GC!
autrijus pugs will just use GHC GC.
nothingmuch the oodles of horrible code I wrote for refcount GC 15:09
autrijus which is extremely advanced :)
nothingmuch all... dead...
*sniff*
nothingmuch remembers an O(1) purge time LRU cache
autrijus it's incremental generational with very small overhead and no pauses.
nothingmuch implemented by just popping elements off a linked list and letting perl cleanup the mess
autrijus # research.microsoft.com/Users/simonp.../non-stop/
wolverian I wonder if that would be useful for the parrot folk. 15:10
autrijus not sure. parrot != STG machine 15:11
but feel free to forward that reference. 15:12
OpenAFP.hs uses lots of weakrefs
and custom destructors
with pointer arithmatic
arithmetic even
wolverian I should take a look at leo's current GC scheme first.
autrijus and GHC's GC ensures that it's always running in constant space :)
autrijus would be absolutely delighted if parrot's GC can do something like that
wolverian (I'd be fine with refcounting too. automatic, immedate destruction on scope exit is wonderful.) 15:13
nothingmuch would like 'use gc 'blah'' to apply to new thingys created in the lexical scope the pragma was defined in
if only got immediate destruction on scope exit
i really like objc's (well, openstep's) GC scheme, too 15:14
you tell an object to register with a destroyer
x times
retain causes the object to up it's ref count
release to dec
count == 0, it deallocs itself
autrijus same as p5, no?
pmichaud hmmm, in reviewing my files I can't find where I thought leo had described the current state of gc in parrot.
maybe it's on p6i
nothingmuch anywho, when the destroyer object is destroyed, it sends x release messages to the object 15:15
it's very very flexible
and if you behave ok, not too much headache
jdv79 he's mentioned it on p6i in the last few weeks 15:16
autrijus wow. Ruby Interpreter.
obra irb? 15:17
autrijus somebody at Utrecht did a ruby interp using LML and Gofer.
which is very clas^Wclose to haskell.
obra ah. interesting. poor perl5. it has but one implementation
pmichaud obra: for the moment, ponie may fix that :-) 15:18
obra well, ponie is still the same codebases as 5.x
rgs and it's supposed to have the same bugs :) 15:19
autrijus bugward compat
theorbtwo Ponnie is supposed to slowly diverge, though sometimes I wonder if it's stopped diverging. 15:20
autrijus theorbtwo: no need to wonder: www.nntp.perl.org/group/perl.ponie.changes 15:27
theorbtwo Nov 4. I think that counts as pretty well dead. 15:29
obra "It's pining. For the fjords" 15:30
PerlJam theorbtwo: or you could think of it as moving really really really slow
pmichaud it's moving really really slow 15:31
rgs it's not dead 15:35
Khisanth just moldy?
autrijus nicholas still has plan for it, iirc.
pmichaud is suddenly reminded of monty python :-)
"it's not dead yet." 15:36
autrijus pmichaud: you too? :D
nothingmuch "i'm not dead yet" "you'll be stone dead in a moment"
pmichaud of course, people were probably saying the same sorts of things about perl 6 a month ago :-) 15:37
autrijus maybe someone will redo ponie in D, then 15:38
autrijus thinks D is nice
PerlJam pmichaud: or even 36 days ago (pre-pugs) :-)
theorbtwo thinks perl6 is feeling much better.
pmichaud pj: gee, has it been 36 days already?
I guess it has
wow, february just flew past
autrijus I've been counting the days :) 15:39
but yeah. it's a really short month.
nothingmuch this is truely amazing
the man months that have gone into pugs are not that many
and yet, wow...
how the hell 15:40
autrijus mumbles something about effective tools.
PerlJam nothingmuch: Easily 6 months I'd say.
autrijus 6 feels about right.
PerlJam er, 6 man-months
nothingmuch 6 months is very very little
man months
pmichaud effective tools, plus there's been a *lot* of work put into the design documents
autrijus yup. pugs won't be possible without the dec 04 revision.
nothingmuch well, that's true
autrijus before the dec batch of synopsis...
PerlJam yeah, design is always the hard part.
autrijus ...it's basically impossible for anyone to implement anything :)
nothingmuch that's true 15:41
pmichaud part of the reason why perl 6 floundered (and why I'm not farther along) is that many issues couldn't really be handled until after the december revisions of the synopses
autrijus yup. that much is clear
so, much kudos for larry and whomever else that gets that revision out
PerlJam clear to the "insiders" but not many others.
pmichaud and PGE would be farther along except that we had to rethink the whole capture semantics
autrijus PerlJam: clear as a "retrospective" :)
pmichaud and I needed Dan's string code that just came out in parrot 0.1.2 15:42
autrijus pmichaud: which, I'm happy to hear, is finally settled
autrijus mumbles something else about deadlocking :)
pmichaud autrijus: well, the capture semantics aren't completely settled, but at least we have an approach that is workable now :)
autrijus nice then
nothingmuch whaty are threads going to look like in perl6 btw?
i had a funny thought
i don't know how to name them
autrijus nothingmuch: read the two RFCs
about lightweight threads
and maybe come back with some tests in unspecced/ 15:43
nothingmuch RFCs are 'this must be'
autrijus I'm willing to experiment a bit with threads.
since threads in GHC == trivial
nothingmuch ok, dig this:
autrijus and has no chance of deadlocking :)
nothingmuch mandatory locks on vars
cause any code accessing them (read, write) to deadlock
autrijus 5005 threads?
autrijus waits for nothingmuch to finish
nothingmuch until it is realease
d
a thlosure is a { }, whose externally referenced vars, that are not redeclared within it 'is ro' 15:44
are automatically locked when it is threaded
this way, execution splits
but when there is competition for shared data that mustn't seem shared, there is waiting 15:45
nb lock checks
and other utils should help for boss threads
since globals are practically going away with perl6, this can be quite easy
to handle
autrijus there is still our() 15:46
and $*FOO.
if globals are really all gone, then yeah
but they are not.
nothingmuch in that case
since access is not so deterministic
locks are granted in a fifo order
the first thread to use $*FOO has it exclusively till it dies
ofcourse, people wanting proper concurrency just don't touch globals 15:47
but sanity is possible
autrijus I wonder if I should refer you to the STM paper :)
nothingmuch que stm?
autrijus also wonders if pugs should take advantage of STM.
research.microsoft.com/%7Esimonpj/Papers/stm/
nothingmuch refer refer
autrijus the Hot Topic in haskell world.
pmichaud well, I have to run off for a while -- bbl
autrijus see ya
nothingmuch adios, pmichaud 15:48
theorbtwo Hm, if he means by "transactional" what I think he does, it should gel very nicely with p6.
autrijus I think so too.
although parrot may not support that well.
nothingmuch my problem with ithreads is that i have no memory/time efficient way to get low latency updates on a long running task
i.e., a something that computes long and hard, with a web interface 15:49
theorbtwo (Where Larry seems to be putting much more emphisis on transactions vs lvalue subs then I would, but it's his language...)
autrijus personally I think STM is the Holy Grail of concurrency programming, at least in this generation of software tools :)
hey kcwu!
theorbtwo ithreads seem to me to be a worst of both worlds thing; almost might as well just fork. (This is unsurprising, as ithreads started as a way to fork where you couldn't.)
nothingmuch theorbtwo: i'd rather fork 15:50
it's much quicker
kcwu just start to learn haskell :)
nothingmuch my problem with forking is RPC
autrijus ithreads works on win32.
that's all I ask for.
<- has almost all clients on win32
nothingmuch you have to create a protocol, instead of just sharing
theorbtwo 1;
nothingmuch or deal with one that isn't perfect
autrijus kcwu: cool. doing YAHT exercises? :) 15:52
nothingmuch always wished for a compiler optimisation that would fill registers as early as possible, and use them as late as possible
PerlJam theorbtwo: forking and threads are variations on the same concept. The problem has always been that people tie those names to particular implementations.
nothingmuch and in the time it takes the bus to move stuff around, do other things
integral nothingmuch: isn't that what happens on RISC architectures? 15:53
kcwu autrijus: yes :)
nothingmuch i don't know, it just sounded good in theory
i programmed in assembler till the point that i know how it looks to the user, but never got further
twas a school thing
theorbtwo PerlJam, I know, but the variations are important ones. The implementations much less so. 15:58
nothingmuch wonders if temp vars can be expanded to transactional modification 16:00
sub is transactional { }
all changes in sub are rolled back on fial
or committed atomically on success
autrijus I also wonder if junctive autothreading can be made into real threads. 16:01
nothingmuch junctive autothreading is sideeffect free, no?
autrijus I mean, in pugs. should be trivial, if not for those pesky side effect things.
eh? no, they are not side effect free.
sub foo { say $_ }; foo(1|2|3);
nothingmuch also wonders if anyone ever looked at his taint mode genertalization post to p6l
ah
theorbtwo Um, did anybody ever specify what order they should be made in?
nothingmuch in case of sideffects, err, you don't
well, foo any(....) is defined as undefined 16:02
the compiler can decide to parellize
i would start by shuffling
theorbtwo Is it considered valid for that to print "2\n1\n3\n"?
autrijus right. so the question whether to parrallize.
theorbtwo: it is.
nothingmuch to make sure people eat shit making assumptions
autrijus s/whether/is whether/
theorbtwo I think it'd be perfectly valid to do so. I'm much less sure it'd be a win to do so. 16:03
nothingmuch well, it's a choice 16:04
on a 2 cpu, hyperthreading machine, this could be a big win
4 threads running at once
theorbtwo Depends a lot on the cost of starting threads.
nothingmuch HT taking care of latency issues with context switching 16:05
assuming threads are zero cost
COW
theorbtwo Right.
nothingmuch (in theory)
theorbtwo Depends on the arch.
If we're talking native threads, very cheap on Linux, much more expensive on win32. 16:06
nothingmuch i think perl6 is supposed to implement them regardless
somehow
marcusT mmmm, maybe guessing a language isn't the best way, but why does @foo = (1, 2, 3, 4) give "Can't write a constant item" message?
theorbtwo Yeah, I know, but the cost of starting a thread determines how often you should do so.
say(1|2|3|4) starting four threads is unlikely to be worth the effort. 16:07
nothingmuch but all(1 .. 100) * any(1 .. 100) with 2 workers is probably a 99% increase
you could also keep a pool 16:08
pre-autothread
spawn X workers at startup
and use them as needed
it probably will even simplify impl
autrijus my @foo; @foo = (1,2,3,4) 16:14
worksforme
nothingmuch gather.t finally whipped up 16:16
how far are hyper ops? 16:21
autrijus not parsed at all. 16:22
nothingmuch they are essentially not a very hard feature, though, are they? 16:23
autrijus not at all. the parsing is harder.
can any binary Op be hypered?
nothingmuch i think so
and also unary
autrijus $x >>x<< 3
nothingmuch @aĀ»++ 16:24
auto increments all parts of @a
theorbtwo I think the plan is for all ops, including user-defined operators and functions, to be hyperable. 16:26
(Either by having a seperate hyper'd implementation, or by sythesizing one from the normal defintion... I don't remember from where I'm getting that, though...) 16:27
nothingmuch basically, anything infix is hyperred if Ā»infixĀ«
no white spaced
anything unary postfix is Ā»++
autrijus makes sense.
nothingmuch unary infix is for example @a = -Ā« (1, 2); # ~~ (-1, -2) 16:28
if i understand correctly
also, @objects Ā».run
(i like that one especially)
(although i have sentiments for $_->foo for (@objects) in perl5)
.foo for @objects; # p6 equiv?
can you stack hyper for multiple dimentions? 16:30
autrijus perl6 is weird. in a good way. 16:31
wolverian I seriously hope you can't stack hyper.
nothingmuch why not?
@matrix Ā»Ā»+Ā«Ā« @matrix 16:32
makes sense
if you know the dimentions
ofcourse, you may be better off using a piddle
wolverian hrm, I guess.
nothingmuch and mmd invocant infix + that matches them
wolverian it just feels like too much in too little.
nothingmuch i think it's more consistent to stack them
but i don't know
theorbtwo You can do that, I think. 16:33
Khisanth but then what about @matrix Ā»Ā»*Ā«Ā« @matrix ?
nothingmuch @multiplied =
i don't see what's wrong
theorbtwo ...but you can't >>>>*<<<< for super hyper action.
autrijus oh. I may repeat myself, but I think pugs won't do latin1 >> and <<
malaire btw, does anyone know if solution for example 9.2 in YAHT is OK? I just get error message when I try it.
autrijus and I'd like to see latin1 banned from the language, but I'm biased :)
nothingmuch me too 16:34
hebrew is unbearable in anything but unicode
autrijus chinese too.
wolverian how is that related? just write your perl in utf.
(with chinese variable names! and stuff. yay. I am anticipating debugging chinese perl. :|) 16:35
nothingmuch because without a need for encoding as utf8 people won't
autrijus exactly.
wolverian: larry posted some chinese examples on p6l
wolverian er, so?
autrijus as justification for sigilless
nothingmuch wonders if rtl could be don
wolverian autrijus: yeah. :) it was nice.
nothingmuch אם 1 < 2 { $פוו = 5 {
פוו = foo 16:36
wolverian this font doesn't have those characters, I think.
nothingmuch אם = if
theorbtwo scratches his head.
wolverian (courier new. ugh.)
nothingmuch and {} are reversed
as well as sigils on the end
ofcourse
wolverian (er, andale mono.)
nothingmuch logically, they aren't
you type it in the same order
and it's the same char
s
but they're displayed reversed
=D
theorbtwo Ah. They're supposed to be displayed reversed; gaim isn't doing that. 16:37
I suppose all is fair if you predeclare, but that just gives me the heeby-geebies.
nothingmuch don't worry, i won't be uploading that to CPAN ;-) 16:38
but with macro support perl6 could be easily perligata'ed correctly 16:39
use Perl::NLS;
Khisanth nothingmuch: people might actually expect to get matrix multiplication from @matrix Ā»Ā»*Ā«Ā« @matrix :)
nothingmuch type perl with prims in your own language
i would expected $mul[0][0] = $a[0][0] * $b[0][0];
and then [0][1] = [0][1] * [0][1] 16:40
t/op/hyper.t added without interdimentional travel
can you declare operators yet? 16:43
nothingmuch has a ride home, ciao 16:44
ingy hola 17:03
autrijus hi ingy san! 17:04
17:04 _metaperl is now known as metaperl
ingy hello autrijus san 17:05
how goes?
autrijus very good. about to sleep now. 17:06
lotsa things happened in #perl6.
whilst you slept :) 17:07
as usual.
ingy hmmm 17:09
surprisingly no patches to my patches 17:10
17:11 Aankh|Clone is now known as Aankhen``
cls_bsd_ will 17:21
ingy autrijus: what do you think of a `-b` flag for -Mblib functionality
autrijus I think blib.pm.
ingy ok
autrijus not really convinced it's worth a flag.
ingy ok 17:22
so I was thinking of how to implement -M
is it easy to eval Perl6 code in the haskell code? 17:23
autrijus there is the "eval" op 17:26
so yeah
but -M implies 'use'
we only have 'require'
ingy good enough for now
autrijus but if you can live with -M means 'require' then sure.
ingy sb end 17:39
17:49 DrHyde is now known as DrSockHunter
nothingmuch beh, horrible weather 17:52
autrijus journal up. sleep & 17:53
nothingmuch sleep well!
nothingmuch walked home about 3km 17:54
it was drizzling mud,
there was a dust storm all day
and now it started dripping
i'd say 80-90% humidity
but hot
dada buonasera 18:01
larsen hi dada 18:02
dada hullo larsen :-)
a question for who's listening
is the unary splat operator implemented in pugs? 18:03
(I mean, *@array)
PerlJam dada: I don't think so. 18:04
dada PerlJam: ok, thanks
mauke it parses
dada mauke: but it breaks sub calls using it 18:05
I mean something like:
sub foo($x, $y, $z) { ... }
PerlJam There are many things that pugs parses that don't seem to actually work.
dada my @a = (1,2,3);
print foo(*@a);
my next question will be: where should I look to implement it? 18:07
PerlJam dada: most of the action happens around Parser.hs, Eval.hs, and Prim.hs 18:09
dada another one 18:19
nothingmuch morning
dada (feel free to kick me when I've reached my question quota)
PerlJam there's a quota? ;) 18:20
theorbtwo Nobody minds, dada.
dada PerlJam: I will know when I will reach it :-)
my($a, $b, $c) = (1,2,3); print "A=$a B=$b C=$c\n";
this one should print: A=1 B=2 C=3, right?
nothingmuch questions provoke thought
PerlJam dada: feel free to start using say rather than print :)
dada PerlJam: touchōæ½xE9
theorbtwo BTW, the perl6ish way would be s/print/say/, s/\\n//, but that's not important.
PerlJam dada: It should, but I bet it prints A=1 2 3, B= C= 18:21
dada nope
PerlJam no?
dada it prints A=1 2 3, B=1 2 3, C=1 2 3
PerlJam dada: bizarro.
theorbtwo Indeed.
PerlJam Are you going to fix that one too?
:)
nothingmuch dada: that's a bug
autrijus knows
it's tested in t/op/array.t 18:22
dada it's tested?
nothingmuch uhuh
down at the bottom
theorbtwo As a todo, that is.
nothingmuch i comitted today or yesterday
nothingmuch can't remember
dada ahhh I should checkout the svn
I'm working with 6.0.10 right now :-)
theorbtwo Yeah; in a project that moves as fast as pugs, the last release is always out of date.
luqui tests like that ought to be failing
not todofailing 18:23
PerlJam indeed.
theorbtwo Agree.
nothingmuch i thought that was 'fixed' a while ago?
PerlJam luqui: We just need to make sure to draw the line between "not yet implemented" and "implemented, but broken" in bright neon :)
luqui right 18:24
any other todos that are really bugs (I'm going through and untodoing them) 18:25
nothingmuch luqui++
i made many
lumi What's missing for "use"? 18:34
dada lumi: PACKAGE->import and the whole OO subsystem (I guess) 18:35
lumi It's a method call on a package object? 18:36
PerlJam you don't need OO to get use
you need BEGIN {} though
lumi I thought just modules, begin blocks and method calls
dada lumi: PACKAGE->import was the perl5 equivalent, sorry
theorbtwo Calling PACKAGE::import would be good enough for many users.
lumi Or sub calls, ignore me
All Java and no Perl makes lumi something something 18:37
theorbtwo PACKAGE::import(~PACKAGE) even better.
dada nothingmuch: I can't seem to find your stuff at the end of t/op/array.t 18:38
nothingmuch: the only difference between 6.0.10 and latest svn is the "new arrays are empty" test 18:39
nothingmuch err 18:40
sorry
t/op/assign.t
that's another bug
=)
lumi: BEGIN is going to be hard work 18:41
dada nothingmuch: ok, thanks
nothingmuch objects not that hard, but much has to be done beforehand
lumi Okay..
luqui untodoed stuff, r512
off to class 18:42
nothingmuch ciao luqui!
theorbtwo You should have a second pair of tests there: { my $foo='foo'; my $bar='bar'; ($foo, $bar)=($bar, $foo); is($foo, 'bar', 'flip'); is($bar, 'foo', 'flop'); }
lumi About array slices, what should @foo[1,3] = @foo[3,2,1] do? 18:44
theorbtwo p5 psuedocode: @oldfoo=@foo; $foo[1]=$oldfoo[3]; $foo[2]=$oldfoo[2]; # undef = $foo[1] is nop. 18:45
lumi Just a normal list assignment? 18:46
And lhs @foo[1,2] would be Totally Different?
nothingmuch why aren't we optimising? 18:48
theorbtwo I should think it'd just be normal list assignments all around. 18:49
nothingmuch ghc -O3 made things run much much faster
i'd say about 3x
lumi So a slice assignment is never a splice?
PerlJam lumi: no way.
nothingmuch theorbtwo: tests where? 18:50
dada nothingmuch: "Early optimization is the root of much evil"
theorbtwo At the bottom of t/op/assign.t
lumi So what's awaiting cabal clarification?
nothingmuch it's not premature
the test run is slow
and the optimisation is by GHC
PerlJam @foo[1,3] = @foo[3,2,1] would be the same as @foo[1,3] = @foo[3,2] which would be the same as @foo[1] = @foo[3]; @foo[3] = @foo[2]; 18:51
nothingmuch i don't run the debugger, so what do i care if it's optimised
PerlJam lumi: there was some problem with the slices that I don't remember the specifics of off hand.
nothingmuch not a single line of code changed, but lots to be gained
lumi @foo[1,2] = (1,2,3) is not a splice then
PerlJam oh! that's what needed clarification. (1,2,3) is said to be synonymous with [1,2,3] 18:52
If that's true, then @foo[1,2] = (1,2,3) is the same as @foo[1] = [1,2,3];
lumi Ahh um 18:53
integral so you'd need a star on the RHS or the LHS?
lumi Disturbing
PerlJam Though I can't imagine that's the way it should work.
dada PerlJam: no, it's not synonymous
*[1,2,3] is synonymous with (1,2,3)
theorbtwo That'd be very distrubing to me as well.
nothingmuch it's not star, it's got a funky name 18:54
unary splat
=)
dada [1,2,3] is always an array (which could be treated as a list in list context), while (1,2,3) is always a list
PerlJam dada: [] isn't the problem, () is. $foo = (1,2,3) will make an anonymous List and assign it to $foo such that you'd be hard-pressed to tell the difference after the fact.
dada mmm 18:55
PerlJam i.e., Larry has said that $foo = (1,2,3); $bar = [1,2,3]; are virtually the same.
dada are you sure it should make an anonymous list?
oh, ok then :-)
PerlJam dada: I'm not sure of anything :-)
lumi So, an array in scalar context is an array ref, and a list in scalar context is ALSO an array ref?
nothingmuch yep 18:56
lumi That's really overloading =...
dada and what should $foo = *@arr do? (supposing @arr contains (1,2,3))
nothingmuch i would guess same as @arr[0]
lumi So you'd need to splat the list to do the array slice assignment, which would make it plain what's going on, but if you don't splat it's confusing 18:57
PerlJam dada: in the absense of other contextual specifiers, I'd say it should do the same thing as $foo = 1,2,3;
nothingmuch like foo(*@a), with sub foo ($x, *@a) will yield $x = @a[0], @a = ...
PerlJam: except that comma operator now behaves differently in scalar context
dada ouch
nothingmuch also doing magical list ref things, i think
PerlJam nothingmuch: well, comma is our new list constructor, not () 18:58
but yeah.
anyway, there's much confusion to be had here :-)
theorbtwo sighs, and hopes that when Larry sees some of this stuff, he will come to his senses.
PerlJam theorbtwo: I don't want Larry to come to his senses, I want him to come to *my* senses ;-) 18:59
theorbtwo Even better.
PerlJam In reality I'm sure his senses and my senses will meet somewhere in the middle. 19:00
dada so, is there any difference between $foo = 1,2,3 and $foo = (1,2,3) ?
Odin- Unless one or the other of you had a couple of blue lumps of sugar.
lumi And ($foo) = 1,2,3
theorbtwo I'm personally for keeping things fairly perl5ish in this circumstances, with the change of making comma in scalar context an error.
PerlJam dada, lumi: ask pmichaud or luqui when you see them.
theorbtwo wonders if autrijus is in on the design-team meetings, and if he should be. 19:01
PerlJam theorbtwo: I don't think he is, but his presence on p6c and p6l and continual productivity with pugs is more than enough methinks 19:02
lumi In p5, '$a = 1,2,3' eqv '$a = 1' apparently
I thought it would be eqv $a = 3
PerlJam i.e., autrijus is driving the design simply by trying to implement it.
lumi: why?
mauke lumi: precedence
PerlJam $a = 1,2,3 == ($a = 1),2,3 19:03
jsn ($a,undef,undef)=(1,2,3)
lumi Because isn't , the 'eval and forget it, I have something else for ya'?
PerlJam lumi: read what mauke said again :)
lumi Of course
I thought it bound stronger then 19:04
theorbtwo perl -MO=Deparse,-p -e '$a=1,2,3' 19:05
mauke !deparse $a=1,2,3 //huhu 19:06
(($a = 1), 2), 3
lumi Okay, $a = (1,2,3) does what I thought
Huh?
19:06 Aankh|Clone is now known as Aankhen``
lumi Would that work for me? 19:06
Khisanth hrmm 19:07
lumi !deparse $a = (1,2,3)
mauke $a = ((1, 2), 3)
it's a C(++) deparser, though
it just happens to work with some of perl's expressions
lumi Oh, not as good
It gets the right answer, but without the pretty
($a = ('???', '???', 3));
Pretty! 19:08
Khisanth $foo ~= "bar" is not the perl5 equivalent of $foo .= "bar" is it?
dada Khisanth: I think it is
theorbtwo AFAIK, it is.
Khisanth get readys for more fun bugs people will be asking in #perl :)
lumi I codified my understanding of array slice assignment, what mote I do with it? 19:09
theorbtwo 1) Make it into tests.
lumi That's the codifying
theorbtwo 2) Post it to p6l with an "is this right" question.
integral Khisanth: you use ~~ for regexp matching 19:10
Khisanth hmm
integral Khisanth: plus you can kick those people to #perl6 ;-)
Khisanth integral: once perl6 is out, I assume they would just merge :)
integral Khisanth: 'perl6 is out' 8-)... that's the thing 19:11
mauke System.out.perl6
Khisanth integral: no it isn't 19:12
by out I mean fully designed and implemented!
integral sure, and that's going to be after lots of newbies turn up
PerlJam Khisanth: The only fully designed and implemented language is latin.
Juerd Not really 19:13
mauke even perl5 isn't fully designed or implemented
Juerd Latin has many weird exceptions and irregular words
integral Juerd: but those are designed and implemented...
Khisanth PerlJam: well not long ago it wasn't even sure what all the builtin functions would be :)
Juerd mauke: How can something without design not be fully implemented? :)
PerlJam: Now if you meant Esperanto... :) 19:14
Khisanth and that might still be the case!
Juerd s.meant.said.
obra logban
Juerd integral: Not quite designed
mauke Juerd: I didn't say it had no design :-)
Juerd obra: s/g/j/
obra lojban
thinko
Juerd pets obra
My brain still hurts from typing my last message to p6l 19:15
The syntax for subs with traits just sucks
dada Juerd: well, at least java/C#/etc. counterpart sucks too :-) 19:16
Juerd Certainly 19:17
PerlJam Juerd: I'm waiting for Larry's reply. (unless he said everything he was going to say with his other reply)
Juerd Larry has replied several times in that thread already
Hm, the \ is wrong 19:18
PerlJam not specifically to your post (at least it hasn't shown up in my inbox yet) 19:19
Juerd As t, i, u and q are not mirrored
metaperl_ that was an interesting interview on perl.com 19:21
Juerd metaperl_: It in fact still is. 19:22
nothingmuch needs help with YAHT 19:31
excercise 3.10
i wrote the function that reads numbers
it stops correctly
it returns a list of numbers
mauke is there a text or html version of YAHT? 19:32
nothingmuch not that I know of
mauke I don't want to start a gui just to read pdfs :/
nothingmuch pdf2ascii?
it's not specific to the excercise
now i want to print it
from main = do....
i say nums <- readNumbers
which is ok
and the putStrLn nums 19:33
which is not
integral show?
mauke nums doesn't look like a string
nothingmuch Expected type: IO ()
Inferred type: t -> t1
mauke hmm, can you post a complete example? 19:34
nothingmuch nothingmuch.woobling.org/yaht/
ignore show_fact, etc 19:35
they're not even test yet
i assume i'll need ++ show n ++ " is " ++ show factorial n 19:36
but i'm not there yet
mauke Probable cause: `putStrLn' is applied to too many arguments in the call (putStrLn show head nums)
yay for ghci
function application is left associative
nothingmuch ah! 19:37
mauke map f list means (map f) list, not map (f list)
nothingmuch ok, next issue 19:40
reload =)
mauke factorial 0 = 1, btw 19:42
nothingmuch 1 isn't correct?
i don't see why
is it a definition issue?
mauke factorial 0 is defined as 1; factorial 1 = 1 follows from that 19:43
nothingmuch ah, ok
because otherwise factorial 0 will just not work
Expected type: a -> Char 19:45
Inferred type: a -> [Char]
in regards to putStrLn(map show_fact nums)
lumi Because nums is a string you read in 19:46
mauke yes. it expected show_fact to return a single char
nothingmuch it's not a string
it's a list of numbers
i read(string) inside readNumbers
oh
mauke because putStrLn expects a list of chars, and map returns a list of what show_fact returns
nothingmuch right, i see
so i should map ++ map show_fact nums? 19:47
lumi You need to gather it
Not map it, I think
mauke I don't know YAHT, but the definitions of my_sum and my_product can be simplified using fold, and factorial can be defined with my_product
nothingmuch err, foldr, rather
or equiv
lumi Or map putStrLn if you prefer
No, that's wrong 19:48
Ignore me again
mauke sequence_ might be handy here
nothingmuch i don't know these yet 19:49
i don't see how my_product could be useful for factorial, except if you make a list of a n, n-1, n-2 .. 1 19:50
and my_product that
mauke exactly
factorial n = my_product [1 .. n]
nothingmuch how would you write it simply?
hah
ok, well, i'm lacking on syntax
i thought i'd need to generate the range myself 19:51
mauke there's nothing wrong with your definition, though
nothingmuch i prefer yours
i like conciseness
mauke hahahaha 19:52
your definition of my_product is subtly wrong
nothingmuch it's now 'foldr (*) nums 19:53
not yet tested
mauke no, the old version
nothingmuch i don't recall if i must wrap * in ()
how was it wrong?
hold on, undoing
did i return 0?
lumi It had [] as 0, should be 1
nothingmuch =)
it worked, though
mauke lumi: right, but why did my_product [1,2] work?
lumi Heh 19:54
Two wrongs DO make a right :)
nothingmuch is curios
shapr rgh 19:55
nothingmuch hola shapr
lumi Pax
shapr y0
theorbtwo And a grrr so you.
s/so/to/
mauke nothingmuch: you used product instead of my_product in the recursion
nothingmuch ah
hehe
=)
hmm 19:58
lumi I'm not getting it to work 19:59
nothingmuch foldr (++) [ "string", "foo" ]
what is this supposed to do?
Juerd I hope that's not Perl
nothingmuch i gather "string ++ "foo"
qmole lol
nothingmuch haskell, Juerd =) 20:00
Juerd Pfew
Darren_Duncan I'm back up
nothingmuch but the type is different
Darren_Duncan Quick question. I reviewed part of the logs for this #perl6 ...
Should I upload my Locale-KeyedText to /modules now rather than /ext ?
nothingmuch yes, you should 20:01
i think
ask ingy to be sure
obra what's that do?
Darren_Duncan is ingy here now?
ingy hola
Darren_Duncan certainly, LKT isn't a core module, which seems to be what the thing I read said /ext is now for
nothingmuch how do i concatenate a list of strings in haskell? 20:02
i expected foldr (++) ["string", "string"] to work
but it does something else
ingy ext is for core bootstrapping stuff, modules is what you want
mauke nothingmuch: foldr (++) "" [...]
nothingmuch oh, right, because (++) is infix 20:03
Darren_Duncan be held for that, or did it already happen
?
something I wrote got cut off ...
nothingmuch yay, i managed to get it right! 20:05
thanks mauke!
thanks lumi, sort of ;-)
Darren_Duncan I saw a comment about Pugs 6.0.11 wanting to be released soon ...
Can this be held off until I get my Locale-KeyedText in? I can drop everything else coding wise and get it in today.
Or was it not going to go out that quickly? 20:06
nothingmuch releases are weekly
obra What does Locale-KeyedText do?
is it a Locale::MakeText-alike?
nothingmuch and most people who will muck with Locale-KeyedText will prolly be using svn
mauke nothingmuch: putStr $ unlines $ map show_fact nums
nothingmuch let facts = map show_fact nums
let line = foldr (++) "" facts
putStrLn line
Darren_Duncan It was meant to be used partly as an integration test for Pugs support of Perl 6
nothingmuch that's what i'm doing at the moment
i will elegentaize it 20:07
Darren_Duncan A complete Perl 5 version is on CPAN, I was going to port it
nothingmuch Darren_Duncan: i wouldn't rush it
Darren_Duncan it depends on features that Pugs hasn't implemented yet
nothingmuch so i start porting
and keep going
Darren_Duncan was going to be a todo type thing ... originally I was told to put it in /ext, but then there was deveopment to say use /modules instead 20:08
lumi Why isn't it working as putStrLn ( foldr (++) "" map show_fact nums) ?
nothingmuch it si, i just did that
not exactly that
but before i had some trouble, so i broke it down to find out exactly where
mauke lumi: missing parens 20:09
Darren_Duncan obra, Locale-KeyedText is for localizing programs, where all user text is looked up by non-descriptive keys, rather than looking up language B using language A
mauke lumi: foldr (++) "" (map show_fact nums)
nothingmuch (map show_fact nums)...
ah
Darren_Duncan and the locale data is stored in Perl files that are essentially just one large hash declaration
obra couldn't you do that with Locale::MakeText?
mauke huhu, main = readNumbers >>= putStr . unlines . map show_fact
Darren_Duncan MakeText does the job differently 20:10
obra What's cool about KeyedText? (I do a fair amount of loc stuff for RT)
Darren_Duncan they tackle the same problem domain, sure, but are very different in method, I think
let me get back to you on details 20:11
obra ok
nothingmuch mauke: want to look at the final result, to see if you have any suggestions for improvement?
Darren_Duncan obra, one of the main differences is complexity 20:12
KeyedText is waaaay simpler
mauke nothingmuch: yeah
Darren_Duncan and completely self-contained
nothingmuch reload
obra oh? I had no complexity issues with L::M
mauke do you really need the hSetBuffering stdin LineBuffering part?
Darren_Duncan this is with "first appearance complexity"
nothingmuch err, that's what the book said
obra and L:M:L made it so that random translators can cope nicely too ;) 20:13
nothingmuch cargo culting
i didn't even try without
obra they didn't like it when I handed them perl hashes ;)
Darren_Duncan my module does less, and does it differently
nothingmuch perhaps ghci has made it unnecessary since?
obra ok :)
nothingmuch i understood that without it the prompt lines will not be outputed before reading 20:14
since STDOUT will be in block buffering mode
Darren_Duncan See search.cpan.org/dist/Locale-KeyedTe...yedText.pm and you should get an idea from the synopsis, which is short but a completely working example. 20:15
mauke nothingmuch: huh? hSetBuffering stdin shouldn't affect stdout at all
Darren_Duncan Don't get me wrong, Maketext I'm sure is quite useful, just too complex for my, and probably many other peoples' needs.
mauke show(n) is pointless; show n reads better
nothingmuch ooh, you're right
i wonder if i wrote stdin because i am loopy 20:16
or whatnot
i'll reread the explanation
Darren_Duncan Locale-KeyedText is inspired by the Mac OS X localization system for Cocoa apps. 20:17
but all data files are pure Perl
nothingmuch from yaht: 'The necessity for this is because, when GHC reads input, it expects to read it in rather large blocks. A typical personā€™s name is nowhere near large enough to fill this block. Thus, when we try to read from stdin, it waits until itā€™s gotten a whole block.'
so just the other way around
the tty is probably already line bufferred
but reading will block till whatever
oh i dunno, i'll learn all this stuff later 20:18
Darren_Duncan anyway, I have some non-coding work to do around here for a few hours so have to get off ... see you later
shapr I'm having a build problem with the ghc 6.4 debs. Is it possible the darcs repo is behind the svn?
nothingmuch ?
could be shapr
but there weren't any build problems today, iirc
you should see about 20 syncup messages from today
shapr src/Internals.hs:18:4: \n Conflicting exports for `getEnvironment':
I'll check the darcs changes, good point. 20:19
mauke nothingmuch: concat ["foo", "bar", "baz"]
nothingmuch ah
easier than foldr
mauke $ is a pretty cool operator 20:21
nothingmuch what's unlines?
mauke join("\n", @_), "\n" or join '', map "$_\n", @_ 20:22
perl5 syntax :-)
sorje Prelude> unlines ["abc", "cde"] 20:23
"abc\ncde\n"
nothingmuch and $?
'$'
Juerd I want unary ~ to join on '', not ' '.
Can anyone think of a reason it should join on ' '?
sorje a $ b x = a(b(x))
mauke $ is function application: f $ x calls f with an argument of x
Juerd Joining on '' is much more common I think
sorje Oh, we're not talkine haskell here. ;-)
nothingmuch so it's basically to disambiguate calls? 20:24
i think i'll be learning of that later
sorje: sorry!
mauke nothingmuch: watch this: rafb.net/paste/results/OjaFAF33.html
nothingmuch thinks he earned a little credit though, writing lots of perl6 these last few days, and now needs to cover some haskell to complement
is it more interesting than just shorthand for a(b x)? 20:25
mauke I think it looks cleaner than many nested parens 20:26
nothingmuch but it's got no magical whiz bang i'm missing, right? 20:27
mauke nope: f $ x = f x
nothingmuch ok
ingy witheo `split`? 20:37
witheo foo = "What is the haskell equivalent of " : foo : "?" 20:39
mauke Couldn't match `[Char]' against `Char' (Expected type: [[Char]]; Inferred type: [Char]) In the expression: foo : "?" 20:41
nothingmuch eh?
ingy yeah I suck
theorbtwo s/:/++/g
Er, s:all/:/++/
ingy sooo anyway... witheo split?? 20:42
okok 20:44
What is the Haskell equivalent of Perl's split()?
mauke hmm, there doesn't seem to be one in the standard prelude 20:45
ingy (I was preoptimizing :)
mauke split / / and split /\n/ are words and lines, respectively
ingy surely this is a very common operation 20:46
str.gmatch ? 20:52
theorbtwo Just read the source: 20:54
lines s = let (l, s') = break (== '\n') s; in l : case s' of {[] -> []; (_s'') -> lines s'') 20:55
ingy I do read the source, I'm just not over the lambdacamel hump, iykwim 20:56
theorbtwo Ah. 20:58
I'm not either, which is why I'm not actually sure what that function that I just quoted does.
...or even if I onelinerified it properly. 20:59
ingy this page seems helpful: pleac.sourceforge.net/pleac_haskell/strings.html
dada Data.PackedString seems to have a split (soft of)
sorje ingy, No! Don't read pleac! ;-) 21:00
ingy ?
sorje That one's really really dangerous. It redefines large parts of haskell's Prelude 21:01
dada splitAtPS :: Int -> PackedString -> (PackedString, PackedString)
mmm no
splitPS :: Char -> PackedString -> [PackedString]
this one looks better 21:02
ingy sorje: oh
lumi What does that ' do? 21:04
PerlJam lumi: nothing, it's just part of the name
lumi: read "s-prime"
lumi That oneliner looks broke though 21:06
Hm, it makes sense 21:11
metaperl_ why isnt multi a subroutine attribute? 21:26
could you just have multi and not multi sub for brevity? 21:27
PerlJam metaperl_: because its multi-ness is more important than that, so the multi keyword needs to be out front for all to see. 21:28
metaperl_ and why not just the word multi?
PerlJam At some level though, it probably is a trait on the sub.
metaperl_: for what a multi-method or a mult-sub? 21:29
metaperl_ I dont even know the diff between those. I think I should keep my mouth shut.
lumi Woohoo, I just wrote split in haskell! 21:35
Do I get candy?
PerlJam lumi: is is commited to the repository as a stub for perl6's split? 21:36
mauke my split is incomplete. its handling of trailing null fields is kind of broken. 21:40
lumi It's really not good enough, it's just an extension of "lines" really 21:43
rafb.net/paste/results/X7ITRM95.html 21:44
My first haskell ever, too
sorje perl6's split doesn't need real regular expressions anymore? 21:47
mauke my split: rafb.net/paste/results/JD6Zpq37.html
warning: don't try split "" "abc"
lumi There aren't re yet, right? 21:53
buu sorje: What does it need?
PerlJam lumi: Not yet. 21:54
lumi: It would be really cool if there were however.
sorje: sure it does. They've just been expanded to include whole grammars and are now called "rules" 21:55
lumi There already is a much better split stub than mine, and I think it just wants a rule engine and it can become live
ingy lumi: ou only split on a single char?
s/ou/you/ 21:56
mauke: can I add your split top pugs? 21:58
mauke: can I add your split to pugs?
mauke ingy: wait a second, I'm still trying to fix the trailing null field problem
ingy mauke: can you commit? 21:59
mauke no
ingy ok, fix it and i will
I could really use it :)
lumi Yes, but I'll get better! 22:00
ingy lumi++
lumi Actually it splits on any list, with any predicate, it's completely different from the Perlish split 22:03
PerlJam splits on any list? 22:08
oh, you mean it will split any list
lumi Yeah
mauke ingy: rafb.net/paste/results/lhQymz87.html 22:09
this one seems to work
and I added a special case for split ""
ingy mauke: cool 22:17
PerlJam mauke: *Main> split "abc" "abc"
["",""]
somehow I don't think that's right :-) 22:18
mauke you're thinking wrong
ingy seems right to me
PerlJam sure.
*Main> split "abcabcabc" "abc" 22:21
["abc"]
I guess I'm just having trouble reconciling certain behavior :-)
oh wait, I got those backwards
lumi That's passing strange
PerlJam never mind
PerlJam is having a good old monday
lumi Oh doh
You melt my brain
I don't like 'isPrefixOf'/'drop' 22:22
Can't that happen at once?
Limbic_Region mauke - out of curiosity, does it support capturing parens ;-)
lumi Like, at the same time
mauke perl -wle 'print "[$_]" for split /abc/, "abc", -1'
hahaha
ingy mauke++ 22:25
PerlJam mauke++ indeed.
mauke lumi: I just assume the compiler is smart enough to optimize it 22:26
ingy mauke: thanks. applied.
mauke w00t, my first perl6 patch. and I haven't even used pugs yet! 22:27
lumi Cool, non-obvious behaviour but correct 22:28
PerlJam well, it's a pugs patch
mauke er, yeah
lumi I meant in p5
lumi reparses
22:32 edgewalk1r is now known as edgewalker
ingy anyone using windows for pugs? 22:32
lumi Going home 22:33
ingy mauke: I just used your patch!! 22:35
it is totally rockin
fixPath path = concat $ 22:36
intersperse config_file_sep $
split "/" path
buu ingy: I am 22:37
ingy fixPath "../../blib6/lib"
buu: one sec 22:38
buu ingy: Too bad I don't have nmake
Limbic_Region buu - why not? 22:40
ingy bu: download.microsoft.com/download/vc1...make15.exe
buu ingy: Yes, I've downloaded that about 10 times 22:41
It Don't Work!
ingy what OS?
Limbic_Region download.microsoft.com/download/vc1...make15.exe
hmm - that's what I used too
buu windows2000
ingy hahaha
Limbic_Region: jinx
buu Limbic_Region: For some reason nmake dies when ever it tries to spawn a process.
Limbic_Region buu - let me try it - I am also running Win2K
buu Limbic_Region: I'm sure it'll work fine for you, it used to work fine for me =/ 22:42
Limbic_Region ingy - I only pasted mine to see if it was the same as yours
ingy Limbic_Region: could you test 'pugs -V' with r515
should read ..\..\blib6 instead of ../../blib6 etc
Limbic_Region might take me a bit - I haven't been playing with pugs, only lurking
ingy oh 22:43
Limbic_Region no cvs repository right - only darcs (wtf is that anyway) and subversion?
oh - and I would be doing it under Cygwin anyway since I don't have mingw (unless all I need is GHC)? 22:44
ingy pugs does not support cygwin 22:45
Limbic_Region right - I knew that - which is why I haven't played
but back to my original question
is mingw needed or just GHC (which I do have installed)
mauke src/Main.hs:159: Variable not in scope: `config_file_sep' 22:47
hmm, where is config_file_sep defined? 22:48
ingy Config.hs
mauke nope, not there
Limbic_Region ingy - downloading svk client now (and my bandwidth is missing for some reason) 22:49
buu Limbic_Region: All you need is ghc
and nmake
and perl
ingy mauke: it is autogenerated :P
mauke grep -r config_file_sep . 22:50
./src/Main.hs: intersperse config_file_sep $
ingy mauke: see Makefile.PL and utils/PugsConfig.pm
mauke: it is autogenerated!!!
mauke: run perl Makefile.PL and you'll see Config.hs 22:51
:)
mauke that's what I did (after darcs pull)
hmm, make clean && perl Makefile.PL && make seems to work 22:52
ingy well yes, you should always make purge
:p
Limbic_Region ok ingy - svk command line to get the r515 22:54
s/ingy/anyone/ 22:55
revdiablo Limbic_Region: the standard svn client it's svn co svn.openfoundry.org/pugs
I dunno about svk
ingy svk cp svn.openfoundry.org/pugs
I believe 22:56
I hate svk ;)
Limbic_Region ok - so I assume r515 is the latest then 22:57
ingy yep
mauke Failed 3/77 test scripts, 96.10% okay. 27/1242 subtests failed, 97.83% okay.
is that normal?
ingy hmmm 22:58
paste it somewhere 22:59
Limbic_Region WTF - it has to commit every freaking version from 1 to 515? 23:01
ingy Limbic_Region: just cp head
not all
Limbic_Region I tried h
it didn't seem to work
ingy hmmm. I hate svk
Limbic_Region me too
ingy use svn 23:02
Limbic_Region ok
buu svk-- 23:03
ingy svk++ (but I still hates it)
mauke make test output: rafb.net/paste/results/PJ15PO94.html 23:04
it fails assign.t, auto.t and not.t
oh, and "dimention" isn't a word (see t/op/hyper.t) 23:05
Limbic_Region ok - silly question but where would I go find the files svk retrieved for me?
buu Why did you use svk? 23:06
Limbic_Region because no one spoke up and suggested an alternative when I asked
buu I thought someone said svn, but I guess not 23:07
ingy what function is [a, b] -> (a, b) 23:08
mauke what is [a, b]? 23:09
ingy wait, nm
Limbic_Region ingy - I guess you can't even use a Cygwin Perl to build the makefile - sorry 23:15
C:\ghc\pugs\pugs>perl Makefile.PL
132 [main] perl 1400 handle_exceptions: Exception: STATUS_ACCESS_VIOLATION
805 [main] perl 1400 open_stackdumpfile: Dumping stack trace to perl.exe.stackdump 23:16
*shrug* - oh well
buu Limbic_Region: Nope 23:22
Limbic_Region well, I am not installing AS and I don't believe I have built my own copy using mingw 23:23
ingy how do I cast a String to [Char] ? 23:24
buu Limbic_Region: What's wrong with AS? 23:26
mauke ingy: String is an alias for [Char]
ingy mauke: can you look at my feeble code? 23:31
mauke where?
ingy perlbot: nopaste
perlbot Paste your code here and #perl will be able to view it: sial.org/pbot/perl
pasteling "ingy" at 24.19.10.51 pasted "p5libs <- mapM fixLib $ catMay" (3 lines, 182B) at sial.org/pbot/7958 23:32
Limbic_Region buu - nothing wrong with it - I just prefer having a single thing to try and keep updated and whatnot
buu reasonable 23:33
ingy mauke: I'm trying to split paths on ':'
I get: 23:34
Couldn't match `String' against `Maybe b'
Expected type: String
Inferred type: Maybe b
mauke reads expects a string 23:35
lookup returns Maybe b
ingy mauke: I need fromMaybe 23:37
maybe... :D
mauke yeah 23:38