6.2.7 released! | pugscode.org/ <Overview Journal Logs> | pugs.kwiki.org | paste: sial.org/pbot/perl6
Set by autrijus on 13 June 2005.
meppl gute nacht - good night 01:12
svnbot6 r4645, geoffb++ | Add pre-testing sanity tests: 02:13
r4645, geoffb++ | * New t/01-sanity/ directory (sorted to front by Test::Harness)
r4645, geoffb++ | * Initial set of seven sanity test files, each building on the last
r4645, geoffb++ | * Update pugs::hack with entry and description of t/01-sanity/
geoffb Oops, 1 test in the sanity tests fails . . . figuring out why now 02:21
Ah, Test.pm trying to DWIM for incorrect values of 'I' 02:37
svnbot6 r4646, geoffb++ | t/01-sanity/06-use.t: attempt to work around Test.pm being too smart for our good
geoffb OK, the new tests pass prove, starting on multi-hour `make unoptimized && make test`. (I can't do normal make, because I lack sufficient swap space, bleah.) 02:44
afk for a while
putter Yipes. A 2 hour silence. 04:26
crysflame calm after storm? 04:27
putter ;)
A quick note... 04:28
I was hacking on ruby stuff today, and the following came to mind...
multi method rubyish_delete(Ruby::Hash $h,$key) {$h.delete($k)}
multi method rubyish_delete($h,$k) { my $v = $h{$k}; $h.delete($k) ?? [$k,$v] :: undef; # not quite } 04:29
macroized_method delete($key) {rubyish_delete($?SELF,$key)}
all in say, red_hashes.pm
my %h=qw(2 20 3 30); 04:30
%h.delete(2) #=> 20
use red_hashes;
%h.delete(3) #=> [3,30]
:)
Insulates user dsl from object method namespaces.
"duckted typing"
If it looks like a feather bed, seen though a duct, it might really be a duck. 04:31
mugwump sighs and wishes he didn't have unrealistic project deadlines to meet 04:32
putter mugwump: I've seen some *very* dilbertesqe projects in the last few months. yearish project, testing crunched to weeks, and deep system changes the weekend before release. shudder. 04:35
mugwump My manager sounds just like "Lumberg" from Office Space (1999 movie) 04:36
putter has been meaning to see it... but hasnt yet.
If anyone ends up interested in automated ruby to p6 conversion, let me know. I've a rb parse_unparse on a slightly mutant ripper. Starting to output p6. A grammar Ruby {} might be more useful... but this was easy. 04:42
Someone needs to write a bison to rules convertion aid.
Good night all. 04:43
mr_ank mugwump: we need you to go ahead and come on Saturday 04:53
04:58 khisanth_ is now known as Khisanth
mugwump that's come *in* on Saturday ;)... otherwise it's quite rude 04:59
mr_ank mugwump: hehehehe 05:06
QtPlatypus What is perl6 syntax for creating new metaoperators? Like >>...<< and [...] 05:17
?
mugwump in theory, multi sub infix_circumfix_meta_operator:<[]> 05:19
QtPlatypus Thanks.
mugwump dev.perl.org/perl6/doc/design/apo/A...Categories
I assume its prototype would be something like (List @a, List @b, ::(Code(Any $a, Any $b) returns Any)) 05:22
QtPlatypus nods 05:23
mugwump If you're thinking of writing something like that, I'd suggest that you start by writing it with methods etc
The Set module is an example of this - all the operations are methods as well as many being available as overloaded ops
QtPlatypus Thanks. 05:24
What verable would the op get mapped to? 05:30
In your example for a prototype?
mugwump just use this prototype for now: 05:31
(List @a, List @b, Code $op) returns List 05:32
maybe s/List/Array/g
pasteling "qtplatypus" at 202.7.69.25 pasted "metaop attempt" (7 lines, 216B) at sial.org/pbot/11043 05:37
QtPlatypus mugwump: Could you look at that and tell me if its sane? 05:38
mugwump Hmm, metaoperators on Hashes, an interesting idea 05:39
if you want an intersection you can use Set; and then go set(%a.keys) * set(%b.keys)
QtPlatypus Thankyou.
mugwump or set(%a.keys).intersection(set(%b.keys)) 05:40
ie for set(%a.keys).intersection(set(%b.keys)).members -> $key { ... }
mugwump wonders whether making a version of intersection that works like you wanted is a good idea 05:41
autrijus greetings Ī»camels
mugwump hi autrijus ! How's things in Ɩsterreich? 05:42
QtPlatypus It would be easy enought to write an intersection that is simply a wrapper over doing what you said mugwump
mugwump bah, encodings
autrijus mugwump: quite exciting
just woke up
mugwump with the sunrise? what's wrong? 05:43
autrijus got all the parrot mess cleaned to a point where I can reasonably target
gaal ?eval eval "look at the stacktrace", lang => "unknown"
evalbot6 Error: can't eval language unknown
gaal grrrr
it says the error is in the prelude,
and then in the *caller*
mugwump well, that sounds like a great development autrijus.
gaal but omits the place in the code where you actually called eval.
probably some weird interaction with 'is primitive', no? 05:44
autrijus and even more importantly, chip is now writing daily journals :)
QtPlatypus Where at? 05:45
autrijus hopefully he'll this habit
hopefully he'll maintain this habit
use.perl.org/~chip/journal/
mugwump his most recent journal came across as excited, like he's just come across real HOP for the first time or something
autrijus mugwump: that is... the case.
mugwump so you're basically travelling the world breaking the impirical spell on all of us 05:46
jp-autark autrijus: regarding the '\' in rx, was there a test for it somewhere?
autrijus jp-autark: t/rules/rx_perl5_escape.t
jp-autark thanks 05:47
autrijus np... feel free to add to it
mugwump s/impirical/imperative/ :)
autrijus jp-autark++ # thanks for renicking to avoid the clash
mugwump: well, I try, but yes
jp-autark np
autrijus basically just retelling the lambdahead's papers in a way that makes sense :) 05:48
for example this: pugscode.org/talks/apw/slide61k.html 05:49
yesterday I got a mail from Ken Shan praising this single slide... that made my day
(Ken's paper is responsible for me to understand call/cc, call/ec, shift/reset and whatnot.)
mugwump autrijus: I gave a talk at my local PM where the presentation was generated by a Perl6 script! :) 05:55
autrijus I saw that 05:56
mugwump I converted a talk that one speaker did on Perl 5 (wellington.pm.org/archive/200409/pe...ndex.html) to Perl 6 (wellington.pm.org/archive/200506/pe...tro/html/)
autrijus most cool!
use mkpres--Perl5;
that is _totally_ the way perl6 should be used 05:57
geoffb ping(chip) 05:59
autrijus geoffb: chip is sleeping I think... they worked to midnight last night
geoffb OK, thanks. 06:00
Would you mind passing on the following when he awakes?
autrijus notes he is in the channel
so just type ahead and I'll tell him to backlog
geoffb "User type Ilya may not just have CPU-bound code, but also memory-bound code; this means he needs to be able to have stable, fast access to packed data streams" 06:01
nodnod
:-)
mugwump & # kungfu 06:02
geoffb *cough* 3D Rendering *cough*
test run at 3 hours, 20+ minutes and currently at t/subroutines . . . I'm guessing 4-ish hours total 06:06
but me, I'm headed for bed. 06:08
see y'all when the sun is up on this side of the planet
06:57 iheartcanada is now known as Canuckistan
Alias_ seen autrijus? 07:25
(nothing runs seen here?) :/
QtPlatypus autrijus was last seen 2 hours ago. 07:26
autrijus :) 07:28
Nattfodd THERE
an autrijus
Alias_ oh good
Is this hackathon limited to just pugs?
nothingmuch arrives mentally 07:29
Alias_: afaik no
whatever works and helps humanity, and vaguely perl 6 things in general
autrijus Alias_: from my pov it's pugs :)
Alias_ Because I have something that needs doing that is extremely hacky and I don't have time or the knowledge to do it
autrijus but it's a pugs targetting parrot
Alias_ use.perl.org/~Alias/journal/25188
That journal entry explains it
If anyone at the hackathon is up for it, it could be quite interesting. 07:30
I'd be happy to help later on, but I'm already only sleeping every second night
So I'm a bit overworked
QtPlatypus is reading old perl6.langauge posts "It looks like the whole 'How do we handle reduce with less then two elements' was broat up at least twise"
Alias_ (and it involves PAR) :) 07:31
Alias_ & $work
(if you have questions, I'll hear you)
autrijus Alias_: eh. 07:32
Alias_: 1st. smokers already run all uploaded cpan package
Alias_ did you read the article?
nothingmuch Alias_: ingy might be interested for freepan's sake 07:33
autrijus I did
nothingmuch and stevan & I wrote tools that are useful for it, but are not getting enough releng time
Alias_ including the bit that talks about cpan testers?
nothingmuch the problem I had with smoke setups was the reliability of CPANPLUS
autrijus "Yes, we have CPAN Testers, but they only test CPAN packages, and only test what they want to test. "
Alias_ right
and they test it _wrong_
nothingmuch i used to smoke test all recent addittions on 7 comupilations of perl (5.005 -> blead) 07:34
Alias_ They don't reset to a default perl install after each module
autrijus yes. so talk to RRWO
nothingmuch without installing anything but the bare metal
autrijus he's solving this problem
# search.cpan.org/dist/CPAN-YACSmoke/
nothingmuch i can share my scripts, but the weak link is beyond my reach
also CPAN::Nargihle 07:35
autrijus I don't know if they currently have nuke-the-sitelib setup in YACSmoke
if not it's just one line
but in any case, please talk to rrwo
nothingmuch you don't need to install anything
build deps, and use blibs
autrijus nothingmuch: sure, that's what cpansmoke does already 07:36
nothingmuch right, site_lib does not have to be nuked
autrijus er no
nothingmuch eh?
autrijus if you run this with a existing sitelib
and say you already have DBI.pm in your sitelib 07:37
nothingmuch oh
you run it on a clean perl
Alias_ I have that problem already
autrijus right. so yacsmoke needs to check
the sitelib
and remove it from @INC
or otherwise ensure it's nuked
Alias_ I forget to add a particular dependencies, but because the cpan tests tested that missing dependency yesterday
... none of them notice
autrijus but the test feedback protocol etc you talk about
is already part of cpan testing framework
no need to reinvent that 07:38
nothingmuch but Alias_ - agree with me that optional modules's features should be tested
Test::Distribution
autrijus you can work on hiding @INC, setting up jails, resource limits
nothingmuch and that both clean and dirty perls have values
autrijus as part of yacsmoke
Alias_ autrijus: I want something like full blown image-based testing
autrijus Alias_: that's the "setting up jails" part.
nothingmuch Alias_: that's *so* hard to get right
Alias_ So that I, personally, can test linux and BSD and Windows all at once
autrijus jails, or user mode linux, or vmware.
nothingmuch everyone has a different setting
vmware, bochs, colinux, whatever
autrijus now vmware is nonfree
Alias_ Then vmware is a subclass of the main module 07:39
nothingmuch that's still a shitload of overhead
there are so many parameters
Alias_ The testing protocol I desribe is not vwmare, or image-based testing specific
autrijus I don't know much about bochs and friends.
Alias_ nothingmuch: I'm happy to take the overhead
nothingmuch no, i don't mean processing overhead
autrijus Alias_: what's wrong with the machine just use the existing cpantest protocool
nothingmuch programmer overhead
autrijus Alias_: and mark, in the report, that it's image-based or something.
nothingmuch what if it's vmware version foo? what if the guest OS image can't run on version foo?
autrijus you can easily tackle new metadata on the existing report.
nothingmuch how is networking configured? 07:40
Alias_ nothingmuch: You define a particular IP for the image
nothingmuch i don't
Alias_ That's done already. VMWare lives on a specific private network
nothingmuch i would use DHCP
bochs doesn't
colinux doesn't
they're free, and more likely to be used
do you use Template::Toolkit to write out an OS image? 07:41
this is just too complicated to be dealt with reusably
autrijus Alias_: anyway, that's the extent I know about this problem. :)
Alias_ My point being, I want to be able to "apt-get install sometestingplatform"
nothingmuch you need to have N recipes
which come with an ISO
Alias_ And then run "testpackage foooasdsad.tar.gz
nothingmuch which you can install
and then it's installed
but too dynamic is bad
you have that
cpanp
install YACtestghing
autrijus: fill in the rest 07:42
Alias_ and that will test on linux and bsd and win32, and perl 5.005, 5.6 and 5.8
autrijus ok. yacsmoke ensures you have a scratch dir
you repeat it once
for each combination of perl/os
nothingmuch that's too much, Alias_
Alias_ or do I "just have to do this whole bunch of admin-specific knowledge tasks"
autrijus design a table
on a wiki or something
for people to sign up
(in fact testers.cpan.org already have such a table) 07:43
nothingmuch make it a script that ssh
's to your guest OSs
Alias_ coral wants to test a propriatery package
nothingmuch but this is just too much detail to be dealt with by the package
Alias_ it's not leaving his company
I have similar issues
nothingmuch okay
set up some default installs,
autrijus Alias_: then set up the testing framework inside your own company :)
nothingmuch install CPANPLUS, Module::Build and what not
Alias_ And we are back to "just do this whole bunch of admin-specific knowledge tasks that I don't know"
nothingmuch and create a short script that SSHs to your vmware virtual boxes, and runs the tests 07:44
autrijus Alias_: you can use the .iso files of liveCDs that, say, distrowatch provides
nothingmuch it's less than 1 hour of work, IO waits (installation etc) aside
Alias_ nothingmuch: So is light brain surgery
autrijus Alias_: the thing is that, it _really_ is different for solaris and linux and win32 to set up perl
Alias_ autrijus: Hence using an image-based approach
autrijus Alias_: so what you can do is list a set of things that needs to be installed
nothingmuch Alias_: if you want that write the scripts in haskell
autrijus Alias_: and call for people to contribute images.
Alias_ Once the kit for doing it exists, people can build the images for you
autrijus Alias_: and hopefully select something that does not require on vmware :) 07:45
nothingmuch there is no kit though! it's simply too varied a problem
chip arthroscopically explores autrijus's brain
nothingmuch it's a whole virtual computer
it's not just a bit of software
Alias_ If there is a "setup_for_testing_platform.pl" and "test_I_comply_with_testing_platform.pl" tools
nothingmuch there are N different protocols
autrijus Alias_: the second part is yacsmoke
Alias_ and people can just install those with "apt-get whatever"
nothingmuch here's a scheme that could work:
autrijus Alias_: the first part, the setup_for_testing_platform, is basically yacsmoke.
nothingmuch you have a daemon on each test box
autrijus Alias_: except you need to install it yourselves.
nothingmuch and a config file
autrijus Alias_: now apt-get doesn't work on fbsd here. 07:46
Alias_: so you still need a freebsd people to generate that image for you.
nothingmuch and the your test platform thing reads the config file, and then tells all the hosts to install a package
but the test platform has to provide all deps, and all files in that protocol
Alias_ autrijus: Then it's perl -MCPAN -e 'install Test::Platform'
nothingmuch no networking is involved
Alias_ My point is that this stuff isn't easy, and it should be
nothingmuch and the guest OSs are truely independant of the real world
Alias_ I'm no admin, I don't know most of this stuff
autrijus Alias_: what exactly do you find "sudo cpan CPAN::YACSmoke" hard?
Alias_ And that tests both 5.005 and Win32 for me? 07:47
nothingmuch Alias_: i did that for ages
but then I got complaints
autrijus Alias_: ok, let me spell out the steps you need to take.
nothingmuch "why do you fucking testers not check everything before you send?"
Alias_ sigh
autrijus 1. Select a technology: VMWare, Bochs, Plex86
Alias_ autrijus: This was my point
autrijus 2. Call for people submitting images in that technology with plain installed perl5.* with YACSmoke.
nothingmuch "why do you keep running this badly?" 07:48
autrijus 3. Find some resourceful folk to host those images and run the yacsmoke loop.
nothingmuch it's just not something that works automatically yet
and my knowlege as a sysop
if you fix CPANPLUS so that it always works
autrijus 4. Field the social backlash.
nothingmuch i will gladly cook up something for you
with my scripts
autrijus 5. Profit!
nothingmuch but there are too many weak links, IMHO
too many question marks
Alias_ nothingmuch: So is there on any large concept
nothingmuch okay
plan out a scheme
Alias_ nothingmuch: Have you seen this ThreatNet thing I'm doing
nothingmuch what client server topology would you like?
Alias_ nothingmuch: There is a reason that there is no ThreatNet:: distro 07:49
autrijus Alias_: so does this 5-step plan make sense?
Alias_ nothingmuch: There is only a whole bunch of small components
nothingmuch is this testing platform p2p? is it like threatnet? is it local?
what's the underlying?
Alias_ Because the larger problem is too big
nothingmuch underlying protocol?
Alias_: see? exactly my point
Alias_ But we don't _have_ those components...
nothingmuch decisions like guest OS, distro, protocol (ssh? http?), networking (how does guest get files?), technology?
Alias_ So far as I can tell, not that I can install with one line
nothingmuch okay, let's say we go with an SSH based solution 07:50
here's the steps:
#!/bin/sh
for host in virtual1 virtual2 virtual2; do
ssh $host yacsmokethingamabob $1;
done
autrijus right, that's what the thing in my step 3 will look like.
Alias_: now the key missing part is #1.
nothingmuch and the rest is just as autrijus said
autrijus Alias_: so jfdi and do this survey thing! :)
nothingmuch i beg to differ, step #1 is not even necessary 07:51
you have a repo for vmware images
a repo for bochs images, a repo for ...
what if I want to test only real boxes?
autrijus nothingmuch: that's already there.
nothingmuch i have an array at work: sun, hp, aix, windows, linux, sun x86, osf
autrijus nothingmuch: those array of machine can already join the cpantester network.
nothingmuch: Alias_ is asking for _more_
he's asking for image-based combinatorial envs 07:52
nothingmuch actually they can't due to resource problems =/
autrijus so that is step 1.
nothingmuch okay okay
Alias_ I want to be able to test packages. Full stop. In any possible combination
nothingmuch but that's an optional step
the other 4 can be reused
Alias_ Without CPAN if needed
autrijus Alias_: right, so make it, like, happen :)
start a vmware image
with your fav os
Alias_ autrijus: Did I mention the whole "I'm already only sleeping every second day" part, and "would anyone at the hackathon be interested in..." bit? 07:53
autrijus install yacsmoke
Alias_: you didn't mention the first part, no you didn't.
Alias_: in that case... I'm interested, but I don't think chip and leo are CPLAN hackers
Alias_: and other people have left already
(as scheduled)
nothingmuch Alias_: i can donate my scripts to run on a guest OS 07:54
which build perl, and whatever
Alias_ The problem seems to be that the people that want this can't do it, the people that know how ALREADY set it up for themselves and won't share, and won't share
autrijus Alias_: so I can help sendmail and find people and call for a yapcna bof or something
nothingmuch but I don't have time either
3 hours of sleep a night =/
Alias_ nothingmuch: Wait till you have to cut that back to "... every second night"
autrijus Alias_: YACSmoke is shared... so you are saying that the people aren't sharing the installed ready to use vmware images? 07:55
nothingmuch not getting there, sorry
autrijus Alias_: well, because you didn't call for them.
nothingmuch this is bad enough
Alias_ It's not so much that things don't exist, but that they require too much work
and aren't automated down to one command
I didn't get any threatnet bots of note till I added cut and paste configs and filter module examples to ThreatNet::Bot::Ammobot 07:56
Now we have 5-7
The point is not that things exist. They always exist somewhere, it's just that they require way too much effort
autrijus sudo cpan CPAN::YACSmoke ; while 1 { yacsmoke.pl -l=Recent }
there. one line.
Alias_ "This module uses the backend of CPANPLUS to run tests on modules recently uploaded to CPAN and post results to the CPAN Testers list." 07:57
So I can hand that a proprietary package and it will test it and send the result to to my local testing server?
autrijus of course 07:58
there's nothing special about the [email@hidden.address] email
you can tell it to send to your local mailing list or RT inbox or something
Alias_ and it uses CPAN, and the recent list 07:59
autrijus no.
you tell it to
yacsmoke.pl -t Your_Package
.tgz
if you want to keep track of your svn
do
CPAN::YACSmoke::Plugin::Recent
and override the recent list
that's all
this is not one line, granted 08:00
it's more like five
patches welcome to make it one.
but it's not the complicated thing your journal make it to be.
also read 08:01
search.cpan.org/~autrijus/CPANPLUS-.../cpansmoke
the thing is that CPANPLUS is already quite modular; you can tell it to test an arbitary on-disk directory
or a .tgz file
and it's really just one line. 08:02
if you want image-based testing, you need to call for images, and that's all
if there are problems in cpan::yacsmoke, talk to rrws and get them fixed for once.
Alias_ Well, we need a standardised set of rules for images, and a one line thing for turning a default install into something that runs as a compatible server
autrijus yes. so you need to start the first image. 08:03
so other people can follow suit.
alternately, find someone else to start the first image
for example, rrws!
and document the steps taken, and tell other sysadmin heads
to adapt to their OS and submit images.
Alias_ I'm aware of the steps needed :) 08:04
autrijus good. :)
Alias_ I was kind of hoping the hackathon would like to be involved
autrijus I can pitch it in YAPC::NA for you.
nothingmuch thinks he might have insppired the magpie user
Alias_ That would be really great
autrijus and see if we can have a BOF or something.
nothingmuch =/
autrijus but this particular hackathon is, I'm afraid, not populated with CPLAN hackers
Alias_ ok
autrijus and so will be of less use. sorry
jql is a magpie -- anything shiny today?
Alias_ YAPC::NA would be good too 08:05
nothingmuch jql: the problem is i'm not
Alias_ #perl was just no use. They all knew how, but nobody was willing to as much as write a bloody HOWTO
nothingmuch i think i pissed chip off because i wasn't explaining myself properly
and he was too impatient to tolerate that
autrijus Alias_: the only thing that motivates me to write a HOWTO is when I actively want other people TO. 08:06
chip *bamf*
Alias_ yes, well if I knew all the details, and had to time to actually do it...
nothingmuch hi chip
chip nothingmuch: I had someone else entirely in mind
nothingmuch *phew*
autrijus Alias_: yeah. so that's the extent we can do: pitch the idea at gatherings.
Alias_ autrijus: My problem is that when I know _how_ I generally just do it myself
chip nothingmuch: and I promise not to reveal his identity as long as he is alive
autrijus Alias_: right :) 08:07
chip m/sg mark_felt your secret is safe with me
oops
Alias_ And this whole testing rig situation is one where the people that know how, do, and couldn't be bother to modularise it
WHICH IS NOT THE CPAN WAY DAMMIT!
autrijus Alias_: CPANPLUS is modularised; YACSmoke is modularised.
Alias_: the vmware thing is not 08:08
but it's because you're the first to request it
and I'm sure there are people who'll be interested in doing it.
chip Alias_: If we automate everything, we'll have nothing left to do
Alias_ chip: But that's the point!
:)
nothingmuch Alias_: but you can't automate everything
chip Alias_: We'll have to retrain ourselves to program Haskell On Rails or something
Alias_ prove it
nothingmuch Alias_: then there is no free wills
free will 08:09
i can't choose to do it this way and someone else that way
Alias_ nothingmuch: The only thing you can't automate are subjective decisions
chip nothingmuch: you were destined to write that
Alias_ You can most certainly automate any task
nothingmuch right, but in a system like that you can have ackerman(N) decisions
you need to give components
autrijus Alias_: so, think about it... if I start shouting randomly that
Alias_ right
autrijus PPI Is Not Modular
It's Not Of The CPAN Spirit
nothingmuch but components are still very far from automization 08:10
chip 's avatar of his business analyst friend giggles at the idea of the irreducible process
Alias_ I respond, of course it is. More so than most
nothingmuch chip - what was I destined to write? haskell on rails?
autrijus Alias_: right. so I respond, cpanplus/cpansmoke/cpantester is already modular. more so than most.
chip nothingmuch: that sentence you wrote. it was the outworking of the machinery of the cosmos
Alias_ components take care of the work, standards take care of the decisions
autrijus Alias_: there are always room to modularise it further.
Alias_ Did I mention how much I hate working backwards from specific to generic 08:11
clkao *yawn*
autrijus and with that... I'm back hacking pugs :)
clkao morning autrijus
nothingmuch Alias_: in that case that is the one premise that makes standards be the root of all evil
Alias_: you should read a bit about TRIZ
Alias_ There's plenty of standards, use any one you like
nothingmuch it's a mindset where specific and generic are interchanged to compensate for psychological intertia
Alias_ Stuff like "The image should run on DHCP and accept testing instructions via port 12345" is what I'm talking about 08:12
autrijus "The image should open port 22 for ssh and have a cpansmoke/cpansmoke account." 08:13
Alias_ why an account...
autrijus "and have the cpansmoke script in PATH"
Alias_ cpan is a special case of testing
autrijus or something like that.
nothingmuch Alias_: there are too many constraints on such a "this should run in ... env" policy 08:14
autrijus testing is a special case of running remote commands.
nothingmuch what if my computer can't provide it, because it's a laptop and migrates envs?
what if it doesn't support interface bridging, only tunnelling? or vice versa
what if my company policy says i have to route through some weird set up
80% of our use cases will disagree with the standard at some point 08:15
Alias_ Then do it on a private network
nothingmuch unless we make a standard ridden with variables
Alias_ The whole point of designing these things is to come up with a design that has a few dependencies as possible
Aankhen`` Any objections to my updating docs/01Overview.html? In other words, did I miss any discussions where the conclusion was that Pugs development needs to be Top Secret?
Aankhen`` will return after 10 minutes to check.
Alias_ nothingmuch: For example, search.cpan.org/~adamk/ThreatNet-DA...ATN2004.pm 08:16
nothingmuch: Then your standard includes things like, "Should require access to a CPAN repository, but should not require access to the internet" 08:17
So you can do it on an isolated network if needed
nothingmuch what does access to a CPAN repository mean?
minicpan?
how is it updated?
does it get updated?
Alias_ However the person doing the testing wants
That should not be the problem of the thing doing the testing
err the actual test run
Only the thing controlling the test run 08:18
nothingmuch are there hooks so you can update or not update as you like?
what about dependancies?
what if they're outside the cpan repository?
why should i waste 600MB on a minicpan if all i'm testing is inhouse modules which use perl core?
i can go on and on and on, for setups that applied to me in the past
(machines with 350MB of hd space, including OS, which I used to smoke)
Alias_ waste 600mb?
That is not my concern
nothingmuch right, that is not your concern
because it shouldn't be
Alias_ exactly
nothingmuch this is the other person's problem 08:19
because that's what they have to give
but making this standard gives no wiggle room
you can have "recipes"
Alias_ Of course it does...
nothingmuch full suites that work
Alias_ You can supply a "CPAN repository" any way you like...
nothingmuch likee "an automation thingy which takes a bunch of host names in a .yaml file, and assumes they are OK"
Alias_ If the repository is a minicpan on the testing controller, accessed on a private network seperate from the internet, that's up to you 08:20
nothingmuch or "an automation thingy which sends the full tarballs of the module and all it's dependencies to the testing host"
that scenario is still a huge constraint
private network, testing controller, etc
what if i want a p2p setup?
all hosts on the network smoke on native perl
Alias_ You don't _have_ to do it that way... only if you have your previously mentioned weird networking contraints
nothingmuch plus 1 guest OS
Alias_ I don't see anything about my design that prevents you 08:21
nothingmuch i think it's too much design 08:22
Alias_ limit access to the server port to your p2p members...
It's not more design, it's less design
It's about having the most minimum design possible. Enough to support the most common specific generic task, and nothing more
And then your next layer starts with a working layer1, and adds the next step 08:23
nothingmuch "most common" is -><- with the concept here
Alias_ such as "using native perl", or "via an image"
nothingmuch okay, so instead of ackerman(components) you have factorial(layers)
they are still components
and that's what they should be
Alias_ I have no idea about WTF this "ackerman" stuff is 08:24
Perhaps $Alias{components) is not $nothingmuch{components}
nothingmuch ackerman is the largest function that is a primitive recursion
Alias_ shrugs, not my area
I don't know much computer science, I just make them do cool things 08:25
often despite being told it can't be done
nothingmuch ackerman(N) = really big numer
sorry, distractions 08:26
anywho
what is "components" for you?
Alias_ functionality, encapsulated and distributable 08:27
without implicit assumptions of context
nothingmuch good 08:28
then we are in agreement
can you have mega-component = (component + component + component)?
i think in most situations that's not very easy
the user has to glue the components on their own
Alias_ components don't care about such things
That's what APIs and standards are for 08:29
nothingmuch but smoke testing is so tightly coupled with:
tarball unpacking
version of perl
installed modules
and hence what is module installation
tarball retrieval
source, method, direction (push? pull)
integral "tightly coupled"?
Alias_ tarball unpacking is a non-Perl issue... "testing system must be able to untar a tarball" 08:30
version of perl should not matter one bit
nothingmuch integral: tightly coupled = connected, interdependant
Alias_ installed modules should not matter
integral nothingmuch: I don't really see how ;-/
s/;/:/
nothingmuch Alias_: yes it should, if you have N versions of perl and you want to test on one, or on all, or...
Alias_ That's up to the configuration
integral you write a loop...
Alias_ that has nothing to do with an actual test 08:31
Layer 1 is "how to run a single smoke test as flexibly as possible"
nothingmuch test results are a matrix of:
platform
os
module version
dependancy1 version
...
dependencyN version
(matrix of installed optional deps)
Alias_ only if you want to do it that way
nothingmuch perl version
integral that sounds more 3+N dimensional than a matrix, nothingmuch
Alias_ Personally, I just want to cherry pick a representative sample 08:32
nothingmuch toolkit style (GNU, BSD)
integral: N dimentional matrix...
think of it as a cube in parallell universes ;-)
Alias_ There's methods for finding a minimum representative set out of a full matrix
integral isn't the relationship between the reporting and the smoke testing the same as between a TAP harness and a TAP producer?
Alias_ Personally, I'd like a mimumum of "1 setup, native" and a maximum of "complete matrix coverage"
bingo 08:33
nothingmuch Alias_: so why bother with several OSs?
Alias_ restate the question
nothingmuch integral: yes
i think even ditstribution across the matrix is statistically desireable
integral and Pugs' make smoke is a good example, nothingmuch, of how you can have the same testing components, but plugged into a different display and execution format
nothingmuch integral: look at how fat smoke_loop is 08:34
Alias_ my point is, with a single given tarball, what is the minimum needed setup needed
nothingmuch it's closer to what Alias_ wants - a full system
Alias_ Issues beyond the testing of a single tarball are beyond the scope of layer 1
nothingmuch i put it in the repo because it works for me, and others might want to base off it
Alias_: how do you test only a single tarball?
Alias_ That's the question you see
For starters, you have the "unpack file, perl Makefile.PL, make, make test, make install" cycle 08:35
and collection of the output.
That part is solved, but only exists is part of a larger overly specific dist I believe
which sucks
nothingmuch what if Makefile.PL has a prompt? 08:36
what if there are unresolved deps?
Alias_ Then that will be in the report
integral isn't that just part of what you're trying to find out, nothingmuch?
Alias_ Makefile.PL should already deal with that. They are sposed to run in silent mode if needed
If not, it's a bug
nothingmuch i agree on the prompting bit
but what about deps? 08:37
Alias_ Second, you need a local controller. Takes instruction from somewhere, and runs something against the local platform
Without altering the local platform by it's existance
integral Alias_: like an existing ssh, telnet or rlogin server?
Alias_ So it probably needs to be a PAR'ed application, built against the local platform, but not part of the local platform
It needs to be code
Running a testing procedure should not have to involve perl-related dependencies on the local system 08:38
How it gets it's instructions, and where it reports, should be as minimal as possible
So probably SSH-based
yes
So you have "A $foo application, built with PAR against the local platform on a different machine, installed at $foo on the testing platform" 08:39
nothingmuch do you see the "ssh based controller thing" as a component?
if no- refactor 08:40
Alias_ functionally, more or less
nothingmuch if yes - i think it is
just describe what it will do
Alias_ Although you'll have to par it up for each platform type
nothingmuch with a graph like flow
Alias_ right
nothingmuch and offer $5 to the first person who implements it, as a moral equiv of a beer
Alias_ But you'd provide a CPAN module/script combo for it
integral nothingmuch: isn't everything you can describe as "a purple foobaring thing" a component?
nothingmuch integral: a script is typically not componentized
Alias_ You provide the default implementation, and a script to built it on the local platform
nothingmuch it controls many parameters in a hard coded way 08:41
to make it readable, and specific
Alias_ anyways
nothingmuch and not too complex
integral nothingmuch: it's not? But it's got an interface via the command-line, and output via stdout
nothingmuch it's glue
Alias_ to continue...
nothingmuch right, but then it's hardly reusable
it might be reinvokable, but it's not polymorphic to it's environment
or it's sibling components
it is a parent component
encompassing an environment, a context, and other components 08:42
Alias_ So your definitions are, "installation of $script, built with PAR for the platform, and installed at $path"
nothingmuch i think this is more desirable:
daemon in a par dist 08:43
working on known port,
with a simple HTTP based interface
that way the shell, the env, and paths aren't involved
the par thing should know to find the components
and then it does an http post of the results, to a place specified in the request
the protocol is simple
you do a HTTP post of a tarball
integral what is the format of the results? Something TAP-like?
nothingmuch integral: either plain text harness output, which is typically not enough
or serialized Test::TAP::Model
or the yaml_harness's output 08:44
or just raw tap output
Alias_ plain text harness output could well be enough
YAPCSmoke does already know enough to know PASS or FAIL
nothingmuch Alias_: on many occasions I got back a "please test it with TEST_VERBOSE=1 and send me the results"
integral so when I design my own viewer component for the results, I have to handle unprocessed harness output?
Alias_ integral: No, because someone wrote that for you 08:45
welcome to layer 3
nothingmuch integral: Test::TAP::Model is a reusable component designed to be pluggable as processed harness output
Test::TAP::HTMLMatrix is one example of a viewer component
and it too is reusable
Alias_ basically, "do as little on the testing system as possible"
nothingmuch Alias_++ # good guideline
Alias_ That's the whole point...
nothingmuch it's the first time i've seen it in this conversation (note that I faded in & out) 08:46
Alias_ hence the "Build the test controller as a standalone PAR server, and here's the script that builds it on an equivalent platform"
s/server//
nothingmuch it's important to make sure it's clarity is sustained
fair enough
Alias_ You should not have to make a single change to a Perl installation in order to run tests against it 08:47
Or if we do, we have to make those changes extraordinarily well defined
For example, ThreatNet's spec defines very little, but the bits it does are extremely detailed and absolutely unalterable
anyways 08:48
nothingmuch is going to get a salad
(lunchtime)
i think the protocol should be two way: 08:49
test thing says - here's a file
tester reports results
Alias_ right
nothingmuch or sessioned error
"dependency missing, etc"
these are extensible
Alias_ But they have this stuff already in YACSmoke
nothingmuch the test requestor can handle them if it knows how
okay, so test thing sends full params to YACSmoke 08:50
Alias_ The other problem is that the external controller is going to need to know when the test is finished
nothingmuch anyway, going out.
ciao!
Alias_ No point waiting around on a 30 minute timeout
nothingmuch it doesn't, it get's called back
it puts a "dial here when you finish" param
Alias_ SSH wouldn't need that
customise the ENV if the external thingy wants, then call the local controller, and wait for results 08:51
timeout if response is silent from greater than $time
for
actually... SSH is a bad idea 08:52
it adds a dependency
so telnet, or even console
"sh access"...
integral has several systems with only a serial port to the outside
Alias_ I've seen console controller serial ports on certain gear
right
it was common at Cisco
integral (and I might not be testing perl) 08:53
Alias_ I don't care about you then :)
Althought if there's a toolkit for this already, I'd use that
You can't plan everything..
integral But then I can't use your nice reporting tools on the front end...
Alias_ So you just built in multiple layers and define as little as possible 08:54
That way you can implement alternative layers at any point you want
And since I'm implementing a testing system for Perl modules... no, you probably can't 08:55
sigh... why do I always end up having to do everything myself :/ 08:56
Alias_ goes back to $work
lightstep does while (<FILE>) work in p6? and what does say =<FILE> do? 09:29
and how do you do this in pugs? (call/cc (lambda (c) (or 3 (c 9))) 09:31
lightstep finally decided to learn perl
lumi Congrats
lightstep hi lumi 09:32
lumi Hi
scook0 what are you trying to do with call/cc?
lightstep so? do you know the answers? and what is ~| ?
scook0, it should return 3 is or is short-circuiting, and 9 if not 09:33
lumi Stringwise or?
scook0 I think ~| is string-or
lightstep $bits = 9 ~| 3; # ";" (from the presentation)
scook0 well, you can get at continuations using &?CALLER_CONTINUATION 09:34
sub callCC(&f) { f(&?CALLER_CONTINUATION) }
or something like that
though I think there are some deficiencies in continuations at the moment 09:35
lumi What do you mean by "or"?
lightstep || 09:36
`or is scheme's
lumi Well that's shortcircuiting
lightstep `or' is scheme's short-circuiting or macro
lumi So your cc will never be evaluated 09:37
lightstep yes
well, thchnically the cc is the _continuation_, and will be evaluated, but the call (c 9) won't be. are there non-short-circuiuting logical operators in perl6? 09:39
lumi It should prolly be that definition for callCC and then 'callCC( { 3 || &^c(9) } )' or so?
scook0 lightstep: not sure, possibly not 09:40
lumi Are those very useful?
lightstep lumi, isn't is $^c ?
lumi Ehm, possibly so
lightstep wrt the logical ops, i just wanted to know, i can't think of a use for them 09:41
scook0 they only really make a difference when the arguments have side-effects
which is poor style, most of the time
lightstep yes
scook0 though I personally have felt the need for non-short-circuiting ops occasionally 09:42
lightstep but about the file processing idioms: does while (<FILE>) {...} work? and what is `say =<FILE>'?
scook0 I don't think circumfix <> is 'readline' any more
lumi No, it's wordlist 09:43
=FILE is the new iterator
lightstep so it's while (=README) ?
lumi Except while isn't magical 09:44
Hm
scook0 I think you'd use 'for' instead
my $x = open('README')
for =$x { say }
lightstep what's the difference between ext/, inc/, lib/, modules/ and freepan? 10:31
nothingmuch freepan is a community repo
whose filesystem is subversion
wherre you can put files
modules is stuff that is not yet working
inc is support stuff, mostly p5
ext is working modules 10:32
which are support to pass their test
s
and lib is p5 stuff that is shipped with pugs
and unlike inc is not used to build pugs
lightstep what is the intersection between modules+ext and freepan? 10:33
nothingmuch freepan will in theory be a distribution point for the contents of 'ext'
when those modules fork off from the pugs repo and start having a life of their own
modules is uncompleted works
like stuff that needs parts of pugs that aren't there yet (Class::Events for example) 10:34
it was where we put modules before pugs supported most things
and then when some of them started working someone thought it makes sense to separate the working from the non working
afaik freepan is supposed to be a superset of ext
but it's supposed to contain everything else people want to put there too 10:35
(e.g., p5 code, haskell modules, python, whatever)
it's just a big mirrored filesystem
nnunley Forth: You might consider targeting for jasmin (jasmin.sourceforge.net/) as a target
nothingmuch which is going to have rich metadata about packages some day
nnunley: did you mean Forth? or harrorth? 10:36
nnunley noithingmuch: I thought it was Forth that wanted to target the java vm.
nothingmuch oh, then I'm out of context 10:37
nnunley Looks like I really can't type this morning.
nothingmuch target the java vm as a backend for what/
pugs?
nnunley nothingmuch: Nah. I'm just lagged. As a compile target for pugs.
nothingmuch ah 10:38
lightstep do why does ext exist? it's all in freepan, and not a part of pugs
nothingmuch it's not all in freepan yet 10:39
because freepan is not really ready for prime time
and because ext is still closely linked to pugs 10:40
they serve as a sort of test suite
and they also progress alongside pugs
lightstep ok
nothingmuch when an ext module can make use of a new feature in pugs it should be refactored
in theory you're right though
ext is eventually supposed to be migrated to freepan 10:41
lightstep what's wrong with cpan, btw?
nothingmuch it targets a single unified namespace
perl5 modules
freepan attempts to make distributions more in tune with the perl6 unique identification scheme of things 10:42
(multiple modules with the same "short name")
acme_ freepan reinvents the wheel 10:43
nothingmuch but MPEG::Audio::Frame has had a consistent api
(a notion that module version 2 and module version 1 aren't the same thing for one namespace, but are for another)
for example, tangram 2 and tangram 3 are entirely different systems (mugwump?)
acme_: it does sort of
but CPAN will need a shake when perl 6 gets into the picture
and freepan is a nice attempt at a prototype
Alias_ points out that the wheel has been re-invented a number of times over the years
autrijus freepan is a prototype of c6pan... just like pugs is a prototype of perl6
Alias_ shouldn't that be CP6AN 10:44
autrijus yeah.
sorry
nothingmuch freepan is more in tune with the spirit that things change, and should change
Alias_ Although CPAN2 has a certain ring to it
Like "The Internet 2"
nothingmuch sometime which wasn't so important when CPAN was made up
something 10:45
QtPlatypus cpanng
Alias_ ugh
nothingmuch muttng is annoying that way
.muttngrc
pgpwrapng
Alias_ Any project that involves Next Generation should have a plan to end up with it's name as Current Generation
nothingmuch CPAN 2005-? 10:46
Alias_ CPAN Longer String
nothingmuch maybe CPAN 2005-... is more readable
Alias_ that would fail to compile
with an appropriate error :)
nothingmuch or CMAN since it's modules in general, not only perl
(comprehensive module archive network) 10:47
Alias_ actually... Comprehensive Package Archive Network
We don't even need to change the acronym
nothingmuch =)
Alias_ That has a certain appeal
QtPlatypus likes Alias_'s retcon. 10:48
Alias_ We don't need new domains, and we get to make the other language use "CPAN" :)
Also CPAN has GREAT brand recognition
</marketing>
Despite people's issues with Perl, everyone things CPAN is cool 10:49
autrijus "CPAN is very good to Perl 5."
"However, Perl 5 havn't been very good to CPAN." ;)
Alias_ heh
nothingmuch i would use python if python had CPAN 10:50
autrijus "ask not what CPAN can do for perl"
nothingmuch although I'd much rather use ruby if ruby had CPAN
Alias_ That's what just about everyone that tries to leave Perl says
autrijus "ask what perl can do for CPAN"
Alias_ I'm starting to think of myself less of a Perl coder and more of a CPAN coder
although I like Perl too, just not as much as CPAN
nothingmuch Alias_: i'm not trying to leave perl though. I like it, i'm used to the quirks, and the usefulness is good enough
Alias_ yes, but it's _the_ compelling reason you'll never get very far into other languages 10:51
nothingmuch i haven't even considered another language because i don't have a single file of code (perl -e doesn't count) without use at the top (although I do occasionally do perl -MFoo -e, with as many as 3-4 -M's)
Alias_ I keep thinking we should write a proper CPyAN implementation as a gift for the Python people
God would they be pissed
nothingmuch the infrastructure? 10:52
Alias_ the everything. Database, indexer, PyAUSE, ... and yes let them use our mirror network
nothingmuch =)
Alias_ Drop a complete working CPyAN in their lap and watch them squirm
"Oh, it took us about a week" 10:53
QtPlatypus Alias_: Wouldn't that happen as a side effect of the parrot project?
autrijus er, no.
parrot is the runtime.
Alias_ No, CPAN can't support multiple languages
autrijus the infrastructure is another matter.
Alias_ So you could write a CPAN clone
But whatever Freepan turns into would become a shared repository 10:54
integral has someone written down an idea for what new directories are needed on CPAN mirrors?
Alias_ I don't think it will work like that
QtPlatypus I mean they will be able to use the code that is in CPAN, and its desendents.
Alias_ some how...
Yes, the NextPAN will allow cross-language module use
For languages that have a dialect for it 10:55
like Perl 6 :)
QtPlatypus I mean CPAN isn't good just because of its infostrature, its also for its content.
Alias_ the content was a byproduct
What makes CPAN _really_ great is that it encourages lots of small packages with lots of dependencies 10:56
What every other system results in is large "product" packages that just use the base libs
So because CPAN makes dependencies easier, there's a lot more encouragement towards writing small clean modular packages 10:57
People do bitch about "installing half of CPAN", but imagine how painful it would be if you had to install 50-100 python packages 10:58
Look at bioperl
It's now hit it's inertia limit and hardly ever gets releases
Because it's one giant package, and not lots of smaller ones
anyways 10:59
They will work this out for themselves eventually
We used to do large packages too at first
Look at CGI.pm
But as people got used to CPAN's environment, they moved in the direction of smaller chunks
What amazes me is that Ruby, having seen CPAN's success, and Vaults' failure, choosed to go down the Vaults direction 11:02
You would think they would be smarter
nothingmuch what's Vault?
Alias_ The Valuts of Parnassus
Vaults of Parnesses?
something like that
It's the Python equivalent of CPAN 11:03
www.vex.net/parnassus/
or at least, the most hideous anti-CPAN ever made
even worse, after Ruby doing it, now O'Reilly is making the same mistake 11:04
Now THEY should really know better
nothingmuch oreilly?
Alias_ google for code zoo
QtPlatypus Why did it fail Alias_ ?
Alias_ It hasn't failed so much as it's horrible 11:05
acme_ i really don't understand codezoo
Alias_ QtPlatypus, it's failed because it's not CPAN
It doesn't even have the potential to become it
nothingmuch what is the problem with it? technical? or philosophical?
Alias_ technical
You download packages, one at a time
from a website
So it encourages large packages 11:06
large packages get nasty inertia issues
nothingmuch oh
Alias_ Their only option for dependencies is to "use the debian packages"
nothingmuch i see
that's horrible 11:07
Alias_ like I said, CPAN works because it has lots of small modules
Everyone else fails because it doesn't do what CPAN does
nothingmuch codezoo is for java?
Alias_ codezoo is for everything
nothingmuch ah
Alias_ So it's a reimplementation of the Vaults of Parnassus, for all languages 11:08
Alias_ chuckles
nothingmuch has only java code been uploaded? i see nothing else
Alias_ looks like only java is uploaded
But then Java needed a repository more than the other languages
nothingmuch let's hope the java people choke on their large packages 11:09
=D
it looks like freshmeat
Alias_ I hope that JSAN gets rolling
It would be _really_ funny to get a JavaScript version of CPAN working, and throw it in the faces of the Python people :)
nothingmuch =) 11:10
Konfabulator could benefit from a javascript lib
i was thinking of maybe starting something like that
but then my konfabulator trial expired
and i remembered it's shareware
Alias_ heh
If you wanted to help out, we need a few bits and pieces for JSAN
nothingmuch and i was like "$25 for this? no way" 11:11
Alias_ Theory's Test::More port is looking good, and TorgoX is doing JSPOD for me
nothingmuch well, i don't do javascript
Alias_ I've got a couple of basic packages set up
And JavaScripdt::Librarian will handle some of the server stuff
nothingmuch i learned it twice, and forgot it 1.5 times
Alias_ haha
nothingmuch it was actually my first langauge
back in 1999 i learned programming through that 11:12
then I moved to perl
what horrible code i wrote
it was a combination of illiteracy, and a too big gap between my capabilities as a programmer and my capabilities as a program writer
i didn't get why perl didn't say "sub ($foo) { }" 11:13
and for some reason I missed the @_ thing
so i was like "huh? a language which can't pass params to functions?"
"oh well..."
then I implemented a way to pass paramters through an N dimentional array of arrays
*shame*
i think this is the first time i've fessed up about this 11:14
luckily by the time i was 3-4 days into perl i realized what was going on
someone say "forgiven, my son" or something like that 11:15
QtPlatypus smiles "Well the whole @_ of perl was a miss feature"
And we all do stupid ass things.
Alias_ hhahaha
we all did a few stupid thing
Alias_ implemented his own flat file database because DBI looked scary 11:16
acme_ wrote his own templating system
Alias_ oh come on, we all did that
nothingmuch i implemented a Btree in memory, using tied hashes, but that was only for fun
QtPlatypus acme_: Everyone did that.
nothingmuch actually I didn't implement my own templating system ;-)
Alias_ Did I mention I'm thinking of actually getting around to uploading Template::Tiny
nothingmuch by the time i was interested in templating content I had heard of HTML::Template, and realized that there are hundreds like it 11:17
Alias_ Hopefully Template::Tiny should come in under 50 lines of code 11:19
including boilerplate
with judicious use of modules I think I can keep the core code around 10 lines 11:20
:)
broquaint package Template::Tiny; use base 'Template'; 1; ...
Alias_ actually... it's more like... 11:21
package Template::Tiny; sub process { $_[0] =~ s/\[\%\s*(\w+)\s*\%\]/$_[0]->{$1}/g; $_[0] } 1
But I'm sure I'll be asked for a few features that won't be too expensive 11:22
nothingmuch oh my 11:24
kungfuftr Alias_: yar, such as different tag styles
nothingmuch would have implemented it with Regexp::Common
Alias_ That would be way too expensive
::Tiny has a paticular philosophy
nothingmuch why? only 30 minutes to run the test suite ;-)
yeah, I know of ::Tiny 11:25
and I know why it's there
kungfuftr Alias_: s/$start_tag\s*(\w+)\s*$end_tag/$_[0]->{$1}/g;
Alias_ Regexp::Common is a beast
kung: right..
nothingmuch while I like enjoying someone else's work into that philosophy, I don't want to maintain my own Tiny's
Alias_ it's easy!
People write in asking for features, and unless they provide a patch that can add it be REMOVING code, you just say no :) 11:26
"That would add bloat"
etc etc
kungfuftr Alias_: yar... [% %] doesn't work in things like dreamweaver, etc... so most designery type people use Template with php style tags
Alias_ And the module is so small, that it's really easy to test and doesn't really have any reason to change 11:27
I like [% %] tags in dreamweaver
You can see the tags that way
kungfuftr *shrug*
Alias_ but yes, you have to be a little careful 11:28
anyways, I'll probably keep start/end tag variety
kungfuftr pre-compilation should reduce the bloat
Alias_ The reason I haven't done it so far is that I know there's going to be a lot of bloat pressure
QtPlatypus Can someone tell me why Pugs might produce this error "cannot cast from VObject (MkObject {objType = (mkType "Class"), objAttrs = <ref>, objOpaque = Nothing, objId = 64}) to Pugs.AST.Internals.VCode" 11:29
broquaint You tried to treat a class as code? 11:31
QtPlatypus Found it. 11:33
Class("something"); Rather then Class.new("something"); 11:34
Alias_ whoa 11:36
what timing
q[merlyn] well, I'll see if the release of Perl6::Pugs works any better than the CVS compile I tried yesterday 11:53
QtPlatypus ?eval if (1==1) { "a" } else { "b"} 11:54
evalbot6 'a'
QtPlatypus ?eval if (1==0) { "a" } else { "b"}
evalbot6 'b'
q[merlyn] ?eval say 'say', 'say, what you want' 11:55
evalbot6 Error: No compatible subroutine found: "&say"
q[merlyn] heh
QtPlatypus Interesting if has a return value
q[merlyn] Might just be "last expression evaluated"
same thing as subroutines in perl5 11:56
QtPlatypus nods to q[merlyn] "I expect that it is"
perl5 didn't do that with "if" 11:57
?eval my $a =if (1==0) { "a" } else { "b"}; $a
evalbot6 Error: unexpected "i" expecting expression reserved word
QtPlatypus Ok 11:58
q[merlyn] Yeah, "if" is not an expression. it's a statement
QtPlatypus ?eval my $a ={if (1==0) { "a" } else { "b"}}; $a
evalbot6 \sub {...}
q[merlyn] it's unfortunate that the Perl docs blur those, even though the compiler is very clear and the design is very clear.
QtPlatypus ?eval my $a ={if (1==0) { "a" } else { "b"}}; $a()
evalbot6 'b'
q[merlyn] yeah, that's "subroutine return val is last expressione evaluated" 11:59
QtPlatypus ?eval my $a =do {if (1==0) { "a" } else { "b"}}; $a
evalbot6 \'b'
q[merlyn] reference to b?
mr_ank ?eval my $a =do {if (1==0) { "a" } else { "b"}}; $a.perl
evalbot6 '\\\'b\''
mr_ank ?eval {if (1==0) { "a" } else { "b"}}.perl 12:00
evalbot6 'sub {...}'
QtPlatypus Ok the tri-op is most likely the best option for that.
q[merlyn] correct 12:06
Limbic_Region is autrijus, theorbtwo, or any other metacommiter around? 12:09
nothingmuch yes 12:14
Limbic_Region: pong 12:15
q[merlyn] Hmm. Perl6::Pugs distro builds fine, but I'm not trying to embed Perl5. 12:16
Maybe it breaks only when embedding Perl5.
Aankhen`` QtPlatypus >> A block returns the value of the last statement.
domm so
Aankhen`` q[merlyn] >> What platform are you on?
Limbic_Region nothingmuch - I just got handed my meta commit bit the other night - never used it - need to send a commit invite - how do I do that?
domm I (mis)used the fact that my son is ill and I don;t have to work to write some perl6 obufs
feather.perl6.nl/~domm/
there all more or less based on the same idea i had a while ago: 12:17
www.perlmonks.org/?node_id=199499
Limbic_Region nothingmuch ? 12:19
nothingmuch sorry
back
you enter the rt administrative interface
rt.openfoundry.org/Foundry/Project/...?Queue=270
after you're logged in
that's the members tab already 12:20
then in the big box put some emails
and click invite
Limbic_Region ok - now let's hope I know how to log in
q[merlyn] OSX 10.4 12:21
domm I'd appreciate it if somebody could add those obfus to pugs/examples/japh
nothingmuch login - top right corner 12:24
with your svn password
domm: Limbic_Region can give you commit access ;-)
Limbic_Region doesn't remember entering a svn password 12:25
domm Limbic_Region: can you give me commit access :-) ? 12:26
nothingmuch uh, i can try and see if it can be reset, Limbic_Region 12:27
but when you got an invite you must have chosen a passwd
and then entered it on your first commit
poke around .svn
Limbic_Region I figured it out
that's at home nothingmuch - but I am all set now
autrijus domm: invitation sent. welcome aboard!
Alias_ hazzah 12:28
domm autrijus: thanks
finally ... :-)
Alias_ Guess what domain expires in 2 weeks and I've put in a backorder for :)
autrijus don't forget to add yourself to AUTHORS :)
Alias_ jsan.net!
nothingmuch autrijus: beh, that's like doing someone else's homework ;-)
q[merlyn] "make test" is proceeding, but it makes me puzzled about yesterday's failure
nothingmuch hah
Alias_ JSAN could well be a go-er :)
autrijus q[merlyn]: uh, you mean you did suceed in making pugs?
q[merlyn] I'm install Perl6::Pugs with no options from the CPAN. 12:29
and it seems to be going ok
autrijus weird.
q[merlyn] but yesterday, I tried to embed Parrot and Perl5, and it broke.
but that was from the SVN
Limbic_Region ok - I have logged in - where is it that I enter email address(es) and click invite?
q[merlyn] so there are a lot of variations there. I'll have to try varying fewer things when I get a chance.
autrijus Limbic_Region: rt.openfoundry.org/Foundry/Project/...Queue=Pugs 12:32
nothingmuch forgot all his debian 12:35
what's that tool where you select the "roles", and you get a bunch of useful packages? like "Development", etc
Limbic_Region yay - I figured it out 12:36
fwiw - using links appeared to log me out so I had to navigate myself and I didn't notice the big box for entering email addresses cause I had to scroll down 12:37
all better now - tallman invited
nothingmuch going home... see you later! 12:47
hopefully more forth and less teaching today
QtPlatypus Cool being a key doesn't brake an object's objectness. 12:57
q[merlyn] OK... Perl6::Pugs built correctly from the CPAN, but didn't use Perl5 or Parrot embedding 13:24
crysflame did you set the environment variables for perl5 or parrot embedding?
restated, did the build process attempt to include perl5/parrot and fail or never try at all? 13:25
q[merlyn] the CPAN install didn't try that 13:26
I need to try just the SVN install without embedding to vary only one thing at a time 13:27
dkf q[merlyn]: I'm trying that right now. So far I've tried it with perl5 and parrot, and with parrot only, with the same results. 13:35
It looks to me like it only chokes when trying to build with an embedded parrot. 13:57
I just built from a clean tree with PUGS_EMBED="perl5" and it went fine 13:58
cognominal what's the replacement for STDERR or indirect syntax? 14:03
print STDERR 'bla' # does not cut it anymore 14:04
PerlJam cognominal: why not?
cognominal pugs> print STDERR 'toto'
*** No compatible subroutine found: "&STDERR"
at <interactive> line 1, column 7-20
PerlJam oh, sorry. I forgot what channel I was on :-)
STDERR == $*ERR
cognominal oki 14:05
ETOOMANYLANGUAGES
thx
PerlJam $ERR.say 'toto'; say $ERR: 'toto'; etc.
cognominal: tell me about it. I've been having trouble context switching between perl5/perl6. I simply can't do any perl6 while at work otherwise my perl5 code gets all messed up. 14:06
Khisanth what you need is a Perl6 sourcefilter :) 14:07
PerlJam no, I just need a working production level perl6 compiler :-)
integral Khisanth: use pugs; # it's here today!
cognominal btw, that's $ERR.say('toto') 14:09
PerlJam oh right. methods require parens 14:10
Limbic_Region insane in the membrane - insane in the brain 14:19
Limbic_Region likes that chip is active on p6.l and not just p6.i
having the compiler remember everything about every block just because someone might call it like a sub is INSANE 14:20
QtPlatypus Is "call it like a sub" something that could be detected? 14:23
Limbic_Region that's what chip is asking for 14:24
QtPlatypus nods.
Limbic_Region "...but only works if the calling block already marked itself as callable, perhaps by mentioning &?BLOCK in its body."
QtPlatypus would prefur to be able to taint blocks, or something like that. 14:25
Limbic_Region I don't really care how it is accomplished as long as it is relatively sane 14:27
QtPlatypus nods "Likewise" 14:28
Limbic_Region was all gung-ho to whip out the framework for the missing synopses until he realized just having the RFCs each S should cover by itself isn't enough reference material 14:30
Enveigler L~R: My gut feel about continuations is the same. So much overhead. I've been reading everything I can find to understand chip's statement about "being a VM means that the info is there anyway", but nothing I've found yet convinces me that this isn't going to need 64-bit memory space for any reasonably complex program! 14:41
SamB Enveigler: what makes you think continuations have overhead? 14:42
integral Enveigler: are you familiar first with stack based call frames? 14:43
SamB are these continuations storing a huge amount of stack contents or something?
Limbic_Region Enveigler - there are two kinds of continuations - Parrot is going to support both, but only function calls are going to be "full" continuations by default 14:45
Enveigler I'm open to persuassion, but for a continuation to be able to continue from where it was, doesn't it mean that the state of every lexical variable from program initiation down the call-chain to the point the continuation is taken must be retained?
Limbic_Region with that said - I would assume the same holds true for blocks - it won't be special unless you say it is special
Enveigler integral: Yes. 14:46
integral Enveigler: err, that's just the same as if you've got a stack though...
and one this is that you can only jump to where you got a continuation for, and continuations and your "current frame" pointer are the only things that point to frames which can then be garbage collected 14:47
Enveigler Except that lexicals are mutable. If a contuation is taken at level 1, a variable from the parent scope is modified another call/continuation is taken. If the first continuation is invoked, somewhere both intermdiate values of the modified lexical must be retained. 14:49
integral ah, you misunderstand 14:50
You aren't closing over the *values* of the lexicals, but the lexical environment where you map names/indices to boxes for values
It's the same as closures
if you're familiar with assembly level stuff, a CALL pushes a return address on the stack, a continuation based system OTOH would push something much more like a closure on the stack 14:52
PerlJam integral: "I've got all the same boxes I had before only the stuff in them has all changed" ;)
integral now prefers the view that continuations are the future, not the past 14:53
and so you're saving stuff you need to use in future, not things you want to restore
PerlJam: :-)
PerlJam integral: um ... continuations are time-symmetric they work the same in forward and reverse.
SamB huh. I always found continuations in languages with rampant mutable state to be confusing, probably because I wasn't sure whether they stored values or what... 14:54
integral PerlJam: hmm?
PerlJam integral: I'm just saying that it shouldn't matter which direction along the time arrow you're looking continuations look the same no matter what. But if it helps you to think of them as "saving for the future", you go ahead :) 14:55
integral if continuations closed over values this wouldn't print 5: my $a = 4; sub { $a++ }->(); # because the return continual would restore $a to 4
PerlJam notes that he really needs to get his fingers to type the punctuation in his head 14:56
Enveigler is thunking... 14:57
PerlJam Enveigler: thunking is remarkably close to taking a continuation ;) 14:58
Enveigler nods :)
If a caontinuation is only capturing /what/ is accessible, and not the values, then how is this different to a closure? Speculation. The closure *only* captures the what of variables from prior scopes--a contnuation captures the what of local lexicals also. -- Still thunking. 15:01
integral a continuation is a lot like a closure that doesn't return 15:02
Enveigler needs to draw some boxes and lines on paper and think so more 15:03
s/so/some/
PerlJam Enveigler: when you figure it all out, write it down for the other poor souls who don't quite get it.
Enveigler I'll try 15:04
15:08 sbkhh is now known as Odin-
iheartcanada doods is perl 6 out? 15:17
kungfuftr iheartcanada: yes... watch out... i hear it likes small children! 15:18
iheartcanada: it'll be done by christmas
Limbic_Region depends on your definition of perl6 and of out
something that implements a good portion of perl6 is available - called pugs
see topic
iheartcanada kungfuftr: you are kidding right? that's wonderful
Limbic_Region: thanks man 15:19
marcel__ he didn't say which christmas...
iheartcanada is going to be so happy this Christms
or the 20th Christmas from now
??
Khisanth kungfuftr: I didn't know MJ worked on pugs!
iheartcanada Nth Christmas
Khisanth runs
kungfuftr iheartcanada: i didn't say _which_ christmas
Limbic_Region it is a running joke iheartcanada
kungfuftr Limbic_Region++ # providing wikipedia 15:20
iheartcanada is this haskell - imp of perl 6 an official component of perl 6 project? 15:21
or is it your own imp?
kungfuftr iheartcanada: it's to assist bootstraping
along with tie down certain implementation details
iheartcanada i think everyone's surprised how extensive the perl 6 project is, it really revamps everything eh? 15:22
autrijus I'm not exactly surprised... more like, well, determined ;) 15:25
kungfuftr autrijus: boo!
seen castaway 15:26
pah
q[merlyn] OK, adding Parrot makes the build crash on OSX
autrijus q[merlyn]: 0.2.1? 15:27
pasteling "merlyn" at 209.223.236.162 pasted "OSX 10.4.1, crashes build when embedding Parrot" (17 lines, 801B) at sial.org/pbot/11052
q[merlyn] parrot from the CVS
now I'll try embedding perl5 by itself 15:28
autrijus q[merlyn]: you mean SVN?
q[merlyn] yes
autrijus q[merlyn]: parrot from svn is segfaulting for "print" for me.
q[merlyn]: I'm working with leo on that ;)
q[merlyn] aha
autrijus (in other words, don't rely on it)
q[merlyn] well, that explains my troubles, perhaps. 15:29
pugs embedded with perl5 works fine 15:34
but that means I still can't use rules, right? 15:40
QtPlatypus You can use rules as long as you have a parrot executable in your path. 15:43
15:48 Aankh|Clone is now known as Aankhen``
Aankhen`` I am in the same predicament, q[merlyn]. :-( 15:52
(although I can
(although I can't even embed Perl 5)
Aankhen`` wanders off to eat dinner.
q[merlyn] Oh. I have a parrot executable. :) 15:57
ok
but that's the broken parrot
I'm guessing anyway
I'm doing make test to see what happens when I get to rules
PerlJam q[merlyn]: Are you just playing are you intending to write a column on pugs or something? 15:58
q[merlyn] well - the long term goal is to be able to write Learning Perl 6
the medium term goal is to contribute to the Perl 6 project somehow
the short term goal is to understand what the hell is going on. :) 15:59
PerlJam excellent
q[merlyn]: you might want to help pmichaud with the shift-reduce parser he's writing (in PIR I think) for PGE since pugs has far and away more developers than it needs :) 16:00
nothingmuch evening 16:05
QtPlatypus evening
lumi Evening
nothingmuch decides to scrap most of harrorth's code 16:07
lumi Oi, why? 16:08
nothingmuch no reason to keep it =) 16:09
it's a small amount of code
and it's organized in a way that I know realize is limiting
lumi So what do you intend to do instead?
Evil Haskell 16:10
In any self-respecting language, that would be a huge amount of code
I mean, it would take
nothingmuch well, i can take some parts 16:11
and I can make something better
too modular too early
but the current organization of files is a bit silly
spinclad would you make this a new layer for your document: 'Chapter n+1: we start over'? 16:12
nothingmuch i don't know
first I have to write some code, and see if the difference is really big
spinclad you're not starting from tabula rasa anymore... 16:13
nothingmuch what's tabula rasa?
spinclad = blank slate
nothingmuch ah
right
most of the code will look similar
it's really the same stuff
but the organization in files is a bit bad 16:14
spinclad (that is, this time you already know what you learned from the first time through)
nothingmuch right, and that's the point of the whole project =)
dinner time 16:16
spinclad well, good luck however you decide it 16:17
q[merlyn] failed test 16 on t/operators/precedence - normal? 16:48
this is from SVN
Chewie[] ?eval (<> >>+<< <>).perl 16:50
evalbot6 '()'
Chewie[] ?eval (<>>>+<<<>).perl
evalbot6 Error: unexpected ">" expecting term
Chewie[] Heh. Is whitespace required on the dull end?
broquaint Inline::BF?
Chewie[] ?eval (<1 2> >>+<< <5 6>).perl 16:51
evalbot6 '(6.0, 8.0)'
Chewie[] broquaint: It's looking like it. Heh.
broquaint You could almost have it with some judicious operator overloading ...
Chewie[] You could have it easily, except for the looping constructs.
broquaint You could do those too, no doubt. 16:52
Just have <>.,+- as unary ops and [] as the usual circumflex op, take some drugs, and you're sorted. 16:53
Limbic_Region merlyn - did someone point out to you earlier that ?eval say isn't allowed IO operations are considered unsafe 17:08
Limbic_Region is playing catchup on the log 17:09
geoffb is as well
and just done
FWIW -- make unoptimized && make test takes almost exactly 4 hours for me.
geoffb winces before asking the next question . . . 17:10
What can I do to help make that faster?
QtPlatypus has been running them while he sleeps. 17:11
Limbic_Region geoffb - my guess would be to buy more memory
how much does that box have? 17:12
geoffb forks his response into two threads . . .
A: It has 192 MB -- it doesn't have more because the computer was a gift, and has the worst internal design EVER, for which you basically have to disassemble the box to component chips to be able to add a stick of RAM 17:13
Limbic_Region geoffb - what OS? 17:14
geoffb B: I was actually asking, "Lots of people complain about the time make and make test take. I'd like to help improve the experience for everyone. What can I do?"
A: Debian testing
Limbic_Region there might not be much you can do other than to provide binary distributions
IOW - if there were minor changes that could improve compile time they would already be done 17:15
significant changes OTOH.....
geoffb B: I was thinking perhaps of simplifying the living hell out of Test.pm so that it loads faster, but I don't know how much stripping can actually be done
B: Speaking of which, does the presence of POD inside a .PM significantly slow pugs parsing? Would just chopping the docs and putting them into a .pod make a huge difference . . . ? 17:16
Limbic_Region and on the gripping hand - I know next to 0 about Pugs internals and am just parroting what I have heard in previous conversations on the matter
geoffb thinks "There's one way to find out for sure." :-)
Limbic_Region ?eval (42).kv 17:17
evalbot6 Error: No compatible subroutine found: "&kv"
svnbot6 r4646, geoffb++ | t/01-sanity/06-use.t: attempt to work around Test.pm being too smart for our good
r4647, iblech++ | * Usual svn props added to new Emit.PIR.
r4647, iblech++ | * Added "blib" to svn:ignore of ext/Locale-KeyedText.
r4647, iblech++ | * t/subroutines/lvalue_subroutines.t -- Added a comment referring to a p6l
r4647, iblech++ | thread and fixed a test.
r4647, iblech++ | * t/01-sanity/06-use.t -- Placed the outputting of the TAP header in a BEGIN
r4647, iblech++ | {...} block and changed the loading of "Test" into "lib", so the TAP header
r4647, iblech++ | isn't printed twice.
r4648, putter++ | sleep() returns seconds slept.
Limbic_Region hmmm
?eval my @foo = 1..4; @foo.kv 17:18
evalbot6 (0, 1, 1, 2, 2, 3, 3, 4)
Limbic_Region ?eval (1, 2, 3, 4).kv
evalbot6 (0, 1, 1, 2, 2, 3, 3, 4)
geoffb On a completely different subject . . . I wish there were a list of "Books to read so that you can get all the sci-fi references in average geek culture". Thank heavens I've read Stranger in a Strange Land and The Gripping Hand, or I'd be completely lost
Limbic_Region that still doesn't seem right to me
geoffb Looks like someone brought svnbot6 back
and again, iblech++ for being way ahead of me. 17:19
Limbic_Region ?eval my %foo = 1..4; %foo.kv
evalbot6 ('1', 2, '3', 4)
Limbic_Region ok - duh - I get it now
geoffb :-) 17:20
Limbic_Region key = index when the thing invoking the method is arrayish
geoffb nodnod
Limbic_Region I have an idea for a "In Perl6 you can ..." type node 17:21
at the Monastery
geoffb As in "things so cute/cool everyone will want Perl6 RIGHT NOW"?
Limbic_Region well - more from a $larry perspective - here are the things that we didn't get right in p5 but are fixed in p6 so stop b1tching" 17:22
PerlJam geoffb: What's "The Gripping Hand"?
Limbic_Region PerlJam catb.org/~esr/jargon/html/O/on-the-...-hand.html 17:23
revdiablo Limbic_Region: heh, did you see that post of larry's (from a while back), where he said he had to constantly resist the urge to reply to a lot of posts at the monastery with "fixed in 6"
geoffb Thanks, Limbic_Region
Limbic_Region revdiablo - yes
which really isn't where the idea came from 17:24
geoffb PerlJam, see also en.wikipedia.org/wiki/The_Gripping_Hand
PerlJam hmm. Never read that book.
revdiablo Limbic_Region: it just seemed like a similar idea
Limbic_Region but would allow for a "see node X" reply
geoffb PerlJam, it's a fun read . . . but it's a sequel. The Mote in God's Eye is the first. 17:25
Limbic_Region revdiablo - very similar idea so maybe subconciously that is what I was thinking - but I had a lot of influences 17:26
Dan's "What the heck is" series
The "Perl Idioms explained" series
etc
the idea is still a bit loose btw 17:27
QtPlatypus Is this a diffrent monastery then I'm thinking of? 17:29
(I'm thinking of the scary devil monastery) 17:30
geoffb OK, here's the before state for posterity: 'time pugs -e 1' => 6.9s; 'time pugs -MTest -e 1' => 23.7s -- in both cases, insignificant system time, user approx. = real 17:32
Limbic_Region QtPlatypus - you are joking right? 17:33
perlmonks.org
revdiablo QtPlatypus: Perlmonks is affectionately referred to as the Monastery 17:34
geoffb decides that a useful activity while waiting for Pugs to compile might be to actually READ the copy of HOP he picked up some time ago 17:44
surprisingly, it hasn't all just sunk in by diffusion and osmosis from sitting on the desk nearby
integral all the bookshops near me have P6N, but none have HOP :-( 17:52
svnbot6 r4649, iblech++ | lvalue_subroutines.t, proxy.t -- Fix test according to Larry's ruling on p6l,
r4649, iblech++ | and added a comment referring to his post.
geoffb P6N? 17:53
integral Perl6 Now! 17:54
geoffb Ah
integral which seems rather good
geoffb Really? Had not heard good things, so prompty dropped it from wetware core
colabti.de/irclogger/irclogger_logs/perl6 17:55
damn, wrong windo
Right, so stripping doc from Test.pm does almost nothing. Which is actually a good thing. :-) 17:58
Limbic_Region heh - my name is spurperl and I am a Lisp Addict : perlmonks.org/index.pl?node_id=466656 18:15
wolverian nice post. 18:16
geoffb Why does Test.pm use binding rather than assignment for intermediate results? 18:38
There's a lot of lines like this:
my $test := $got eq $expected;
Juerd geoffb: Premature optimization. 18:56
geoffb: Which for Pugs tests isn't as premature as it may appear.
geoffb Juerd, how is it an optimization? Just in that it saves a little copying? 19:02
domm so, I've added some files to my pugs svk checkout on feather. How do commit them? Is svk ci enough? 19:15
svnbot6 r4650, domm++ | three japhs varying one theme
domm that seems to anwser it
:-)
stevan geoffb: the := binding actually creates (or at one time did create) a constant 19:16
IIRC it's like doing *foo = \42; in perl5 19:17
domm ?eval say <a b c> >>~<< <1 2 3>; 19:18
evalbot6 Error: No compatible subroutine found: "&say"
domm ?eval <a b c> >>~<< <1 2 3>; 19:19
evalbot6 ('a1', 'b2', 'c3')
domm ?eval <a b c> ōæ½xBB~ōæ½xAB <1 2 3>;
evalbot6 'a b c1 2 3'
domm is this a bug?
stevan looks like one
wolverian it works fine for me on feather 19:20
maybe evalbot isn't grokking the utf?
stevan ?eval ('a', 'b', 'c') ōæ½xBB~ōæ½xAB (1, 2, 3)
evalbot6 'a b c1 2 3'
stevan wolverian: that might be it
I know svn bot had issues with UTF before
stevan has been so out of the pugs loop lately
domm wolverian: it doesn't work on feather for me: 19:21
feather.perl6.nl/~domm/hyper_bug.p6
wolverian hmm. 19:22
domm but I might be doing something wrong, it's my first day with Pugs...
wolverian your file is different 19:23
stevan domm: if you can confirm it is a bug
put a test into t/pugsbugs/ for it
wolverian ah
your file encoding is latin1
mine is utf8
I _think_ latin1 should just work (tm) as well. 19:24
domm and how do I check file encodings?
domm tried very to ignore utf8 et al until now
stevan domm: what editor are you using?
domm vim
wolverian domm: :set fileencoding?
also, 'file yourfile' shows the encoding 19:25
(in the shell)
stevan just sets UTF as the default now
wolverian stevan: me too, especially as my desktop is completely utf8 as well.
but I think perl6 is specced to just work when encoded in latin1 19:26
so it's a pugsbug
geoffb (sorry, was away for a bit) stevan, what is the value of creating a constant alias to an intermediate calculation? Some sort of fast path in the pugs code?
domm it's working with fileencoding utf8 19:27
stevan geoffb: I am not sure of the rationale, it was there when I first got here
so basically as autrijus :)
but I know that the idea was it would create a constant
geoffb stevan, ok then. :-)
stevan why that is good/bad, I have no idea 19:28
other that it makes it very hard for other code to mess up the test result
geoffb hmmm
stevan it very well might have just be a neat trick :) 19:29
and nothing more
geoffb Test.pm seems so caught up in being cool, it's wrong in a few places
stevan how so?
geoffb: keep in mind that it is one of the oldest module in Pugs 19:30
and so has some old workarounds in it
geoffb It uses named arguments on some subs but not others, and then doesn't call them correctly;
stevan which may no longer be applicable
geoffb Some of the type definitions seem bogus,
etc.
nodnod
stevan let me take a look (its been a while since I last looked at it) 19:31
which types are wrong? 19:32
domm how do I run prove on pugs/t/somefile.t ?
geoffb hold on, I need to svk revert . . . I was experimenting with a typeless version
stevan dont revert
geoffb domm, s/ on //;
stevan just use the web view
svn.openfoundry.org/pugs/ext/Test/lib/Test.pm
domm geoffb: thanks :-) 19:33
stevan geoffb: It seems to me that all the named params are correct oo 19:34
s/oo/too/
domm only there is no /usr/bin/pugs on feather?
stevan geoffb: the $desc and $todo are the only named params 19:35
geoffb: maybe nopaste your fixes?
geoffb Hold on . . . was trying to recall all the stuff I found. Lessee here . . . 19:36
&ok.goto($result, $desc, $todo); is bogus call
stevan why?
is it not working? 19:37
geoffb Because that should be &ok.goto($result, desc => $desc, todo => $todo)
Unless I'm really confuzzled.
No, it works . . .
stevan named params should work positionally too IIRC
geoffb . . . but that's only because pugs has a bug -- named params should *not* work positionally
stevan ah
ok
then that should get fixed then 19:38
geoffb yeah
stevan geoffb 1 Test.pm 0
geoffb And almost everything has a type, except $todo.
stevan next :)
yes, I think that might have been a parse bug at the time that was written
geoffb And limiting like and unlike to Str and Rule matching is P5-ish. This is P6
and so on
stevan what other types would you suggest? 19:39
geoffb Any / Any
Internally, it just does a smartmatch
stevan yes
however, it is really supposed to be based on Test::More::like|unlike
so allowing other types would change that behavior
geoffb I didn't have a big list of issues created, I'd just found a lot of little niggles while trying to figure out how to make it faster 19:40
stevan not that I think Test::More is the best thing since sliced bread
well so far I agree on all except the like(Any) thing 19:41
geoffb I can see that point . . . but by making Test.pm be sortof a merge of Test::Simple and part of Test::More, with some random sprinkles such as special todo handling and so on, we've already crossed the "perfect clone" barrier
stevan I think it will pave the way for a lot of abuses
geoffb: it also has some Test::Exception thrown in too :)
geoffb fair enough. :-)
stevan I am not thinking it should be a clone, but like() in perl5 and like in Test.pm should be reasonably similar 19:42
Keep in mind too that Test.pm will *NOT* be the perl6 test module of choice
it is just to make pugs testing easier
geoffb perhaps we just need a "matches/not_matches" pair to have Any / Any semantics (but with a better choice of name than not_matches, blech)
stevan geoffb: that sounds good to me
or is_like() 19:43
isnt_like()
that implies a wider range of match IMO
geoffb fair enough 19:44
stevan I am sure proclaim() could use some work
geoffb NOD
stevan geoffb: all this sounds good, you should add your changes 19:45
remember to bump up the version to 0.0.7 and add any tests you need to 19:46
and run a full Pugs test run before and after
geoffb I probably will . . . but I've got some more experimenting to do
stevan so you can be sure you didnt break anything
geoffb of course!
nodnod
stevan broke the build once not doing that :)
geoffb oops
stevan but there was only a few hundred tests and about 20 developers, so it wasnt as big a deal :P 19:47
svn revert is your friend :)
geoffb The other thing is the performance side -- if this module is really just for pugs tests, and the recommended test module will be different, perhaps this needs to be split into a friendly/powerful module and a fast one for running the pugs test suite
oh yeah, been reverting a bit lately
(not checked in versions, just local stuff that doesn't work) 19:48
stevan geoffb: I see no reason to split it
if you can make this faster, then by all means do so
no need to split off
Test::Builder will surely be the basis for any non-Pugs tests later
geoffb Oh, sorry, wasn't clear. Missing phrase "If it won't go any faster without cutting functionality," 19:49
stevan ah
geoffb several of my ideas so far have amounted to like a percent or two here or there, but not giving up yet
gotta run, but will be back in a bit and reading scrollback, so don't hesitate to toss ideas out if you have any 19:50
stevan geoffb: I have to get back to $work myself
domm Hmm, I'm having problems with prove et.al. 19:51
Do I have to do perl Makefile.PL && make in pugs 19:52
before running prove?
stevan domm: you can always just do pugs t/somefile.t 19:53
domm stevan: Can't locate Test.pm in @*INC
stevan domm: pugs -I ext/Test/lib/ t/somefile.t 19:58
domm stevan: works, thanks! 19:59
pelagic Hello World! 20:08
Limbic_Region saluations pelagic 20:09
pelagic hey L~R!
mr_ank palagic: you name the output we write the program?
pelagic go ahead! 20:10
Limbic_Region ?eval 'go ahead!'
evalbot6 'go ahead!'
Limbic_Region next
mr_ank <pelagic> Hello World! 20:11
(sleep depravation + stress = bad jokes)
pelagic seen worse ...
mr_ank (*and* grammar)
Limbic_Region pelagic - you really need to come up with something a bit more difficult ;-) 20:12
mr_ank heh
Limbic_Region hopes $larry agrees with him and knows of a way to move forward 20:13
pelagic let me think it over ... 20:14
svnbot6 r4651, domm++ | hmm, how do I say this in ASCII...? 20:17
r4651, domm++ | 'french-quotes' >> ~ << not working if file isn't utf8-encoded
domm Boogie: you /just/ missed my first submissions to Pugs... 20:22
Boogie domm: oh. 20:23
I have network problems - the router doesn't give net, just for my wireless connection... 20:24
pmichaud ummm, are spaces allowed within hyper-ops? 20:28
domm pmichaud: you mean >>~<< vs >> ~ << ?
pmichaud domm: yes
domm no idea, but pugs doesn't seem to care. I think 20:29
pmichaud for some reason I presumed that spaces weren't allowed
well, I just noticed a test in pugs for spaces
and was curious about it
Odin-LAP Why shouldn't they?
Odin-LAP ponders.
domm ?eval ('a','b') >> ~ << (a,2)
evalbot6 Error: unexpected ">" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
domm ?eval ('a','b') >> ~ << (1,2)
evalbot6 Error: unexpected ">" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
domm ?eval ('a','b') >>~<< (1,2)
evalbot6 ('a1', 'b2')
domm ok, it does care... 20:30
pmichaud well, it cares when using texan quotes, I'm not sure it cares with french quotes
geoffb Odin-LAP, I'm guessing it's a parsing issue. Like how reduce-ops can contain only certain items
just a guess . . . and possibly wrong
pmichaud Odin-LAP: it depends on how we consider the meta ops to parse
Odin-LAP I see. 20:31
pmichaud i.e., is + << really a hyper + or a + followed by another operator of some sort? 20:32
Juerd domm: meta-operators are not operators
domm: Operators (which can be a combination of meta operators on real operators) cannot contain whitespace.
pmichaud: It is + qw(
pmichaud Juerd: yes, that's what I was thinking 20:33
Juerd [+], >>+, etc, must all be whitespaceless
domm Pugs currently accepts say <a b c> ōæ½xBB ~ ōæ½xAB <1 2 3>;
pmichaud something in the tests for hyper_latin1.t caught my eye about that, so I thought I'd ask
domm but not <a b c> >> ~ << <1 2 3>;
Juerd I'm not sure what [x] does. Is it reduction or [x()]?
pmichaud [x] would be a reduction 20:34
Juerd If [x] is reduced x, then [x ] breaks
But I wouldn't like that.
I think repeated x|xx is useless.
And only [Y] is a real "problem"
Still, the solution must be the same.
pmichaud but I don't think [x ] breaks
Juerd pmichaud: [x ] must be [x() ]
pmichaud [x] is reduced &infix:<x>, while [x ] is [x() ]
exactly
Juerd pmichaud: Because the operator [x] doesn't have ws in it
s/breaks/disambiguates/ 20:35
domm pmichaud: thanks for the spot, I updated hyper_latin1.t
pmichaud yeah, I should probably review a lot of the tests and see which ones stick out in my mind :-)
domm goes to bed now, but will add some more hyper-tests tomorrow
Juerd Heh. 20:38
Hyper latin.
That's another exciting class school didn't teach.
wolverian hehe.
pmichaud and a "hyper-test" sounds like a psychological examination of some sort :-) 20:39
Juerd Hm
svnbot6 r4652, domm++ | removed wrong spaces from hyper-op, test result unchanged
Juerd Although...
one of my Latin teachers was kind of hyperactive at times
Too bad the guy left, burned out. He was a great teacher.
domm anyway, see you tomorrow!
Juerd Bye, domm
pmichaud later, domm, thanks! 20:40
wolverian dammit, this motherboard doesn't fit into this ages old compaq case. 20:44
wolverian ponders just running it outside the case
Juerd Rule #1: if any compaq equipment dies, replace it
Rule #2: do not re-use compaq hardware
Rule #3: do not try to fix broken compaq stuff 20:45
geoffb Juerd, why?
Odin-LAP When does it get to burning factories making Compaq stuff to the ground?
Juerd geoffb: I prefer compatibility with the real world.
geoffb blinks 20:46
Juerd I myself am incompatible with much of the real world, but that doesn't mean my hardware shouldn't be.
geoffb can only barely remember the last time he used Compaq equipment
Juerd (compatible)
geoffb I think about 10 years ago or so
Juerd I see
I'll give you a few examples:
geoffb Please. :-) 20:47
Juerd Many compaq boxes accept only compaq memory. This is the same memory, but thrice as expensive, because it was modified to identify itself as compaq memory.
Compaq servers are usually shipped with scsi controllers. These controllers refuse to work in non-compaq mainboards, stating they work in compaq mainboards only at bootup. Hacking a BIOS string can help. 20:48
Compaq has for a long time used different colours for wires. This has caused some electrical equipment to blow.
geoffb wow, impressively bad corporate behavior, that
pmichaud hmmm, regarding ingy's latest post to p6l -- is it true that string context on an array puts spaces between the elements?
Juerd A few positive things about compaq: 20:49
geoffb The itsy?
Juerd Their hardware usually doesn't break
When it does, you get new stuff real quick (although I've heard some "yeah, yeah, RSN. Maybe tomorrow"-ish stories too)
pmichaud s/ingy/ingo (sorry) 20:50
Juerd And they were one of the first to think about screwdriverless hardware maintenance
wolverian screws--
Juerd Still, I prefer compatibility, because I don't want to wait for some support engineer to get me new hardware
wolverian this is an extremely unsupported piece of extremely old hardware 20:51
Juerd I want to get a new $50 thing from ANY computer store and just fix the damn problem.
(The same thing would cost at least $150 from compaq)
wolverian granted it still just works with no problems whatsoever, except the lack of RAM.
PerlJam pmichaud: Is it true that that's what happens or that that's what's supposed to happen? :)
pmichaud what's supposed to happen
Juerd wolverian: Now to find old compaq RAM - good luck.
PerlJam pmichaud: yes, I believe that's what's supposed to happen. 20:52
Juerd Now if it were compatible, you'd just get any module worth less than $5 and have it work.
pmichaud isn't that significantly different from perl 5? I can't seem to find a note about it in the design documents
Juerd But because it's compaq and antique, you probably have to spend more than $100 for the same :)
Aankh|Clone Are there any straightforward examples of using Perl 5 modules?
20:52 Aankh|Clone is now known as Aankhen``
geoffb I'm not a fan of Dell by any means, but I'm reminded of one thing I *do* like about them. You can get certified on their hardware relatively easily, and then if you call them up and say "my foo is broken" they send you a new foo immediately, no questions asked (except customer # :-), no listening to insipid first level support "did you plug it in" crap 20:53
Juerd Aankhen``: Yes.
wolverian Juerd: I'm not spending any money, trust me. :)(
s,(,,
Juerd geoffb: Not here.
Aankhen`` Juerd >> Could you point me to them?
PerlJam pmichaud: How do you impose string context upon an array in perl5 except by surrounding it in "" ?
Aankhen`` I see an example script under examples/perl5/, but that's a little too complicated.
geoffb Juerd, ah well. 20:54
Juerd geoffb: Dell usually just try to convince you your hard drive isn't broken. BUT IT GIVES UncorrectableErrors DAMNIT
pmichaud pj: ~@array
geoffb Juerd, BLEAH
Juerd geoffb: "Windows and Linux both agree" "But we don't" "...!"
geoffb heh
Juerd It's so terribly frustrating
pmichaud pj: my @array = <a b c d>; my $str = ~@array;
seems to me that $str should be "abcd" 20:55
Juerd I now prefer to build my own machines.
pmichaud ingo's post (and apparently pugs) seems to think it should be "a b c d"
geoffb Someone could create a computer company with amazing support, perfect shipping, helpful salespeople, and so on . . . and noone would be willing to spend the extra $50 per box.
Juerd, I agree with that sentiment
pmichaud I'd be a bigger fan of Dell if my Dell's fan wasn't so loud at the moment :)
Juerd I use Asus or Aopen cases, WD hard drives, any cheap (non-whitelabel) optical drive, and Sweex SATA controllers
PerlJam pm: I know how to do it in perl6; I'm saying there's no equivalent in perl5 (except putting the array in "")
pm: so, I don't see how it can be a departure.
wolverian Juerd: what kind of warranty do WD HDs have nowadays? 20:56
Juerd geoffb: Yep. That's because everyone has a nerdy neighbour (that'd be me) who just LOVES (not!) to fix other people's computers, because - well, he does that stuff ALL DAY because he must LIKE it, doesn't he?
pmichaud pj: Oh, perhaps that makes sense. Seems odd, however
geoffb resembles Juerd's remark
Juerd wolverian: All cheap (PATA/SATA) hard drives have 1 yr now
PerlJam pm: all the shiny new stuff seems odd at first :)
wolverian Juerd: ah. thanks. 20:57
Juerd I like using computers
I like hacking
I just don't like fixing things clueless people broke.
When I get paid for it, sure, I'll do it, as I'll do anything (computer related) for a paying client.
But the expectation that I love to fix things -for free- really bothers me sometimes. 20:58
PerlJam pm: besides, you can always my $str = [~] @a; say $str; if you really don't want the spaces
pm: It's a huffmanly wash as far as I'm concerned.
Juerd They ask me "what can I do to prevent this from happening in the future?" 20:59
geoffb Juerd, I thought the Seagate ones were up to 5 years now (as of sometime last year)
Juerd We all know the answer
pmichaud pj: what if someone passes an array to a function expecting an argument in string context? Same thing...?
Juerd But they won't accept that (self-)education is required.
They won't install other software.
geoffb: Not the cheap ones.
geoffb: The scsi disks and the high end satas are
Juerd almost typed satans there
PerlJam pm: that or a warning/error depending on your chosen level of bondage.
geoffb The 7200.8's aren't? 21:00
pmichaud pj: okay
geoffb sigh
Odin-LAP What, you mean they aren't?
Juerd geoffb: nafaik
pmichaud still it surprised me somehow :-)
Odin-LAP (Satans, that is.)
pasteling "geoffb" at 69.110.115.185 pasted "Usage of various Test.pm functions in pugs test tree" (20 lines, 273B) at sial.org/pbot/11065
Juerd geoffb: It's no problem. You get 5 drives for the same amount of money you spent on 1 five years ago
geoffb: So just make it redundant. So just make it redundant.
geoffb Above pasteling output brought to you by random data gathering
Juerd, :-) 21:01
Juerd Linux software raid has become very good and can compete with expensive hardware raid solutions
We use EUR 35 sata-controllers from sweex (2 ports) and software raid on that 21:02
Works wonderfully, with acceptable performance.
And really, I prefer a 3-disk raid-1 mirror with lots of redundancy to a single scsi disk and scsi controller, because the redundant solution is cheaper. 21:03
wolverian Juerd: do you try to buy the SATA drives from different batches?
PerlJam Juerd++
Juerd Anything can break. And if it's redundant, it CAN break. No big deal. Replace a disk and forget it happened.
pmichaud amen
Juerd wolverian: I know I should - but usually I don't pay attention to that.
wolverian right. 21:04
Juerd Take for example feather - it uses the setup I just described
A cheap EUR 35 non-raid sata-controller
With two cheap 80 GB disks from western digital
svnbot6 r4653, Aankhen++ | * docs/01Overview.html -- updated "Can Pugs work with Perl 5 libraries".
Aankhen`` Could someone take a look at that?
Juerd And we have 20 machines like that
In small non-19" cases
Because 19" is also too expensive and really any easier. In fact, it can be quite annoying to have to screw all the time. 21:05
These are small and ugly aopen cases 21:06
They are set up vertically, so no machine rests on top of any other
Four of them next to eachother fit in a 19" rack
Add a shelf, then four more, etcetera
Juerd laugs at people who spend way too much money on servers for simple tasks :) 21:07
No, you really don't need that quad xeon for your non-slashdot site ;)
(That is: yet another website running maybe four or five PHP scripts) 21:08
Oh, and debian all the way of course :) 21:09
svnbot6 r4654, Aankhen++ | * docs/01Overview.html -- added some more information to the Perl 5 answer.
Juerd Let's not waste too much time on maintenance
geoffb debian++ 21:10
Juerd just opens 8 X terminals, sshs to 8 machines and runs dist-upgrades
In the same time, someone else has finally updated a single gentoo box's once-again-broken config
Aankhen`` G'night.
Juerd Oh, and test scripts work much better than nagios-like stuff ;) 21:11
cd ~root/t; make test # :)
pasteling "geoffb" at 69.110.115.185 pasted "Usage of various Test.pm functions in pugs test tree" (21 lines, 452B) at sial.org/pbot/11066 21:12
geoffb Slightly cleaner 21:13
I wonder what test uses plan twice
Juerd ical-- # too easy to accidentally create events
ical-- # too hard to deliberately delete them
nothingmuch harrorth is in a crisis =(
Juerd ical-- # the combination of these two is hateful
geoffb nothingmuch, what seems to be the problem?
nothingmuch Juerd: doesn't undo cut it? 21:14
geoffb: well, my initial interpretation of how a forth system works was too high level
what I have now is a heap of stuff that shouldn't be there 21:15
abstractions which are a pain
nothingmuch keeps blaming autrijus for the too early reader monadization
;-)
Juerd ical-- # can't do anything during isync 21:16
nothingmuch regardless, I think i'm going to switch to a bufferred approach, where there are two buffers, an AST buffer, and a string buffer
Juerd Even fscking outlook lets you change things during synch
And it just adds whatever you do to the queue of synchable items
nothingmuch the string buffer is used to fill the AST buffer when it's empty
Juerd ical++ # pretty, though.
nothingmuch and the user is used to fill in the string buffer whan that's empty
Juerd Undo seems towork 21:17
nothingmuch also, with this approach the whole process is going to be like a loop 21:18
and not like reduction
geoffb nod
nothingmuch i hope this doesn't end up too confusing for my readers
because it is already pretty confusing for me =P 21:19
geoffb knew he was right to let nothingmuch iterate a couple times before diving in
heh
nothingmuch but then again, confusion is a good starting point
geoffb: ah, you're also a forth guru?
geoffb guffaws 21:20
nothingmuch wtf guffaws
mugwump chortles 21:21
geoffb Nope, just have a healthy belief that wave functions tend to collapse later than most people think
nothingmuch ah
well, i was anticipating this kind of stuff, but i didn't expect forth to be so surprising 21:22
geoffb It's on my list of languages to learn, because I have a feeling that it has the "simple concept, deep meaning" thing going
nothingmuch well, the problem with forth is that it's simple concept, superficially simple meaning, deep application of meaning 21:23
because it gives a very mediocre first impression
geoffb nodnod
nothingmuch it's the way the language is applied to itself, to it's runtime, and so forth that makes it powerful
it's the way that it's extensible that allows it to be flexible, and symbolically powerful 21:24
and it's the way that it is interpreted and compiled that keeps it simple enough to be fast and small, without forefitting the two other properties
pasteling "geoffb" at 69.110.115.185 pasted "Usage of various Test.pm functions in pugs test tree" (21 lines, 452B) at sial.org/pbot/11067
geoffb This time without including matches in comments, sigh
nothingmuch i'm off for my weekly cigarette
autrijus greetings! 21:41
geoffb greetings!
mugwump hi!
nothingmuch hola
autrijus so, /me svk pull and about to svk ci
awwaiid forth sounds like playing go 21:42
rjbs click click click?
svnbot6 r4655, autrijus++ | * PAST compileation and PIR emission, phase 1, works! Try this, 21:49
r4655, autrijus++ | which generates, according to Leo, "100% correct" PIR:
r4655, autrijus++ | % ./pugs -C PIR -e 'say "Hello, World!"'
r4655, autrijus++ | % parrot dump.ast
r4655, autrijus++ | Hello, World!
r4655, autrijus++ | * Also because it's now a Proper Compiler, we have this now:
r4655, autrijus++ | % ./pugs -C PIR -e '"Hello, World!"'
r4655, autrijus++ | *** Literal value used in constant expression: VStr "Hello, World!"
jhorwitz autrijus++ 21:50
mr_ank wow 21:52
Odin-LAP karma autrijus
Hmm?
:p
nothingmuch perlbot karma autrijus 21:53
perlbot Karma for autrijus: 719
21:53 nothingmuch is now known as perlbot_
obra perlbot karma c 21:53
perlbot Karma for c: 517
perlbot_ Karma for autrijus: astronomical
21:53 perlbot_ is now known as nothingmuch
obra perlbot karma perl 21:53
perlbot Karma for perl: 21
nothingmuch ;-)
Khisanth ponders how to abuse the ((( and ))) operators 22:01
wrong channel :) 22:02
vcv (((.. wtf!
Khisanth 1 ((( 2 ))) 3 == 1 :p 22:03
vcv very confused
Khisanth user defined ;)
vcv yeah but what does that mean? 22:04
Khisanth it means whatever I define it to mean! 22:05
vcv so <Khisanth> 1 ((( 2 ))) 3 == 1 :p meant nothing really 22:06
svnbot6 r4656, autrijus++ | * Switch to functional dependency for the "Translatable" class.
r4656, autrijus++ | * add usual svn props for Pugs.Compile.PIR.
autrijus vcv: right... Khisanth is just noting the fact that in perl6 you can override what ((( means
without using a source filter.
pjcj ah - Khisanth is Lewis Carroll!
vcv phew. i thought it was some crazy new p6 def op 22:07
Khisanth heeey even better it can be a prefix and an infix :) 22:08
mugwump pugs -C PIR -e 'eval_perl5 "print \"Hello, world!\n\""'
parrot dump.ast
Name '&eval_perl5' not found
damn :) 22:09
mugwump & # bah, meeting
autrijus mugwump: sure... ;)
Khisanth hmm can't have a infix and postfix op with the same "name"? 22:15
autrijus journal up :) 22:18
autrijus waves and sleeps &
Darren_Duncan thems some great improvements 22:21
arcady Khisanth you need the proper whitespace, I think 22:23
like no whitespace before the postfix
and some whitespace before the infix
Khisanth I was trying ((( 1 ((( 2 ))) 3 ))) :p 22:24
((( 1 ((( 2 ))) 3))) didn't work either 22:25
arcady so now "my $x = 10; while ($x --> 0) { say $x }" doesn't work
though it does in perl 5 (and the equivalent translated into C too) 22:26
Juerd for reverse 0..9 -> $x { say $x } is better anyway 22:30
Or, well, say reverse 0..9 ;)
Still, the --> idiom should work, I think
1..10
Exactly why the idiom is misleading :)
Hm, no, 0..9 22:31
Argh. I hate this.
xerox Hi 22:32
Do anybody applied for Google's Summer of Code about pugs? 22:33
Darren_Duncan updated to 4656 ... 'make' gives some warnings with Emit.PIR and Pugs.Compile.PIR ... no other problems in 'make' 22:39
wolverian hmm. I don't understand haskell's precedence rules. 23:34
mugwump xerox: there are a few summer of gode proposals for various parts of parrot 23:43
nothingmuch holy crap 23:46
i think i got it
: foo 1 ; 23:47
foo
.s
[1]
pasteling "nothingmuch" at 212.143.91.217 pasted "Harrorth version 2" (203 lines, 5.6K) at sial.org/pbot/11072 23:48
nothingmuch i'll document it tomorrow, because it's 3 am
but reviews are most welcome
mugwump writing your own compiler nothingmuch ?! :) 23:49
oh, forth 23:50
nothingmuch feather.perl6.nl/~nothingmuch/harrorth/
mugwump: yes, trying to learn haskell
i'm documenting my progress in tutorial format
wolverian I'm learning it too now, I think, as I have a friend to learn with. I'm not up to explicit monadic constructs yet though :)
(so I can't review your code, sorry. but nothingmuch++!)
nothingmuch wolverian: try reading through harrorth's docs, there's lots of monad crap flying all over the place 23:51
wolverian yeah, I did that a while back, up to the fifth kwid I think 23:52
I'm letting thing simmer a bit
nothingmuch =)
the 6th kwid is the Reader monad dissected
wolverian oh, I should read that then
Reader or ReaderT? (what's the difference?)
nothingmuch the 7th kwid is about forth for Real Men
ReaderT is touched on, but not discussed deeply
i don't know it's magic yet
except that it can instantiate monads into the MonadReader class 23:53
but functionally Reader and ReaderT's Reader part are identical