-Ofun: xrl.us/hxhk | pugscode.org | pugs.kwiki.org | paste: paste.lisp.org/new/perl6 or sial.org/pbot/perl6
Set by apple-gunkies on 11 November 2005.
integral I think I was thinking that within the functional sublanguage you wouldn't need that stuff, if you were using it for the haskellish stuff, since you don't need them in haskell 00:00
luqui yeah, but then you get two disconnected languages in the same file, and having them both Perl doesn't help 00:01
might as well use Inline::Haskell
integral What do you think would be the main disconnect between them?
luqui the fact that you couldn't use perl modules within the functional sublanguage?
er, you couldn't use OO modules, rather
integral you could use modules and classes via an interface/typeclass type thing 00:02
luqui only certain ones
I think you'd end up writing a bunch of glue code to glue the different paradigms together
which is becoming counterproductive 00:03
integral oh well, you do seem much more right on the glue code issue than me :) 00:04
luqui oh..kay....
anyway, I'm thinking type inference might be a little bit dreamy 00:05
that's what I'm trying to achieve with type_meta. Keep the door open to type inference without having to figure out how to do it for a language like perl
it's a really hard problem that we might be arrogant to think we can solve
(hubristic maybe, but just in case we're not) 00:06
integral considers some sleep 00:07
avar xinming: I killed it at 500mins 00:20
luqui yum. Pugs.Run takes 300M of ram to compile 00:56
svnbot6 r8266 | luqui++ | &die may take an object, but it's still allowed not to. 01:14
r8267 | luqui++ | Changed "no such method" error to report in which class it is looking for the method. 01:28
01:33 Odin-FOO is now known as Odin-LAP
stevan hullo luqui 01:46
luqui hallo stuvan 01:51
evan stevan 01:52
stevan howdy
luqui g'day 01:53
stevan so are you back now? no more pesky school stuff?
luqui not until mid january
stevan bah
you should quit,.. its no good
school that is
luqui I agree
stevan :P
luqui well, I've only like... oh, six more years left
stevan then you need to get a job :P 01:54
luqui pf, jobs are for the proletariat
stevan LOL
did you ever get a chance to read this -> svn.openfoundry.org/pugs/perl5/Perl...Bridge.pod
luqui nein
luqui reads 01:55
stevan it's that module/role/signature stuff I was babbling about a while back
luqui is starting to port pge to perl6 01:56
stevan eak!
better you than me ;)
luqui I'm doing it basically by redesigning it from the top
stevan I started porting the metamodel to PIR,..
luqui I know all the algorithms he uses, and I can't read PIR
stevan stopped that insanity real fast 01:57
PIR--
PIL2++
luqui :-)
stevan have you seen our pure functional mini-lang?
luqui no..
stevan NO
stevan is shocked
luqui donde esta?
stevan una momento bitte 01:58
luqui jaja
stevan here is the Parser with some code examples at the top : svn.openfoundry.org/pugs/src/PIL/Na.../Parser.hs
here is the skeleton of the MetaModel bootstrap -> svn.openfoundry.org/pugs/src/PIL/Na...tstrap.pil 01:59
audreyt stevan: do you think do_if etc is enough?
or do you really need shortcut and_do ?
stevan hey audreyt :)
audreyt hey stevan :)
stevan uhm 02:00
audreyt also is do_for enough, or are you thinking about do_while?
stevan I have not messed around with the do_* yet, so I am not sure
audreyt do_while is very tricky without containers
stevan well the do_while I need because I wanted to do this:
audreyt I think we're better with do_for and recursion with &?SUB
stevan while (my $c = WALKCLASS($dispatcher)) { ... }
audreyt: I will mess around with them and get back to you if I need anything more,.. I really cant tell until I try em :) 02:01
audreyt stevan: I think you want a tail recursion
with &?SUB
should be easier than a container
stevan ok
audreyt: what about LISP style macros?
do you think that might be possible ?
audreyt it's very well possible, but what can you get from macro you can't from binding a function? 02:02
stevan compile time expansion :)
luqui oh, so the mini-lang is a small readable syntax for PIL?
audreyt luqui: yes.
stevan luqui: for the most part, yes (kinda, sorta)
luqui good idea 02:03
audreyt it's not the full pil yet, but will expand it with another layer (after bootstrapping MM) so it is
luqui can you dump to it, too?
audreyt not sure what it means
stevan: compile time expansion?
example please :)
luqui given a pil structure, can you generate minilang code?
stevan audreyt: I assume too that since we are keeping "pure" about things, we can perform rigorous optimizations, is that part of your plan 02:04
audreyt luqui: that's the goal, which should be right there after we bootstrap MM and code in SigList + ArgList
stevan: yes.
luqui neato
audreyt stevan: more importantly, the easly-vs-late binding of symbols can be statically determined.
(see: visual basic)
stevan audreyt: macro infix:<:=> ($lhs, $rhs) { -> $lhs { $rhs } } 02:05
audreyt not sure it works that way :)
stevan overly simplified I know,.. but thats the idea
audreyt nod... I think we hardcode sugars into PIL.Native.Parser for now.
stevan ok
audreyt not convinced macros is the way to go in minilang
macros in surface syntax surely, but otherwise shorthands should just be hardcoded 02:06
stevan I would think they would be easier in the mini-lang than in p6
audreyt they surely would, but then we need to get into grammatical categories
stevan defers to audreyt on this one though :)
audreyt like infix
luqui audreyt, feature request if you have time: "our class"
and if it's fairly easy
I looked into it, but I'm afraid to touch the scoping as I don't understand it 02:07
audreyt luqui: all OO hackery delayed until minilang bootting
stevan looks for luqui's test .... ;)
luqui okay
audreyt tests welcome though
luqui :-p
okay
audreyt I have a $job demo to do this afternoon
but should be free tomorrow and the day after
so I should go back to working now :)
will checkback tonight
(it's 10am here)
stevan enjoy $work :)
audreyt I try :) 02:08
it involves ajax, web continuations and Perl6::Subs
so at least it's fun
stevan nice
audreyt bbiab &
buu Scary 02:32
mdiep audreyt: you around? 02:36
audreyt mdiep: no, sorry 03:00
mdiep audreyt: I was hoping you could take a look at "Variables, Aliasing, and Undefined-ness" on p6i 03:01
audreyt noted, will do tonight. anything in particular you'd like to note about it?
mdiep I'm just wondering how you plan to handle things for Perl. Things are pretty similar in this case for Tcl. It should be pretty clear, I hope. 03:02
thanks 03:13
03:38 _SamB_ is now known as SamB
q[Skud] who's awake? 04:46
obra hi 04:47
hcchien here
q[Skud] i'm about to dive back into the docs but wanted to make sure there was someone here to deal with my dumbass questions
obra Oh.
I may or may not be able to help
luqui is awake
q[Skud] here's a dumbass svn question 04:48
obra audrey is offline until O(8 hours from now)
oh. svn I can do ;)
q[Skud] what's the svn equivalent of "cvs diff", i.e. "in what way does what i have here differ from the latest checked in version in the repository?"
luqui q[Skud], svn diff
q[Skud] errr. that didn't work.
luqui hmm? how so?
q[Skud] i'm sitting in docs/p6doc
obra svn diff compares to what you checked out
q[Skud] i know that gaal committed something yesterday that he said was some minor tweaks to what i'd written so far 04:49
obra svn diff -r HEAD file may work better
q[Skud] (i saw the commit message in the irc backlog)
luqui q[Skud], you might also just update...
q[Skud] i want to diff across the entire contents of the dir
obra (svn optimizes by caching a copy of your checked out files so you can do diffs whilst offline
svn diff -r HEAD .
q[Skud] luqui: but then how will i know which bits he changed?
luqui ahh
use "svn diff -r1237:1238" 04:50
q[Skud] obra: thanks, that worked!
obra :P
luqui where those are the revision numbers before and after his checkin
but -r HEAD works too ;-)
(apparently)
q[Skud] how can i tell it to use "diff -u"?
obra svn help diff
luqui doesn't it always?
q[Skud] hang on, never mind. it does. i was just making dumb assumptions 04:51
obra Skud: ~/.subversion/config
q[Skud] i should probably rtfm ;)
but i've been r-ing so many fms lately my brane is kinda starting to fry.
luqui understands 04:52
revdiablo q[Skud]: Maybe a bit later, but something I find quite handy is 'svn log -vr BASE:HEAD' -- it will tell you what has changed since your WC's current revision 05:11
q[Skud]: The -v part has it show you a summary of the changes rather than just the log messages
gaal Skud: you can also use the web interface: 06:16
# rt.openfoundry.org/Foundry/Project/.../pugs/log/
# rt.openfoundry.org/Foundry/Project/.../?rev=8243 06:17
I've been meaning to add a "show complete patch" feature to Web::SVN for exactly that page for exactly this purpose, but tuits ran out.
luqui, still around? 06:19
luqui aye 06:21
gaal, still around? 06:22
gaal heya. I'm trying to put exportation in the right place
luqui right place?
gaal but am not sure about the syntax/usage
luqui what are you working on?
gaal rightplace /= parse time of a sub :-)
luqui oh, code 06:23
gaal luqui: yeah
if you do package A; use Foo; package B; use Foo, sub_exported_by_foo();
it won't work now
because ruleSubDeclaration is currently where the exportation (hackily) takes place 06:24
luqui ack, because Foo exports symbols as it's being compiled?!
gaal yeah.
luqui yeah, that's not right
do we have IMPORT?
gaal so for starters I'm fixing that.
luqui well, it shouldn't be too tough to get if we don't anyway
gaal no; I'm putting it for now in the code for parsing use.
luqui what about that module stuff I rambled about on p6l?
gaal certainly that needs to be acounted for 06:25
luqui well, that seemed like an implementation strategy to me
gaal yes, my question is now haskell/pugs' Parser.hs
but you know about that don't you?
luqui a little bit
gaal I'm putting the "module" information in %*INC<Foo><exports> 06:26
luqui hmmm 06:27
gaal the keys are symbol names; values are supposed to be closures that transform a Pad
luqui how about %Foo::EXPORTS
it would be nicest if we could do it without using anybody's namespace
gaal might do that; but never moose -- suppose they do exist in a well-known hash
the technical question is, how to run those closures :-) 06:28
luqui unsafeEvalExp?
gaal I think a parser needs to return the exp with an updated Pad, no?
e.g. a regular lexical symbol installation from subs looks like this: 06:29
lexDiff <- unsafeEvalLexDiff $ mkSym nameQualified
return $ Pad scope lexDiff $ mkExp name
luqui shouldn't that be the closure's job? 06:30
gaal ( ruleSubDeclaration )
yeah, that's what I'm trying to figure out
luqui ?eval my sub infix:<%%> ($x, $y) { $x + $y }
06:30 evalbot_8263 is now known as evalbot_8267
evalbot_8267 \sub {...} 06:30
luqui ?eval my sub infix:<%%> ($x, $y) { $x + $y } 3 %% 4 06:31
evalbot_8267 7
luqui ?eval my sub infix:<%%> ($x, $y) { $x + $y } my $op; BEGIN { $op = '%%' } infix:{$op}(3, 4)
evalbot_8267 7
gaal whee
luqui hmmm... I'm just thinking about that
seemed to work without any special lexdiff stuff 06:32
?eval my $op; BEGIN { $op = '%%' } my sub infix:{$op} ($x, $y) { $x + $y } 3 %% 4
evalbot_8267 7
luqui both ways...
but that may not be the same thing
well, we don't have an interface to %MY do we? 06:33
gaal I don't fully grok the way symbols are installed though: always there's a mutation of a pad
luqui ?eval my $op = 32; say %MY<$op>;
evalbot_8267 Error: Undeclared variable: "%MY"
luqui ?eval my $op = 32; say %?MY<$op>;
evalbot_8267 Error: Undeclared variable: "%?MY"
gaal which Eval later actually reduces
that's why a parser rule (I think!) just returns the Pad exp element
I'm not sure how to build that element 06:34
luqui noses around in Parser.hs for a moment
?eval my &infix:<%%> ::= -> $x, $y { $x + $y }; 3 %% 4 06:36
evalbot_8267 Error: unexpected "%" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
luqui okay, yeah, you need to do something special
that's odd 06:39
gaal so, with a list of Pad update requests, how do I arrange for a Pad really?
luqui it looks like ::= is trying to handle the lexical stuff, but it's not
gaal isn't it?
luqui well, the ?eval above seems to suggest that it's not 06:40
gaal ruleVarDeclaration / lexDiff does treat it 06:42
luqui I'm stumped. I tried doing some stuff with the lexdiff stuff and it just confused me 06:43
that is, getting a sub to install itself right when it is defined
gaal I'm missing how to fold together more than one object to a pad transformation 06:44
obra 27
gaal luqui: the old code does just that
in ruleSubDeclaration 06:45
luqui no, I mean in its own namespace, and I meant *before* it sees the sub's implementation block
so that you can use an operator you're defining in its definition
but... IIRC I failed 06:46
Probably just experiment and wait for audreyt :-/
gaal wow, Y keeps coming up these days
luqui the zip operator?
or fix?
gaal combinator
fix
luqui yeah, doesn't it?
I actually wanted it earlier today
I mean the lazy version 06:47
gaal btw wikipedia cites a ludicrous one:
Yk = (L L L L L L L L L L L L L L L L L L L L L L L L L L L L)
where L = Ī»abcdefghijklmnopqstuvwxyzr. (r (t h i s i s a f i x e d p o i n t c o m b i n a t o r))
luqui haha
I think that should be the official implementation of fix in the perl 6 compiler 06:48
gaal nah, need to port it to Han first. 06:49
luqui sorry I can't help with the lexpad stuff
gaal IIUC it works for any list if you use the last variable once last in the inner parens and just outside them. 06:50
ok, thanks though!
luqui on the good news front, I'm making amazingly quick progress on the PGE port
we have context-free, baby!
gaal luqui: btw on a local pugs, do "use Some::Module; say %*INC.perl"
nice!
luqui gaal, okay.. 06:51
and, this shows me what?
besides %*INC :-p 06:52
gaal it no longer works like the silly p5 INC
keyed by reasonable name and valued with useful information
(that's why exports provisionally is hanged there and not in %Foo::EXPORTS)
luqui looks at a similar statement in perl 5 and understands 06:53
luqui never messed with %INC in perl 5
gaal In p5, you recall, it'd be "Some/Module.pm" => "/usr/eek/perl5/Some/Module.pm"
now the idea is to eventually formalize the struct side of this -- this is where I was smiling when I read your mail -- into some module description object 06:54
but i'll let you get back to much more interesting things :-)
luqui cool
alrighty
once I get out of hacking mode and into design mode, I'll have an interesting treatise on exports 06:55
I promise
gaal looks forward to it, and hopes it is sane. :-)
luqui notices that .perl doesn't handle recursive structures 06:59
gaal does it loop? 07:00
luqui it just keeps printing and printing and printing... 07:01
gaal ?eval my $a = \$a; $a.perl
evalbot_8267 "\\undef"
gaal ?eval my $a; $a = \$a; $a.perl
evalbot_8267 "\\undef"
luqui references suck
?eval my $a = [0]; $a[0] = $a; $a.perl
evalbot_8267 "[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
gaal ?eval my $a = moose => $a; $a.perl 07:02
evalbot_8267 "(\"moose\" => undef)"
gaal ?eval my $a; $a = moose => $a; $a.perl
evalbot_8267 "(\"moose\" => undef)"
luqui and unfortunately, you have to make recursive structures two-pass.
gaal oh vell.
how to save .perl then? there's an objid for objects, but not i think for native aggregates.
luqui ?eval say [3].id; say [3].id 07:03
evalbot_8267 OUTPUT[ ] bool::true
luqui thinks gaal is right
make an objid for native aggregates?
or come up with something even more clever?
gaal :-) probably, yeah.
the former, lacking the latter.
luqui actually, I was trying to implement value_fix 07:04
which would be a fixpoint for values, so for my array example, you could say: 07:05
gaal notes .id doesn't work as I think it's advertised.
luqui my $a = fix (-> $x { [$x] })
gaal it gives a hash, not an id.
should it give a unique id?
luqui probably 07:06
gaal where's it specced? I don't remember
luqui we can always come up with enough unique ids if we use Integer
It's specced as giving the memory address
but that's stupid
we can take liberty to change the spec
gaal in the case of .perl, a memory address is sufficient (and fast)... 07:07
luqui that's true
good luck getting haskell to tell you one though
gaal .clone, btw, generates a different id now. is that correct?
luqui uh huh
gaal I think it must be
luqui thinks about .perling an infinite data structure 07:08
and whether memory address would always be sufficient in that case
like [1...].perl or something
gaal what are the disadvantages of using an address, in general?
luqui where you can throw away the earlier elements as you print them
gaal not unique across processes?
across serialization?
luqui not unique across destruction 07:09
if you store a hash of ids
a different object may come along once the first one has been destroyed with the same id
gaal ah, the Replay Attack
so a strong monotonic function, eg, { ++$id }, is basically the only way. 07:10
I think.
luqui probably
I don't think it's a big deal
the id will never exceed 8 bytes, right? 07:11
gaal hahaha
luqui and you only have to create it when somebody asks for it
(not that the 8 bytes thing can be used as an optimization)
gaal (what lives at 8 bytes, btw? Haskell Integer?) 07:12
luqui (but seriously, you come up with a program that will use 10^19 objects)
int64
haskell Integer is variable length
gaal int64 of course, but we're still a while off
Integer's the one that promotes automatically?
luqui if it's ever demoted
yes
it's a gmp int 07:13
gaal ...still a while off before *everybody* has it that is.
anymoose the point about ids being generated lazily is an excellent one
luqui Unique ids only have to be unique for one invocation of the program, methinks
gaal but I wonder if it really works out, if eg some operation doesn't in practise always trip an id. 07:14
luqui 'splain
gaal ...like putting in a hash :)
luqui you mean making it the *key* of a hash
which isn't very common for things other than strings 07:15
gaal point.
btw, there's a way of fixing the memory-addr problem. 07:16
it's a little RAM-expensive though.
#define free
gaal ducks
luqui haha 07:17
*smack*
ooh, when you weren't expecting it
gaal I think I'll go have breakfast now :-)
svnbot6 r8268 | luqui++ | Very beginnings of a PGE port in perl 6.
Khisanth luqui: PGE written in perl 6? 07:40
dduncan it has to happen eventually 07:41
otherwise the full Perl 6 won't work on a non-Parrot host
luqui Khisanth, aye 07:51
ha'dy kakos` 07:52
kakos` Hey there
What's up?
07:52 kakos` is now known as kakos
luqui working on perl 6 regex engine 07:52
highly un-theoretical for a change 07:53
kakos Sounds like fun
gaal stevan_: ping 08:05
I noticed a small documentation bug in lambda.pm
# FALSE := Ī» x. Ī» y. x
itym
# FALSE := Ī» x. Ī» y. y
the implementation is correct though. 08:06
luqui what is lambda.pm 08:10
gaal luqui: search.cpan.org/src/STEVAN/fp-0.03/.../lambda.pm 08:11
sure to look better in p6 :) 08:12
it's just started raining.
luqui quite sure
gaal notable because we're in the middle of december and people were wearing t-shirts yesterday.
luqui envies gaal 08:13
that's how it was last month
but come Dec 1, it started to feel like winter
gaal where do you live? 08:14
luqui colorado
gaal oh, why did I imagine you were from the UK?
luqui er, usa, of course. I mean, does anybody live anywhere else?
maybe because I keep UK hours? 08:15
gaal audreyt lives all over! :)
you do, at that.
so when you say it started to feel like winter, you mean you had to get out and shovel snow off the driveway to leave the house? 08:16
luqui we haven't had all that much snow this year
but it's been friggin cold
gaal one of the nice things of rarely getting sub-freezing temperatures is citrus fruits. fresh orange juice, and I mean the kind you just squeezed yourself, is the bestest. 08:26
when I spent some time in the UK I'd buy imported oranges for about $75823582 a kilo. Here they're practically free. 08:28
luqui where are you now? 08:30
gaal .il (not the US state)
luqui er... umm... oh, yeah... .il... that's a great place 08:32
luqui feels stupid
gaal Tel-Aviv, Israel
luqui ah, right 08:33
for some reason I was confusing you with iblechbot
er, iblech
I even knew that if my brain hadn't been so flatulent 08:34
gaal iblech is rather more productive :)
luqui was wondering why you were asking me about the parser 08:36
I was thinking, man, I should be asking you
after writing in Haskell for a couple months now... i'm really quite disgusted with pugs's internals 08:37
gaal whoa! google does it again: www.google.com/musicsearch?q=beetho...arch+Music
luqui of course, it was a rocket open source project, so you can't expect beauty
gaal there's still a ways to go before it becomes p5 :-) 08:38
obra gaal: you mean before it's that bad?
gaal yeah
luqui checked out the perl 5 source code once and his vision started fading, so he promptly deleted it 08:39
that is to say, I haven't really looked at perl 5 much at all
I had a negative two line patch go in once 08:40
but apparently it was taken back out
or put back in. or whatever happens to negative patches
gaal "reverted" is sign-neutral. 08:41
luqui gaal, do you have any idea where "new" is defined? 08:49
oh, there she is in Prim.hs 08:50
Object::new, so searching for '"new"' didn't work 08:51
svnbot6 r8269 | luqui++ | Implemented $obj.clone(attr => newval) 09:04
GeJ servus 09:06
gaal luqui: sorry, I was practicing solfege. 09:10
luqui np, I figgr'd it out
solfege?
gaal I'm learning to read. 09:11
www.livejournal.com/users/gaal/177921.html
luqui music? 09:12
gaal yeah
(GNU Solfege)++
luqui that is some crazy music you posted there 09:13
gaal Must be an equivalent of a japh. 09:14
luqui if it makes you feel better, I've been playing classical music on the piano for 5 years (from sheet music) and still can't sightread the simplest of pieces
gaal how much work did you put into that particular aspect of your training 09:15
?
luqui "okay, so the bottom line is middle C, so B, A, G, there we go
well, not much on sightreading in particular, but you'd think after reading 12 beethoven sonatas I'd get the hang of it
gaal I don't really think that :-( 09:16
luqui now I want to go play some beethoven
yeah, but you *would* think that 09:17
gaal I would, if I'd never tried to learn this stuff 09:18
luqui though I've found that I'm a lot quicker if I have small relative intervals I can use 09:19
that is, I haven't memorized the lines--at all--but I can do intervals pretty well now
that is to say, the music you posted on your blog would be hell for me 09:20
gaal I'm trying to get used to a sixth now, so that I can find C given 440Hz.
luqui you only need a minor third for that, right?
but you're talking about singing? 09:21
gaal not singing for performance level, but to be able to, you know, anticipate the next note or follow a score
luqui ear training
gaal yes. 09:22
colliquially known as solfege :-)
luqui ahh
I've never really had to work at that. Just kinda came naturally
(except rhythms. I've had to work at that a bit) 09:23
well, anyway, good luck. off to beethoven I am 09:24
gaal enjoy :-)
ah! all i have to remember is that the album Let it Be starts with a sixth, in Two of Us. 09:30
luqui also Chopin's famous nocturne in Eb 09:34
which is my "sixth metric" 09:35
gaal right!
r0nny yo 09:36
gaal (I could never had ACKed that without knowing the piece and having a guitar with me)
r0nny anyone knows the state of audreyt's object system rewrite ?
gaal "under construction", I think. 09:37
GeJ r0nny: stevan has an entry in his journal with links to some relevant files 09:38
r0nny url ? 09:40
GeJ seen on planet perl 6 09:42
jabbot GeJ: I havn't seen on, GeJ
GeJ r0nny: planetsix.perl.org/ 09:43
r0nny nice stuff 09:50
GeJ indeed
r0nny its goot its worth waiting
eh god 09:51
gaal fwiw, lj users: www.livejournal.com/userinfo.bml?user=stevan_rss 09:54
come to think of it, www.livejournal.com/userinfo.bml?us...t_perl_six 09:55
clkao m19s28.vlinux.de/iblech/stuff/pugs-...96c21.html 10:00
so this is a smoke run for jsperl5
gaal very cool! up from how much before io? 10:01
oh, everything yellow?
210 tests. clkao++
clkao i don't have eval 10:03
s/i/we
svnbot6 r8270 | luqui++ | Backtracking controls. 10:22
r8271 | luqui++ | Better names for Union and Concat's subtrees. 10:34
Juerd_ Compiling XML to Perl leads to insane, but nice, results. 10:41
wilx Huh?
nnunley So turning an XML template into a Perl based XML generator? 10:42
Juerd_ XML scripts, XML modules, XML input, XML output...
A bit extreme, maybe, but so far it works and is grokkable :)
nnunley: Not necessarily, but yes, that's one of the envisioned uses. 10:43
luqui Juerd_, why?
wilx XML is like cancer.
It spreads everywhere and usually when you spot it it is already too late. 10:44
Juerd_ luqui: We had an XML document containing conditions and attached (nested) specifications of actions
luqui: Skipping a few steps was decided to be much easier
luqui wilx, apparently I went to the hospital and they caught it early. I used it for one project, was discusted and swore never to touch it again if I could manage
Juerd_ luqui: So there is no semantic parse of the XML, only a direct translation, which then requires a module for semantics.
wilx luqui :) 10:45
luqui Juerd_, okay, that actually sounds a bit more sane than what I was picturing
Juerd_ luqui: Then, the engine built appeared to be useful in many other ways too, and it was extended.
luqui: Trust me, it's extremely insane anyway :)
The environment this will be used in is already soaked with XML 10:46
So the choice for XML for new components is natural
The project manager was positive about opening up the source onto CPAN, but not before it's in a more finished and polished state. 10:47
luqui that's cool 10:48
Juerd_ I think so :)
luqui I like "open"-minded managers
Juerd_ Gone now 10:50
Bye
r0nny re 13:15
svnbot6 r8272 | iblech++ | PIL2JS: Prelude::JS::IO: Possible fix to clkao++'s &system. 13:20
nnunley iblech: BTW, clkao just got exceptions working correctly from Perl space to Javascript space. 13:23
audreyt yo 14:31
svnbot6 r8273 | autrijus++ | * PIL/Native/Bootstrap.pil parses... runs... bootstraps! 14:33
r8273 | autrijus++ | Going to implement the proper C3 correctly tomorrow.
r8273 | autrijus++ | But for now, suffice it to day stevan++'s work had finally
r8273 | autrijus++ | arrived to the new PIL runcore. :)
audreyt survided $work and reenters pugsland 14:34
survived, even
GeJ welcome home! 14:37
:)
audreyt :))
r0nny audreyt: does this mean the undefined instance prob is solved ? 14:38
audreyt r0nny: still need to implement container classes (like, Scalar) for that to be solved 14:39
again, give me another few days :)
r0nny darn 14:40
well - again time to point a "this one rules" sign into your direction
audreyt which test is that?
(undefined instance that is)
r0nny test ?
audreyt yeah... like, something in the t/ directory that I can run to make sure when I've fixed it 14:41
r0nny didnt u guys make one when u discussed the problem ?
audreyt I didn't quite recall, which is why I ask :)
r0nny who knows
gaal hi! 14:46
r0nny yo gaal
audreyt gaal: hey 14:47
sadly I will probably sleep soon -- still got this jet lag thing a bit 14:48
will be back and work on pugs all day after I wake up though :)
r0nny :)
gaal audreyt: i'm hoping to sneak in a quick Q :-) 14:49
audreyt sure, go ahead
r0nny cant do anything tomorow
gaal have to figure out pbotutil config first :-)
audreyt will look at it after (instead of inside) shower
r0nny pbotutil ? 14:50
gaal thinks audrey's new topology is prudent 14:52
r0nny: you know pastebot? there's a script fort interacting with it via the commandline
pasteling Someone at 192.115.25.249 pasted "Index: src/Pugs/Parser.hs ====" (87 lines, 4.2K) at sial.org/pbot/14995 14:55
gaal errr, so that was supposed to be "svn diff | pastebot" except I forgot to config it with my nick, and give it a title. 14:56
audreyt: so my question is about the "handwaving" portion. how do I spell "export everything from this list"? 14:57
audreyt you... just return a Pad. 14:58
I think.
instead of emptyExp.
hand waving hits! hand waving bites! hand waving turns to flee! --More--
gaal yes, that was the idea :-) 14:59
okay, but I have potentially several symbols
how do I combine them?
and: is the way I set them up correct?
(elsewhere in the diff; where I'd ripped out ruleSubDeclaration's export 15:00
)
audreyt hm? you don't have to combine
just introduce them and get lexDiff
it will contain however many symbols you introduce
gaal also also, this is a lot like programming in the Prelude: how do I arrange for this value to actually be returned (and for the other try option to return an emptyExp if it was successful)? 15:01
audreyt try (do { verbatimParens whiteSpace; return emptyExp }) <|> do 15:02
...
return somePadhere
that's it
gaal ok 15:03
audreyt bbiab. :)
gaal now how do I get them into lexDiff? Is what I have there with the fold actually correct? :-)
audreyt it looks at least plausible :)
brb
gaal sure
thanks :-) 15:04
ouch. I need Pugs.Prim.Keyed's valuesFromRef. How malignant would reexporting it through Prim be? 15:11
or maybe I should just App "&values" ? 15:12
Yeah, I'll do that. Programming in AST! 15:13
audreyt ...or you can ask pugs to give it to you with :D 15:17
pugs> :D 1+1
(App (Var "&infix:+") Nothing [Val (VInt 1),Val (VInt 1)])
oh, wait, you just need to call one thing. 15:18
then sure, just say App
you are in the parser, producing AST is the correct thing to do there
gaal is the :D op so named because it makes you happy? 15:19
audreyt no, but you are free to infer so :)
r0nny lol 15:20
gaal ok now I have to figure out how to de-Exp-ify: exports <- unsafeEvalExp ..., which gives me an but I want to fish out a hash ref from that. 15:22
(all the fromVals there are, of course, wrong) 15:23
can I simply pattern-match against Val? 15:25
audreyt sure if you are sure 15:26
alternatively use a fromVal
(more canonical form)
but if you control both sides, don't bother
gaal fromVal doesn't work, because of monadic problems: 15:27
# Couldn't match `EvalT (ContT Val (ReaderT Env SIO))' against `(->) t'
audreyt yeah, because you are in Parser
so just patmatch
feel free to check in once you get it to work -- or at least not breaking all tests -- I'll take a look tomorrow
good night! 15:28
gaal++
gaal btw I couldn't find the definition of fromVal (well, just = fromVal', but no further)
thanks, sweet dreams :-)
audreyt fromVal is defined for each variant 15:29
all in Pugs.AST.Internals
gaal ah, typeclasses and that funky stuff. this is a good time for another iteration on the tutorials.
audreyt as you are in parser, you can't use it easily, so just patmatch against VRef 15:30
gaal okay, hopefully I can take it from here :) 15:31
audreyt (Val (VRef ...)) I mean
wolverian svk up -sm is the same as svk pull, right?
audreyt alternatively, do another form of unsafeEvalExp
wolverian: yes
wolverian thanks :)
(I have a bad memory)
audreyt unsafeEvalExpValue :: Value a => Exp -> RuleParser a
which is just copying unsafeEvalExp but add a fromVal to it 15:32
then you ca n make unsafeEvalExp = unsafeEvalExpValue
er
unsafeEvalExp = fmap Val unsafeEvalExpValue
or some such... improvise. 15:33
audreyt waves and goes to sleep :) &
gaal :-)
fglock +4 hours work, then 32 day vacation! 15:52
Juerd_ Sounds like a very fair trade, fglock 16:00
rafl Juerd_: Got the mail from guckes?
clkao fixing js exception makes slurp.t all passed 16:05
svnbot6 r8274 | clkao++ | update jspm snapshot url. 16:22
Juerd_ rafl: Yes, he wants us to consider flying. Might I ask why moving by car is such a bad idea? 16:32
rafl: I've found a passenger who can also drive, which solves my only two downsides: cost (when split in two, it's no longer an issue), and duration (we can alternate drivers) 16:33
rafl That's good! 16:35
Juerd_: I also have no idea why guckes doesn't like moving by car. Maybe because he doesn't have a car? :-) 16:42
Juerd_ Hm 17:38
I have the impression that people in america tend to IRC much less in work time than west-european people 17:39
rafl Juerd_: How do you come to that impression? 17:41
PerlJam Juerd_: Those people that I know that IRC at work are on it all the time. 17:43
Juerd_ rafl: IRC :) 17:48
r0nny Juerd_: some of them might just lack intention to set away states 18:30
Juerd_ Does vim have a key like w that goes BACK one word? 19:29
sili b
Juerd_ My keyboard driver is broken and lacks repetition :(
Ah, thanks
sili if you haven't learned them yet, there is W and B also. 19:30
and e/E
Juerd_ Thank you 19:32
webmind Juerd_, you're suposed to know that for your lpic1 19:54
Juerd_ Strange. I thought you only needed to know :q! ;) 19:55
webmind tss :) 20:00
20:02 integral is now known as ntgrl
sili ntgrl: not girl. 20:05
luqui I don't know what all this spambot hubbub (sp?) is about 20:10
I've never seen any such spambot here
stevan spams luqui 20:11
luqui Ow?
stevan luqui: was it a short Perl 6 meeting , or did you not transcribe the entire thing?
luqui It was very short, because nobody was there
stevan ah
luqui Including me
I think the community might give me more credit for the notes than deserved 20:12
stevan why?
luqui chromatic actually takes the notes, I just edit them (which usually is doing nothing) and post them
stevan ah
luqui I only get to edit when chromatic isn't there any somebody who isn't as good at notetaking is. 20:13
PerlJam Why doesn't chromatic put them up then?
luqui ?s
luqui invented a new verb :-) 20:14
PerlJam If you "edit" them by doing nothing, then why doesn't chromatic put them up on his use.perl journal? 20:15
luqui oh, my new verb is confusing
luqui dunnos
peer-review?
PerlJam fair enough
Juerd_ I'm beginning to like XML. Someone please find me a rant :) 21:09
Google++ # found some :) 21:10
www.zefhemel.com/archives/2004/09/1...rch-of-xml 21:11
Oops, wrong one.
luqui I think XML is a fine markup language 21:22
but it sucks as a data language
that is, XML and YAML are two very different things, and one should not be used where the other is appropriate 21:23
Juerd_ 22:26 < luqui> I think XML is a fine markup language 21:40
22:27 < luqui> but it sucks as a data language
And how do you feel about XML as a programming language? :P
obra XPL! 21:42
pd sexpr.sourceforge.net/ 21:43
Odin-LAP Juerd_: Silly, but possible, I'd wager. 21:44
Juerd_ tnx.nl/4352BIUW 21:45
Can't believe I actually wrote that years ago and nobody has noticed it yet.
obra, pd: thanks for the references. I'll have a look.
obra oh god. XPL was an msft internal joke 21:46
Juerd_ Oh; heh :) 21:47
sexpr doesn't seem to be related to what I said
obra then someone shipped it
Juerd_ Grin
obra it used xslt to turn programs in XML into C and VB
Juerd_ Ahh
That's a little like what I'm doing
I can't find anything useful about XPL. What should I ask Google? 21:48
Odin-LAP obra: A house of horrors, one would think.
obra Juerd_: not sure it ever made it out under that name 21:49
it was literally an april 1 joke
I'll keep my eye on my old backups to see if I can find it
Juerd_ ok
www.topxml.com/XPL/spec_draft.asp 21:50
obra that is not my XPL
"my"
luqui if I see "svm" in the commit logs, what does it mean?
Juerd_ luqui: Ehm. Which commit logs?
I've today tried to write an ssh-agent like thing called svm. 21:51
I hope you don't have access to that repository :)
luqui I did a svk praise and there are a bunch of lines attributed to "svm"
Juerd_ Ohh, okay :)
*wipes sweat off forehead*
luqui :-)
Juerd_ The NDA is quite specific about the svn repositories, you see :)
Shillo Juerd_: Hopefully your NDA doesn't ban you from saying that you were writing an ssh-agent like system... 21:57
Juerd_ Shillo: It does, and I've actually not signed it. But the eventual NDA that I will sign will not. 22:01
PerlJam luqui: svm == svn mirror 22:03
Juerd_ PerlJam: Is that an existing tool, or jargon?
PerlJam jargon I think. 22:04
or maybe it's a tool that comes with SVN::Mirror
luqui that sucks 22:05
how do I find out who really modified those lines then?
Juerd_ [ ] svm 12-Dec-2005 12:39 3.0K
Darn.
PerlJam luqui: you'll have to ask clkao
Juerd_ I'll have to change my svm's name.
PerlJam: Thanks 22:06
PerlJam: You avoided horrible things
afk # going home
buu "It's beginning to look a lot like.. fish men! Everywhere I go.." 22:17
luqui stop stealing our water!
buu Fishmas++ 22:19
dduncan ?eval my $x = 3; my $y = undef; my $z = $x + $y; say $z; 22:38
22:38 evalbot_8267 is now known as evalbot_8274
evalbot_8274 OUTPUT[3 ] bool::true 22:38
dduncan now, this is another issue I plan to raise
but first ... 22:39
what does 'undef' mean to you?
to me, it means 'unknown'
and hence, any operation using an undefined variable which expects a defined one should not return a defined value
it should either fail or return undef itself 22:40
eg, the expression 4 + 3 should return 7, but 5 + undef should return undef or fail
what do you guys think?
undef should not be treated the same as zero 22:41
does the language spec talk about this somewhere?
looking ...
buu I *like* undef as zero. 22:43
It makes me happy. 22:44
sili you are ugly.
buu =[
When the great old ones arise they will destroy your feeble sanity.
dduncan having undef in numerical context being equal to zero is only helpful to lazy developers ... for any real work, it is just a source of bugs 22:46
of course, I'm not against there being some pragma or Class trait that says how undefined variables of their type are treated in certain contexts, but in the absense of this they should default to not being equal to anything, zero or otherwise 22:47
so undef always != undef 22:48
buu Hmph. 22:49
dduncan I'm going to writeup a p6l post on this shortly
buu Yay for making basic operations take more lines of code. 22:50
dduncan oh? what would take more code?
example?
buu $x + ( defined $y ? $y : 0 ) 22:51
dduncan you forgot the // operator
buu Well, yes
And actually you could use || too.
But I don't see the point.
You can already check if you care, if not let it do something sensible.
dduncan the thing is, if you already know from somewhere earlier in your code that $y was defined, you don't have to do what you did 22:52
buu $y = sub_that_may_return_undef
dduncan and if you don't know, such as if $y is an argument, then checking your input for correctness is the proper action
buu Yes, but you can already check. Changing this behaviour doesn't *add* anything. 22:53
dduncan using $y // 0 means that you know $y may be undef, and you are defaulting it to zero if it is
buu Sure, but why should you be forced to do that? That's how it works right now.
dduncan the problem relates to bugs sneaking in
buu How so?
dduncan what if you forgot to initialize something but your code assumed you did? 22:54
having altered behaviour would lead to Perl itself pointing this out
buu So would warnings.
dduncan and you could more quickly find the source of your bug
buu What does that get you that adding a warning on undef doesn't?
dduncan you don't have to add the warning on undef 22:55
and your code itself is better self-documenting
buu *shrug*. I've always absolutely detested the 'warn on undef' feature of warnings.pm, but I'm not sure I can fully articulate why.
dduncan the change I suggest brings things out into the open that would be magical and hidden otherwise 22:56
I consider auto-change of undef into a defined value to be magical and non-intuitive
buu Heh. I suppose I'm just used to programming with it. I suppose if you forced that change on me I would resort to specifically returning 0 or some such. 22:57
I enjoy my magical and hidden feautres =/
dduncan the intuitive thought is that your variables don't change unless you tell them to or they are defined by a class that is volitile
buu Er, but how is the variable changing? 22:58
dduncan people are used to lots of things in perl 5 but that doesn't make them best behaviour
its changing to zero from undef without being explicitly told to
buu It's overloaded
dduncan an undef is a distinct value, or absense of value, that is different from all others
buu ?eval 32 + undef;
evalbot_8274 32
buu ?eval "a"~0
evalbot_8274 "a0"
dduncan so what you see now in pugs is the perl 5 way 22:59
buu dduncan: And what is the string definition of "absense" of value?
dduncan an empty string and an undefined string are 2 different things
an empty string is ''
an undefined string can't be printed
buu I suppose. 23:00
dduncan in debugging situations, the thing can print something like <undefined> in place of an undefined value
like it prints <obj:foo> now
buu I'm just having trouble thinkinf of a situation where it would help me.
dduncan mail run, back in 15m 23:01
nwc10 evalbot_8274: help? 23:04
evalbot_8274 say "Hello world\n" 23:05
OK. I'm not winning here.
dduncan nwc, you invoke evalbot with a leading ?eval 23:06
like this
?eval say 'foo';
evalbot_8274 OUTPUT[foo ] bool::true
nwc10 ?eval say "foo\n" 23:07
evalbot_8274 OUTPUT[foo ] bool::true
nwc10 ?eval say "foo"
evalbot_8274 OUTPUT[foo ] bool::true
nwc10 aha. I take it that there's always 1 \n added to say?
dduncan yes
say is like print but with a "
\n added
very handy for common case
you don't need to have a say or print though 23:08
eg
?eval 4 + 4
evalbot_8274 8
dduncan so you just say ?eval <code-to-run>
simple
nwc10 ?eval 2 < (0|6) < 4
evalbot_8274 bool::false
dduncan anyway, back in 15m
mlh_ ?eval "hello"->? 23:55
evalbot_8274 Error: unexpected ">" or "-" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
mlh_ ?eval "hello"
evalbot_8274 "hello"
mlh_ ?eval "hello" + 0
evalbot_8274 0.0
mlh_ ew