Pugs 6.2.6 uploaded by cpan-upload.p6! | pugscode.org/ <Overview Journal Logs> | pugs.kwiki.org | paste at sial.org/pbot/perl6
Set by integral on 2 June 2005.
kelan stevan: do me a favor and type some unicode characters like hypers or any of the set operators 00:03
i've been battling my terminal all afternoon trying to get utf8 setup
stevan kelan: I have no idea how to :)
kelan oh heh ok:)
stevan actually, wait a second
kelan maybe i'll try copy and paste from somewhere 00:04
stevan I will copy paste from some Pugs stuff
kelan: ???
hows that?
kelan hmm. three question marks 00:05
« 00:07
yay that worked
?eval (1,2,3) »+« (4,5,6) 00:08
evalbot6 Error: unexpected "\\" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
kelan hmm
?eval (1,2,3) »+« (4,5,6);
evalbot6 Error: unexpected "\\" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
kelan ?eval my @a = (1,2,3); @a »++; @a
evalbot6 Error: unexpected "\\" expecting operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input 00:09
kelan ?eval 1+2
evalbot6 3
kelan ?eval my @a = (1,2,3); @a >>++; @a
evalbot6 Error: Can't modify constant item: VInt 1
kelan ?eval (1,2,3) >>+<< (4,5,6);
evalbot6 (5, 7, 9)
kelan it looks right to me, but maybe its sending the wrong thing
jql ?eval my @a = map { 0+$_} 1,2,3; @a >>++; @a 00:11
evalbot6 Error: Can't modify constant item: VInt 1
jql ?eval my @a = map { 0+$_} 1,2,3; @a
evalbot6 [1, 2, 3]
theorbtwo It's probably an evalbit problem. Lots of back and forth between perl6, perl5, and perl6. 00:13
(no, that wasn't a thinko.)
kelan theorbtwo: did those hyperops come across okay, then? 00:14
theorbtwo They looked OK to me. 00:15
kelan ok good
theorbtwo ?eval length "«", ord "«" 00:19
evalbot6 *** unexpected ( or "(" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input at -e line 4, column 4
theorbtwo Right. Evalbot looks broken.
theorbtwo wonders if there's anybody about who feels like helping what is likely a stupid user error with parsec. 00:21
kelan i don't know anything about parsec, or i would 00:22
crysflame huh. evalbot groks UTF-8? 00:34
heh! woo re: topic
theorbtwo crysflame: Looks like it doesn't, but it certianly should. 00:37
autrijus the quotemeta() thing is broken 00:47
in evalbot 00:48
it should probably only quote a few things like " and \ and \n
robkinyon stevan: ping 00:49
ingy hola 00:50
autrijus yo
ingy autrijus: I am ready to submit my new ingyism to pugs for review 00:51
autrijus ingy: do so! 00:53
ingy autrijus: doing so! 00:54
autrijus waits for "done so!" 00:56
theorbtwo AUTRIJUS!
ingy done
theorbtwo I'm having parsec woes.
ingy hi theorbtwo
theorbtwo INGY! 00:57
WHOEVERELSEISHERE!
ingy does the loud people dance
theorbtwo I'm trying to get %MY:: to parse.
So I added in an endbit <- option "" (string "::") to Pugs.Parser.ruleVarNameString, right after names, and added a ++ endbit to the return. 00:58
That gives me nothing when there's not a :: and an error when there is, which isn't what I was going for. 00:59
Changing the "" to "x" gives me an x on the end of things without a trailing ::, and an erro on things with one.
Adding a try in like the line above doesn't help.
svnbot6 r4416, ingy++ | Test-Less comes to Pugs 01:02
r4416, ingy++ | Test::Less helps speed up development testing by allowing people to categorize
r4416, ingy++ | tests with various keywords, and then prove subsets of those tests.
r4416, ingy++ | It keeps all its info in t/Test-Less/index.txt. You don't have to use it if
r4416, ingy++ | you don't want to. It is an author-side tool, so support does not need to be
r4416, ingy++ | distributed. But the index should be distributed...
ingy ouch. grrr
autrijus theorbtwo: so, well, er.
change "sepBy1" to "sepEndBy1" is the answer to all problems. 01:03
because it means it can be separated by, as well as ended by, ::.
theorbtwo That makes the end bit optional, and tells me if it's there?
The problem is that %MY and %MY:: are distinct hashes, AFAIK.
autrijus true. 01:04
ok then. change many1 wordAny
to many wordAny
will fix that.
clkao autrijus: hola.
ingy clkao: hola
clkao hi ingy
autrijus (then you'd not need sepEndBy1; sepBy1 would do) 01:05
yo clkao.
clkao autrijus: throw random hackathon productivity tool thoughts at me
svl is very cool
autrijus clkao: telepathy matrix
biofeedback on commits
ingy clkao: are you going to Toronto?
clkao bah, something that simple software can solve 01:06
ingy: no
theorbtwo clkao: lots of mics, live transcription to #perl6.
Speech synth of lines on #perl6?
autrijus speech reco and synth
theorbtwo Hm, no connection, so those are out.
autrijus there is connection
theorbtwo Oh. I thought it was "steal the nebihor's phone at night".
autrijus s/phone/adsl/ 01:07
not sure about the 'at night' bit
clkao so, svl will allow you the publish your local repository for people around to mirror / branch from
autrijus john also mentioned possible cell phone based bandwidth 01:08
clkao so you both will be able to commit very fast
and merge from one another
theorbtwo Oh, sounds much better then what I was thinking, then. 01:09
01:13 theorbtw1 is now known as theorbtwo
theorbtwo Hm, that works, and feels somewhat clener. 01:18
However, it now thinks "%" (in term position, of course) is a varable name.
I'm going to call that "OK", at least for now. 01:23
autrijus er 01:24
when (null names) $ fail ""
theorbtwo No effect. 01:26
autrijus case names of 01:27
[""] -> fail ""
_ -> return $ (sigil:twigil) ++ ... 01:28
theorbtwo OK
autrijus btw, during hw2005 writing I noticed that the envStash is used to recalculate operator table
theorbtwo Ah, I see the difference.
autrijus for each OP 01:29
I think a new RuleState record to cache the op table will work much better.
and speed up parsing
but I need to finish the paper today as the first priority :-/
theorbtwo When's the deadline on it? 01:30
autrijus 10th
theorbtwo That'd be good; there's quite noticable delays.
autrijus but realistically I won't get any time when I'm in Vienna
theorbtwo Right.
You can write on the plane, but that's cutting it rather close.
autrijus so it needs to be today.
no
the plane time is reserved for the talk!
two talks, in fact. 01:31
meppl gute nacht
theorbtwo Ah.
G'night, meppl.
meppl ;)
ingy autrijus: ping 02:33
autrijus ingy: pong 03:30
nothingmuch: autrijus.org/tmp/readerT-spoiler2.txt
Eval is made completely polymorphic; with that definition we're ready to:
* embed Harrorth into Pugs with zero lines to change in harrorth and only two short instances to write 03:31
* change Harrorth into a compiler targetting Parrot without touching Eval.hs
(and reuse all the code in eval.hs)
crysflame neat 03:36
autrijus praises merciless abstraction 03:38
obra Harrorth? 03:43
autrijus obra: nothingmuch's forth implementation -- he chronicled all the details of how he learned haskell by coding this from scratch 03:45
fascinating read. the repo is at perlcabal.org/~nothingmuch/harrorth
check the doc/ for journal 03:46
obra ah. cool. 03:48
ingy autrijus: I just wanted to show that you can do this
test-less -prove -v failing
... 03:49
Failed 9/9 test scripts, 0.00% okay. 45/82 subtests failed, 45.12% okay.
All the current (as of yesterday) tests that are failing
If you make a test pass...
test-less -untag failing t/oo/destruction.t 03:50
gaal hey autrijus, i was having some problems figuring out signal hadnlers the other night.
autrijus ingy: granularity is at testfile level?
ingy: I wonder how it plays with our current unit level markers
ingy: but very cool
ingy read the doc 03:51
but...
gaal in System.Posix.Signals, installHandler :: Signal -> Handler -> Maybe SignalSet -> IO Handler
autrijus gaal: win32 has S.P.Sig?
gaal what the hell is SignalSet for? :)
ingy you can mark any test file with any keyword
gaal no, it doesn't...
ingy so yes, it is at the file level
gaal i also have (slowish) linux boxen to test on.
ingy hopefully people will categorize the tests and commit the index.txt changes 03:52
autrijus gaal: www.delorie.com/gnu/docs/glibc/libc_506.html
ingy: I'd like to derive index.txt from :todo markers.
ingy the nice thing is that it is orthoganal to other testing mechanisms
autrijus: please
autrijus so I can run all bugs, all features 03:53
ingy there is no limit on categorization
autrijus or all unspecceds
wouldn't that be nice.
gaal autrijus, thanks (i was thinking it was a haskell thing)
autrijus gaal: System.* are very thin disguses of FFI wrappers
gaal why are some of the builtin SSs functions though?
autrijus disguises, even 03:54
gaal oh, because so are the c versions. hmmm!
autrijus in fact, most of times there's no disguises.
ingy autrijus: grep -r some_pattern t | test-less -tag some-tag -
:)
gaal okay, cool. if i have time i'll be adding %*SIG later on then. (only to unix)
autrijus gaal++ 03:55
ingy autrijus: the index entries are one per line so that conflicts should resolve easy with svn
gaal couple of questions: how can i call into Prelude from Haskell?
and: is there a way to run something in the context of the main thread, that sees the call stack of every worker thread? 03:56
ingy er
autrijus: grep -lr some_pattern t | test-less -tag some-tag -
but ykwim 03:57
autrijus gaal: evalExp (App (Var "&File::open") (Just (Val $ VStr "file.txt")) []
gaal so cool! thanks.
autrijus or, if you want to be very lazy!
op1 "eval" (VStr "File::open('file.txt')")
;)
gaal :)
autrijus but then you get no compile time typechecks. 03:58
gaal: yes you can do that by using either TChan or thread signaling
ingy autrijus: also thanks to you I have filters for Test::Chunks like eval_stdout and eval_stderr (which open big testing doors to me)
autrijus gaal: but you need to be more specific to what kind of stack and what kind of inspection you want
gaal autrijus, look eg at the box here: www.unixville.com/~moazam/stories/2...heJvm.html 03:59
ingy at YAPC I'd like some help porting Test::Chunks to 6
gaal java responds to SIGQUIT and prints stacktrace for all threads
a nice feature to steal
autrijus gaal: oh. trivial 04:00
gaal: sending signal to each working thread; the runloop intercepts it and dumps the Env (escalating up envCaller)
gaal trivial to write something over caller, *if* i know how to iterate over threads.
autrijus gaal: you can factor our Prim line 447 04:01
gaal: and store it into a global @*CHILD_THREADS
or something like that
gaal okay, thanks! 04:03
autrijus gaal++ 04:04
gaal i think i'll go rowing now, though. see you later!
autrijus see ya!
chromatic Howdy. 04:47
autrijus greetings chromatic.
chromatic autrijus, I had a thought.
autrijus yes?
(I'm just about to go offline to hack hw2005, but I'd like to read your thought first :)) 04:48
chromatic Is the attribute-binding code we wrote yesterday consuming everything in bound before processing non-attribute default values in applyThunk
?
autrijus you know what, you're right
it passes the "bound" unaltered to applyThunk 04:49
method foo ($.z) {}
will create a _lexical_ binding to "$.z"
chromatic Options then may be to 1) copy bound 2) some sort or grep in the list comprehension
autrijus chromatic: the grep is implicit in <-
and in , (twigil ==) `any` ".:" 04:50
chromatic Right, with the condition in the comprehension.
autrijus so only those will be processed
but I worry about passing bound thru
a lexical binding of $.z sounds strange.
maybe we should delete the attribute args. 04:51
chromatic Keeping the binding of attributes in applyExp seems right to me.
autrijus i.e. use "partition"
in applyExp
chromatic Oh, I see what you mean.
autrijus so we don't introduce a garbage
"my $.z"
symbol in the lexical scope
chromatic <- partition ___ bound something something?
autrijus (attrib, normal) <- partition isAttrib bound 04:52
er no
let (attrib, normal) = partition isAttrib bound
since partition is pure
chromatic I think I know where and how; I'll take a shot now.
autrijus isAttrib ApplyArg{ argName = (_:':':_) } True
isAttrib ApplyArg{ argName = (_:'.':_) } True
isAttrib _ = False
er, change the "True" above to "= True" 04:53
chromatic Right.
autrijus that should be all there is.
cool. I'll go offline to write paper, then.
bbiab.
chromatic++ # rapidly accumulating haskell-fu
chromatic It's experience I lack.
autrijus It's for experience we hack. 04:54
autrijus waves &
chromatic Ahh, I see the problem. 05:12
We're approaching this backwardsly.
We shouldn't be checking the passed-in arguments for attribute twigils (which works, if you say Foo.new( 'bar'=> 10 )).
We should be checking the *code's signature* for twigils and pulling out arguments based on that. 05:13
crysflame done
chromatic autrijus, catch the previous couple of lines in scrollback when you have the chance. :) 05:18
crysflame chromatic!
crysflame bows.
nothingmuch good morning everyone
chromatic crysflame!
Sorry, that's all I have at this hour. 05:20
autrijus chromatic: hm? the arguments in ApplyArg _are_ the signatures 05:39
chromatic Are they? 05:40
autrijus I think so.
{ argName :: String -- ^ Name of the param that this arg is for
, argValue :: Val -- ^ Actual argument value, which may still be
chromatic I don't see anything referring to subParams, which is what I expect at the moment.
autrijus the argName is directly copied from subParams.
chromatic Does it still have the sigil in subParams? 05:41
Sorry, twigil.
autrijus it represents a binding
I think so.
gaal oh, btw, that reminds me if anyone wants to spec caller() a little bit better, currently it has a "params" member that's just a hacky show VStr subParams
autrijus you can trace() for it.
oh btw. I hacked in the op parser table cache.
about to commit. to wit:
$ time ./pugs.old -c examples/games/wizard.p6
real 0m4.690s
gaal ooh, that should greatly speed things up!
autrijus $ time ./pugs -c examples/games/wizard.p6
real 0m2.292s 05:42
autrijus bows
gaal woot!
chromatic Nice.
autrijus, when the argument comes in from the caller, it won't have a twigil.
When I add the twigil, the code works.
autrijus chromatic: you mean the name will just be "foo" ? 05:43
gaal i thought the days of 100% speedups were gone ;-)
autrijus gaal: you'd be surprised.
chromatic Yep, some_sub( foo => 10 );
gaal aiming for 200% speedups now? :))
autrijus chromatic: maybe I'm dense. but 05:44
some_sub(10);
will yield an ApplyArg that pairs the first param name
say "$foo"
with 10
gaal real -0m2.292s
$ time ./pugs.fast -c examples/games/wizard.p6
autrijus that is the only way we can introduce a lexical binding
under the "$foo" name
so I'm surprised that you say the applyArg has no twigil.
chromatic some_method (?$.z = 10 );
autrijus maybe we lost the twigil some time. 05:45
chromatic $obj.some_method( z => 20 );
autrijus wait. I know why.
gaal $work &
autrijus chromatic: Bin.hs 05:46
Bind.hs
line 41
has a blind "tail".
so $.z would expect a ".z" as name
not "z".
chromatic Exactly.
autrijus chromatic: there may be other such assumption in Bind.hs as well.
chromatic What's the easiest way to strip off the first to heads? 05:47
autrijus the first to heads?
chromatic two
autrijus dropWhile (not isAlpha) 05:48
dropWhile (not isAlphaNum)
dropWhile isPunct
or something like that
if you know you want to drop 2
then
drop 2
;)
chromatic In place of tail... trying.
autrijus drop :: Int -> [a] -> [a]
dropWhile :: (a -> Bool) -> [a] -> [a]
chromatic dropWhile *almost* needs a body! 05:49
autrijus hm? 05:50
svnbot6 r4417, autrijus++ | * Speed up parsing for 2x by caching the dynamically-constructed
r4417, autrijus++ | operator precedence tables, instead of relying on envStash to
r4417, autrijus++ | rebuild them in each token.
r4417, autrijus++ | <gaal> i thought the days of 100% speedups were gone ;-)
chromatic I'm trying to write this off of the top of my head.
autrijus dropWhile f (x:xs) | f x = xs; dropWhile _ xs = xs 05:52
chromatic Yep, pretty close to what I had.
autrijus praises recursion
chromatic Hm, there's a dropWhile in Prelude already. 05:53
autrijus, replacing tail with (dropWhile isPunctuation) didn't do it. 05:56
autrijus chromatic: time for your to learn trace() calls? 05:58
chromatic Sounds painful.
Can't we reason this out a bit first?
autrijus nah. it's actually easy :)
trace :: String -> a -> a
show :: (Show a) => a -> String
so whenever you want to trace something
chromatic Does the (name ==) happen before or after the dropWhile?
autrijus say "x y z" 05:59
you can simply slap (trace (show foo)) in front of it
trace (show foo) x y z
chromatic ah, easy.
autrijus simple as pie :)
(name ==) occurs after dropwhile 06:00
chromatic Won't that cause problems? 06:01
autrijus why would it?
find ((name ==) . tail . paramName) prms
chromatic dropWhile takes off two characters, in the case of an attribute.
autrijus find ((name ==) . (dropWhile isPunctuation) . paramName) prms
this means, in perl6
svnbot6 r4418, autrijus++ | * Revise hw2005 to agree with the now-optimised reality. 06:02
autrijus for @prms -> $prm {
if ($name eq $prm.paramName.dropWhile(&isPunctuation))
{ return $prm }
}
chromatic Where does name come from? 06:03
autrijus it's the name part of the pair 06:05
returned by unPair
unPair unpacks Exp into (String, Exp) 06:06
the String part is the name.
this is occuring inside a foldr.
it's an accumulating fold
see the haddock of bindNames for explanation.
chromatic Signature or parameter?
autrijus name is parameter like "z"
paramName is "$.z". 06:07
$obj.foo(z => 2)
chromatic Okay, so paramName should ignore any twigil when it does the matching.
autrijus right.
but I really, really need to run :)
may the trace be with you...
chromatic Thanks! 06:08
autrijus thanks too :)
chromatic++ # &
07:02 Aankh|Clone is now known as Aankhen``
svnbot6 r4419, autrijus++ | * hw2005.txt - leading paragraph for experimental features and 07:55
r4419, autrijus++ | embedded languages.
08:01 batdog is now known as batdog|gone 08:36 osfa is now known as osfameron
Nattfodd Is there a parrot channel somewhere or am I already in the right place ? 08:50
cognominal Nattfodd: the #parrot channel is on the irc.perl.org server 08:51
... not on the current freenode server 08:52
Nattfodd didn't know there was a irc.perl.org server... 08:53
thanks
cognominal this perl6 channel is also an attempt to break out of this incestuous world :) 08:54
pasteling "chromatic" at 63.105.17.30 pasted "Fix for *some* parameter bindings, but still not quite right" (27 lines, 1.2K) at sial.org/pbot/10771 09:04
autrijus notes we are 3 people away from 100 committers. 09:19
svnbot6 r4420, autrijus++ | * Leading paragraph on compilation and acknowledgements. 09:55