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:07 polettix left 00:11 xinming joined 00:14 thoughtpolice joined 00:17 riffraff left 00:28 iblechbot left 00:33 Auzon joined
TimToady cognominal__: I think that's from before we made Any the opposite of Junction 00:53
cognominal__ ok, thx
TimToady if you want to match both Any|Junction is now just Object
00:55 sri_work left 01:01 nipotaway is now known as nipotan 01:02 cnhackTNT joined 01:19 lyokato_ joined 01:23 alc joined 01:32 devogon_ left 01:34 peepsalot left, kanru left 01:35 peepsalot joined 01:44 peepsalot left
meppl good night 01:45
01:45 peepsalot joined 01:46 meppl left, thoughtp1lice joined 01:48 peepsalot left 01:50 peepsalot joined, Schwern joined 01:55 wknight-away is now known as wknight8111 01:57 thoughtpolice left
cognominal__ Thinking of it, Item makes to me more sense than Any that should match any type. And Any could become a shorter Object. But I suppose we can't change things everyday 01:59
02:00 wknight8111 left
cognominal__ on the other hand, Any is not Many 02:09
02:12 diakopter left 02:14 Squern joined, Schwern left 02:23 Squern left 02:24 Squern joined, stevan__ joined 02:25 Limbic_Region left
cognominal__ speaking of plurality, have you thought of are : sub swap (*@_ , *%_ are rw) 02:26
the trait would apply to the parameters, or declared variables in a list declaration, who comes before that don't have a trait that says otherwise 02:28
02:29 demq joined, dmq left 02:30 zakame joined 02:40 stevan_ left
pugs_svnbot r19945 | lwall++ | [gimme5] now translates STD to 100% parsable p5 (doesn't run yet) 02:40
diff: dev.pugscode.org/changeset/19945
lambdabot Title: Changeset 19945 - Pugs - Trac
TimToady cognominal__: Any just reads better in signatures that do pattern matching, plus it's shorter :) 02:41
we've though a bit about is/are, but I worry a bit that it will be hard for people whose native language doesn't distinguish sing/plu 02:42
so for now * just distributes the "is rw" automatically
02:43 xinming left
TimToady now I just need to translate Cursor.pm to Perl 5 02:46
hmm, gimme5 will already do most of it...hmm... 02:47
02:59 Andy_ joined 03:20 lisppaste3 left 03:29 lisppaste3 joined 03:38 zakame_ joined 03:40 zakame_ left 03:53 avar left, stevan_ joined, avar joined 03:55 zakame left 04:09 thoughtp1lice left, BinGOs left, demq left, peepsalot left, IRSeekBot left, r0bby left, buubot left, pmichaud left, Patterner left, silug left, GeJ left, IllvilJa left, lumi left, pasteling left, yahooooo left, kcwu left, Southen left, yves left, cookys left, buu left, ead left, nipotan left, Zygo left, lidden left, cognominal__ left, Caelum left, Lunchy left, rhr_ left, broquaint left, mugwump left, cmarcelo left, simcop2387 left, mj41____ left, nothingmuch left, dalek left, cognominal left, jrockway left, arguile left, Eidolos left, Maddingue left, Andy_ left, Squern left, falesca left, ilbot2 left, Lorn left, [particle] left, kane__ left, aindilis left, kolibrie left, qmole left, allbery_b left, alester left, rakudo_svn left, tobeya left, charsbar left, lisppaste3 left, cnhackTNT left, eternaleye left, ludan left, rintaro_ left, pbuetow left, RayMagini left, marmic left, bsb left, meteorjay left, shachaf left, zev left, bloonix left, TreyHarris left, stevan__ left, smtms left, c9s left, lambdabot left, bphillips left, pugs_svnbot left, rafl left, SamB left, Botje left, stevan_ left, Auzon left, araujo left, njbartlett left, moritz_ left, Helios left, Khisanth left, spinclad left, TimToady left, tcliou_ left, wolverian left, integral left, lyokato_ left, jnthn left, baest left, jiing left, awwaiid left, mtve left, Juerd left, mattz left, revdiablo left, cxreg left, PerlJam left, cj left, Tene left, jql left 04:10 TimToady joined, stevan_ joined, lisppaste3 joined, Andy_ joined, demq joined, Squern joined, peepsalot joined, thoughtp1lice joined, lyokato_ joined, cnhackTNT joined, Auzon joined, cmarcelo joined, Patterner joined, eternaleye joined, Zygo joined, ludan joined, silug joined, simcop2387 joined, GeJ joined, rintaro_ joined, araujo joined, njbartlett joined, falesca joined, moritz_ joined, ilbot2 joined, lidden joined, pbuetow joined, Lorn joined, smtms joined, IRSeekBot joined, IllvilJa joined, mj41____ joined, RayMagini joined, [particle] joined, marmic joined, bsb joined, jnthn joined, cognominal__ joined, meteorjay joined, lumi joined, c9s joined, kane__ joined, lambdabot joined, Helios joined, Khisanth joined, baest joined, nothingmuch joined, irc.freenode.net sets mode: +o TimToady, jiing joined, aindilis joined, r0bby joined, pasteling joined, yahooooo joined, Caelum joined, buubot joined, awwaiid joined, spinclad joined, BinGOs joined, pmichaud joined, kolibrie joined, Lunchy joined, shachaf joined, dalek joined, qmole joined, allbery_b joined, bphillips joined, rafl joined, mtve joined, SamB joined, revdiablo joined, jql joined, tcliou_ joined, zev joined, TreyHarris joined, integral joined, tobeya joined, pugs_svnbot joined, Juerd joined, cxreg joined, wolverian joined, PerlJam joined, mattz joined, Botje joined, alester joined, bloonix joined, rakudo_svn joined, cj joined, jrockway joined, arguile joined, Maddingue joined, cognominal joined, Eidolos joined, broquaint joined, mugwump joined, buu joined, kcwu joined, Southen joined, yves joined, ead joined, irc.freenode.net sets mode: +o Juerd, cookys joined, nipotan joined, charsbar joined, rhr_ joined, Tene joined, irc.freenode.net sets mode: +o Tene 04:11 gbacon joined 04:18 RayMagini left 04:20 RayMagini joined 04:21 tewk joined 04:37 pcbuetow joined 04:40 mncharity joined
mncharity I forgot buses were on a holiday schedule today. So I am very cold, and very tired. 04:41
lambdabot mncharity: You have 1 new message. '/msg lambdabot @messages' to read it.
mncharity But it did provide an opportunity to reflect. So I will now warm my fingers with a bit of typing.
I considered starting a new project over the weekend. A numeracy+science educational program, the coming together of various ideas I've been puzzling over for years, which I think could perhaps have a profound impact on how math and science are taught and learned. 04:44
So I hit the usual implementation planning conundrum. What language and framework to use. For this exercise, the language candidate list was something like javascript, python, ruby, smalltalk, common lisp, lua. 04:45
I am so very very tired of the first implementation choice on any non-trivial project being deciding what flavor of crippled one wants to be. 04:46
You know the computer game concept of having some gold, and equipping your character to start out? 04:48
spinclad I will buy a +5 horn of expressiveness. 04:49
mncharity Here it's different. Welcome software engineer! Press "Begin project" when done.
spinclad I will wind it every morn as I set Forth.
04:50 pbuetow left
Auzon Heh. I know that feeling. Except my shop rarely has many choices. 04:50
mncharity Press button. I'm sorry, you have far too few damage points. An unimpaired software engineer waring shoemaker's shoes requires perl 9 2012 to begin development. Please inflict damage on yourself before continuing.
04:51 cmarcelo left
mncharity Remove shoes. Remove feet. Cripple hands. Invoke curse of "must repeat everything thrice". Invoke curse of "you can't get there from here". Press button. 04:52
You want to be able to both see _and_ hear? Please inflict damage on yourself before continuing.
Auzon The developer perishes... 04:53
mncharity ... Welcome software engineer! You may now proceed with 2008 software project development.
spinclad I wish my language to understand both itself and others. -- Please inflict damage on self then.
mncharity Christmas 2008... I'm sorry. Can't we please do Xmas in July instead? 04:54
There is this illusion that calendar time is cheap. At least in open-source primary school software, you hit the following. 04:55
spinclad in May. in May. i wish to dance the way of the camel on beltane.
mncharity 130 Million kids are born each year. Almost all will at least start primary school. So say you project has some window. Some time when it will potentially impact them all. A 1 week delay means you've missed 2 M kids. 04:56
300k per day.
Christmass... :( 04:57
I suggest "Christmas in July" is now both perfectly feasible, given existing resources, and should be our collective objective.
At least, here's a strawman argument to that effect. 04:58
Ok, maybe the critical pass is this... 04:59
*path
(1) We have two efforts to do a full p6 parse, and make the result available. Using STD.pm. TimToady metholate-ng'ing STD.pm to p5. And me hand translating it to ruby. Complementary risk sets. TT can shape STD to make it work. At least one of these is going to win, with fairly low risk. 05:02
I suggest the next step is 05:03
(2) Simple transliteration-like compiler and backend, on p5 (and ruby). Basically writing p5 with a p6 syntax. Like kp6, but a slightly larger subset of p6. And fast. Both frontends seem likely to be fast (well, I know at least the ruby one can be). The emitted code is just normal perl/ruby. And the compilation shouldn't be too slow - pugs-like. Perhaps even a bit better. 05:05
05:06 araujo left
mncharity Which means (3) we can finally start writing p6 code. Not real wizzy p6 code, with junctions and so much else. But... p5-flavored p6 code. Something one could picture writing a compiler and runtime in without too much dread or pain. 05:07
05:09 DarkWolf84 left
mncharity There may be some short cuts. I'm kind of wondering how difficult it would be to teach redsix to emit p5, so folks could start working on the backend without having to wait for STD to get debugged. 05:09
Or one could work in kp6 backend land, but with a slightly different vision of where you are aiming with the code.
"make the blackboard as blank as the vast and arid desert of you mind" 05:10
very blank mind. blackloggin... 05:11
Auzon Is gimme5 the same as metholate?
spinclad similar, i think
cheat, then metholate; cheat, then gimme 5... 05:12
mncharity TimToady: re rearranging parameters, very np. I'm already using a different ordering than STD.
re "wind it every morn as I set Forth", oy, *groan* <shaking head> lol sigh 05:13
spinclad sorry
couldn't help it; word was demanded, context demanded capital. 05:15
mncharity re "shop rarely has many choices", yeah, that does make things simpler. masks that the field itself is broken, rather than it just being a local phenomena. also provides a framework for "attempting software that does X is not plausible given available resources". The free-time FOSS gig makes resource limits show up as tool inadequacy. 05:16
pugs_svnbot r19946 | lwall++ | [Cursor5.pm] now compiles under p5
diff: dev.pugscode.org/changeset/19946
lambdabot Title: Changeset 19946 - Pugs - Trac
mncharity re "The developer perishes...", no, just their projects.
/me googles beltane. May. I'd labor with people towards May. It would make for a much nicer Spring. 05:18
re gimme5, looking... yes. well, not the same. copy, repurposed to do p5 on a... tagged DFA something or other. 05:20
re word... ok, I didn't expect to find myself laughing at the end of this missive. thank you :) 05:21
05:21 araujo joined
TimToady okay, I can now translate "perl STD_5.pm" without a compilation error. now I just need to make it work... 05:21
mncharity oh, wow. 05:22
a question,
spinclad (1) is in process as we speak.
mncharity there are basically two ways to approach getting an ast from the parse 05:23
redsix did a parse->match-tree(with Match's tagged with which rules generated them)->ast.
pugs, kp6, did parse->ast directly. 05:24
TimToady unlike pugs, perl5 will not autogenerate a ->new for me...
pugs_svnbot r19947 | lwall++ | [gimme5] uncomment "use Cursor5"
diff: dev.pugscode.org/changeset/19947
lambdabot Title: Changeset 19947 - Pugs - Trac
mncharity I was happy paying for the decoupling, and have been thinking of taking the redsix approach again. 05:25
spinclad nqp and rakudo too, i think, parse->ast
depending on what the actions make.
mncharity if red_STD becomes the parser for a... red_elf? 05:26
05:27 zakame joined
mncharity my experience is that parsing is hard, and getting ast's right is hard, and that trying to do both at once is a world of pain. having a layer in between 05:27
lets you contain the messiness. eg, if some non-local groveling, down or up, the tree needs to be done to pull together the information an ast node needs, that cruft neither clutters the parser itself, nor compromises the ast. 05:28
clean parser -> layer of cruft tightly tied to parser code -> clean ast
anyway, so I was wondering what thoughts there were on how a gimme5-based thing might be pursued. 05:29
TimToady heh, Undefined subroutine &Pugs::Internals::caller called at Cursor5.pm line 252.
mncharity green_elf? :)
lol 05:30
spinclad groveling: eg: types, sigs, captures, application, ...
TimToady well, certainly STD5 is only going to produce something like an AST, and I plan to just dump it out to yaml or some such for downstream use
spinclad multis
lexicality 05:32
mncharity another design choice/issue is what flavor(s) of ast 05:35
TimToady they come in flavors? neat!
mncharity for a hypothetical redelf, I was thinking of parse -> Match-tree -> krufty-ast -> whatever-ast(s). Basically, 05:36
spinclad a clean parser can do some of the work of building an ast, by make'ing in its actions, tagged Matches being just the default
05:37 thoughtp1lice left
spinclad but passing around type info is good to defer, eg 05:37
mncharity not going directly to the/a "real" ast means the focust on ... krast, can be to _just work_. No other compromising agenda. And given a working ast, it then becomes relatively trivial to spit out alternate asts. kp6, "spec", whatever. 05:38
05:39 njbartlett left
mncharity re flavors, :) don't know if there are more of fewer than 31 or not. then there are all the mixins... 05:39
re make'ing actions, hmm... given that STD seems likely to mixin such actions keyed by the #= foo comments and {*}'s, vs Match's tagged with rules and then runtime tag-dispatching to similar actions... brain to fried to take the next step of figuring out what the core key issues are. 05:42
though I suppose STD could include such actions directly in some of its lots of code. which would mean... 05:43
brain toast
in several flavors
spinclad fingers warmer? 05:47
TimToady the Cursor variants just end up calling $Ā¢._REDUCE($tag) where $tag is the rule name plus the comment
so that method can do whatever it likes
since the match data comes in via $Ā¢ 05:48
mncharity if it looks like STD_p5 is converging nicely, that should be the focus. makes red_STD uninteresting. or rather, just a backup. then the ast -> translit-p5 can be written in p5. and we have a green_elf. from which a red_elf can be easily derived.
TimToady well, I really have no idea how close it is to running, or how fast it will be, but it's gotta be more stable than pugs 05:50
mncharity but ruby's main role is then to provide backup to the second p5 backend, the one attempting correctness rather than 'simplicity, usability, speed'. that second p5 effort will hit p5 core bug issues, so having an similar effort on ruby, with a hopefully complimentary set of challenges, will help avoid things getting bogged down/stuck.
fingers warmer. nose a bit nipped, but oh well. 05:51
re _REDUCE... sounds good. 05:52
TimToady well, what we really need is an engine that runs full p6 semantics fast and without flakiness, and it remains to be seen which VM will get there first
but if we can run some subset about the size of p5 as stable and fast as p5, we'll start getting a lot more traction 05:53
mncharity indeed. I think that's the key. 05:54
TimToady does ruby have a TRE module? 05:55
spinclad tagged regex?
TimToady *nod*
that's what I'll be using in STD5
I almost got it working under pugs, but the p5/p6 linkage was just to flakey to pass long strings back and forth 05:56
*too
but it was working in principle, and successfully finding the longest token, and determining the fate of subrules
mncharity "tagged regex"? meaning parts of one can be named and reused? 05:57
TimToady so none of this thrashing around with lots of subrules that can't match
yes, does () captures in a DFA
still can't backref match inside DFA though
but most lexers don't need that
if STD sees a backref it treats it as end of longest, so DFA never sees it 05:58
as I was mentioning earlier, the trickiest thing in autogenerating a lexer is not recursing 06:00
because it's really hard to feed an infinite set of alternatives to a DFA :) 06:01
jql yes, that seems tricky
TimToady on the other hand, you do want to explore the subrule space as much as possible within that constraint so that you don't get conflicts between matches caused by one of the tokens quitting too early 06:02
mncharity ahhhh, so "tagged regex" just means "does TRE optimization"?
TimToady the longest token stuff is really essential to grammar extensibility 06:03
06:03 araujo left
mncharity I'm not sure if ruby's www.geocities.jp/kosako3/oniguruma/ does TRE or not. 06:03
lambdabot Title: Oniguruma
TimToady it uses re::engine::TRE to implement the DFA specced in S05
mncharity There are alternate engines like laurikari.net/tre/ which do, but I'm unsure they are ready for primetime. 06:04
lambdabot Title: 169 TRE home page
mncharity s/unsure/doubt/
Auzon Regarding "dollar cent", is there a way to write it like $\u{CENT}
?
TimToady you have to have the tags not so much for capturing the substrings but to determine which of the many, many branches of the tree you ended up on
Auzon: nope 06:05
P6 is written in Unicode.
but it's not a variable that users have to deal with much
Auzon I figured that :)
TimToady which is why it has an unusual name
MY::{"\$\c[CENT SIGN]"} might work some day 06:07
or even MY::Ā«\$\xA2Ā» ... oh wait... 06:08
mncharity re "longest token stuff is really essential to grammar extensibility", curious. I've had the same thought about using backtracking rather than longest token. :) but that's an issue for a different month. happy to see gimme5+::TRE pursuing the topic.
TimToady in general, backtracking is a bad plan in a parser. they've known that since the '60s... 06:09
much, much better to guess right the first time :) 06:10
the think about longest token is that it's immune to rule ordering issues 06:12
if the user adds infix:<====> it takes precedence over the builtin infix:<===> automatically 06:13
06:13 BinGOs_ joined
TimToady on the other hand, if they add infix:<!> then all the builtin infixes that start with ! take precedence 06:14
has to work both ways
neither the old rules nor the new have privilege over the other
Auzon smop: say("hi")
06:14 irclogbot_backup joined, irclogbot_backup left
Auzon Eh. 06:14
pugs_svnbot r19948 | putter++ | misc/pX/Common/redsix/redsix: a bit of bug fixing (rather than porting to 1.9.0). Sub and method names no longer collide. A workaround for parsing "for @a {}". And a "this can't every have run" missing argument. That last I don't understand, which worries me. 06:16
diff: dev.pugscode.org/changeset/19948
lambdabot Title: Changeset 19948 - Pugs - Trac
TimToady and with a backtracking engine you can't *tell* whether you have the longest token without trying them all
06:16 BinGOs left
mncharity sigh. started running make test-ruby this morning... but forgot to ulimit it, so got stuck. checked in anyway. 06:16
TimToady darn it, that's not fair--you're working while I'm talking :) 06:17
spinclad turnabout is prime fair 06:18
mncharity re backtracking, 60's, never mind. another time. my increasingly fuzzy impression is there are other, for critical-pathish fish to fry (than that conversation) 06:19
no work, just the check in. ;) well, and killing the hung test, so make test-ruby will plod on (hopefully). 06:20
/me tries to picture a prime fair. It would almost certainly be odd. 06:21
1+am here. there was something... 06:22
TimToady, any thoughts (/ something to think about) on what people might be able to do to help you with gimme5 et al? 06:24
06:25 penk joined
mncharity todo item: see if redsix can run the kp6 p6 files. 06:26
spinclad :) 06:27
TimToady I dunno, STD5 is pretty much a black box till it starts spitting out ast 06:28
mncharity I believe it would not be hard to make redsix emit p5, and create a p5 version of the runtime bits which aren't already written in p6. a risk/question is whether/how-close redsix can handle a large enough set of p6 to be interesting as a way to write/compile p5-flavored-p6. 06:30
"p5-like-p6"?
assuming you could basically write p5 code in p6 syntax, would anyone here actually use it? that's a "not just this evening" question, which determines whether the exercise is worthwhile. 06:31
jql mooseiphiles would 06:32
mncharity would allow writing the STD_5.pm compiler and emitter in said p6-syntax-p5. 06:33
mncharity tries to parse mooseiphiles as greek name, philosopher. then as philosophic school. way past end of day 06:34
spinclad might allow writing cheat- and gimme5-like filters in more readable forms?
myophiles (except that's mousiphiles) 06:35
mncharity re more readable, hmm, i suspect not. they are the kind of "kludgy text massage with regex's" at which p5 excels.
err, wait 06:36
spinclad at least some of them might become 'kludgy tree massage' i fancy
TimToady well, I think a cheat/gimme5 based on STD5 rather than random s/foo/bar/ would be a step in the right direction
jql textual massage is the most ergodic
TimToady the current STD5 should prove whether it's possible to write a p6 compiler based on STD in p5 06:37
and doing it the right way to end up with the same basic executable would ensure some kind of convergence 06:38
at least on the standard grammar, and perhaps even on the extensible one
how "use FooLanguage" in user code turns into real activity is still largely unspecced 06:39
there's some handwaving comments at the start of STD about that though... 06:40
mncharity yeah. I was thinking we would like p6-syntax-p5 to write the compiler and emitter to place behind STD_5, but as STD_5 matures, at some point gimme5 et al will need to be replaced by something p6-ish. I'm just not sure that's something to working on quite yet.
TimToady we need to see what STD spits out first and whether that's usable at all
the fact that rakudo's compiler has been converging on it seems like a good sign though 06:41
mncharity setp 1 - p6-syntax-p5 which compiles and runs fast, and thus can be used to write stuff in p6. step 2 - write better p6 in p6.
TimToady well, I'll take any bootstrap I can get at this point :) 06:42
and better too many than too few
mncharity re "usable at all", one nice thing about red_STD is it has a complimentary risk set. it's less maintainable than green_STD. but since it's all hand written, as long as bugginess is contained, it _is_ going to converge and run. though not doing TRE may end up requiring liberties. 06:45
and I suppose I may have deeply misunderstood the backtracking/TRE needed, in which case... well, even there, it just manifests as increase mess. 06:46
so I'm at least fairly confident at least one of STD_5 or red_STD will work. 06:47
spinclad re cheat/gimme5 based on STD5: ones based on pge/nqp would be a step thither, and runnable now...
mncharity oky. end of day+2 hr. any last issues? 06:48
spinclad but maybe STD5 is about ready too 06:49
TimToady well, nothing says we can't do STD5/nqp hybrid or some such too
spinclad if they both accept the same source... 06:50
TimToady well, anything based on STD should accept the same source, more or less. it's the backends that will mangle the semantics mostly :) 06:52
mncharity re pge/nqp, if there is something parroty which could do a pugs-like -C yaml, on real code, that could be interesting. to compliment kp6+redsix+STD_5+red_STD.
if anyone knows ruby, one of the next tasks in red_STD is to write a ruby version QLang et al. and heredoc (simpler). on the QLang, it might be easier, and sufficient, to write it in normal ruby, rather than the "translate what's there" which is used in the rest of std.rb. I'd not object at all if someone(s) knocked these off before I have to get to it. ;) 06:57
"P6 by Beltane". for some value of p6. that would be very nice. 06:59
good night all. thanks for the enjoyable conversation. &
Auzon see you
TimToady night & 07:00
spinclad rakudo have --target=past, i think nqp does too 07:01
sleep well
*has
07:11 cognominal__ left 07:23 devogon joined 07:33 jjore joined 07:36 BinGOs_ is now known as BinGOs 07:44 Aankhen`` joined 07:51 Andy_ left 08:11 iblechbot joined
pugs_svnbot r19949 | lwall++ | [Cursor5] now correctly produces transitive lexer pattern 08:19
diff: dev.pugscode.org/changeset/19949
lambdabot Title: Changeset 19949 - Pugs - Trac
08:25 ludan left 08:37 jjore left 08:59 Psyche^ joined 09:05 hanekomu joined 09:09 r0bby left 09:11 hanekomu left, Patterner left, Psyche^ is now known as Patterner 09:16 xinming joined 09:18 Psyche^ joined 09:21 araujo joined 09:32 meteorjay left 09:34 Patterner left, Psyche^ is now known as Patterner 09:38 IllvilJa left 09:42 meteorjay joined 09:44 zakame left 09:45 hcchien left 09:50 smtms left 09:54 mattz left, IllvilJa joined 09:55 hcchien joined 09:57 masak joined 09:59 penk left 10:00 mj41____ left 10:02 mattz joined 10:22 cnhackTNT left 10:25 alc left 10:40 cognominal_ joined 10:59 IllvilJa left 11:02 smtms joined 11:07 ebassi joined 11:16 IllvilJa joined 11:25 cmarcelo joined 11:39 marmic left, ruoso joined 11:42 marmic joined 11:44 smtms left 11:58 lyokato_ left 12:07 smtms joined 12:08 pdy joined 12:11 nipotan is now known as nipotaway
pdy greets bloonix and moritz_ 12:13
buu: do you plan to implement buubot in Perl6?
12:15 Squern left 12:24 diakopter joined 12:25 diakopter left 12:34 alc joined 12:35 pcbuetow left 12:40 mncharity left 12:43 diakopter joined 12:49 pbuetow joined 13:07 r0bby joined 13:12 kanru joined 13:15 mj41 joined
pugs_svnbot r19950 | putter++ | [misc/red_STD] renamed to misc/STD_red, to go with "STD_5". 13:21
diff: dev.pugscode.org/changeset/19950
lambdabot Title: Changeset 19950 - Pugs - Trac
13:35 mncharity joined
pugs_svnbot r19951 | putter++ | misc/STD_red/std.rb: fixed typo - runs again. lack of unit testing --. 13:35
diff: dev.pugscode.org/changeset/19951
lambdabot Title: Changeset 19951 - Pugs - Trac
13:57 monomorph joined 14:28 Auzon left 14:37 polettix joined 14:41 pdy is now known as pdy_ 14:42 chris2 joined 14:46 rindolf joined 14:47 riffraff joined 14:54 Psyche^ joined 15:03 TJCRI joined 15:10 Patterner left, Psyche^ is now known as Patterner 15:15 rdice joined 15:16 jhorwitz joined 15:29 hanekomu joined 15:31 Lorn left 15:41 sri_work joined 15:46 peeps[work] joined 15:47 penk joined 15:57 pdy_ left 16:05 hanekomu left
ruoso pugs: say Signature.^methods() 16:09
exp_evalbot OUTPUT[*** No such method in class Class: "&methods"ā¤ at /tmp/qj31BkoA61 line 1, column 5 - line 2, column 1ā¤]
ruoso TimToady, is there any idea on how the Signature API should look like? 16:10
TimToady I expect fglock has thought the most about that 16:11
or maybe the MO folks
but to the first approximation it's just an ordered container of containers 16:13
ruoso hmmm
TimToady and binding happens left to right across it, so that defaults can refer to previous bindings in the sig 16:14
ruoso trying to think how Capture ~~ Signature would be
TimToady the containers in a Signature are not necessarily bound to a lexical scope 16:15
16:15 rindolf left
TimToady they're bound into a lexical scope by "my" or "sub" or some declarator 16:15
but a bare signature still has containers that don't go anywhere
so I guess if you bind to an anonymous signature you get a bunch of anonymous variables 16:16
ruoso i wasn't talking about binding yet... but matching 16:18
16:18 alc left
TimToady match attempts binding, but it has no effect outside 16:18
that's what I'm saying
ruoso but binding may have side effects 16:19
i.e. autovivification
16:19 masak left
TimToady well, there's probably some sort of "could you bind this if I really wanted to?" query 16:22
maybe it even creates some kind of a list of action items that could be executed later without rebinding 16:23
that might be overdesign tho 16:24
ruoso remember that signature may have any repr... so the API must be spec 16:25
TimToady the vivification is an interesting question too
we don't allow subscripts in my or function sigs
but in a literal lvalue that refers to previous vars, we do 16:26
so maybe that's a different kind of animal
ruoso foo() := bar()
TimToady presuming foo is declared rw, it seems to follow 16:27
ruoso what I mean is that the return of foo may have any repr 16:28
TimToady an lvalue may just be a protoobject that knows what else it has to do if you vivify it
16:29 rindolf joined
ruoso I know... I'm just saying that we need a std api to that... 16:29
it's not overdesign
TimToady I meant the $cap ~~ $sig might actually produce a list of potential side effects in the abstract; not your api 16:30
what you're doing is just design :)
but sometimes I overdesign things in my head... 16:31
ruoso ah ok
TimToady but if we put too much mechanism into signatures, they won't be fast
but then again, if we want to capture control between the can-you-bind and the actually-bind (maybe for mmd decisions?) then it might not be overdesign to have a .can equivalent 16:32
16:34 Lorn joined
TimToady hmm, default setting couldn't be delayed though, since the binding of a subsequent parameter might depend on the run-time type of an earlier 16:34
and that might actually run code during binding 16:35
when \(1) ~~ :($a, $b = die "oops") {...} 16:36
that can determine that it can bind without actually running the default, but... 16:37
16:38 Daveman joined
TimToady when \(1) ~~ :($a, $b = die "oops", :$c = $b + 1) or some such may have problems 16:39
not thinking quite clearly yet; doesn't help to have the flu...
spinclad i'm thinking you may not need to run any of the defaults at trial time, so no problem that $b is not really there yet at $c trial time 16:42
TimToady maybe :($a, ^SomeType $b = die "oops", SomeType $c) where SomeType must match the 'en passant' type of $b
spinclad yes, that i fancy needs trial-time binding 16:43
16:43 blindfish joined
TimToady well, that's an illegal sig anyway, since you can't have mandatory after optional 16:43
but I'm sure there's some way to fake it into dying at ~~ time :)
spinclad easy to fix: :($a, ^SomeType $b = die "oops", SomeType $c = $b + 1)
but still no death 16:44
TimToady but maybe we can just say that defaults are evaluated lazily as needed, and if a signature forces evaluation somehow, that's the user's fault, not ours. :)
spinclad :($a, ^(SomeType = die "Any") $b = die "oops", SomeType $c = $b + 1) 16:45
oop
16:45 kyrbe joined
spinclad :($a, (^SomeType = die "Any") $b = die "oops", SomeType $c = $b + 1) maybe 16:45
but what would be an optional type? 16:46
16:46 kyrbe left 16:49 Southen_ joined
TimToady :($a, ::($a.WHAT) $b), presuming we allow symbolic ref to a type 16:49
that could contain any amount of code in ::(...) 16:50
so i guess signatures are turing complete. :)
spinclad and if $a defaults, its default must run to get its type 16:51
TimToady correct
it's almost like a "make" in Unix terms
and when is it possible to run "make -n" without side effects? 16:52
makes you want some way to tell STM "don't allow any side effects in the following code"
spinclad STM? for parallelism? 16:53
TimToady well, to enforce the "I claim this is pure code" declaration when it isn't in fact pure
it should at least warn you about such situations 16:54
speaking in general here, not just for ~~ sig
[particle] use warnings 'impure';
spinclad ah, right. 'provably pure'. 16:55
TimToady but thinking of it in a dynamic scope like STM uses for contend {...}
spinclad 'trust but verify'.
TimToady contend :pure {...}
ruoso TimToady, isn't better to have a specific "match" code in the signature?
16:55 kst joined
TimToady don't follow 16:55
ruoso all this controls about defaults and the side effects 16:56
TimToady certainly any object that supports ~~ is supposed to provide .ACCEPTS for that purpose
and that could inside enforce something like contendpure {...} 16:57
ruoso will look deeper later...
ruoso a little confused
TimToady I'm saying that STM already keeps track of interfering side effects, and that it would be natural to let that mechanism check for *any* side effects 16:58
though it might need to be taught which memory changes are benign and which ones aren't 16:59
since even "pure" code has to fiddle the stack and such to run
interestingly, we might have a version of atomic that allows other pure code to run, just nothing else impure 17:01
17:01 penk left
spinclad .oO { just nothing else interfering } 17:01
TimToady sort of like N read locks but 1 write lock
spinclad gotcha
TimToady I suspect this idea would be more useful in Haskell than in Perl though... 17:02
spinclad .oO { 'gotcha': who hit whom? i got you but your word got to me. } 17:03
TimToady ruoso: you might need to think about some of the implications of STM in your design before you get too much further, unless you have already 17:04
PerlJam TimToady: Tomorrow's perl may act more like Haskell than you intend today :)
17:04 [particle1 joined
PerlJam s/perl/Perl/ 17:04
[particle1 some argue perl itself is an impure thought
17:05 Southen left
TimToady I intend that Perl be able to mutate in whatever direction the community desires 17:05
even if that is N different directions
spinclad .oO { think only pure thoughts. change nothing, make a new world. }
17:06 rindolf left
TimToady all I can tell you is that some subset of the community is *not* going to want to think about monads :) 17:06
spinclad monads will be undercover agents, preventing change from ever becoming real. like pixies. 17:07
PerlJam at least until monads lose the stigma or change their name or something 17:08
TimToady monads are too hard to lift
PerlJam so is recursion for some people 17:09
:-)
TimToady I got better...
spinclad so are continuations
TimToady I'm getting better
spinclad also well kept under cover 17:10
TimToady well, we don't even tell people they're using real closures till they need to know...
spinclad also TimToadies should stay warm and get well
PerlJam once Perl 6 brings these weighty concepts to the forefront of the programming mainstream (I can dream can't I? ;) everybody will be using continuations and monads and stuff. 17:11
spinclad what, lisp and haskell aren't already forefront? don't their jobs dominate the want ads? 17:12
TimToady we continually "use" the universe without understanding it
17:12 pcbuetow joined, riffraff left
TimToady all I know is, I'm pretty smart, but I'm not smart enough to win an argument with ghc :( 17:12
well, maybe I know a few more things than that... 17:13
spinclad just let it tell you where it gets stuck, and apply mutation around that point until it sneaks through. 17:14
i find this method leaves for later the harder job of understanding how my code works 17:15
TimToady what do you do when none of the mutations you think of actually work?
everything's obvious after Sherlock Holmes explains it, but that doesn't mean we 17:16
are all SH
spinclad then you go extinct. that's the beauty of darwinian programming: if it's still here, it works.
the ugliness of it is having any idea what you're doing 17:17
TimToady yeah, well, darwinian evolution seems to have limited the human race to an average IQ of 100
17:18 Psyche^ joined
[particle1 hey, i resemble that remark. 17:18
spinclad nonono, i meant me. anyother resemblance is purely imaginary. 17:19
TreyHarris chuckles at the syllogy implied at some level: "statistical laws imply statiscal distribution in a statistically large enough universe over a statiscally large time."
"syllogy"? that *should* be a word. But I guess I meant syllogism.
spinclad i like that word. let me check if the greeks had it. 17:20
TimToady tautalogies "я " us
17:20 rindolf joined 17:21 [particle] left
TimToady tautologies even 17:21
17:21 ruz left
TreyHarris TimToady: yes, good point. it's a tautology when it only has one prior, a syllogism when it has two or more. thank you. :) 17:21
PerlJam tauntology? :)
TreyHarris PerlJam: Tontonogy. It's what the equestrian arts are known as on Hoth. 17:22
TimToady "What mean we, white man?" -- Taunto
[particle1 "nyah nyah nyah nyah nyah nyah" -- Taunto 17:24
17:24 [particle1 is now known as [particle]
spinclad 'syllogy': apparently not greek. 'syllogƩ' (eta acute) was a gathering, a meeting, and 'syllogos' an assembly. 17:25
PerlJam You can only run with a riff for so long before it eventually peters out. I wonder how long Perl 6 will last?
(much much much longer than "taunto" I hope)
TimToady till Perl 7, probably...
spinclad the Dead riffed long and hard
PerlJam TimToady: that's the one your great-great-grandchildren will be designing? 17:26
TimToady the only question is whether the name of Perl 7 will be "Perl 7" :0
PerlJam (they have the proper provenance after all)
[particle] i doubt the great-great-grandchildren have been certified yet. i'm sure they'll be certifiable. 17:27
spinclad *(not greek: not classically attested) 17:28
17:29 Patterner left, Psyche^ is now known as Patterner
TimToady can't find my Liddell and Scott, sigh... 17:29
17:30 ruz joined
TimToady later & 17:31
spinclad the town of Taunton is about 50, 60 miles south of here
TreyHarris i'm thinking of the disraeli quote "lies, damned lies, and statistics." I read once somewhere that a "damned lie" specifically referred to when you lie by claiming or implying that a truthteller is lying. I don't know if that's canonical though, or just something the writer made up.
pugs_svnbot r19952 | putter++ | [misc/STD_red] renamed <ws> from dot_ws to wsp. assorted cleanup. 17:34
diff: dev.pugscode.org/changeset/19952
lambdabot Title: Changeset 19952 - Pugs - Trac
17:39 meppl joined
mncharity (boo monads! yay arrows! peanuts fly) 17:43
17:43 DarkWolf84 joined 17:48 pcbuetow left 18:23 meppel-san joined, chris2 left 18:28 pmurias joined 18:34 ebassi left 18:37 TJCRI left 18:38 meppl left
pmurias mncharity: red_STD generates a true/no answer for most rules instead of a match, right? 18:40
18:41 ChanServ sets mode: -o TimToady 18:54 polettix left 18:56 Lorn_ joined
ruoso TimToady, I'm not sure STM management can keep track of everything... Considering different representations for objects... that objects may be enterely out of the program's control 18:57
they might be using an external C library
is the VM supposed to make COW for the entire process while the transaction isn't committed? 18:58
and then merge back the memory>
because other way there's no way to make sure that there are no side effects... 18:59
pmurias & 19:00
ruoso or if some given repr doesn't support STM at all
like Glib
When I was thinking in STM was about a controlled set of data that you which to keep transactions for... 19:07
I wasn't thinking about the entire process being rolled back...
which would mean that... 19:08
in a content... all accessed variables are marked as temp, and their outer value would be set when the transaction was committed
19:09 TJCRI joined
ruoso but I wasn't expecting all memory access to be intermediated... 19:11
19:13 Lorn left 19:15 riffraff joined
ruoso or specific data types that were STM-aware 19:16
that would be sane also
s/or/but/
nothingmuch ruoso: in haskell due to type safety STM can be constrained to a very select fewvariables 19:18
it has the luxury of pessimizing everything else
in perl 6 i think it'll probably have to auto-upgrade variables to STM variants in order to be practical 19:19
ruoso but how can it do it on unknown representations?
nothingmuch can't
they'll ahve to provide an api 19:20
i suppose
but it's difficult
i'd guess it's a runtime error ("unsupported data type in transactional operation" or sth)
in some cases it really doesn't make sense, too
ruoso and other question would be, how deep would that control go? 19:21
nothingmuch for example if the container is tied to a file on disk
hmm... good question
ruoso the container?
the value of the container? the conteiner inside the value inside the container?
nothingmuch s/the/a/;
any 19:22
ruoso brb
nothingmuch an example of things that might want to be transaction aware, even if in practice it's not really STM: berkeley db backed hashes, slots of an object that came from an ORM (the ORM's meta-something could implicitly clone the database handle and create a new transaction for each atomic { }), etc 19:23
nothingmuch is mostly throwing this in the air as food for thought
[particle] pigeons descend. 19:25
spinclad hawks too 19:27
mncharity pmurias: re "red_STD generates a true/no answer for most rules instead of a match, right?", yes and no. currently operators have matches, and a couple of other rules. plan is to finish transliterating, do a edit-for-correctness pass, and then start adding additional matches, but only as needed by the parser itself, or by a hypothetical ast generator. 19:29
vision is a match tree result which is "not complete, but good enough". 19:30
19:32 riffraff left
mncharity running ruby1.9 std.rb currently gives you an interactive repl, for trying code against rules. but only EXPR ("(2+3)*4") and a few other rules ("use x") have been exercised/debugged. 19:32
pasteling "mncharity" at 76.24.29.201 pasted "example of current STD_red use" (69 lines, 2.1K) at sial.org/pbot/30297 19:36
19:39 peepsalot left 19:42 peepsalot joined
mncharity red_STD, STD_red, whatever 19:43
ruoso still have no clue on how that translates from abstract concepts to low-level implementation... how deep to go, when to care... 19:51
ruoso home &
19:57 meteorjay left 20:24 rindolf left 20:27 meteorjay joined 20:32 thoughtpolice joined 20:34 DarkWolf84 left
pmurias mncharity: thanks 20:44
20:46 simcop2387 left 20:48 meteorjay left 20:51 njbartlett joined 20:58 simcop2387 joined 21:04 smtms left 21:09 smtms joined 21:10 silug left 21:20 blindfish left 21:26 cmarcelo left, pmurias left 21:32 peeps[work] left 21:38 simcop2387 left 21:39 jhorwitz left 21:40 Aankhen`` left 21:45 cmarcelo joined 21:58 simcop2387 joined 22:17 ingy is now known as ingy_is_out_gett 22:18 ingy_is_out_gett is now known as ingy, ingy is now known as ingy-is-getting- 22:19 ingy-is-getting- is now known as ingy 22:23 Auzon joined, Limbic_Region joined 22:36 cmarcelo left 22:42 peepsalot left 22:44 peepsalot joined 22:55 wknight8111 joined 22:58 silug joined 23:03 TJCRI left
cj ingy! 23:06
I wonder what he was getting... 23:07
has mp6 magically gotten file IO or sprintf() yet?
23:10 rdice left 23:16 Zygo left 23:17 Auzon left 23:18 monomorph left 23:19 Auzon joined 23:25 Zygo joined 23:26 sri_work left