6.2.2 is airborne! | pugscode.org <Overview Journal Logs> | pugs.kwiki.org
Set by autrijus on 1 May 2005.
Juerd Str ?$ircname = $nick, 00:05
Str $host,
Int ?$port = 6667,
How is this valid? I thought mixing zones was impossible?
(I can't think of a way to interpret this!)
arcady that can't possibly be valid
Epix can i have perl6 now? how far is pugs? 00:06
Juerd (Still, very impressive, that Net::IRC)
Epix: Yes, you can. Far enough to write useful stuff in.
Limbic_Region Epix - see pugscode.org
arcady well... actually it could possibly be valid, but not according to the documentation as I've seen it
Juerd Epix: For example, today, Net::IRC was ported to Perl 6
Epix: svn.openfoundry.org/pugs/ext/Net-IR...Net/IRC.pm
(I was just reading it)
Epix Juerd: thats cool.
stevan any lambda folk about? 00:07
Epix what about POE? is there that for perl6
stevan Epix: nope
nothingmuch Epix not quite
Epix what is lambada. is it the MOO?
is there a cgi for it
or mod_perl
nothingmuch lambda refers to functional programming
Juerd Epix: Note that since Pugs doesn't support OO yet, hashes of closures are used instead. That works very well with Perl 6's syntax :)
stevan Epix: lambdafolk == Haskell programmer
nothingmuch pugs is implemented in haskell
Juerd (It works for Javascript too!)
stevan Epix: there is CGI 00:08
Juerd Epix: See pugs.kwiki.org/?Perl6Nomenclature
nothingmuch and as for CGI - there's a nice example of a memory game CGI
and stevan has written CGI.pm
stevan svn.openfoundry.org/pugs/ext/CGI/lib/CGI.pm
Epix: and work has begun on mod_pugs
Epix stevan: and later, mod_perl6? 00:09
nothingmuch this thing looks yummy: www.wallbike.com/Conquest.html
stevan Epix: more than likely mod_perl6 will be mod_parrot
arcady there was a mod_parrot at some point
stevan arcady: it is still alive and well
arcady ah, that's good to know
Epix woah. so all of parrot will be usable with apache 00:10
stevan arcady: jhorowitz (of mod_parrot fame) is working with autrijus to get parrot embedded in pugs
Epix: I think that is the plan
so you can have mod_(perl|python|ruby|scheme|CommonLisp) in one app
Juerd stevan: Please stop now, before I ejaculate spontaneously :) 00:11
Odin-LAP Juerd: What strange paraphilias you must have...
arcady don't forget brainfuck
you can write a cgi in brainfuck! 00:12
now that would be... unique
Odin-LAP Yes, please. Forget brainfuck. Otherwise you'll go nuts.
Juerd My brain is fucked already.
Odin-LAP Juerd: By whom?
Juerd Childhood experiences 00:13
Let's not discuss the details
Odin-LAP I ... see.
Juerd Then you are not yet blind. 00:14
nothingmuch in hebrew to fuck someone's brain means to yack
stevan Juerd: Describe in single words, only the good things that come in to your mind about: your mother.
Juerd stevan: I can't possibly describe the good things about my parents in single words. They are wonderful people. 00:15
stevan Juerd: (bladerunner reference)
Juerd We don't always get along, of course. I think that's normal.
Limbic_Region feels like yacking 00:19
not to be confused with yack shaving
Juerd What is that?
Limbic_Region yacking = vomiting 00:20
Juerd yack
n : noisy talk [syn: {yak}, {yakety-yak}, {chatter}, {cackle}]
v : talk incessantly and tiresomely [syn: {jaw}, {yack away}, {rattle
on}, {yap away}]
Why do you feel like vomiting?
stevan Limbic_Region: I wrote a basic Config::Tiny test suite based on your SYNOPSIS 00:21
dont know if you saw yet
nothingmuch what I meant by yacking is not vomiting, but what Juerd defined
stevan so brain fuck in hebrew is to talk incessantly?
how odd
Odin-LAP Them hebrew-speakers are odd. Like everyone else. 00:22
stevan although maybe it does make sense,.. brain-fuck == mess with someones mind
Epix lemme get this straight 00:25
perl6 will be compiled with pugs
the perl6 program itsself
stevan Epix: Pugs is a perl6 interpreter
we will use it to bootstrap the perl6 compiler
which will be written in perl6
Epix stevan: why do that 00:26
stevan Epix: cause it is fun :)
Epix no, really... why
stevan Epix: honestly, I have no idea why that way is better than other ways
Epix lol
stevan actually I do,... on a very basic level 00:27
Epix maybe because then the compiler will run anywhere perl6 will run?
stevan it makes it much easier to port to other platforms
Epix: exactly
Odin-LAP Perl6 wants to be like most other languages ... self-supporting!
stevan is not the compiler guy, just the test guy
Epix will p6 benchmark faster than p5?
stevan Epix: some early tests autrijus did with compiling to Parrot actually were faster than p5 00:28
Epix: I imagine that in some ways perl6's speed will be bounded by parrot's speed
Epix ok so faster :D 00:29
stevan Epix: i hope so :)
although perl5 isnt really that slow
it is comparable to Java in many situations
Epix stevan: can you compile pytyon/ruby/CLisp to parrot yet?
stevan of course Java can be slow as dirt, so thats not much of a comparison
Epix: I have no idea, that a question for #parrot :)
Odin-LAP There is some ongoing work. 00:30
arcady at least with python and CLisp, not so much with ruby
Odin-LAP I think Common Lisp is actually the most active... 00:31
arcady or just the most recent 00:32
Odin-LAP Heh. Might be. :)
arcady people haven't gotten bored or found better things to do
Limbic_Region stevan - thanks - I really appreciate it
I have come down a bit under the weather
Odin-LAP arcady: Better than Lisp? ;>
Limbic_Region don't think I will be playing at all tomorrow
Epix whats the job market for perl 00:33
arcady yes.
Epix hmm 01:11
it looks like perl6 could make perl huge or break it.
well not so much break it 01:12
puetzk stevan: revision - pugs does embed parrot now
as of r2750, 2005-05-05 15:20:07 -0500 :-) 01:13
you are forgiven for not being able to keep up :-)
Limbic_Region oh no 01:20
something doesn't look right
I sure hope I didn't fuck up
I just checked in a test for a bug in //= autovivication and svk is committing many many revisions??? 01:21
puetzk Limbic_Region: thus far I see one revision from you... 01:22
r2764 | Limbic_Region | 2005-05-05 20:19:23 -0500 (Thu, 05 May 2005) | 1 line
Changed paths:
M /t/operators/assign.t
Test for //= autovivication bug
Limbic_Region oh - so must be local sync then 01:23
Limbic_Region is quite new to this stuff
puetzk yeah, svk would have to sync/smerge up to HEAD before it could commit
Limbic_Region could have swore he synced before modifying the test
*shrug*
that's only 1 of the 2 confirmed bugs I found today 01:24
the other one I am not sure how to test
if you write to a file but don't close it - the update is not reflected in the file even after the program ends 01:25
puetzk hmm. system("pugs",...) and then check the file contents? 01:26
Limbic_Region well if the *proper* behavior is to flush/write at end of scope - it is easier to test
but I am not sure - I just know what it is doing right now isn't right
puetzk indeed. flush should happen when the filehandle is finalized, if not before 01:27
but I don't think pugs has any way to force a gc sweep
(nor am I sure what pugs has for memory managent in general when not using parrot)
Limbic_Region right 01:28
so it boils down to having the single test broken out over two test files 01:29
1 to write the file
the second to read
Limbic_Region is checking existing io tests now to see if he can piggy back 01:30
yeah - I can just move the unlike in io.t to a new test that is guaranteed to run after 01:32
puetzk - I added that test too 01:49
now I just need to investigate the possiblility of 2 other bugs
another time perhaps
Limbic_Region calls it a night for the second time 01:53
meppl gute nacht 01:59
puetzk holy Schmiel the painter... I know parrot isn't meant to be optimized yet, but Parrot_byte_index is impressive 04:21
espescially given how it's used in does_isa (which is itself a not particularly optimal implementation of a seriously slow way to implement isa) 04:22
puetzk now has a bit less fear for how parrot intends to close the performance gap between it and perl5
Khisanth are you sure it's not just your machine? :P
puetzk Khisanth: looking at oprofile :-)
and at the code
Khisanth ooh PGE, PUGS will have P6 Rules RSN? :) 04:24
puetzk has "hmm, is this really the hotspot?" patch that makes mandel.p6 40% faster, but I wonder if there's some larger scheme afoot - there must be some reason for it to be this bad besides neglect :-)
even with it in place, isa checks are still directly account for 10% of the runtime 04:27
Khisanth puetzk: that sounds pretty bad 04:47
puetzk can post the patch after he's done eating 04:51
it's very small
hmm, or perhaps not; the test failures aren't what I thought they were 05:25
apparently there's a real bug in it :-P 05:26
yup 05:28
durn testsuite :-P 05:29
or not
puetzk is away: zzz 06:16
07:08 chady_ is now known as chady 07:48 chady is now known as Every-one, Every-one is now known as chady
autrijus puetzk: I want your patch :) 08:04
bsb What is the inverse of zip called? part? 08:28
-> ?
autrijus not sure there is one 08:32
bsb I can't find it, maybe I imagined it 08:38
08:44 decay is now known as decay_
mj mj hates linking problems 08:47
perlbot nopaste 08:48
perlbot Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel>
08:50 b6s_ is now known as b6s
pasteling "mj" at 147.229.221.107 pasted "Win32 Makefile.PL sub parrot_config - works for me" (13 lines, 375B) at sial.org/pbot/9959 08:54
autrijus I tweaked it a bit 08:56
and committed as r2767
scook0 ooh, looks like someone put all the poetry into haddock 09:07
autrijus I'd be that someone :) 09:11
bsb Is helping to fill in the haddock docs any appropriate haskell newbie task? 09:17
autrijus sure! 09:18
scook0 That's what I'm doing
autrijus as long as you commit fast enough, there's little chance of duplicating work :)
scook0: and I *heart* you for it :)
scook0++
without haddock I can't refactor anything 09:19
that was partily what caused the AST.hs huge bloat
now I can finally put the dependency graph in my mind and think about restructuring things
scook0 Actually, I'm surprised at how much of the evaluation I actually understand now
bsb We if I ever understand anything, I'll be sure to write it up
I'm getting there, slowly
scook0 What I did was to make printouts of Eval.hs and AST.hs, then study those and make notes 09:20
autrijus bsb++
scook0 Which parts are you looking at?
bsb I've got a haskell question: why is comine "foldr (.) id" not foldr1 something? 09:21
scook0: I'm bouncing all over the place with vim and hasktags
scook0 My main tool is 'find | xargs grep' :)
autrijus bsb: because
combine []
needs to be 09:22
id
as there is potentially zero things to combine
bsb Ok, I couldn't find combine use in that way, but wasn't sure
Actually, I've been trying to work out how pointy subs can get control exceptions 09:23
scook0 autrijus: there was a whole bunch of things I was planning to ask you about pugs internals
autrijus scook0: sure, ask ahead
scook0 but I've forgotten most of them -- must write them down in future
:(
autrijus that's ok :)
bsb data SubType = SubMethod | SubRoutine | SubPointy | SubBlock | SubPrim 09:24
autrijus yeah, those are "levels" of subroutines
of Code, really
bsb I added SubPointy locally 09:25
doesn't link to anything much yet
scook0 I just commited a little bit of stuff for that
So now you'll probably get a merge conflict :(
bsb I think I'll be svn revert-ing anyway 09:26
I was more to try and understand
s/I/It/
autrijus bsb: how is Pointy diff. from Block?
I thought they are same
bsb Pointy's do control exceptions
scook0 which control exceptions are you talking about? 09:27
bsb Any set &?BLOCK not &?SUB
s/Any/And/
And return doesn't work, returns from outer sub
autrijus bsb: er. I mean pointy vs block 09:28
bsb scook0: last, redo, etc
autrijus not pointy vs routine
I know how pointy differs vs routine :)
scook0 AFAIK, pointy and block are the same
autrijus -> $x { say $x }
{ say $^x }
scook0 block is just a pointy without an explicit arglist
autrijus I though those two are equiv
if so, then we just use SubBlock to represent both
bsb Yeah, as long as blocks are doing "next" and co 09:29
bare blocks, not just in for/loop/...
I might have this wrong btw 09:30
scook0 isn't the loop responsible for handling &next etc.?
I think that's how pugs does it (not sure)
bsb from s06:It also behaves like a block with respect to control exceptions.
scook0 let me consult s06 for a sec...
"The arrow operator -> is almost a synonym for the anonymous sub keyword," 09:31
autrijus I think loopish constructs are installed by the loop
not by the block 09:32
pugs reflects that understanding
bsb autrijus: pointy vs block, do they topicalize $_ differently?
autrijus I may or may not be wrong, but it makes sense to me
bsb: no idea... that may be the case
bsb I'll look for a reference on that
scook0 autrijus: about junctions... 09:33
the extra set (dups) is for /one/ junctions, not /none/ junctions, right?
bsb A06: "Bare subs" If no placeholders are used, $_ may be treated as a placeholder variable
scook0 the IRC logs quote you as saying 'none', but looking at the code I'm pretty sure you meant to say 'one' 09:34
threw me for a loop though
autrijus scook0: yup
scook0: my thinko
scook0 your thinko is currently enshrined in metaperl's writeup... :(
but I think my docs explain it 09:35
autrijus scook0: writeup? 09:36
scook0 pugs/doc/src/Junc.pod 09:37
autrijus fixed
thanks so much 09:38
autrijus going to dinner &
scook0 later
autrijus: when you get back, I have a question about Pads and multisubs 09:39
bsb scook0: What's on you documentation todo list? 09:42
scook0 I'm just filling in gaps in AST & Eval at the moment 09:43
bsb Ouch
scook0 dribs and drabs -- nothing big atm
my biggest problem was trying to understand the AST, without knowing why the parser was generating different bits 09:44
bsb Where does big picture documentation go? (Once you can see it) 09:48
scook0 What do you mean by 'big picture' documentation? 09:49
As in, a high-level overview of how a particular module operates? 09:50
bsb Yes, and how modules interoperate 09:52
bye for now 09:57
scook0 bye 09:58
10:04 Aankh|Clone is now known as Aankhen``
nothingmuch morning 11:20
11:21 chady is now known as chady_
scook0 evening 11:25
:)
stevan autrijus: ping 12:54
puetzk autrijus: I'll post the speedup on p6i after I get the "" case handled right so it passes tests again 12:56
stevan autrijus++ # for making MMD work (well mostly work, be enough for my needs) 13:26
Limbic_Region salutations all 13:28
autrijus ping
stevan Limbic_Region: morning 13:30
Limbic_Region morning
Limbic_Region was just wondering if the two tests he checked in last night to expose the two bugs he found while writing Config::Tiny were ok 13:31
stevan Limbic_Region: which tests?
Limbic_Region one to assignment.t
and a test that had to be spread across two test files 13:32
so I modified io.t
and added io_final.t
stevan Limbic_Region: I only saw a few .hs files in the last svn update
so I am not sure
Limbic_Region this was from last night
I did what I thought was right WRT testing them - but still a bit unsure of this stuff 13:33
stevan Limbic_Region: my update was first thing this morning, and before that was about 10pm EST last night
Limbic_Region: I have to restart my machine, but I will take a look when I am back up
puetzk is away: work 13:34
stevan Limbic_Region: the $fh.say "hello" issue is not really an issue IIRC 13:55
invocant syntax requires parans
I will see if I can find the reference
Limbic_Region stevan - are you referring to my journal or to my test? 13:58
I already spoke with autrijus about this 13:59
stevan your journal
Limbic_Region yeah
I listed everything even if it turned out not to be a bug
stevan ah
ok
Limbic_Region just so others would have the benefit of me learning in public
stevan so am I correct? or crazy? :)
Limbic_Region correct 14:00
parens are required
stevan :)
stevan was starting to wonder for a second there
Limbic_Region autrijus confirmed 2 were real bugs and was unsure about 2
Juerd Say...
Limbic_Region 2 were confirmed to be proper behavior
Juerd If :{} can be used without parens 14:01
Then can the same thing be done for :""?
$fh.say:"hello"
Limbic_Region so I will investigate the 2 in question another time
stevan Juerd: have you tried it?
Juerd Although say $fh: "hello" looks awfully alike.
stevan: I'm sure this isn't already the spec. I'm thinking out loud.
stevan: I'm not wondering whether it is currently possible - I'm sure it's not. 14:02
stevan Juerd: ah
Juerd I'm wondering whether this would fit in the overall design
Though I don't think the required parens make any sense anyhow.
Limbic_Region thinks if you put a reference to a hash A as the value to a key in hash B, you should be able to modify hash A by dereferencing hash B appropriately
I am just not sure my syntax at attempting to do it was correct 14:03
Juerd Limbic_Region: WRT references, as long as they're explicit, you can test with perl 5.
Limbic_Region but I think that is a bug
stevan Juerd: personally I like the look of (say $fh: "hello"), but not ($fh.say:"hello") so much
Limbic_Region: the test in io.t, I am going to wrap in a bare block, so that your $fh goes out of scope 14:04
Limbic_Region stevan - not sure that is ok to do
I wasn't sure about GC guarantees 14:05
stevan Limbic_Region: shouldnt finalization ideally happen when the variable is out of scope
Limbic_Region but when the program ends - it should DEFINATELY be gc'd/finalized
stevan Limbic_Region: agreed
but two checks cant hurt
if there is no guarentee, oh well
Limbic_Region stevan - I am not sure if the p6 side of the house and the parrot side of the house has come to agreement on timely destruction
stevan Limbic_Region: true 14:06
Limbic_Region so - I did the obvious thing and didn't assume
stevan ok
I will leave it be then
Limbic_Region in any case - if you could investigate the hash reference in a different hash being able to be dereferenced - I would appreciate it
stevan which test is that?
Limbic_Region I am off to attempt to paint the new house though I am still feeling extremely under the weather 14:07
stevan Limbic_Region: enjoy :)
Limbic_Region my %hashA; my %hashB = ( 'foo' = \%hashA );
Juerd stevan: How about map @foo: { ... } versus @foo.map:{ ... }, then?
Limbic_Region and then modifying %hashA through dereferencing %hashB
it doesn't work
see my journal entry
on that note
I am off
Juerd stevan: Of say, you don't usually use the return value for another methed
method
stevan: But think in a broader scope, and think about more generic functions 14:08
stevan Juerd: either map is fine with me, they both look ok
Juerd stevan: With indirect method syntax, nesting is a hell of a job
stevan: Why is either map fine with you, while the same thing with "" instead of {} is not?
stevan Juerd: I am going purely on aesthetics :)
Juerd That's very dangerous. 14:09
stevan I agree nesting could get very ugly with the indirect approach
Juerd: I dont claim to be a language designer at all, nor to have the knowledge/training to be one 14:10
Juerd stevan: $foo.bar:"baz".length # hm, impossible too 14:11
The :{} must be very special
stevan Juerd: and ugly too :)
I never liked perl5 indirect OO notation either
PerlJam I've always thought :{} pretty and elegant
Juerd as $foo.bar:{}.baz calls baz on $foo.bar:{}, not just the {} 14:12
stevan Juerd: I am not sure why :{} is so special
I think it may be a less than elegant reason
it worked before map {} @a did
Juerd So : sort of binds much tighter than the previously tightest thing, the dot
Which makes me wonder, a lot, how the hell :pair.key is supposed to work. 14:13
Given foo:pair.key
Or would that have to be foo(:pair.key) to pass the key?
Hm, has to. 14:14
stevan Juerd: now your just stiring up trouble :)
Juerd stevan: You have to, if you want to test a language's design.
PerlJam Juerd++
Juerd s/your/you're/
Also, how lhs-whitespace-sensitive is :{}? Anyone? 14:15
stevan pugs -e 'my @a = 1..5; say @a.map :{ $_ + 2 }' 14:16
pugs: cannot cast from VList [] to Pugs.AST.VCode
pugs -e 'my @a = 1..5; say @a.map:{ $_ + 2 }'
34567
pugs -e 'my @a = 1..5; say @a.map: { $_ + 2 }'
pugs: cannot cast from VList [] to Pugs.AST.VCode
pugs -e 'my @a = 1..5; say @a.map:{ $_ + 2 }.join(", ")' 14:17
3, 4, 5, 6, 7
PerlJam Juerd: I'd imagine that it's not at all sensitive to whitespace.
Juerd PerlJam: You and pugs disagree 14:22
But is there any spec that can point out who's right?
I can't find it
PerlJam Juerd: surely I must be right. :-) 14:23
Juerd Because?
PerlJam there's no difference between :{} and :foo as far as whitespace goes. Surely you've seen example code that uses "blah :foo"? 14:24
Juerd Why isn't there difference? 14:25
And yes, I've seen code that uses blah :foo, but not code that uses $foo.blah :foo
The first is valid anyway, because :foo there is just a simple argument 14:26
For the method thing, special syntax is needed to make the call valid without parens
PerlJam Juerd: the "best" way to find out is to ask p6l I guess. 14:30
Odin- That assumes a rather twisted definition of 'good'. 14:33
;)
PerlJam Juerd: Check out the section on methods in dev.perl.org/perl6/doc/design/syn/S12.html 14:36
but surely there must be some whitespace disambiguation for method $obj: :foo (if that's even legal) 14:39
perhaps that can be written method :foo $obj: too
ick. .:method :modifier looks to be legal (implied from S12). the leading dot is washed away when I look at that. It apears just as a series of :this :that :theother 14:45
stevan Larry's First Law of Language Redesign: Everyone wants the colon.
dev.perl.org/perl6/doc/design/syn/S01.html
PerlJam In this case I *don't* want the colon. I'm suffering from colon overload 14:46
Can you call private methods using the IO notation? :method $obj: :modifier 14:47
that too is icky.
(I hope it's also illegal)
stevan PerlJam: that notation is just ugly, and difficult to understand 14:48
I hope it is illegal as well
regardless of whether it /should/ be possible or not
osfameron shame Perl6 won't have a regular syntax making IDE/refactoring browser type magic possible. 14:50
s/regular/half sane/
wolverian but it'll have the whole syntax tree available on the language level, which seems sane enough. 14:51
stevan TIMTOWTDI has it's disadvantages
osfameron discussed this at london.pm meet yesterday 14:52
the language might be able to parse itself (thus still allowing IDE magic)
but because Perl would be embedded in the editor, a crackfuelled enough module could actually crash the editor 14:53
PerlJam osfameron: perl6 MUST be able to parse itself.
wolverian my vim is compiled with perl and it never crashes. :)
osfameron wolverian: yes, but it doesn't `use` modules on the fly in order to 14:54
Odin- grammar Perl6; # Or something like that...
osfameron warp the syntax it's using.
PerlJam osfameron: I'm sure at some point we'll end up with something akin to a markup language for tagging grammars such that syntax colorers can do their job. 14:55
osfameron that'd be cool
though I'm really interested in the magic ability of, say, IDEA (and I guess Eclipse now?) to highlight syntax errors in Java code as you type, 14:56
tell you which arguments functions take, and help you browse the object tree etc. 14:57
PerlJam osfameron: As context sensitive as perl is, that might be a wee bit more difficult :-)
osfameron: however, an integrated help system is within easy reach I think (It's just a SMOP)
osfameron PerlJam: so is it "context sensitivity" rather than lack of regular syntax that I should be bewailing? 14:59
(or muttering about at any rate)
PerlJam Well, they're intertwined really. 15:00
Juerd PerlJam: Re the colon: things wouldn't be so bad if we could use \w prefix operators 15:11
But Larry has said that [a-z] should be for the user
jabbot pugs - 2775 - * restrict findSub to &var now 15:43
15:53 meta_perl_ is now known as meta_perl 16:01 [2]meta_perl is now known as _metaperl, _metaperl is now known as metaperl
Corion Yay - 2 unexpected successes with r2774 ! sub_ref.t seems to grow closer to completion :) 16:07
Hmmm. I'm currently merely wondering. If we have STM, shouldn't C<let> be "easily" implemented by using an STM wrapper for the block/rule that let() lives in? 16:09
... and then simply rolling back the whole transaction?
PerlJam Corion: seems like it should work. 16:10
Corion PerlJam: ... except of course, that I don't even know how to get my fingers on an STM container, and how to differentiate between let-assignments and non-let-assignments ;)
PerlJam Corion: mere details! ;-) 16:11
Corion PerlJam: Yes - that's what we have autrijus for ! :)
Juerd After writing a post to p6l, I get the feeling @(*&(*%&$^&*!)) should actually mean something in Perl 6... 16:24
sorje Some things never change. ;-P 16:25
Juerd And some things change continuously
Odin- Juerd: Hmmm. Suggest it, and someone will find a way to make it have a meaning...
Juerd It's interesting to see Perl 6 fit in both categories
Odin-: I sort of already did. I sent a table to perl 6 that has many gaps in it, that just scream for a feature 16:27
Odin-: Golfing will never be the same again
Odin- Ouch.
Dammit. Why can't Gmail have a fixed-width font for the mail messages? >:| 16:28
Juerd Apparently, it sucks.
PerlJam Juerd: ??? looks like a really good "huh?" operator 16:29
Odin- Yeah. And one will be needed, given the operator soup we already have...
Corion We already have ... - so maybe ??? should be the failing variant of it :) 16:34
That is, ??? := ... but fatal
PerlJam rather than a pragma to modify the behavior of ... ?
Corion PerlJam: Ah, pragmata are useful, but think of the huffman coding :) You might want to have different kinds of ... - I imagine ... , ??? and XXX FIXME! :-) 16:35
Maybe !!! as well ;-)
PerlJam Corion: suggest it to p6l. 16:36
seriously.
Odin- Hrm. !!! should rather be the fatal one...
Corion PerlJam: I've stayed away from p6l - I would need to subscribe to it, and that would direct even more spam in my direction ...
Odin-: Maybe ??? should be caught in a try{} block, while !!! aborts the program? :)
PerlJam Corion: no need to subscribe.
Corion PerlJam: No need to?
Corion goes looking 16:37
Odin- Corion: Hmm. That'd be an interesting distinction, yes.
Corion ... but first, we should find consensus on what !!! should do, opposed to ???, and maybe XXX
Juerd PerlJam: Sure, but what does the huh? operator do? 16:38
Corion I think that "XXX" should take a string to EOL (like, XXX FIXME) and die, while ... outputs the "unimplemented" warning, "???" dies, and "!!!" really dies.
Juerd PerlJam: Is it good friends with the wtf? operator, "?!"?
Corion Maybe ??? and !!! should also take a string until EOL
PerlJam Juerd: I'm not the language designer. My job is to make a mess, @larry's job is to clean it up ;)
Corion Like "??? magic" and "!!! Should never happen"
Odin- Juerd: 'say "What the hell am I supposed to do here?";'! 16:39
Juerd PerlJam: Then make a mess already, and tell me what the huh? operator does
Odin-: In other words, we're just making ??? and !!! aliases for ...?
Corion Hmmm. I'm not sure I see the/a difference between "???" and "XXX" ...
Odin- Juerd: So it would seem.
Juerd XXX is a fixme
But it must continue to run. 16:40
It can mean undef.
Corion Juerd: Ah - the difference is maybe simply the syntax - "XXX" takes an implicit string until EOL, while "..." continues to parse.
Odin- Hmm. Those would sort-of work like in-code comments?
Corion ... which will make autrijus scream because special-casing in the parser is ugly :) 16:41
PerlJam Corion: so ...; say "foo" would work?
Juerd Corion: It's no special case if you group it with #
PerlJam: Be valid syntax, but die.
Corion Odin-: Yes, except that they produce output in the program :) "XXX FIXME" is like "warn 'FIXME at $?LINE"
Juerd: True
Juerd: No, "..." continues to run from what I know
Juerd Corion: wtf? 16:42
Corion (but then, I'm out of sync with the official Perl6 syntax since two or three years)
Juerd Corion: I thought it'd die.
PerlJam Corion: Larry has said that such behavior would be modulated by pragmata
Juerd * However, ... as a term is the "yada, yada, yada" operator, which is used as the body in function prototypes. It complains
Odin- Corion: Yeah. Which might be interesting...
Corion Juerd: I thought it would output "unimplemented code at ...", but continue to run
Juerd bitterly if it is ever executed.
S03
"complain bitterly" I agree is somewhat too vague
Corion Juerd: "Complain bitterly" is "output a warning" to me.
Juerd It's "die" to me
Corion Juerd: But "..." is more like "uh - I hope you know what you're doing", where "???" is more like "WTF?", and "!!!" is more like "WTF!" 16:43
Odin- Juerd: Hmm. I'd read it as "print a huge, ten page banner alerting to an error, and then go on"...
Corion Juerd: I see "..." as having practical use when stubbing out code - I would want the code to warn but continue. How else would you do that?
sub do_magic { ... } 16:44
looks good, and should warn "do_magic is not yet implemented at $?LINE"
while
sub magic { ??? }
should die. 16:45
(I don't have a funky error message handy)
Odin- "functionality not available"?
Juerd Corion: Do you mind if I quote you verbatim on this? 16:46
Corion Juerd: np :)
Juerd: I think the "..." is used often in pseudo code, and Perl6 should run pseudo code :)
Odin- At this rate ... eventually it will.
Corion "??? (.*)$" is sufficiently vague to warrant a "die $1", and "!!! (.*)$" should "say $1;POSIX::exit(1)". Maybe it should execute END{} blocks. Maybe !!! is just a bad idea. 16:48
(of course there should be a pragma, like "use fatal;" or "use fatal 'elipses'" to turn even "..." into a die()) 16:50
"no fatal 'elipses' or $you.get( burned => by, 2*foci ); 16:51
pmichaud juerd: your table of ops is excellent -- I'm thinking I'd like to put a copy in the perl6 svn 17:28
autrijus hm 17:41
anyone knows what precedence does [+] have?
is it in the same slot as "loose" list operating prefix functions?
Juerd pmichaud: Be my guest
autrijus: Are there tight prefix listops then? 17:42
autrijus that is, between 17:45
, Y
and
==>
i.e. normal function application precedence
no, there is none
pmichaud what's the arity of [+] ?
it's unary, yes? 17:46
I'm going to guess that [+] is fairly tight, so one can write 17:47
if [+]@array > $max { ... } 17:48
autrijus [+] is tight?
Juerd I'd think it's a list op
autrijus [+] 1, 2, 3;
Juerd So very untight
autrijus uh oh.
round 1, fight!
pmichaud heh
no, I'd think that [+] 1, 2, 3 is really written [+] [ 1, 2, 3 ]
Juerd plays the annoying arcade music
pmichaud again, it's a metaprefix op 17:49
Juerd pmichaud: Wow, that almost says out loud that it wants to be written as [+: 1, 2, 3]
pmichaud most prefix ops are unary
Juerd Uh oh.
autrijus larry has written something like
[+] 1..9;
does it parse as
([+]1)..9;
?
or is .. even tighter?
pmichaud .. is in the non-chaining binary ops
autrijus .. is actually quite loose 17:50
there's no symbolic unary looser than it
so it will be parsed as ([+]1)..9
if it is symbolic unary
pmichaud indeed
autrijus so by neccessity I think it's a listOp
(I think.)
pmichaud if we put it too loose, we'd be writing if ( [+]@array ) > $max when we want to sum an array 17:51
autrijus but that's not diff than
if sum(@array) > $max
rather than
if sum @array > $max
pmichaud I'm not advocating a particular position here :)
autrijus so hm. 17:52
another alternative if we keep it as symbolic unary
is
[+](1,2,3)
pmichaud well, if you think it fits better down with the listops, that's okay with me for now. A good question for p6l, however
autrijus I am, incidentally, also not advocating a particular position :) 17:53
symbolic unary is slightly easier to understand
as we didn't really have symbolic listops
other than ==> <==
pmichaud yes, that's what I was thinking -- that it's easier to understand as a unary than a listop
autrijus Juerd? 17:54
Juerd Yes?
pmichaud I probably shouldn't say this, but part of the reason that "not" and "true" got bundled into "list op (rightward)" precedence was to avoid creating another "loose unary" level :) 17:55
autrijus pmichaud: so, how tight do you think [+] wants to be?
the existing "Symbolic Unary" level? 17:56
pmichaud I dunno -- I'd have to look at more of the examples. Larry's [+] 1..9 makes a pretty convincing case for a loose level
Juerd Shall I query p6l?
autrijus pmichaud: but later luqui switched to write [+](1..9)
pmichaud maybe luqui wasn't sure of the precedence, in which case the parens disambiguate so you don't have to worry about them :-) 17:57
autrijus Juerd: sure, with a note that 1)pugs at this moment has it as symbolic unary level, same as filetests
pmichaud I do that a lot
autrijus and that [+] works now. about to commit
Juerd ok
autrijus praises the builtin foldl, foldM, foldr, foldr1 17:58
so [] is foldl, right? 17:59
i.e. it starts taking the leftmost 2 elements 18:00
and fold rightwards
instead of the other way around
if the list is empty, I assume undef? 18:01
and if the list is size of one, returns that element?
pmichaud it might need to contextualize the element 18:02
autrijus hm?
pmichaud but yes, return the element
well, <+> "hello" should return zero
autrijus the context casting is done elsewhere :)
op1Fold op v = do 18:03
args <- fromVal v
case args of
(a:as) -> foldM (op2 op) a as
_ -> return undef
pmichaud I'm probably not following your question closely enough (I'm doing about three tasks at once here :-| )
Juerd Whoa, what's <+>?
autrijus I think that's it. testing
pmichaud sorry I meant [+]
Juerd pmichaud: You scared me there :)
autrijus pugs> [+] 1, 2, 3
(1, 2, 3)
pugs> [+](1, 2, 3)
6
done as r2777. 18:04
pmichaud hmmm 18:05
autrijus pmichaud: counterintuitive? :) 18:06
pmichaud well, I think I'll wait for p6l to decide. Looking at that example I'm guessing it'll end up at listop precedence, but I can't say for sure
autrijus incidentally, me do, too
pmichaud something like [+] foo(), 3, 4 looks kinda funny
as would [+] (3+2)*4, 5, 6 18:07
that seems to argue for symbolic unary op precedence :)
or maybe not
I'm glad I'm not a language designer :) 18:08
autrijus probably not :)
pmichaud foo( [+] (3+2)*4, 5, 6 )
Odin-LAP [+] (3+2)*4, 5, 6 == 31 # ?
autrijus pugs> [+] (3+2)*4, 5, 6 18:09
31
switched to listop.
pmichaud so, my last example is a single-argument call to &foo, yes?
i.e., to use a reduce op in a function call list of params you'd need to parenthesize it 18:10
Odin-LAP It should be, shouldn't it?
autrijus yup
Odin-LAP would find anything else rather strange...
pmichaud fair 'nuff. I'm sure @Larry will come up with the answer and the (in retrospect obvious) reasons why :)
oh yes, Luke has the relevant quote 18:11
listop, definitely.
autrijus it's done :) 18:12
pmichaud okay, back to parrot and pge
jhorwitz mornin' autrijus :) 18:13
autrijus hey jhorwitz
Juerd autrijus: Heh, we were typing a reply at the same time :)
jabbot pugs - 2776 - * ghci can't handle embed_flags.
pugs - 2777 - * First cut at folding metaoperator: [+]
pugs - 2778 - * switch [+] to list operator precedence
pugs - 2779 - * prettify App better.
pugs - 2780 - fix a typo in hangman.kwid
autrijus Juerd: this often happens.
jhorwitz reading over logs from yesterday...were you asking for a registered parrot compiler for pugs (e.g. parrot's compreg/compile?) 18:14
autrijus jhorwitz: yes.
jhorwitz: I'd like to, once pmichaud et all get to it, allow callback from pge to perl6 18:15
that is, code blocks
and it needs pugs being registered as a parrot compiler
pmichaud there's good reasons for having pugs as a registered compiler anyway :)
but yes, being able to call back from pge would be really cool
autrijus common lisp and tcl callback would be cool too :) 18:16
pmichaud (BTW, the callback itself isn't going to be hard once we have that -- I can put that into PGE now)
autrijus nice
jhorwitz parrot will need to somehow call the backend (like doCompileDump).
pmichaud we haven't really figured out the syntax for callouts to other langs
autrijus but I think for replacing Parsec, named capture is the one missing feature
pmichaud I'm doing subrules now, simple named captures will be very soon 18:17
autrijus cool, pmichaud++
pmichaud I've already got the support in for it -- just need to parse the rules correct
autrijus jhorwitz: right. give me the signature?
pmichaud actually, I could probably do named captures first 18:18
before subrules
hmmm
autrijus jhorwitz: oh, it's a weird type
pmichaud unfortunately, right now what I really need to do is lunch, so I'll do that and be back
jhorwitz autrijus: signature for what
autrijus pmichaud: see ya
ParrotInterp -> CString -> Ptr PMC 18:19
jhorwitz ah, for the compile
autrijus jhorwitz: Parrot_compiler_func_t
now the obvious question is... I have PIR now, how do I manufacture a PMC?
pmichaud call the pir compiler :-)
autrijus clever!
pmichaud that's how PGE does it :) 18:20
jhorwitz yep
autrijus mm twolevel compilation
ok. that's utterly simple then
pmichaud and that's why PGE does it that way :)
pmichaud lunch &
autrijus jhorwitz: you have time to add compreg code? you can safely assume a compileToParrot 18:21
compileToParrot :: ParrotInterp -> CString -> Ptr PMC
jhorwitz how are we calling this from a non-embedded parrot? 18:22
autrijus we are not
:) 18:23
jhorwitz ah.
autrijus GHC 6.4 can make .so, true
but that's relatively unimportant
jhorwitz flips over brain
autrijus it's there purely for callbacks into pugs.
jhorwitz got it
autrijus but I guess we can also make pugs an evaluator for arbitary .imc
pugs foo.imc
and have it Just Work 18:24
that's easy, too :)
autrijus embraceth and extendeth
jhorwitz well, my ultimate goal is to have a pugs compiler for mod_parrot, which *will* be called from outside of pugs. this will help jumpstart that, though.
autrijus you can link against libpugs. :) 18:25
which will include libparrot.
autrijus smiles 18:26
jhorwitz laughs diabolically
luqui it appears that [+] isn't behaving as a listop 18:29
pugs -e 'say [+] 1,2,3'
123
perlbot: seen anybody? 18:31
jabbot luqui: I havn't seen anybody , luqui
luqui perlbot: seen autrijus?
jabbot luqui: autrijus was seen 5 minutes 21 seconds ago
luqui perlbot: seen pmichaud?
jabbot luqui: pmichaud was seen 11 minutes 2 seconds ago
autrijus hey luqui.
luqui hello
luqui thinks his alternate nick should be "anybody"
autrijus so. the thing is 18:32
[+] is not taking params cross the "," line
unlike normal function application
luqui shouldn't it? 18:33
autrijus you think it should be just like function application?
luqui well it has lower precedence than ,
so say([+](1,2,3), 6) should probably print 66
Juerd autrijus: Yes, that's what listops do :) 18:34
luqui hmm, but that means [+] (1,2,3) isn't the same as [+](1,2,3)
autrijus right. was about to say that.
Juerd autrijus: All named ones at least
luqui nevertheless, I think it's the right thing
autrijus luqui: there's a reason why spre is different from pre
ok then.
Juerd autrijus: I think [+] is like <==
autrijus: precedence-wise
lower than <==, but not function-like 18:35
eh
lower than comma
autrijus $obj.[+](1)
is this legal?
luqui oh my
autrijus that's what happens when you are coding things :)
Juerd autrijus: Well, it shouldn't be :)
autrijus Juerd: why not? :)
luqui because it's an array deref
autrijus ok. 18:36
Juerd autrijus: Because .[ is array deref, and +] isn't valid syntax
luqui listops are different from methods, they just happen to share a lookup table
Juerd I think.
luqui wonders whether foo $bar, $baz is really equivalent to $bar.foo($baz) 18:37
autrijus is the term
"reductive metaoperator"
"reduction metaopetor"
"reduce metaoperator"
"folding metaoperator"
luqui I find the third to be the clearest
autrijus implemented. testing 18:39
"In other words, it's okay to call an undefined function in your 18:40
prototype as long as you don't actually use the value."
wow.
luqui larry's most recent posts about hashes scare me
yeah, and that one too 18:41
heh... we'll talk on wed. about that
I'm sure Damian's not going to go for that either
Corion r2780 - 4762 ok, 56 failed - datenzoo.de/pugs/win2k.html
autrijus so, arrayLiteral needs to backtrack
or, it needs to build a lookahead table of all infix ops at the current scope. 18:42
the first one is faster.
I'll do that for now.
Corion btw - t/var/default_scalar.t dies with pugs: cannot cast from VHandle {handle: tmpfile} to [Char] 18:43
what does one do to hunt down these cast errors?
autrijus Corion: well, arguably a handle should be stringifiable
(I hope)
so the easiest fix is in AST.hs to add VHandle as a Value VStr instance.
you can do that? 18:44
Corion autrijus: I'll look into trying it ;)
autrijus cool
Corion I need Pugs to convert my boss from Python to Perl ;)
autrijus really!?
how do you do that? :) 18:45
pmichaud autrijus should have that functionality built into pugs soon :)
autrijus boss conversion?
mmm.
Corion autrijus: Perl6 is currently the only language with a non-delusional promise :)
autrijus I thought Python 2.5 is quite practical too
pmichaud my, what a difference a few months can make :)
autrijus it's almost 100 days :) 18:46
Corion autrijus: No - they already have solidified their classes, haven't they?
autrijus yeah, that is true
Corion and Python 3000 sounds even worse
Juerd 100 days of RAGING GENIUS INSANITY
autrijus er. don't even think about the 3K
pmichaud my impression was that back in january people thought perl 6 was quite delusional :)
Juerd pmichaud: Yea.
pmichaud: And people who haven't heard about Pugs still do
Corion pmichaud: Yes, but Pugs delivers what Perl6 promises ;) 18:47
... well, up until now, that is. Dunno about tomorrow :))
pmichaud well, pugs plus the things I'm seeing in the grammar engine have convinced me it's all doable
Juerd pmichaud: There were some of those people at Rotterdam.pm. I had totally forgotten that perhaps not everyone knew about Pugs
autrijus pmichaud: what things are you seeing?
pmichaud just the way the lexer and parser and codegen will all come together
autrijus oh. right.
Juerd pmichaud: After my what-happened-with-pugs-while-we-were-having-fun lightening talk, someone asked me: "so there is a perl 6 interpreter now?" "Yes" "But... ehm... hey... er... huh? wow!"
autrijus Juerd: I hope there's a recording or slides somewhere for that talk of yours :) 18:48
Juerd autrijus: None at all
autrijus: I came up with the idea during another talk, and accumulated data for it via svn log
pmichaud goes back to pge and parrot for a while
Juerd autrijus: I also did a talk on context in Perl 6 (30 minutes or so), on ... flipover - also completely unprepared 18:49
autrijus pmichaud: enjoy
luqui: try now? r2781
Juerd autrijus: Besides, if there was a recording, it'd still be Dutch.
luqui trying
Juerd autrijus: Also, there's nothing in those talks that you didn't already know
autrijus all true
Juerd s/Rotterdam.pm/Amsterdam.pm/ by the way
Rotterdam.pm has been dead for years
luqui Oh, Pugs.Parser is compile 18:50
compiling
Juerd (Which is unfortunate, as it's much closer to where I live)
luqui puts on some coffee
autrijus luqui: you can do "make unoptimized" or "make ghci"
luqui expects it to almost be done after he finishes
autrijus both will be much faster
pmichaud autrijus: do you have a preference as to named captures versus subrules priority?
Juerd Corion: It looks as if you get all three your ..., ??? and !!! to do exactly what you want.
Corion Juerd: Thanks man!
luqui seeing as how I don't care about the speed of the code, that might be a good idea
Corion (and all the world will blame me for eternity... Yay! :) ) 18:51
autrijus pmichaud: both are needed for bootstrapping, so whichever you see fit, but named capture will be more killer appish :)
Juerd luqui: In that message, I read "undefined function" as "*defined* function yada'ing"
autrijus i.e. something you almost absolutely cannot do in Perl5
pmichaud well, let's see if I can get them both out today. named capture is slightly simpler I think
autrijus ("almost" because people still did it)
Juerd I like the proposed semantics 18:52
Especially that ... fails, leaving things up to fatal for specification along with your preferred strictness
Corion Heh. Juerd: Though we'd have to discuss the precise meanings of "WTF?" and "WTF!". :-)))
jabbot pugs - 2781 - * [+] is now truly listop. 18:53
pugs - 2782 - * fix signature
pugs - 2783 - Made it more clear that our Net::IRC is
luqui ohhhhhhhh [+] is just a plain ol' operator, not a meta operator combined with + 18:54
autrijus does it mean that if I define infix:<Z> 18:55
I don't get [Z] automagically?
luqui I think you doo
do
I mean in pugs
Juerd luqui: It's a meta-operator that creates a new operator, allowing it to have different precedence, unlike with the >><< metaoperator 18:56
luqui unless the stuff that Larry's been talking about, rooting for the overdog and such
autrijus sure, that's just get precedence working; if you want autogen from infix ops, it's quite easy too
luqui: grep for
-- XXX - Query all infix here
and query all infix there :)
luqui ahh
Juerd autrijus: Is -- the comment operator in haskell? 18:57
autrijus look at currentUnaryFunctions etc for how.
Juerd: it's the comment introducer.
luqui is hosting a bbq in a half hour
Juerd That's what I meant
luqui he can probably dive in later today
Juerd luqui: I'm hosting websites ALL THE TIME :)
luqui yes, bbq, predecessor to bbs
Juerd Social stuff 18:58
luqui (bbr is no good, because nobody likes to be cold)
Juerd bbq => social, bbs => social, internet => no longer social
luqui hmm?
you lost me around "Social stuff"
Juerd What 'bbs' did you mean? 18:59
I assumed bulletin board system
luqui yeah
Juerd Nowadays explained as "small internet"
It's a social place, like a bbq :)
You meet people there
luqui I see, I think
therefore, I am
Juerd You see that you think?
Teach me that some day
luqui yeah, bbq requires more immediate time commitment 19:00
Odin-LAP I think none of us thinks.
Especially not me.
luqui people probably wouldn't like to hear "hey, entertain yourselves for an hour, I'm going to go hack on pugs"
Odin-LAP ('us' referring to humanity as such.)
luqui and they think "hack?" "pugs?" "entertain?"
stevan luqui: you might scare your guests off if you hack on some pugs at the BBQ 19:01
not to mention the fact they have very small ribs 19:02
luqui haha
autrijus so
!!!3
is false
but
!!! 3
is false? 19:03
Juerd is a syntax error?
autrijus !!! -3 ?
Juerd Why would yada accept arguments?
stevan what about !!!(3)
Juerd I think ...|???|!!! is a term by itself
&term:<...>
autrijus they are
jabbot pugs - 2784 - Added tests testing [+], [-], etc.
Juerd They're undef when used as a value
And undef can't be used as a subref
So yada() doesn't make enough sense 19:04
autrijus I'm just saying that, currently parsing !!!-3
needs more than 1-char lookahead
Juerd Why? 19:05
That's just undef - 3, but an undef that dies as soon as it's evaluated
Corion autrijus: Your idea worked. Now I should maybe print out a bit more than just "<Handle (maybe should be more explicit)>" :-)
autrijus Corion: "show" maybe
Juerd Unless someone overrides die to do nothing (I HATE THAT!!!!!, but people like kane (jos) want this), in which case the result is -3 with a warning of using undef
Corion autrijus: That's what I'm trying right now :)
Juerd: Don't complain about weird things that Jos does - he's trapped in his own world :) 19:06
Juerd Corion: I hate his idea that a module should never be allowed to die, and that die should be a noop sometimes, because he should just get some clue and use eval (try in p6), so that safety mechanisms aren't broken, but I do want Perl to be the flexible language in which idiots can actually do what they think is right. 19:07
autrijus including On Error Resume Next ? 19:08
can we have that in perl 6? :)
luqui ask Chip 19:09
Corion autrijus: Scary as it is, On Error Resume Next was the only sane way to program in VB
Juerd autrijus: That's what jos does, yes, but he puts that on other people's code.
Corion: No, it was not.
autrijus Juerd: no, overriding die() doesn't stop 1/0
Corion (because it was the only way you could trap the error and then check for it)
autrijus nor other fatal errors
Juerd Corion: on error gosub 123, and 123 HANDLEERROR : RESUME NEXT was. 19:10
autrijus: That is true.
autrijus Corion: I know that too well...
<- programmed Basic for 10 years, including 3years as VB consultant
Corion Juerd: Ah, yes, but that would mean you had one central error handler. I checked after each operation
autrijus: I did so too, in VB4/5 I think
autrijus *shudder* 19:11
Corion But life is better now :)
PerlJam autrijus: 10 *years*? Your torture was longer than most.
autrijus yeah, from 8 to 18 yrs old
my finger still remembers "cls; randomize timer" 19:12
luqui which is a linguistic travesty
why am I randomizing the timer?
Juerd Corion: ON ERROR GOSUB 123 : OPEN "foo" FOR OUTPUT AS #1 : ON ERROR WHATEVERTHEDEFAULTWAS 19:13
luqui programmed in qbasic for the first five years of his cyberlife
jabbot pugs - 2785 - Added test for builtin fail().
pugs - 2786 - * Added EOLs at EOFs.
luqui Juerd: you know, capitals weren't required
stevan Apple ][e Basic my my first :)
Juerd luqui: It made it that. 19:14
luqui: You'll note that my example is old style basic, as I'm using an explicit #1 (bad style in later basic, that had FREE(), later Free())
Juerd also used basic for a way too long time
jhorwitz remembers C64 Basic...
Corion Hah. VHandle stringification is now in (courtesy of show()), just passing the tests ... 19:15
Juerd age 7..17
Started using Perl when I was 15
luqui Juerd: I didn't notice... I remember very little basic
Juerd But continued to use VB for a few years
luqui Juerd: that's about the same as me
Juerd I also don't remember much of it 19:16
Which is good.
autrijus: My fingers don't remember that, because I switched to Dvorak :)
luqui you actually did it?
good for you
Juerd luqui: Years ago.
luqui kept saying "yeah, I'll switch"
autrijus Juerd: my input method(s) doesn't play well with dvorak
Juerd luqui: Just do it.
autrijus chinese input methods, that is :-/ 19:17
luqui it's not really practical when you have something to type for school in an hour
Juerd autrijus: Do you use those input methods for entering roman text too?
luqui: How much of your typing do you do at school?
autrijus Juerd: holding Shift key enters roman text
luqui no, not at school
*for* school
Juerd luqui: I type more than 99% of all my typing on my own keyboards.
luqui: I can live with 1% discomfort 19:18
luqui if I'm learning dvorak, I can't type a paper in an hour
Corion Ah, you know you programmed too much basic when you get flashbacks of print chr(34) & "Hello World" & chr(34) & vbCrLf
Juerd luqui: Oh, yes, you need some free time to switch
Corion: Puh, that's modern basic (visual basic)
luqui that's what I've been missing
Khisanth autrijus: you must have some very strong fingers...
Juerd Corion: Old basic used only + for string contact.
Corion Juerd: The only basic I get flashbacks from ;)
luqui Corion: I see junctions of strings
Juerd Corion: And CHR$, not Chr, because, well, sigils indicated type. For functions too.
luqui maybe they're called sligis? 19:19
Corion Juerd: VB has both, chr$() and chr() I think. But then, I only dream of it at night, or when I have to debug some MS Access code.
Juerd autrijus: And is that on a qwerty-like mapping? Then you can use Dvorak just as well.
autrijus right! that will solve all our ambiguities!
Juerd Corion: Yes, it has both.
autrijus instead of sort, say
$sort@
Juerd hahaha
Corion What about &sort@ ? Like, hungarian notation, except with sigils ! Mwahahahhahahahha 19:20
autrijus say*@( 1$ $+$ $sort@ @a )
luqui which would do what?
PerlJam sigils *are* hungarian notation
Corion VHandle stringify is in now ;-)
autrijus connecting dots was never that easy
Corion PerlJam: But not for the complete signature ;-)
autrijus luqui: function prefix and suffix to denote their context
Corion Like, @sort&@(&block, @list); # :-)) 19:21
autrijus yup
luqui ahh, then we can achieve C++'s worthless goal of context independence
PerlJam Corion: oddly enough I think we already have that in perl6 with :() ;-)
autrijus yes. you write @reverse@ when you mean it
and $reverse$ when you mean that
there can't be mistakes anymore
luqui except for choosing to do that :-)
autrijus :D
Juerd autrijus: @reverse$ 19:22
Hmm...
autrijus DEFINT A-C 19:23
Juerd NOOOOOOOOOOOOOO
autrijus DEFSTR D-F
DEFHASH G-Z
painless sigilless
Juerd Although DEFINT A-Z used to make most programs much faster
jabbot pugs - 2787 - Stringify VHandle
autrijus macro DEFINT { ... } # left as exercise
Juerd Remember Perl 5's reset? 19:24
reset 'a-z'
Hmmm!
autrijus hmm!
Juerd Suspicious.
D'ya think Larry was a BASIC nerd too?
autrijus study; reset; study; reset; dump dump dump
Juerd: sure, look at __DATA__ 19:25
Juerd haha
__DATA__ was a good idea though
luqui DEFINT /\$\w*int\w*/ 19:26
Juerd ew
labels
Now I know where they come from.
luqui every programming language ever?
Juerd And why I dislike their unquoted uglyness :)
luqui: nahhh, I try to ignore that there's more in this world.
Especially Python I like to think does not exist. 19:27
luqui: But $printer...
luqui The thing is about quoted labels. If you can say "foo":, what's stopping you from saying $foo:
Juerd Nothing, isn't it great? 19:28
It'd be silly to actually do so.
autrijus PRINT USING "@<<<<<< @|||||| @>>>>>>"
luqui you imagine that a code generator for a register-based virtual machine would like that?
Juerd autrijus: heee heee
luqui oh no
it all makes perfect sense now
luqui goes to hang himself
Juerd I do miss BASIC's PRINT USING 19:29
Because that could perfectly separate thousands
Which in Perl is a hell to get right.
autrijus luqui: You have exceedded the maximum number of tries.
Sorry, the committer was 'Amir Livine Bar-On'
jabbot pugs - 2788 - * parse for ??? and !!! (incomplete) 19:33
pugs - 2789 - Added -B to Help.hs.
Corion r2787 - datenzoo.de/pugs/win2k.html - 4768 ok, 57 failed, 899 todo 19:36
Oh. I should write pugsrun tests for -B ...
ninereasons when a sub is on the LHS of 'xx' , should we be able to spell 'sub() xx 4 ' in a way that it fills a list with 4 unique values? 19:41
sub or function
etc. .. 19:42
autrijus jhorwitz: I think I got compreg working
Juerd ninereasons: Currently, it returns 4 times the same sub 19:43
ninereasons: But see my proposal for XX in p6l, where I suggest that $closure XX 4 actively calls the closure 4 times, possibly returning 4 different values 19:44
ninereasons I think I got it. my @a = { rand(10) } xx 4
@a[2]() # etc.
is that right?
Juerd ninereasons: Right and ugly.
ninereasons very ugly
Juerd ninereasons: While waiting for XX or another alternative, just use plain old map, even though that's not really what you mean. 19:45
ninereasons: my @a = map { rand 10 }, 1..4;
ninereasons how should I track down your proposal? what's the title, Juerd ?
Juerd ninereasons: The initial post was done by luqui, titled "xx and closures" 19:46
ninereasons found it. thank you.
Juerd ninereasons: Larry still avoids blessing XX, probably hoping for something prettier, but he has used it one time in example code.
autrijus eval_parrot ' compreg $P0, "Pugs" $S0 = "say qq[There... and back again!]" $P0 = compile $P0, $S0 invoke $P0 19:47
'; 19:48
er.
eval_parrot ' compreg $P0, "Pugs" $S0 = "say qq[There... and back again!]" $P0 = compile $P0, $S0 invoke $P0
';
autrijus blames gnome-terminal
sigh.
Juerd Neat, autrijus 19:50
autrijus perlbot: nopaste
perlbot Paste your code here and #<channel> will be able to view it: sial.org/pbot/<channel>
pasteling "autrijus" at 220.132.132.105 pasted "roundtrip" (10 lines, 205B) at sial.org/pbot/9971 19:51
jhorwitz autrijus: compreg! 20:09
autrijus jhorwitz: completed (in 6 lines)! 20:10
jhorwitz autrijus++
autrijus I think writing C with a white glove is actuallly enjoyable :)
obra with a white glove?
autrijus obra: haskell FFI 20:11
jhorwitz: so, leo says we should probably define the embed.h or extern.h or whatever thing we'd like to use 20:12
obra ah
jhorwitz autrijus: sounds good. gotta run. back in an hour. 20:13
autrijus k. and I gotta sleep
jhorwitz sleeeeeeeeep
obra night, autrijus
autrijus nite!
Juerd Good night 20:17
jabbot pugs - 2790 - * Pugs is now a registered Parrot compil 20:33
pugs - 2791 - * add missing import
pugs - 2792 - Fix help text to mention say() instead o
autrijus nite :) 21:11
&
jabbot pugs - 2793 - * make parrot_config work when parrot is 21:53
pugs - 2794 - basic pod2html support (the HTML is ugly
pugs - 2795 - fixed some POD errors
stevan Basic pod2html is working now (if anyone cares) 22:00
pugs ext/Pod-Event-Parser/scripts/pod2html.p6 lib/Perl6/Pugs.pm > Pugs.html
jabbot pugs - 2796 - fixing the pod2html script 22:03
pugs - 2797 - Added a small script generating a Pugs L 22:23
pugs - 2798 - * Added a README pointing at mklivecd.pl 22:33
iblech FYI, I created a livecd-generating script in util/livecd. A precompiled image is at m19s28.vlinux.de/iblech/pugs/livecd.iso. 22:36
jabbot pugs - 2799 - golf.t now uses unique temp file names, 22:53
pugs - 2800 - Removed skip of all golf.t tests, becaus
pjcj Juerd: iff = if and only if 23:56
Juerd How is that different from if?
pjcj it is stronger 23:57
Juerd Hm. Okay. 23:59
Juerd doesn't understand, but thanks
arcady "a iff b" means "a implies b" and "b implies a"... basically, a and b are equivalent