pugscode.org/ | nopaste: sial.org/pbot/perl6 | pugs: [~] <m oo se> (or rakudo:, kp6:, smop: etc.) || We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/
Set by TimToady on 25 January 2008.
00:05 jeffreykegler left 00:06 jeffreykegler joined 00:13 monomorph left
jeffreykegler jql: "I see perl6 as the language between the {} in the rules syntax" 00:24
That makes perl6 sound like a parser generator
TimToady not on the level of say yacc; it just makes it really easy to write top-down parsers that can call into bottom-up parsers, and really easy to integrate something like a simple operator precedence parser 00:31
what gets generated automatically is the lexer for all the alternative points in the grammar
jeffreykegler Yeah, when I saw the rules stuff in the Perl 6 docs 00:32
TimToady but very little in the standard grammar requires more than 1-token lookahead
jeffreykegler I was thinking just in terms of an extension of regular expressions
TimToady and there are precisely two spots that use backtracking
jeffreykegler A feature of the languages like formats in Perl 5
Not the framework of the language 00:33
TimToady it would be easy to substitute in a bottom-up matcher that did more lookahead, but I'm not personally interested in making the user look ahead that far
let alone the computer
00:34 jordilin joined
TimToady the main thing that's going on is that you can derive new grammars and mix in new rules that have the same lexical and grammatical status as the original rules 00:34
jeffreykegler The track record for more than one token of look-ahead is not good
meppl good night 00:35
TimToady which means every time you mix in more grammar you have to potentially regenerate the lexer
jeffreykegler Is this going on in a fixed number of phases?
TimToady and *that* part of it is supposed to be deterministic in the DFA sense 00:36
jeffreykegler The generation of new grammar I mean
Is this like a two or three pass process? 00:37
00:37 meppl left
TimToady it's however many passes are necessary; every new language must manage its set of lexers and generate them on demand, caching results for efficiency 00:39
jeffreykegler The top down parser is kind of LL?
TimToady the same subrule call in a base grammar may call out to a different set of subrules that were mixed in by the derived langauge
so it has to keep track of that 00:40
jeffreykegler Not a lot of parsing techniques are very friendly to having their grammars modified on the fly
TimToady yeah, pretty much LL, but mixing in a bottom-up parser generally gets rid of most left recursion problems
jeffreykegler LL tends to be only one
TimToady my feeling is that machines are getting fast enough that we can pay the overhead for the flexibility if we're clever about autogenerating efficient lexers 00:41
and LL tends to give much better error messages 00:42
00:42 devogon left, justatheory joined
jeffreykegler LL does have the advantage that it's intuitive for programmers -- it's just kind of like subroutine calls 00:42
TimToady I hope so; parrot's approximation seems to be well accepted by those writing grammars in it 00:44
but I really have to finish the autolexing before it can really be properly extensible
jeffreykegler Is the problem automatically determining where the lexing should end and the LL start? 00:45
TimToady not really, I can already do that, and it's pretty well defined what is "declarative" and what is "procedural" in S05 00:46
and I can already generate the set of lexemes at a particular set of alternatives
jeffreykegler So that's what "declarative" and "procedural" are all about!
TimToady I just have to up and write the NFA/DFA engine
for lack of better terms
sort of a pattern/action notion 00:47
but longest tokens are the part we can determine without risking side effects, basically
we assume the "procedural" bits have side effects
and it seems to be a natural place to break it for lexical purposes 00:48
tricky bit is letting the lexer tell the parser how much it has already "cheated" 00:49
jeffreykegler I've just done some NFA / DFA programming, so I've kind of got this stuff in mind
TimToady fortunately we have TDFAs that can at least do captures in DFA region
so we don't have to reparse for the
jeffreykegler Where's the cheating? 00:50
TimToady if you're writing a recursive descent parser, your token may encompass some implicit recursions that you'll have to return from someday
we define longest-token matching transitively through subrules 00:51
jeffreykegler TDFA == tagged DFA?
TimToady yes
00:52 nipotaway is now known as nipotan
TimToady but I haven't integrated that notion yet. I was first gonna just write a non-bactracking NFA 00:52
jeffreykegler Right
"implicit recursions that you'll have to return from someday" 00:53
TimToady I already have the mechanism to do that
basically your tag tells you the route to call down
and the rules are smart enough to pay attention to "fate" 00:54
jeffreykegler Does this mean some of the Rec Descent stuff may be returning into your NFA/DFA
TimToady and just pick up where the token leaves off
essentially. doesn't seem to be a problem in practice 00:55
jeffreykegler If you say so :)
TimToady the NFA/DFA doesn't really do anything
all the "actions" are either above or below it
jeffreykegler That's why it's "declarative" ? 00:56
Procedures are elsewhere
TimToady yes, it's a strategy for mixing in as much "determinstic" matching as possible into the programmer's grammar view without the programmer having to worry about it much 00:57
jeffreykegler Sorry to stack questions here, but you're looking at some academic stuff on DFA's?
TimToady yeah, I've been looking at various papers 00:58
jeffreykegler Any online?
TimToady all of them :)
jeffreykegler I'd be curious 00:59
I'm 54 and my mind works in low gear. Studying papers helps me understand issues.
And also just having written a NFA to semi-deterministic finite automata translator I've got the math fresh in my mind. 01:01
TimToady laurikari.net/ville/spire2000-tnfa.pdf 01:02
that's kind of the direction I'm aiming
jeffreykegler Found it. 01:03
TimToady and I have to get as much done before I turn 54 this year me own self :) 01:04
jeffreykegler As this stuff goes, it doesn't look too deadly.
They say Newton gave up math by the time he turned 50.
I've been reading GH Hardy's Apology of a Mathematician
TimToady well, it's easy for my eyes to glaze over as soon as I see "System XYZZY is a seven tuple of greek alphabetic soup..." 01:05
jeffreykegler I recommend you read the Hardy *AFTER* you write the TDFA engine 01:06
So you won't know you're doing the impossible until you're finished
SamB TimToady: where did you see that?
TimToady that's the generic first definition of any paper on DFA magic :) 01:07
or pretty much any paper on parsing 01:08
01:11 jordilin left 01:22 lisppaste3 left 01:33 lisppaste3 joined 01:38 chris2_ left 01:40 pdy left, pdy joined 01:56 Patterner left 02:21 justatheory left 02:22 Limbic_Region left 02:29 justatheory joined 02:32 jeffreykegler left 02:34 icwiener left 02:48 brysonm joined, brysonm left 03:03 jferrero left 03:04 cathyal joined 03:05 alester left, cathyal left 03:58 kanru left 04:03 alester joined 04:16 kanru joined 04:27 OuLouFu joined 04:32 OuLouFu_ joined 04:34 sri_work left 04:37 pbuetow left 04:38 pbuetow joined 04:43 orafu left, OuLouFu left 05:01 cyberpass joined 05:10 wknight8111 is now known as wknight-away 05:29 wknight-away left 05:33 DarkWolf84 left 06:21 manfred joined 06:29 Belaf left 06:44 cyberpass left 07:12 gbacon left 07:13 dduncan joined 07:19 devogon joined 07:20 gbacon joined 07:23 manfred left 07:24 manfred joined
dduncan I have an opinion question if anyone can help me with it ... 07:31
let's see if copy-paste works ... 07:33
I intend to make another release of my language spec tonight, just prior to when the proposals would start being looked at (as if it might make any difference), and I have a design question you (or anyone else) may have experience with or advice on ... it relates to the names of 2 main groups of language dialects
in a nutshell, Muldis D has multiple dialects, which are compatible at the very least due to Muldis D code always having to declare what dialect it is in, akin to Perl's "use 5.6" vs "use 5.8" etc
one dialect group is currently called "non-hosted" or "concrete", and is any dialect where code is written as text strings or files like a typical programming language ... examples how you normally write Perl, or how you normally write SQL
the other dialect group is called "hosted" or "abstract", and it is always written in terms of data structures written in some other language like Perl ... an analogy is that SQL::Abstract would be hosted (in Perl), while SQL is non-hosted
my question is what might be better category names than the ones I chose ...
in particular, I like "hosted", but am wondering if its complement group might be something better than "non-hosted", something with one word that means the same thing ... maybe "independent" but better sounding or less misleading?
anyone have thoughts on this?
in SQL terms, I"m looking for the "foo" in "SQL is foo and the inputs of SQL::Abstract is (Perl) hosted"
yep, it did
07:51 Aankhen`` joined 07:55 meppl joined
dduncan slightly longer names, the 2 groups could be named "plain text" and "hosted data", and abbreviate to 'PT' and 'HD' respectively, and used together with 'Muldis D', could be 'PTMD' and 'HDMD' for abbreviation purposes 07:55
08:18 blindfish joined 08:21 barney joined 08:23 cyberpass joined 08:27 iblechbot joined 08:46 blindfish left 08:52 njbartlett left 08:58 alester left 09:11 meppl left 09:26 cognominal_ left, cognominal_ joined 09:31 iblechbot left, blindfish joined, cognominal_ left 09:35 araujo left 09:36 cyberpass left 09:52 dduncan left 09:54 Psyche^ joined, Psyche^ is now known as Patterner 10:09 mj41 joined 10:18 iblechbot joined 10:24 penk left 10:27 njbartlett joined 10:28 njbartlett left 10:29 njbartlett joined 10:31 njbartlett_ joined, njbartlett left 10:32 zamolxes joined 10:40 ebassi joined 10:41 penk joined 10:47 DarkWolf84 joined 10:51 pbuetow left, pbuetow joined 10:52 pcbuetow joined 10:58 DarkWolf84 left 10:59 broquain1 is now known as broquaint 11:03 chris2 joined 11:04 nipotan is now known as nipotaway 11:05 njbartlett_ left 11:07 rindolf joined 11:13 blindfish left 11:42 manfred left 11:52 njbartlett joined 11:55 blindfish joined 12:02 wknight-away joined 12:14 barney left
spinclad @tell mncharity i must have been blind... debian etch has ruby1.9. 12:16
lambdabot Consider it noted.
moritz_ spinclad: it has, but it's a prerelease
spinclad lenny has a later prerelease, sid has 1.9.0.0 12:17
12:19 rindolf left 12:25 njbartlett left
pdy the version in etch is from June 2006? 12:25
spinclad i may try installing it, it looks like it only depends on sid/lenny libc6 (already installed on my etch system) and libncurses6. 12:32
pdy: yes
which i take it is pretty old as these things go 12:33
12:35 njbartlett joined, wknight-away left
spinclad i think i'll be upgrading to lenny one of these days, as it's approaching release slush, and i'm already seeing ghc 6.6.1 (older lenny) disappearing in favor of 6.8.2 12:36
pdy spinclad: depends on your requirements. for a production system it could make sense to stay with the stable release - etch, and use only selected pieces of software from the backports repository 12:37
spinclad sure, this is just my desktop, tho 12:40
pdy ah ok, on my desktop i always go with "testing" :-)
spinclad expect i will soon too
pdy you will get the joy of tags with it 12:41
debtags is awesome for searches
apt-get install ept-cache 12:42
moritz_ debtags is missing the data from popcon 12:44
if it had that, it would be even more useful
pdy its not missing it. its admin duty to combine them :-)
spinclad i see the tags in aptitude already, have apt-cache, ept-cache is different?
(looking)
pdy check the homepage of Enrico Zini for his talk how to combine popcon data with other information 12:45
moritz_ I saw his talk at LinuxTag 2006
back then it didn't include any popcon information
so it seems I'm not up to date
pdy moritz_: his talk's from 2007 are taking it even further :-)
pdy builds a temple for Enrico 12:46
now if i would be a master of the Perl i could make use of all the wealth of information that is out there to my feet! 12:47
spinclad looks nice. look forward to playing with it.
pdy e.g. you like a software and know a friend likes that software too. what other software does the friend have which is not on my system yet, but could be of interest to me 12:48
moritz_ social packaging ;) 12:50
pdy then restrict the results based on tags is::implemented::in:perl
yeah :-)
12:54 Aankh|Clone joined 13:05 takanori left 13:12 wknight-away joined, Aankhen`` left 13:14 pcbuetow left, alester joined, pcbuetow joined 13:15 ebassi is now known as ebassi|lunch, ebassi|lunch left, ebassi joined 13:16 ebassi is now known as ebassi|lunch 13:20 jiing joined 13:27 alester left 13:39 thoughtp1lice joined 13:40 viklund joined 13:50 thoughtpolice left 13:54 ebassi|lunch is now known as ebassi 13:55 monomorph joined 13:57 cognominal_ joined 14:01 jferrero joined 14:02 mico joined
pugs_svn r19799 | putter++ | a possible talk and project. 14:04
r19800 | ruoso++ | [smop] more leaks solved. Now the first test have only 10 objects leaking... 14:05
14:09 njbartlett left, alester joined 14:13 alester left 14:35 thoughtp1lice left 14:36 volp joined 14:38 acmoore left 14:43 cognominal_ left 14:47 cognominal_ joined 14:49 volp left 14:50 manfred joined, cognominal_ left 14:59 TJCRI joined 15:03 alester joined 15:16 njbartlett joined 15:17 takanori joined 15:19 mico left 15:25 njbartlett left 15:28 njbartlett joined 15:29 peeps[work] joined 15:30 faxathisia joined 15:32 Auzon left 15:44 sahadev joined 15:50 jhorwitz joined 15:58 rindolf joined 16:01 mico joined 16:06 konusinua joined 16:11 njbartlett left, cyberpass joined 16:12 njbartlett joined 16:15 mico left 16:21 jjore left 16:26 Psyche^ joined, Patterner left, Psyche^ is now known as Patterner 16:28 rindolf left 16:29 takanori left 16:32 mico joined 16:35 rindolf joined 16:45 chris2 left, chris2 joined 16:50 cosimo left 16:56 zamolxes left 16:57 konusinua left 17:05 pcbuetow left 17:09 viklund left 17:10 meppl joined 17:13 meppl left 17:15 meppl joined 17:22 xinming_ is now known as xinming 17:38 Jamtech joined 17:41 simcop2387 left
ruoso I was testing smop with valgrind and I don't have any more errors, only some memory leaks that seems to be already identified by the SMOP_LOWLEVEL_MEM_TRACE code 17:43
17:43 simcop2387 joined
[particle] \o/ 17:43
17:44 mico left
ruoso and it seems that I'm missing some SMOP_RELEASE on the continuation, as the objects not being destroyed are SMOP__SLIME__Frames and Nodes (the nodes are referenced by the frames, so, it's probably frame's fault) 17:45
brb & 17:46
17:46 mico joined
TimToady \oJ # left arm hurts 17:49
gah, it's too early to be this late...
17:57 pmurias joined, pmurias left 17:59 jferrero left 18:17 tobeya joined 18:21 cognominal_ joined 18:27 cognominal__ joined, ebassi left, cognominal_ left 18:29 pmurias joined 18:31 mico left 18:46 cognominal__ left 19:04 mico joined 19:07 mico left 19:14 cognominal_ joined 19:21 vainguard joined 19:37 chris2 left 19:44 ntgrl joined 19:46 sri_work joined 19:50 cognominal_ left 19:52 ludan joined
ludan hi 19:53
moritz_ good localtime() ;) 19:54
pmurias moritz_: good evening
19:56 integral left
moritz_ pmurias: how are kp6 things going? 20:01
20:08 mico joined
pmurias moritz_: ruoso is making good progress on smop 20:10
i didn't have time to work on kp6 recently 20:11
the ruby backend passes some tests
moritz_ cool
mncharity++ 20:12
20:15 iblechbot left 20:18 mico left 20:26 Aankh|Clone left 20:30 rindolf left 20:35 mico joined 20:40 Schwern joined
ruoso hi pmurias... I'm very near of finishing stage 0 smop... I'm only chasing some memory leaks to have it finished... have some time to help? 20:55
moritz_ what are you using to detect mem leaks? valgrind? 21:02
or your internal tracer? 21:03
ruoso bltn]
both
ruoso with the hand misplaced in the keyboard
right now, it seems that the interpreter is leaving a reference to the frame unreleased
21:03 Schwern left
moritz_ how does that work? at termination of program it checks all refcounts and reports if it's != 0? 21:04
pugs_svn r19801 | ruoso++ | [smop] some more fixes, but still with some memory leaks...
pmurias ruoso: hi
ruoso moritz_, yep...
moritz_, actually, it maintains a list with all allocced values 21:05
and everytime you free a value, it removes from the list
in the end, every value in the list is a memory leak
pmurias i'm having an algorithmic competition we-thr (leaving on tu), and i'll be going to sleep soon 21:06
[particle] you can add uids, and print them upon creation and destruction to check what's going on
we did that with parrot
ruoso [particle], that's kind of what the tracer does.. 21:07
I already have a debug message that shows every operation 21:08
[particle] sweet
21:08 pmurias left
[particle] TimToady++ # context updates 21:10
21:10 cognominal_ joined
TimToady I decided that simplifying = was a better idea that splitting it into two operators 21:11
it still has to glare at the left arg a bit, but the cases that can be considered item assignment are drastically cut down
and more importantly, easily recognizable by a human 21:12
without having to delve into subscripts and such
[particle] i'm happy = stays = 21:17
yes, it seems list context is the default now 21:18
and that's fine. users can be trained to expect that. 21:19
TimToady I wanted to save $a = 1, $b = 2 though
and this does that
[particle] catering to the c-lovers among us 21:20
21:35 manfred left 21:49 yaberger_home joined 21:50 ntgrl is now known as integral 21:58 mico left, jhorwitz left
pugs_svn r19802 | ruoso++ | [smop] small progress... only 6 objects leaking in test/01... 22:02
22:12 jferrero joined
pugs_svn r19803 | ruoso++ | [smop] additional debug infomarmation. Every responder interface have a char* id that is used by the tracer to present a more usefull message. 22:35
22:47 ispy_ joined 22:49 araujo joined 22:52 TJCRI left 22:55 Limbic_Region joined
pugs_svn r19804 | ruoso++ | [smop] now a real improvement... only one object leaking in test/01 23:14
23:15 peeps[work] left 23:16 yaberger_home left 23:19 pdy left
ruoso night & 23:21
TimToady good night
wolverian nice work, ruoso++
23:21 Jamtech left 23:29 wknight-away left 23:31 aindilis left 23:35 Auzon joined
peepsalot i don't understand this syntax: @values.sort: { $^b cmp $^a }; 23:39
Limbic_Region you are calling the sort method on @values
peepsalot is it like creating an anonymous function and passing it to sort somehow. what is the colon doing?
and the curly braces 23:40
Limbic_Region it is synonomous in perl 5 as sort {$b cmp $a} @values;
peepsalot ok, but I never learned perl 5 ;-)
TimToady the colon is replacing a pair of parens there, so it's equivalent to @values.sort({$^b cmp $^a}) 23:41
Limbic_Region oh, sorry
peepsalot TimToady, ok, that notation makes more sense to me. is there any reason doing it with a colon is better?
TimToady you don't have to figure out where to put the ending paren 23:42
Auzon Well, it's a piece of code that has $^a and $^b representing the two items you are comparing. You then return -1, 0, or 1 (or the P6 object equivalents) to tell it how to sort.
peepsalot so you can replace ANY function call parenthesis with a colon like that?
TimToady no, only methods
a normal function call doesn't need the colon in the first place 23:43
foo(1,2,3) is equivalent to foo 1,2,3
interestingly, you can also write @values.sort :{$^b cmp $^a}
peepsalot hmm, ok
TimToady but then it's parsed as an adverbial block rather than an argument list 23:44
Limbic_Region TimToady - did you see the /msg I sent you on PerlMonks?
23:44 wknight-away joined
TimToady not yet 23:45
peepsalot thanks for the tips. gotta go for the moment. afk
Limbic_Region ok, it was a pointer to a node I thought might interest you
TimToady ah, my "And 0 more" mutated to "And 1 more", which is easy not to see 23:46
yeah, was looking at that and wondering whether to respond
'course, delete is really an op on a container, which adds an additional wrinkle 23:47
23:50 monomorph left 23:55 cyberpass left