Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-soc, 2009-06-24

| Channels | #perl6-soc index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
16:17 moritz_ joined #perl6-soc
18:50 masak joined #perl6-soc
18:50 masak T minus 10.
19:00 moritz_ .
19:00 masak hi
19:00 moritz_ oh hai
19:00 moritz_ literal: are you there?
19:00 masak if not, it'll just be us mentors. :)
19:01 masak and sjohnson, it seems.
19:01 masak and a bot.
19:01 masak not such a bad turnout, to be sure...
19:01 masak but a GSoC student wouldn't hurt. :)
19:01 moritz_ aye
19:03 masak ok, we'll sit tight for a few minutes. he might simply be late.
19:03 masak I'll go browse the grok repo in the meantime.
19:06 sjohnson hi
19:07 masak oh hai
19:08 pmurias joined #perl6-soc
19:08 masak ah, more people --> merrier! :)
19:08 masak pmurias: we haven't started yet, 'cuz literal is MIA.
19:09 moritz_ but elvis still hasn't entered teh building ;-)
19:09 * masak reads elvis' source code in the meantime
19:10 pmurias masak: elvis - the vi editor?
19:10 masak no, in this case Mr. literal.
19:11 masak pmurias: but you're a GSoC student, too. maybe you can tell us a bit about your project.
19:11 masak far as I understand, your progress has been quite good so far.
19:13 pmurias mostly due to nasty things popping up as expected
19:13 masak good progress due to nasty things? please explain.
19:14 pmurias * not popping up
19:14 masak ah.
19:15 pmurias now i'm trying to get Test.pm to work so it's possible to test stuff properly
19:16 masak that does indeed sound like progress.
19:16 masak what's left for Test.pm to work?
19:16 pmurias only ok and plan work atm
19:18 pmurias was refactoring Signature so that positionals can also be used as named arguments like ok(... :desc("nice test") but got distraced by the meeting ;)
19:18 masak sorry to interrupt you. :)
19:19 moritz_ pmurias: I'm not your mentor so it's not my place to comment, but it would be nice to see more blog posts about your progress
19:19 moritz_ they don't have to be long or so
19:20 masak agreed. progress posts are always very nice.
19:20 pmurias the progress slowed down recently due to uni exam...
19:22 moritz_ anyway, that's also a complaint I have about literal's project
19:22 pmurias but i'll try to write some posts now that things should be getting faster
19:22 moritz_ it's virtually silent
19:22 masak aye.
19:22 masak and he's already at version 0.03 of grok!
19:22 moritz_ maybe one step would be to bring the commit messages into #perl6
19:22 masak like, how'd that happen? :)
19:23 masak that would certainly help.
19:24 masak regular blog posts would be even better, IMO.
19:24 masak I emailed literal, on the off chance that he's available through that channel.
19:40 masak actually...
19:40 masak while you're all here, I have things I'd like to discuss about grok that don't require literal per se.
19:41 moritz_ shoot.
19:41 masak let me first refer to http://svn.pugscode.org/pugs/docs/u4x/README , a delightfully short text about grok.
19:41 masak specifically, the syntax examples at the bottom.
19:42 masak I explained the gist of grok to viklund++ yesterday, and he exclaimed "you're going to need a full Perl 6 parser to do that!"
19:42 moritz_ well, glad we have one.
19:42 masak but I believe I don't. we're allowed to cheat endlessly here.
19:43 masak and assume that the user won't input whole programs.
19:43 masak what _is_ required is something that can recognize sub calls, method calls, different kinds of ops, etc.
19:44 moritz_ ie a Perl 6 parser.
19:44 masak well, a very small subset of one.
19:44 moritz_ what do we gain from usiing only a small subset?
19:45 masak oh, certainly, we'll use the full one (say, STD.pm) if it's easy to hook it in.
19:46 moritz_ it's what azawawi's syntax hilighter does
19:46 masak the work with Padre indicates that it's possible, at least.
19:46 masak aye.
19:46 masak I think you've convinced me. no sense in going off and creating a subset of STD.pm.
19:47 masak although...
19:47 masak hm...
19:47 masak then we're limited to valid Perl 6 programs, aren't we?
19:47 masak that's not really what we want either.
19:47 moritz_ or parts thereof
19:48 masak well, 'parts thereof' is exactly what we want.
19:48 moritz_ that's not to hard with STD.pm
19:48 masak good.
19:48 moritz_ you can tell it to start at a particular token/rule
19:48 moritz_ like EXPR, or noun, or whatever
19:48 masak thing is, we don't know which one we want to start at.
19:49 moritz_ I also see potential for two modes
19:49 moritz_ one is like a dumb keyword search
19:49 moritz_ you enter a *
19:49 masak that'll be the default, if I have any say.
19:49 moritz_ and it tells you: multiplication, whatever star, quantifier in regex
19:49 moritz_ and an "explain" mode
19:49 moritz_ where you enter 3*4
19:49 masak it's still up to the user to quote things in her shell, by the way.
19:49 moritz_ which is a vaild Perl 6 program
19:50 moritz_ and then it'll tell you that it's infix:<*>, the multiplication operator
19:50 masak interesting.
19:51 masak the basic use case I see is something like: the user types in `grok '[+]'`
19:51 masak out comes a dissection of that, namely infix:<+> and the [] metaop.
19:52 moritz_ but that's non-trivial
19:52 masak it's listed in a friendly way so that the user knows which two queries to proceed with to get more information about those.
19:52 moritz_ because you need more than a Perl 6 parser for that
19:52 masak you probably do.
19:52 masak but it's a very realistic use case, by me.
19:53 masak some user has encountered [+] and doesn't know what it means.
19:53 viklund joined #perl6-soc
19:53 masak viklund: o/
19:53 viklund 0/
19:53 masak :)
19:53 moritz_ masak: then we need to convince him to enter the whole line of code
19:54 moritz_ or we give a rather unspecific list
19:54 moritz_ where also the usage of [...] as an array composer appears
19:54 moritz_ because that's our "dumb keyword search"
19:54 masak I don't see why.
19:54 masak you can deduce from [+] that it's the metaop and not the array composer.
19:55 masak because the latter wouldn't be syntactical.
19:55 moritz_ so how'd you suggest we do this?
19:55 masak that's what I wanted to talk about...
19:56 masak I have this vision, but no clear implementation path.
19:56 moritz_ don't get me wrong, I'd *love* to see that working
19:57 moritz_ but it would need either 1) many tries which token to match
19:57 moritz_ 2) massive effort in re-implementing a part-of-Perl-6 parser (far beyond the scope of a gsoc project)
19:58 masak the Simplest Thing Possible would probably be to loop over all metaops cross-multiplied with all valid ops.
19:58 * viklund is backloggd'
19:58 masak that's not so hard.
19:58 moritz_ but that would only catch [+]
19:58 masak and it can likely be improved upon, too.
19:59 masak moritz_: yes, "only" :)
19:59 moritz_ well, you can get that by trying to match a prefx op with STD, too
20:00 viklund I know, decorate the entire grammar with explanations, then all you need to do is pull them out from the parse-tree ;)
20:00 masak yes, but you don't know in advance that '[+]' is a prefix op.
20:00 viklund ...somehow
20:01 moritz_ masak: that's what I meant with "many tries which token to match"
20:01 masak moritz_: yes, and I'm not contradicting that.
20:01 moritz_ viklund: the problem is that when a user enters [+], then that's not a valid Perl 6 program
20:01 moritz_ viklund: so simply throwing STD.pm at it doesn't do any good
20:01 masak being very helpful is likely very slow.
20:02 viklund no, it will have to be relaxed somehow
20:02 masak I definitely want grok to be able to handle things below the statement level.
20:02 moritz_ masak: maybe we/you should also talk to TimToady about that one
20:02 masak it operates more on the term level.
20:02 pmurias i don't think it's an unresonable to require entering a valid program
20:02 masak moritz_: yes, maybe.
20:03 moritz_ perhaps he has some insight as to what users might want to have explained, and how to parse that
20:03 masak not unreasonable, but a very saddening restriction.
20:03 masak remember, the user is asking because she doesn't know about the grammar.
20:03 masak grok is supposed to magically figure things out.
20:04 viklund grok is doubly groky. It groks what the user wonders so the user can grok what she wonder ;)
20:04 pmurias would you expect grok to handle [1?
20:04 masak pmurias: no.
20:04 masak is the question mark part of the query or your question? :)
20:05 masak in either case, no.
20:05 pmurias it wasn't intendend to be a part of the query
20:05 masak I'll refine my criterion to exclude [1 : the things need to be whole terms.
20:06 masak so paren-like things need to match up.
20:06 masak if they don't, grok is allowed to flag an error.
20:06 pmurias but most things are a statement
20:06 masak what does that even mean? :)
20:08 moritz_ a statement is a thing which, if you have two of them, you need to separate them by ;
20:09 pmurias my definition was more like too things you can separate by ;
20:09 masak ok, now I see what you mean.
20:09 masak it wasn't as meaningless as I first assumed. :)
20:10 masak still, I consider a few things that are not statements worthy of catching.
20:10 pmurias the inside of a rule is a different issue
20:10 masak you should be able to type `grok +`, for example.
20:10 moritz_ masak: handling prefix, infix, postfix, circumfix and postcircumfix should handle all of the operators
20:10 masak and it'll give you all three disambiguations I know of, plugs the ones I don't know. :)
20:11 masak moritz_: yes, so if we can make sure it's an operator, or a combination of operators, that's enough to make it work.
20:11 masak we're going to need tests for this. :)
20:12 viklund how is literal doing btw?
20:13 pmurias masak: you have do define your intended audience, most users stay complete noobies for a very brief period (at would be much better of reading a tutorial than checking what tiny bits of syntax do)
20:13 moritz_ viklund: we'd all like to know ;-)
20:13 pmurias but some shortscuts can be usefull even for a power user looking up what ~< does
20:14 pmurias * shortcuts
20:14 viklund what does ~< do?
20:14 masak pmurias: the target group is people who are confused by a certain piece of syntax in a Perl 6 program.
20:14 moritz_ viklund: make the parser explode? no idea ;-)
20:15 masak viklund: string shift left.
20:15 masak for details, see S03. :P
20:15 viklund ...
20:15 moritz_ masak: I think the point is that people aren't confused by syntax unless they see that syntax somewhere
20:15 moritz_ masak: and if they see it somewhere, chances are that it parses at least
20:15 masak moritz_: oh, sure. I meant "in a given Perl 6 program".
20:15 masak we'll assume that it parses.
20:16 masak but I still think it's too restrictive to have to imput the whole statement.
20:16 moritz_ then the problem is solved. Let the user paste the program ;-)
20:16 masak the user should get to input the thing that confuses her.
20:16 masak moritz_: no, that's not good enough.
20:16 moritz_ that's fine, but I don't think it's a reasonable goal for now
20:17 masak let's make it a long-term goal.
20:17 masak we can focus on the simple cases first, like + and *.
20:17 masak that's fine.
20:17 moritz_ ok.
20:17 masak we don't need to solve everything during the GSoC period.
20:17 moritz_ aye
20:17 viklund ahh, its on a buffer
20:17 masak but it'll take more than a couple of reasonable people disagreeing with me to change the original goal of grok. :)
20:18 moritz_ and if things are kept modular, it shouldn't be much harder to do later on
20:19 masak nod.
20:19 moritz_ anything else we want to discuss?
20:20 masak well, I was going to discuss the data format...
20:20 masak I've been very back-and-forth on that.
20:20 masak right now, I'm leaning towards keeping everything in one big honkin' Pod file.
20:21 masak but I expect to have my mind changed within the next few minutes, because it's not a a decision I've set in stone. :)
20:21 moritz_ well, the difference between one big and many small files is basically a cat
20:21 moritz_ a cat(1) I should say ;-)
20:22 masak meow.
20:22 masak to make the discussion more concrete, let's call something 'primary key'.
20:22 masak it's the one string that's unique for each entry in that file/those files.
20:22 masak for infix:<+>, for example, it'll be 'infix:<+>'.
20:23 moritz_ I don't know if that's sufficient
20:23 masak please elaborate.
20:23 moritz_ just a sec...
20:23 masak oh, I think I see what you mean.
20:23 moritz_ iirc we wanted to include stuff like tutorials and explanations for concepts
20:24 masak yes.
20:24 masak at least the latter.
20:24 moritz_ we need to distinguish that from prelude elements like infix:<+>
20:24 masak 'need to'?
20:24 moritz_ otherwise we can't call it a "primary key"
20:24 masak a term like 'boolify' will be distinguished simply by not occurring in the Perl 6 grammar.
20:25 masak maybe we can make up a prefix, like 'jargon:<boolify>' or some such.
20:25 moritz_ yes, maybe
20:25 masak I'm not insisting on it even having the same form as grammar categories.
20:26 masak maybe it'd benefit from looking a bit different.
20:28 masak what's the grammar category of the '?' that appears after params?
20:29 moritz_ I don't think it has one
20:29 masak still, that '?' should probably also have an entry.
20:30 moritz_ aye
20:31 moritz_ maybe it's in 'token signature'
20:31 masak whoa, how did 90 minutes pass already!?
20:37 literal hi
20:38 literal sorry for the delay, was recovering from some jet lag :P
20:39 moritz_ literal: can you tell us about your progress in the last week(s)?
20:41 masak literal: as for the delay, don't worry. it's not like we've been inactive. you'd do well to backlog, though.
20:41 masak (making 6 people wait for 100 minutes: 6 man-hours of wait...)
20:42 masak no wait, 10 man-hours. nvm.
20:42 literal yeah, about that. I emailed masak recently to tell him that some some events have held me up more than I foresaw (my girlfriend visiting me who has been away for long), but I'm getting back into it now. I have some uncommited changes to grok for using Pod::Text and such. It does paging as well, and I've done most of what's needed to have it bundle the synopses (short of adding them to the git repo)
20:43 masak literal: would you consider blogging a bit about your progress so far?
20:43 literal yeah
20:43 masak it would be good for everyone involved, I think.
20:44 moritz_ I'd also like to make this meeting a weekly institution
20:44 masak ditto.
20:45 literal yep
20:45 moritz_ literal: also if you need some help, don't hesitate to ask
20:45 literal and echoing the github commits to #perl6 would be fine by me
20:45 moritz_ gsoc doesn't mean you have to work isolated
20:46 literal moritz_: ok
20:46 literal I would like some help with that STD.pm-syntax lookup thing we talked about
20:46 masak 'help' is a serious word. I'm available for a small chat most of the time.
20:46 masak I'd be willing to work on that, too.
20:47 masak provided we decide we need it.
20:47 literal yeah
20:48 masak hm, maybe it'd be possible to get the best of both worlds by deriving a few rules of our own which call STD.pm rules?
20:50 moritz_ maybe. Ask TimToady.
20:50 * masak does that
20:50 moritz_ anything else we need to talk about now?
20:51 * masak can't think of anything
20:51 moritz_ literal?
20:51 * literal is looking at the backlog
20:51 masak "more updates!"
20:51 masak :)
20:53 viklund masak: slightly related, did you manage to use the Perl6 grammar in rakudo?
20:53 masak viklund: yes and no.
20:54 masak viklund: I'm not sure how much to divulge, since it's part of my secret, unpublished work. :)
20:54 viklund hahaha
20:55 masak my plan is to jump forth when I'm ready, and blind you all with the brilliance of... whatever it is I'm working on.
20:55 moritz_ heh, should I make some guesses?
20:55 masak for now, I think I would benefit much from collaborating with ingy.
20:56 moritz_ then it has to do with testing ;-)
20:56 masak moritz_: am I required to confirm your guesses? :)
20:56 masak (you're way wrong, by the way.) :P
20:56 * masak clams up again
20:58 masak viklund: anyway, grok is currently implemented in Perl 5. so anything Padre can do, grok should be able to do, too.
20:59 moritz_ next guesses:
20:59 viklund I know
20:59 moritz_ lint for Perl 6
20:59 moritz_ (de)serialization
21:01 masak moritz_: you're too good at this game. I hope I'm able to deliver, and not just blow hot air.
21:01 masak actually, I'll paste my ideas for you. hold on.
21:03 masak http://gist.github.com/135513
21:03 masak I started making this list months ago.
21:03 masak it consists of many things that have tripeed me up while writing Perl 6 code.
21:05 moritz_ masak: interesting list
21:05 masak moritz_: I was at the point where I had hooked in STD.pm and had it parse statements.
21:05 masak but I think the program has bitrotted since then.
21:08 masak ok, I need to sleep now.
21:09 masak thanks for a nice meething, ev'ryone.
21:09 literal aye
21:09 moritz_ good night
21:09 moritz_ meeting adjourned
22:28 viklund joined #perl6-soc

| Channels | #perl6-soc index | Today | | Search | Google Search | Plain-Text | summary