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
|