pugscode.org/ | nopaste: sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, elf: etc.) (or perl6: for all) | irclog: irc.pugscode.org/
Set by Tene on 29 July 2008.
slavik is there a simpler way to read from stdin besides =$*IN? 00:25
wknight8111 that isn't simple enough? 00:39
slavik I like the old <> :)
also, is there a grammar usage example anywhere?
as in, I have a grammar, how can I check if a string $string matches the grammar? 00:40
wknight8111 I'm pretty sure it's $string ~~ Grammar::Rule
or maybe Grammar::Rule.match($string)
slavik k 00:41
wknight8111 or maybe both. It's probably faster to just start trying things then to look up a resource on it
do you have the Pugs repo?
slavik yes, it's installed and everything, just wasn't sure of the syntax
well, I defined my own grammar
wknight8111 $string ~~ /Grammar::Rule.TOP/ 00:42
no, I think it's $string ~~/Grammar::Rule/, which implicitly calls the TOP rule 00:43
(this obviously isn't my area of expertise)
slavik hmm 00:44
my $string = "google.com/";
that seems to be a problem for pugs
wknight8111 hmm, weird 00:45
slavik pugs: Internal error: Unknown pseudo-assignment form:Syn "=" [Var "$*_",Ann (Cxt (CxtItem (mkType "Str"))) (Val (VStr "google.com/"))] Please file a bug report.
p6eval pugs: OUTPUT[*** ␤ Unexpected "\"=\""␤ expecting ":", "(", operator or ","␤ at /tmp/CiWGr7LrHi line 1, column 54␤]
wknight8111 do you need to escape the forward slashes?
my $string = 'google.com' (with single quotes) 00:46
or my $string = "http:\/\/google.com\/"
slavik hmm, nope, nothing 00:47
hmm 00:48
perlgeek.de/blog-en/perl-5-to-6/07-rules.html 00:50
lambdabot Title: blog | Perlgeek.de Blog :: Rules (formerly Regexes)
slavik I copied my grammar from there
*** Cannot parse regex: Grammar::URL 00:51
hmm
pasteling "slavik" at 67.100.227.140 pasted "grammar example" (17 lines, 399B) at sial.org/pbot/32231 00:52
slavik there
wknight8111 Does that example work? 00:59
slavik no, that's why I posted it
wknight8111 I would try switching the last line to say $str ~~ URL 01:00
instead of /Grammar::URL/
slavik ty 01:02
hmm, doesn't match it :(
wknight8111 $str ~~ URL.TOP?
slavik no such method ... 01:03
wknight8111 oh wait, the trailing "/" doesnt match anything
$str = "google.com"
lambdabot Title: Google
wknight8111 that should match the regex, if you can find a way to call it 01:04
slavik hmm
wknight8111 or change token hostname { ([\w+][\.\w+]*) '/' } 01:06
slavik nope
wknight8111 what errors are you getting? is it saying your syntax is bad, or is it just not saying anything? 01:07
slavik nope, it just doesn't match
wknight8111 nopaste your current code? 01:08
pasteling "slavik" at 67.100.227.140 pasted "grammar example" (16 lines, 375B) at sial.org/pbot/32232
wknight8111 try changing TOP from a token to a rule? 01:11
I don't think tokens can contain references to other tokens
slavik nope
wknight8111 I don't have pugs on here now, so I can't really test any of this 01:12
and I dont want to take the effort to build it right now
slavik use cabal
wknight8111 okay, battery is dieing. Have to go. Good luck with your grammar 01:15
slavik bye
ty for the help
s1n @seen pmichaud 01:45
lambdabot pmichaud is in #perl6. I last heard pmichaud speak 1d 8h 5m 27s ago.
s1n is anyone familiar with the rakudo parser? i'm looking to see where a certain symbol is being processed 02:51
obra a/win 50 05:08
slavik ? 05:09
obra typo. sorry
commands are what most irc clients use for 'do something' 05:10
er. "slash commands"
slavik I know what slash command are
meppl good night 06:27
slavik night
meppl ;)
raiph rakudo: ::qux = Foo::Bar 07:20
p6eval rakudo 31292: OUTPUT[Scope not found for PAST::Var '::qux'␤current instr.: 'parrot;PCT::HLLCompiler;panic' pc 156 (src/PCT/HLLCompiler.pir:103)␤]
raiph rakudo: my ::qux = Foo::Bar 07:23
p6eval rakudo 31292: RESULT[undef]
raiph rakudo: Foo::Bar::Baz = "abc"; my ::qux = Foo::Bar; say "!" if "abc" ~~ ::qux::Baz 07:26
p6eval rakudo 31292: RESULT[0]
raiph rakudo: Foo::Bar::Baz = "abc"; my $qux = Foo::Bar; say "!" if "abc" ~~ ::($qux)::Baz 07:29
p6eval rakudo 31292: OUTPUT[Use of contextualizer :: not implemented. at line 1, near "::Baz"␤␤current instr.: 'parrot;Perl6;Grammar;Actions;circumfix' pc 128050 (src/gen_actions.pir:10599)␤]
raiph pugs: Foo::Bar::Baz = "abc"; my ::qux = Foo::Bar; say "!" if "abc" ~~ ::qux::Baz 07:30
p6eval pugs: OUTPUT[*** ␤ Unexpected "="␤ expecting ":" or "("␤ at /tmp/el6VVmTDSN line 1, column 33␤]
raiph pugs: Foo::Bar::Baz = "abc"; my ::qux := Foo::Bar; say "!" if "abc" ~~ ::qux::Baz 07:31
p6eval pugs: OUTPUT[*** ␤ Unexpected "="␤ expecting "("␤ at /tmp/IdU7MDijYl line 1, column 34␤]
raiph pugs: Foo::Bar::Baz = "abc"; my ::qux ::= Foo::Bar; say "!" if "abc" ~~ ::qux::Baz 07:32
p6eval pugs: OUTPUT[*** ␤ Unexpected ":="␤ expecting "("␤ at /tmp/9g7C933VdR line 1, column 34␤]
Ontolog wrt MMD does Rakudo implement it's own type-matching algorithm or use Parrots? 07:58
pmurias Ontolog: from Jonathan's blog post i think it uses Rakudos blog, anyway what would be the point of a MMD in parrot *not* used by rakudo 08:05
Ontolog hm? 08:07
the Parrot docs say Parrot has its own method finding algorithm for MMD
but that any language can plug in its own
so I'm wondering if Rakudo plugs in its own or uses Parrots? 08:08
moritz_ I think it uses its own 08:18
Ontolog what does Test.pm suppose to do anyway? 08:21
why would it be making a call to split and causing the no such method problem 08:22
moritz_: did you see my last perl6-comp mail?
i still don't feel like i got a satisfactory response from anyone so maybe you could take a look
?
oh I see Test.pm is the test module all the tests in the pugs repo use 08:23
but i don't understand how ../../parrot perl6.pbc --target=pir --output=Test.pir Test.pm 08:24
calls split
moritz_ Ontolog: which one? the :multi :method mail? 08:29
Ontolog yes 08:30
"method signature issues"
moritz_ I think that much code in the builtins is a bit cargo-culted and not necessarily optimal 08:32
Ontolog cargo-culted? 08:33
moritz_ copied from other signatures without really understanding it 08:35
Ontolog ahh i see 08:35
well that's what i want to do, is understand it
i feel kind of stuck right now 08:36
is there an area other than the builtins that needs some help? 08:41
moritz_ lots of things 08:45
there are many bugs in the RT that could need some attention
then there's the ROADMAP
rakudo_svn r31294 | tene++ | [parrot] 08:48
r31294 | tene++ | Remove the second argument passed to exception handlers.
r31294 | tene++ | You can get the message by stringifying the exception object.
r31294 | tene++ | All parrot tests pass. Looks like the languages are all okay too.
pmurias Ontolog: you could try rewritting some of the pir stuff in Perl 6 11:36
Ontolog yes i would enjoy doing that actually, can builtins be written in Perl 6 now and used by Rakudo? 11:46
pmurias ruoso: hi 11:59
ruoso hi pmurias
pmurias ruoso: what do you think of using GET and SET for locked access to objects? 12:01
ruoso what do you mean?
pmurias SET(foo,123) would smop_lowlevel_wrlock(invocant);((appopriate_cast*)invocant))->foo = 123;smop_lowlevel_unlock(invocant); 12:07
pmurias and GET(int,foo) would smop_lowlevel_rwlock(invocant);int foo = ((appropriate_cast*)invocant)->foo;smop_lowlevel_unlock(invocant) 12:08
ruoso but how would it know which type to cast to? 12:09
ah..
you mean in the ri dsl
pmurias yes 12:10
the DSL would write the appropriate macro 12:11
ruoso right... just consider it would be interesting to consolidate serveral accesses into a same lock call... 12:12
since it's fairly common to access more than one value at a time
pmurias yes thought about it
pmurias ruoso: locks should propably be used to perform a set of operations as an atomic unit so making them too easy might not be a good thing 12:28
ruoso pmurias, and also, I think we should start think in s1p... 12:29
pmurias ruoso: things not supporting FETCH is the blocker on s1p 12:34
ruoso just that :)? 12:35
that's easy to solve :)
pmurias that's the blocker for having the easy things working ;) 12:36
ruoso pmurias, so let's fix it :P 12:42
pmurias ruoso: with copy and paste? ;) 12:43
ruoso pmurias, well... maybe it's not a bad idea 12:45
I mean... if that takes us to s1p sooner... 12:46
pmurias it would only be } else (SMOP__ID__FETCH == identifier) { ___VALUE_FETCH___; } else if (SMOP__ID_STORE == identifier) { ___VALUE_STORE__; } 12:49
ruoso where ___VALUE_FETCH___ is the placeholder for the "modifying read-only value" thing... 12:51
pmurias ___VALUE__STORE___ 12:52
ruoso yeah... that... 12:55
pmurias it should be possible to add it with a script which would look for ___UNKNOW_METHOD___ 12:59
ruoso indeed... 13:00
pugs_svn r22303 | pmurias++ | [smop/pugs] 14:10
r22303 | pmurias++ | added .FETCH and .STORE to Code and constant identifiers
r22303 | pmurias++ | m0ld emitted by pugs uses FETCH
pmurias_ Ontolog: you are Chris Davaz? 14:16
Ontolog pmurias_: yes 14:29
perlbot: who is Ontolog?
perlbot I already have an entry for who
Ontolog perlbot: Ontolog?
perlbot cdavaz
pmurias Ontolog: Pugs isn't dead 14:33
masak perlbot: masak?
perlbot masak
masak right.
pmurias /whois nickname is the right command in irssi?
Ontolog /whois works with every irc client i've ever used 14:34
masak aye.
Ontolog pmurias: i didn't say it's ... dead... i say its not being actively developed 14:36
pmurias you'll get away with it this time ;) 14:38
Ontolog just did an svn update on pugs
I see the tests are indeed being developed and smop! 14:39
i still don't really understand this smop stuff
why is it all separated into its own space? 14:40
i thought it's just a feature of perl 6
pmurias smop is a different runtime from parrot 14:41
Ontolog smop is a perl 6 interpreter? 14:42
pmurias yes 14:43
and i'm using pugs as the compiler for smop
Ontolog huh? i'm so confused 14:44
pugs and smop are both perl 6 interpreters yes?
how does pugs compile c code?
pmurias pugs compiles perl6 into m0ld (the smop eqivalent of pir) 14:45
pugs can also just run the AST 14:46
masak that's what it "normally" does 14:47
Ontolog ahh i see, ... i think...
pugs *is* perl6 (or a subset thereof) yes?
masak Ontolog: Pugs implements (a subset of) Perl 6
Ontolog so perl6 compiles perl6 into m0ld then runs it?
masak: yes, that's what i'm saying
sounds all kind of circular to me 14:48
masak Ontolog: Pugs can compile Perl 6 into m0ld, and then smop can run it
Ontolog i see, so the part where pugs compiles perl6 into m0ld, is that written in haskell?
masak Ontolog: alternatively (and "normally"), Pugs just parses the Perl 6 into an AST and runs that
Ontolog: I guess, yes. Pugs is written in Haskell. 14:49
pmurias would know :)
pmurias it is 14:50
it compiles only very little atm, but this will change this week
masak likes the promising near future of smop, elf, Rakudo... 14:52
exciting times indeed! 14:53
Ontolog i think it's so messy! 14:54
so many redundant efforts going on
if we were all just focused on one of them i think it would be much better for perl6
sorry to be such a party pooper :p 14:55
masak Ontolog: you're not, you're just not used to -Ofun :) 14:56
this is how Things Are Done in Perl 6 land 14:57
and no, it wouldn't go faster if everyone crowded around one single project
Ontolog well, not by itself no
masak I've seen all the large projects contribute in some way to the furthering of Perl 6 14:58
Ontolog but with proper management
of course it would
masak Ontolog: well, Parrot is definitely managed 14:58
Ontolog what about rakudo?
masak the more I find out about the structures in place around Parrot, the more I'm in awe
Ontolog i haven't been here long but i get the feeling that the left hand doesn't know what the right is doing
avar Ontolog: Presuming a world where those resources are managable, which they aren't. Some people have no interest working on one of these implementations and want to do their own
masak Ontolog: I think that's an exaggeration 14:59
Ontolog: but I'd be interested to know what makes you think that
Ontolog masak: maybe is, just a feeling... people tend to have conflicting views of how things should be done
masak Ontolog: ah, you're referring to the recent discussion about :multi and :method? 15:00
Ontolog masak: as one example yes
masak that's just healthy in-project discussion, according to me
Ontolog my point is, it's not clear in everyone's mind how we should be going about development
masak people are not robots, and sometimes you need to communicate common practices and patterns
Ontolog it's just sort of trial-and-error and if 'it works', it goes in
masak Ontolog: decidedly not. 15:01
Ontolog: apparently you haven't been submitting many bugs yet to Rakudo :)
Ontolog masak: yeah not so many
just starting out
just giving me first impressions is all
masak yes, that's important, of course
Ontolog i know there is a lot for me to learn really before i am in a place to criticize 15:02
masak for me too
Ontolog: you're right in the sense that Rakudo could need more hands
you can never assume that things will be done for you 15:03
Ontolog well it would be nice if we made it easy to get people 'onboard' with developing rakudo
like some kind of docs on how to develop rakudo
but so many things are in flux too i know
like, are we doing the builtins in pir or perl6?
we still don't know
masak Ontolog: PIR, mostly
Ontolog but when some problems come up about pir / parrot then the response it 'well we're going to be doing things in perl6 later on so it won't matter' 15:04
it would be nice if we just settled on one and ironed out all the problems in that one area
masak Ontolog: I hear you. not saying you're right or wrong, just that every change from current affairs will need manpower, and exercise of will 15:06
Ontolog indeed... i'm focusing right now on learning parrot a bit more before i continue with the perl6 builtins 15:07
pmurias Ontolog: the problem with PIR is one should be emitting it not writting it
Ontolog so many problems pop up that i don't know how to handle
pmurias: what's the problem with hand-written pir?
pmurias: and isn't it kind of chicken-and-egg? i mean we need perl6 features to be written (in pir) before we can use perl6 to generate pir, no? 15:08
pmurias you propably need a tiny bit of pir, but having stuff such as the PCT in pir is not a good thing 15:10
masak Ontolog: nqp can generate PIR
Ontolog is nqp complete? and can it generate any pir needed by perl 6? 15:11
so this is what i'm saying... i don't know what i should be doing, what language to be developing in, and where to put it
some kind of ground-rules would be nice
masak Ontolog: npq is "complete enough". it does things. it's not "complete" complete 15:12
Ontolog: who would you like ground rules from?
Ontolog: re nqp completeness, see compilers/nqp/README.pod in the Parrot tree 15:13
Ontolog masak: i don't know.. who's like the 'team lead' for rakudo? 15:14
masak Ontolog: pmichaud
Ontolog ok
masak it's definitely ok to ask him stuff 15:15
Ontolog he's so busy developing though, hard to get access all the time
masak Ontolog: still, specific questions are always welcome
Ontolog hmm yeah maybe i'll hit perl6-compiler with some more
masak and if you volunteer to put together a document with tips for newcomers, that would definitely be appreciated by people 15:16
Ontolog yeah i wouldn't mind doing that, as soon as i find out myself ;-)
masak Ontolog: I choose mail when my questions exceed a certain complexity threshold, or when I don't know who knows the answer. otherwise, I stick with IRC. YMMV. 15:17
:)
Ontolog good idea hehe 15:17
anywho time for me to go to bed
Ontolog & 15:18
pmurias pugs: my $var;(do {say 1;$var}) = (do {say 2;7});say $var 16:00
p6eval pugs: OUTPUT[1␤2␤7␤]
pugs_svn r22304 | Whiteknight++ | [Book] A few small updates to chapters 6 and 7 16:16
pmurias audreyt: my declarations are not marked in PIL1 in any way, but variables are initialised at first use? 17:01
ruoso: do you think adding lookup_or_new to LexicalPad is ok? 17:02
ruoso pmurias, that's what autovivification is, isn't it? 17:05
I mean.. at this moment, hash already autovivifies...
not as specced for p6, but it does 17:06
pmurias so lookup should do autovivification instead of printing an error for an unknown var? 17:07
ruoso ops.. sorry... you said lexicalpad and I read root namespace 17:08
pmurias, well, we need to support "no strict" at some time... 17:09
but do you have any immediate use for "no strict"?
pmurias "no strict" is a bit useless 17:10
anyway it falls back to globals instead of creating a lexical 17:11
ruoso pmurias, but "lookup_or_new" is "no strict", isn't it? 17:13
pmurias ruoso: the problem i have is that pugs doesn't mark lexicals
ruoso it doesn't need to 17:14
every time you use a variable you lookup for it
ruoso senses that pmurias is talking about "our $foo"
pmurias meant it doesn't mark lexical declarations
ruoso it doesn't have the "my $foo" in the AST? 17:15
pmurias yes
ruoso it probably stores in the block then...
it needs to store somewhere...
pmurias stupid me, it does 17:18
ruoso :P 17:20
pmurias++ # pugs -Cm0ld is pretty impressive 17:28
pmurias, but $*OUT shouldn't be looking in the lexical scope 17:29
it looks directly in the global namespace
pmurias yes
;) 17:30
ruoso as well as ::Code
pmurias Code doesn't 17:31
you can have "my class Code {...}"
ruoso oh... ok...
pmurias but i forgot about the * twigil in $*OUT 17:32
ruoso does that mean that "use Foo" is required not only for making sure the file is load, but also to declare locally the name?
or does that mean that the lexical scope only goes lookup global names for class names? 17:33
pmurias i think class names are lexical 17:34
which propably means packages are lexical too
ruoso hmm 17:36
ruoso re-re-re-re-reading specs
pmurias & 17:37
ruoso indeed... an explicit "use" is required to have some package visible... S11:130 17:49
ruoso hmm... actually that was about exported variables, not the package name itself... 18:15
ruoso TimToady, considering class, module and package names are lexical, does it mean that "use" will bind the global package name to the local lexical scope? the other alternative is the lexical scope going to find globals when it is not found, but the boring part is that it should only do it for package names, not for other types of variables... 18:27
and more importantly, does that mean that every time a topmost scope is initialized, all the built-in types need to be declared in that scope? 18:29
which could actually mean that there's a Prelude scope... which is probably a sane idea 18:30
and every "root" scope has the prelude scope as the "outer"
that is actually a very good idea :)
ruoso . o O ( nothing like finding the solution just by asking for it ) 18:31
wknight8111_ moritz, do you have that link again? 19:27
my computer crashed :(
moritz_ wknight8111_: irclog.perlgeek.de/parrot/2008-05-31#i_322490 19:28
lambdabot Title: IRC log for #parrot, 2008-05-31
wknight8111_ I just got the message that linux thinks my laptop battery may be "old or broken" 19:29
so that's disheartening
moritz_ :( 19:30
wknight8111_ so $string ~~ MyGrammar.new is the syntax that we should be using? 19:32
as opposed to "MyGrammar" or "MyGrammar.TOP"?
moritz_ it is, but not yet in S05
wknight8111_ okay, so this whole area is still under design/review? I won't work on that chapter of the book then till I get some confirmation about it 19:33
moritz_ I proposed a patch,but the thread was warnocked 19:35
www.nntp.perl.org/group/perl.perl6....29636.html
lambdabot Title: [PATCH] How to match against a grammar - nntp.perl.org, tinyurl.com/4rcksm
moritz_ wknight8111_: also the section that calls methods on $_ is misleading - $_ isn't `self' by default 19:36
wknight8111_ This is exactly the reason why I like writing my books in a wiki: When things change in the world, it's fast and easy for the book to change
moritz_ but it's hard to make money out of it ;-) 19:37
wknight8111_ isn't always in it for the money 19:38
wknight8111_ is in it for the good of all mankind 19:39
masak moritz_++ # Impatience workaround 19:39
moritz_ wknight8111: as long as they don't contradict as goals I'm in for both ;) 19:41
wknight8111 I'm young though, I have plenty of time to make money 19:42
I've got an entire $day_job for that purpose
moritz_ I don't ;)
wknight8111 I come home at night and I'm tired of making money, I want to relax by writing code and writing books :) 19:43
moritz_ but that reminds me... I could dump the PODs from my perl-5-to-6 blog into the pugs repo 19:44
wknight8111 that would be nice! 19:49
moritz_ done 19:51
pugs_svn r22305 | moritz++ | [docs] added POD files for the "perl-5-to-6" blog
wknight8111 moritz++
pmurias ruoso: the problem with a Prelude scope is that you can't unimport stuff 19:53
scrottie grr. 20:05
pmurias is any one here familiar with pugs internals? 20:08
pmurias ruoso: i think we will have to work around Pugs not putting 'my $foo' in the AST (as sadly is the case) 20:12
ruoso pmurias, is it even possible to unimport things from the prelude? 20:14
pmurias, but it doesn't even define in the block the local variable declarations? 20:15
ruoso eat something &
pmurias pugs dosn't use PIL1 when executing programs? 21:34
is my package GLOBAL {...} legal? 21:41
ruoso pmurias, I don't think so 21:42
pugs_svn r22306 | pmurias++ | [pugs/mold] pugs -Cm0ld handles multiple arguments to a method/function calls 22:39
raiph diakopter: ping 22:56
@seen diakopter 22:58
lambdabot diakopter is in #perl6. I don't know when diakopter last spoke.
ruoso @tell pmurias, how hard do you think it would be to have pugs running the mold instead of just emitting it? 23:04
lambdabot Consider it noted.
pugs_svn r22307 | putter++ | [elf] Minor tweaks. 23:42
r22308 | putter++ | [elfish/on_sbcl] Added basic OO. Fleshing out language features. 23:51
r22308 | putter++ | PrimitivesSBCL.pm has grown to include the elf_g Prelude.
r22308 | putter++ | Progress on download and compilation of as yet unused CL libraries.
r22308 | putter++ | README updated.