The Return of the Journal : pugs.blogs.com/ | pugscode.org | pugs.kwiki.org | paste: paste.lisp.org/new/perl6 or sial.org/pbot/perl6 Set by stevan on 23 December 2005. |
|||
svnbot6 | r8511 | stevan++ | PIL/Native/Bootstrap.pil | 00:16 | |
r8511 | stevan++ | - added ::Package.FETCH and ::Package.STORE to handle basic | |||
r8511 | stevan++ | package variable/subroutine accessing | |||
anatolyv | quit | 00:24 | |
dduncan | question ... | 00:41 | |
regarding that there is a Haskell native subset of PGE functionality | |||
can we start using that by default, or do we need to especially compile it with a make flag? | 00:42 | ||
I guess not ... attempts to say $foo ~~ m/pattern/ give an error about can't find parrot | 00:43 | ||
with default 'make' | 00:44 | ||
avar | $ pugs -e 'if "xfoon" ~~ /foo/ { say "works" }' | 00:51 | |
*** Cannot parse PGE: foo | |||
*** Error: does not exist | |||
rx:perl5 works though.. | |||
Alias_ | Anyone got a url for where the schemes for C<use> are documented? | 01:20 | |
03:29
wolv is now known as wolverian
04:23
audreyt_ is now known as audreyt
|
|||
tewk | audreyt: I made an attempt at a rules parser, it could be simplified I'm sure, I'd like to see what changes you make, and I'll learn. | 04:29 | |
audreyt | tewk: woot! | 04:30 | |
I just woke up... will take a look in ~5mins | 04:31 | ||
hm, wait, did you commit it? | |||
geoffb | morning, audreyt | 04:32 | |
tewk | 8512, seen svnbot6 ? | ||
jabbot | tewk: svnbot6 was seen 4 hours 15 minutes 46 seconds ago | ||
geoffb | .oO( Man, I love old CS books that have damn cool stuff in them that modern texts have completely forgotten ) |
04:33 | |
azuroth | like what? | ||
geoffb | The original Graphics Gems | 04:34 | |
audreyt | tewk: got it | ||
geoffb | And the old edition of Programming Pearls | ||
audreyt | tewk: excellent, looks lovely. which means I need to finish support for <-[ ...]> | 04:35 | |
azuroth | I read a pascal text that had the entire grammar in ebnf or something. I thought that was interesting | ||
audreyt | dduncan: I'll link Text.Parser.Rule to main Pugs code when it can pass a respectiable amount of tests | 04:36 | |
dduncan | okay | ||
audreyt | but yes, I think in the future we'll use the native Rule implementation be default when running on the haskell runcore, and switch to PGE when compiled to parrot or requested by the user | 04:37 | |
not sure how "requested by" should look like though...suggestions welcome | |||
tewk | audreyt: is there a run harness for Text.Parser.Rule? (Something like ./pil) I could work on tests for Text.Parser.Rule. I was to the point where I needed a run harness for the miniLang Rule parser to test it also. | 04:40 | |
dduncan | question | 04:43 | |
do I use postcircumfix:<""> | |||
to provide a stringification method for a class? | |||
or do I not need the 'post'? | |||
or is it something else? | |||
azuroth | I think postcircumfix is like... class A { postcircumfix:<[]> ($index) { ... } }; $a[2] | 04:44 | |
audreyt | tewk: yes, I think what needs to happen is either integrate rule support to ./pil, or to make another executable to harness | 04:45 | |
tewk: ...or write Inline::GHC | |||
tewk: which would you prefer? | |||
dduncan: I think stringification is coerce:as(Str) | |||
dduncan | so then, just circumfix:<""> should do what I need, then | ||
even simpler | |||
audreyt | I'll support in the new runcore (which has correct coercion/promotion design) | 04:46 | |
dduncan | basically, I'm looking to set things up so that, if someone is handed a Locale::KeyedText::Message etc object, whether from a return value or an exception, and they use it in a string (such as for debugging), then something useful will come out | 04:47 | |
in perl 5, overloading "" does the job | |||
or with Class::Std in perl 5, adding the :STRINGIFY trait | 04:48 | ||
audreyt | right, but I think coerce: is the right way to go | ||
dduncan | okay | ||
audreyt | since it hapens other places as well | ||
dduncan | use of that will be checked in shortly | ||
audreyt | without an explicit circumfix "" | ||
tewk | audreyt: I'd say start simple how about a new cmdline arg for ./pil -r? | ||
audreyt | tewk: .pil -g grammar | 04:49 | |
and then take the match str as STDIN? | |||
./pil -g grammar.file -r rulename | 04:50 | ||
tewk | YEah, I hate cmdline escaping | ||
-i input.file ? | |||
GammaRay | anyone know any status info on a perl6 debugger? | ||
audreyt | tewk: sure, that works | 04:51 | |
GammaRay: no, but if you have some idea of what it should look like, I'd appreciate a cleanup on docs/AES/A20draft.pod and turn it into docs/AES/S20draft.pod | |||
bbiab | |||
azuroth | audreyt gave a talk in sydney? arrggh | 04:54 | |
Alias_ | audreyt: ping? | 04:56 | |
stevan__ | audreyt: when you have a moment if you could remove the object-space trace/dump from ./pil output, that would be very helpful, it is messing up the Test::PIL module :) | 05:09 | |
I looked, but couldnt find where it was coming from,.. | |||
and I must sleep now & | |||
tewk++ # rule + mini-language :) | 05:10 | ||
tewk | stevan__: give me a test to work with I think I can remove the object-space dump pretty easy -- src/PIL.hs | 05:15 | |
stevan__ | tewk: any of the tests | 05:17 | |
try running ./pil -e '"Hello world"' | |||
and you will see what I mean | |||
05:18
stevan__ is now known as stevan
|
|||
stevan | tewk: I think I see it now... in PIL.hs | 05:18 | |
stevan recompiles | 05:19 | ||
tewk | yep eval:: | 05:20 | |
stevan | tewk: yup,.. ok | ||
it worked | |||
thanks :) | 05:21 | ||
I was looking in the wrong places all this time :) | |||
stevan commits,.. and goes to bed | 05:23 | ||
night all & | |||
svnbot6 | r8513 | stevan++ | PIL - removing the obj-space dump | 05:25 | |
r8514 | audreyt++ | * primitive support for matching on Text.Parser.Rule in pil shell: | 05:40 | ||
r8514 | audreyt++ | ./pil -r rule input | |||
r8514 | audreyt++ | * support for grammar files is forthcoming. | |||
audreyt | Alias_: pong | 05:41 | |
Alias_ | um.. um.. | ||
svnbot6 | r8515 | audreyt++ | * $scalar.STORE should return the container itself, | ||
r8515 | audreyt++ | because this is legal perl6: | |||
r8515 | audreyt++ | (($x = 4) = 5) | |||
Alias_ | oh right, you were talking about IPC::Run | ||
When you were here... | 05:42 | ||
I had a look and it's hideous cryptic | |||
audreyt | yes it is | ||
IPC::Run3 is better | |||
but doesn't cover the same platforms as IPC::Run | |||
Alias_ | Do you know if anyone has wrapped a $object->stdout/stderr/exitcode object around it? | ||
audreyt | yes | ||
that'd be kane's IPC::Cmd | |||
Alias_ | I need a shitload of platforms for this specific use | ||
PITA::Scheme | |||
Running inside the images | |||
audreyt | yeah, IPC::Cmd is it -- talk to kane-xs if you want more features | 05:43 | |
Alias_ | ok | ||
will do | |||
Thanks, I could find anything in search.cpan | |||
audreyt | np :) | ||
dduncan | question, | 06:16 | |
is there a shorthand for calling private methods? | |||
eg, with public ones, we say .foo() | |||
with private, the corresponding would be !foo() | |||
though that may confuse with !.foo() | 06:17 | ||
Alias_ | and .!foo | ||
dduncan | perhaps | ||
Alias_ | in fact, I think that might be it | ||
dduncan | so, the qualified form is $obj!foo() but unqualified is .!foo() ? | 06:18 | |
Alias_ | dunno | ||
audreyt | I think there's no unqualified form | ||
have to say $_!foo | |||
dduncan | or $?SELF!foo | ||
audreyt | self!foo | ||
"self" is an easier synonym for $?SELF | 06:19 | ||
dduncan | is it in the synopsis? | ||
anyway ... | |||
right now, perhaps my fault, ... | |||
I'm having issues where an invocation fails to find a private function with arguments, though a test without one having args works | 06:20 | ||
it may be mismatched signitures, but I have to test that | |||
s/function/method/ | |||
audreyt | k | 06:24 | |
dduncan | ?eval class T { method mypub () { say "called mypub"; $?SELF!myprv(); say "end of mypub"; } my method myprv () { say "called myprv"; } } my $t = T.new(); $t.mypub(); | 06:45 | |
06:45
evalbot_8510 is now known as evalbot_8515
|
|||
evalbot_8515 | OUTPUT[called mypub end of mypub ] bool::true | 06:45 | |
dduncan | the error seems different depending where I test | ||
when testing the pugs command line, or the -e oneliner, or here, the call to the private method is a no-op | 06:46 | ||
when calling such a sub with args from within my module, I get a "no such" error | 06:47 | ||
for that matter, a script containing only the above is also silent | |||
... | |||
?eval class T { method mypub () { say "called mypub"; $?SELF!myprv( | 06:49 | ||
'fu'); say "end of mypub"; } my method myprv (Str $x) { say "called myprv with '$x'"; } } my $t = T.new(); $t.mypub(); | |||
evalbot_8515 | Error: unexpected "!" expecting word character, "::", term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or "}" | ||
dduncan | ... | ||
?eval class T { method mypub () { say "called mypub"; $?SELF!myprv('fu'); say "end of mypub"; } my method myprv (Str $x) { say "called myprv with '$x'"; } } my $t = T.new(); $t.mypub(); | 06:50 | ||
evalbot_8515 | OUTPUT[called mypub ] Error: No such method in class T: "&myprv" | ||
audreyt | hm | ||
dduncan | so, we get silence when there are zero args, and a "no such" error with one or more ags | ||
audreyt | I'll take a look. | 06:51 | |
Alias_ | audreyt: IPC::Run is enough... barely... | ||
audreyt: It's still pretty ugly, but I'm not going to write yet another wrapper around THAT | |||
audreyt | k | 06:55 | |
svnbot6 | r8516 | audreyt++ | * Dynamic rule support; allows the use of OpTable into a Rule | 06:57 | |
r8516 | audreyt++ | (pretty much anything that can function as a parser will do, | |||
r8516 | audreyt++ | including user-code and Parsec). For example, this works: | |||
r8516 | audreyt++ | ruleGrammar :: Grammar | |||
r8516 | audreyt++ | ruleGrammar = grammar | |||
r8516 | audreyt++ | [ "ruleDecl" ~:~ "rule \\s* \\{ <ruleBody> \\}" | |||
r8516 | audreyt++ | , "ruleBody" ~&~ ruleTable | |||
r8516 | audreyt++ | ] | |||
tewk | [23:51 tewk@flaka:~/srcs/pugs]$ ./pil -r '<[abcde]>+' 'ababababa' | 06:58 | |
pil: TermSubrule (CaptureNam "[abcde]") "[abcde]" | |||
audreyt | tewk: charset support is not there yet -- moving to that now | 06:59 | |
also errmsg can use some work :) | |||
s/charset/charenum/ | |||
tewk | Ok, that make sense now. | 07:00 | |
dduncan | commit pending any minute now ... | 07:08 | |
audreyt | xern: ping | 07:11 | |
dduncan | commit done | 07:25 | |
svnbot6 | r8517 | Darren_Duncan++ | r1704@Darren-Duncans-Computer: darrenduncan | 2005-12-30 23:23:16 -0800 | 07:27 | |
r8517 | Darren_Duncan++ | /ext/Rosetta-Incubator : continued converting generic string exceptions to specific LKT ones; added 4 messages to LKT/L/en.pm, upgraded Translator class in LKT.pm, adding 5 private methods; updated both LKT.as_debug_string() so they handle string coersion of LKT objects, and made output easier to read; updated both example MyApp.p6 to use the coersion ... currently, this doesn't execute, mainly due to Pugs' non-handling of priv | |||
audreyt | bbiab... | 07:47 | |
GammaRay | hmm how am I supposed to program w/ german quotes? | 07:56 | |
Alias_ | audreyt: You've played with Archive::Extract right? | 07:59 | |
(I only ask because kane is 5 days missing) | |||
audreyt | I had not | 08:00 | |
Alias_ | darn | 08:01 | |
audreyt | GammaRay: docs/quickref/unicode | ||
Alias_ | OK, I shall just file a bug | ||
audreyt | and I shall get something to eat and finish Array containers | ||
:) & | |||
GammaRay | hmm Ā«thisĀ» could be Ā»worseĀ« | 08:26 | |
tewk | printMatch currently prints the MatchRule, I want it to print the MatchObj.matchString | 08:45 | |
GammaRay | hmmm Ā»thisĀ« is odd: cvs.perl.org/viewcvs/perl6/ gives 404 | ||
08:46 | |||
GammaRay | aww crap | 08:46 | |
The Return of the Journal : pugs.blogs.com/ | pugscode.org | pugs.kwiki.org | paste: paste.lisp.org/new/perl6 or sial.org/pbot/perl6 | 08:47 | ||
tewk | audreyt: What am I doing wrong? | 08:54 | |
printMatch r i = either (hPut stdout) printMatchResult (matchRule r i) | |||
printMatchResult :: MatchRule -> IO () | |||
printMatchResult MatchObj{matchString} = print matchString | |||
printMatchResult mr = print mr | |||
Alias_ | Well, I think that's me done for the year | 08:57 | |
The testing scheme drivers are half done (they can recieve the injected package and set it up) | |||
One more day tommorrow before back to commercial work for me... so I'll see if I can get to the point we can throw a pugs package at it | |||
Won't get TAP details for now, but should be a start | 08:58 | ||
gaal | hey anatolyv | 09:42 | |
anatolyv | hey gaal | 09:43 | |
gaal | in passing, I noticed an even more !!!ish combinator on #haskell: | 09:44 | |
let y f = f (y f) in y | |||
anatolyv | ugh | ||
:( | |||
gaal | it's the *spec* of a fix function | 09:45 | |
and it works! | |||
don't ask me how :) | |||
anatolyv | tell gaal ok, can't commit due to Parser.hs being out-of-date. what do I do to merge? "svn up" or something? | ||
heh | |||
gaal | "/msg" | 09:46 | |
svn up, yes | |||
anatolyv | re-adjusting to irc is so difficult to me after not using it for quite a few years. | ||
gaal | it will probably just say "G Parser.hs", but "G" means "merge" in svn. | ||
anatolyv | yup, you anticipated my next question | 09:47 | |
gaal | not conflict or anything like that. | ||
because I've asked it myself in the past :) | |||
anatolyv | it updated a lot of stuff. I'd better remake and retest. | ||
gaal | yup. "make unoptimized" may save you time if you're just sanitytesting. | 09:48 | |
I think most of the recent commits weren't in the old core though. audreyt and stevan have been working on the minilang | 09:49 | ||
anatolyv: <lj user=pugscode_svn> if you want to keep track | |||
anatolyv | mm... okay, prolly not just yet :) | 09:51 | |
gaal | yeah ok | ||
svnbot6 | r8518 | anatolyv++ | *added unary ^ (^num a shortcut for 0..^num). | 10:09 | |
gaal | whee! | ||
anatolyv grins. | |||
gaal | some time in the future, when we fix ranges to work in the case you mentioned (~~), we need to modify op2Range to return an range object, not a reduced list. | 10:11 | |
anatolyv nods | 10:13 | ||
gaal | that's a somewhat deeper change, but I don't *think* it should be very difficult | ||
nnunley | gaal: Look for a paper called 'The Why of Y', which explains the y combinator, and how it's derived. | 12:49 | |
gaal | nnunley: thanks. I know what "fix" and "Y" are (to the point of being able to use them, and sometimes even show a combinator is equivalent to fix). But I can't understand the spelling I quoted. Or rather, how Haskell is clever enough to understand it. | 12:52 | |
it's the same feeling of pattern matching -- "but where did the computation *go*?" -- but in this case it's much more acute :) | 12:53 | ||
In other words. I need "The How of That Weird Y" :-) | 12:54 | ||
nnunley | Right -- I'll see if I can dig up the link, because it does explain it. Still mind bending, but it shows how. | 12:55 | |
www.dreamsongs.com/NewFiles/WhyOfY.pdf | 12:57 | ||
gaal | yes, I read it (thanks) | ||
nnunley | Ahh. Sorry. Misread. | 12:58 | |
Yeah, It's just the lambda calculus. There's also some good reading in the explaination of Unlambda. | 12:59 | ||
rafl_ | Juerd: ping | ||
Juerd | rafl_: pong | 13:50 | |
audreyt praises leo_ for (inadvertently) designing the PILN runcore | 14:21 | ||
stevan: I think I nailed the "representation" thing. will commit in a bit, with much better support for array/hash containers | 14:22 | ||
tewk: still around? | 14:23 | ||
nnunley | audreyt: Are charsets supposed to work with Text.Parser.Rule, yet? | 14:28 | |
audreyt | no, not yet, I've been distracted into reforming object representations layout support | 14:33 | |
I'd like to get Hash and Array done properly first :) | 14:34 | ||
azuroth | audreyt party with mee | 15:00 | |
audreyt | heh :) | ||
you @ .au? is it already 2006 there? | |||
azuroth | two hours into it | 15:01 | |
audreyt | cool... still 1hr to go here | ||
azuroth | I'll help you count down! | 15:02 | |
why aren't you out having celebratory drinks? | |||
joao | almost 9h to go here | 15:13 | |
Southen, happy new year for those who already are in 2006 | |||
s/Southen/so | |||
(and for the others too :P ) | |||
azuroth | :-) it's good | 15:15 | |
obra | seen audreyt | 15:25 | |
jabbot | obra: audreyt was seen 23 minutes 13 seconds ago | ||
rafl_ | Juerd: Where shall I send the camera to? | 15:32 | |
stevan | audreyt: ping | 15:45 | |
happy new year to all those to whom it applies :) | 15:46 | ||
audreyt: we have some issues with the refactored new_opaque,..but I will wait until you commit to be sure they still exist | 15:52 | ||
audreyt | yo | 15:54 | |
stevan | hey :) | ||
happy new year | |||
audreyt | committing now. | ||
stevan | cool | ||
audreyt | it's a very drastic change. | ||
and you may not like it :) | |||
stevan | well tests are breaking already,.. so it cant be too much worse :) | ||
audreyt: try this and tell me what you get | 15:56 | ||
./pil -e '::Class`trace(); ::A := ::Class.new({}); ::A.set_superclasses([ ::Object ]); ::A`trace(); ::A.new({})`trace();' | |||
audreyt | k, sec | 15:58 | |
hmm | 16:03 | ||
I'm seeing "no such method: add_name" | |||
investigating | 16:04 | ||
stevan | add_name? | 16:09 | |
odd,.. | |||
the issue I was trying to illustrate was that new_opaque is not assigning classes correctly | |||
I get this | |||
#trace# <obj:#1|cls:#1> | |||
#trace# <obj:#22|cls:#1> | |||
#trace# <obj:#25|cls:#1> | |||
the first trace is ::Class, then ::A,.. then an instance of ::A... which shows it's class as being ::Class | |||
audreyt | yeah | 16:10 | |
I'll fix add_name here | |||
new_opaque and mro_merge is now class specific | |||
and doesn't have the cls/obj confusion it did | |||
especially mro_merge is really bad and doesn't belong | |||
stevan | ok | ||
audreyt: I have to run some dirt-world errands, I will check in later | 16:14 | ||
stevan & | 16:15 | ||
audreyt | okay | 16:17 | |
audreyt is still tracing mromerge | |||
stevan: I'm seeing | 16:34 | ||
#trace# <obj:#1|cls:#1> | |||
#trace# <obj:#22|cls:#1> | |||
#trace# <obj:#25|cls:#22> | |||
which I assume to be correct | |||
so I'll commit | 16:35 | ||
leo_ | any Win32 user here, who can do a quick 'svn up' of parrot and test if it groks os.pmc (especially the Exx cases)? | 17:06 | |
audreyt | stevan: committed as r8517 | 17:08 | |
er I mean, 8521 | |||
stevan | audreyt: got it | 17:12 | |
audreyt: what are the changes that I "might not like"? | 17:13 | ||
audreyt | each object now carries its own prims | 17:14 | |
stevan | oh | ||
thats fine :) | |||
audreyt | it's very eigen :) | ||
stevan | yes | ||
audreyt | it's locked upon creation | ||
so common instances of a repr shares the vtable | |||
so it's a single malloc and no perf penalty | |||
stevan | cool | ||
audreyt | and we can mix in interfaces using addRepr at composition time | ||
it's all due to leo_ | |||
stevan | leo_++ # as if I need to say that | 17:15 | |
so I can override new_opaque and mromerge on a class-per-class basis? | |||
leo_ | thx all - we just have to convince some other folks to get that working in parrot | ||
stevan | and get_attr, set_attr too? | ||
audreyt | stevan: yup | 17:16 | |
everything | |||
basically all prim methods get the same signature asif they are userland | |||
stevan | audreyt: nice this will make it easy for hash repr and cstruct repr etc | ||
so I can do .set_attr? | |||
audreyt | and uses the same prim dispatch | ||
stevan | cool | ||
audreyt | but we still retain 3level | ||
svnbot6 | r8521 | audreyt++ | * Proper Scalar support using the new per-obj-prims architecture. | ||
r8521 | audreyt++ | Leo++ for speccing this. | |||
audreyt | `set_attr .set_attr !set_attr are still different | ||
stevan | ok | 17:17 | |
how are the diff? | |||
audreyt | the diff is there was a fixed vtable for all objs | ||
stevan | oh, gotcha | ||
audreyt | and much of it just throws exception for objs where they don't make sense | ||
like o_store for values | |||
this is _exactly_ like parrot | |||
and I was unhappy about it | |||
stevan | but if I call `set_attr on an opaque,.. what does it do? | 17:18 | |
leo_ | btw this was inspired by reading quickref/data (which OTOH is weird, or a bit wrong imho ;) | ||
stevan | still work? | ||
audreyt | stevan: yes, but only on an opaque | ||
stevan | ok | ||
audreyt | if you call it on eg. a scalar container | ||
it does nothing | |||
stevan | gotcha | ||
audreyt | or rather you get a method-missing | ||
same goes if you call it to an autoboxed int | |||
stevan | excellent | ||
audreyt | leo_: it is... needs refactorings into p6docs/ | 17:19 | |
this made things a lot simpler :) | |||
leo++ # again | |||
stevan | leo++ # for sure | ||
audreyt | also it made hash and array trivial to implement | ||
so I'll go to it now | |||
stevan | simplicity++ | ||
audreyt | please check for breakage in tests and your model | ||
stevan | audreyt: sounds great,.. I have to continue errands,.. but will check in later to see if all is well | ||
I will do a test run now | 17:20 | ||
audreyt | k, take yer time... I'm around all day tomorrow as well | ||
leo_ | stevan: did you get these pods? | ||
stevan | leo_: what pods? | ||
audreyt | leo_: no, I had not showed it to anyone else | ||
may I? | |||
leo_ | audreyt: please forward to stevan | ||
audreyt | url not for public consumption yet? :) | 17:21 | |
leo_ | I'd still like a word from chip | ||
stevan | audreyt: BTW you can run all the model tests like this: prove -I ext/Test/lib/ t/pil/metamodel/* | ||
audreyt | stevan: msg'ed to you | ||
excellent | |||
stevan | audreyt: got em | ||
leo_ | and of course p6/pugs approval, which looks like given ;) | ||
azuroth | night everyone | 17:22 | |
stevan | night azuroth (happy new year as well) | ||
audreyt | leo_: right, it makes most sense :) | ||
leo_ | I thought so, but its great to have some confirmation | ||
stevan | leo_: I will look over them today,.. but I tend to agree with audreyt so I will probably arrive at similar conclusions :) | 17:23 | |
audreyt has a strange feeling of role reversal... leo writings specs for me to implement? :) | |||
leo_ | these docs were emerging the last 2 weeks - but I was of course not sure, if all is sane | ||
*g* | 17:24 | ||
stevan runs off to buy some food, bbiab & | 17:26 | ||
audreyt | leo_: I've only implemented interfaces.pod and PMC.pod | ||
String.pod looks very sane btw | 17:27 | ||
leo_ | GGC is really parrot internal | ||
audreyt | I may want to carry it to Haskell' (the next version of haskell) | ||
leo_ | heh | ||
audreyt | (planning to write unicode/string proposal for it tomorrow) | ||
Juerd | rafl_: Einsteinstraat 67, 3316 GG Dordrecht, .nl | 17:29 | |
rafl_: And *please* don't make that "strasse", as that tends to delay things :) | |||
audreyt | is there another Einsteinstrasse nearby? :) | 17:30 | |
tewk | audreyt: I'm back. | 17:42 | |
audreyt | tewk: rehi | 17:46 | |
tewk: printMatch Result MatchObj{matchString = str} = print str | 17:47 | ||
haskell records doesn't allow you to pun | |||
(i.e. write {matchString} and mean {matchString=matchString}) | |||
which sucks, and which people are fixing | |||
but for now you need to write out the binding explicitly | |||
17:54
webmind_ is now known as webmind
|
|||
Juerd | audreyt: No | 17:57 | |
audreyt: There's no -strasse at all here. | 17:58 | ||
audreyt: However, German people sending me stuff tend to be funny by changing the name, which apparently disrupts the delivery process :( | |||
(Which is stupid, because the zipcode should suffice even without a street name) | 17:59 | ||
audreyt | indeed | 18:00 | |
joao | Juerd, straat is the german word for road? | 18:12 | |
audreyt | stevan: I need some help in role-ifying container types | 18:17 | |
see the last secion in Bootstrap | |||
but I've finished primitive ::Hash and ::Array support | |||
and can sleep with ah clear conscience :) | 18:18 | ||
also: | |||
t/pil/metamodel/bootstrap............FAILED test 54 | |||
hadn't investigated yet | |||
also, I've renamed `new_opaque to `create because that's what it is | |||
tewk | audreyt: can you look at src/Text/Parser/Rule.hs:61-65, I checked it in last night and it works but the pattern matching probably isn't right. | 18:20 | |
audreyt | compiler warns about overlapped matching | ||
printMatchResult mo = (hPut stdout) (matchString mo) | 18:21 | ||
printMatchResult mr = print mr | |||
the second case never matches | |||
svnbot6 | r8522 | audreyt++ | * ::Array and ::Hash container objects landed! | ||
r8522 | audreyt++ | Currently they have these primitive methods: | |||
r8522 | audreyt++ | `create(*) | |||
r8522 | audreyt++ | `fetch_list() `store_list(*) | |||
r8522 | audreyt++ | `fetch_elem($) `store_elem($,$) | |||
r8522 | audreyt++ | and public methods: | |||
r8522 | audreyt++ | .FETCH($) .STORE($,$) | |||
r8522 | audreyt++ | * Rename `new_opaque to `create. | |||
audreyt | fixed. | ||
first line now reads | 18:22 | ||
printMatchResult mo@MatchObj{} = (hPut stdout) (matchString mo) | |||
note that the {} trick also works even if it's not a record constructor. | |||
svnbot6 | r8523 | audreyt++ | * Fix tewk's printMatchResult implementation by constraining | 18:23 | |
r8523 | audreyt++ | the first case to only match on MatchObj. | |||
tewk | Thanks didn't realize that the {} trick worked. Thanks. | 18:55 | |
SamB | I don't think I knew about the {} trick working on non-record constructors until I saw it in a comment in GHC's source... | 18:57 | |
qmole | what's the {} trick? | 18:58 | |
SamB | so either its an undocumented extension or its Haskell 98 | ||
tewk | I tried it last night, but I was getting some other compile error so I backed out | ||
SamB | you can do for example: | 18:59 | |
tewk | It effectively lets you pattern match against a specific data construction, instead of the entire type. | ||
audreyt | SamB: I think it's h98 | ||
if I heard spj correctly, that is | 19:00 | ||
SamB | isJust (Just {}) = True; isJust (Nothing {}) = False | ||
qmole | oh i see | 19:04 | |
SamB | obviously thats a silly example | 19:05 | |
tewk | So can you match against a specific data construction with a specific record member data DD = D1 | D2 { a :: Str, b :: Str}; func :: D1 -> String; func d1@D1{a="somestring"} = "D1 a == somestring" | ||
qmole | ahh | 19:06 | |
tewk | that was suppose to be a question, can you? | ||
SamB | tewk: huh? | 19:07 | |
qmole | yeah, seems like you can | 19:09 | |
though with a 'fields not initialised' warning | |||
SamB | oh. now I see what you wrote. | 19:10 | |
however... that doesn't use the {} trick. | 19:11 | ||
it just uses normal pattern matching on records | |||
tewk | So does construction occur in the func, why the 'fields not initialised'? | 19:12 | |
audreyt | there's no construction going on; that is valid | ||
SamB | the other {} trick lets you do things like | 19:13 | |
> Just {} | |||
tewk | Why the warning? Is the compiler just saying I didn't specify a match criterion for all record memenbers? | 19:14 | |
qmole | sorry, there's no warning | 19:15 | |
audreyt | I don't think there will be a warning. | ||
qmole | i tested it wrong | ||
audreyt | tewk: I probably can't stay up long enough to finish TermEnum support... definitely tomorrow | ||
journals up; need to sleep now :) | |||
audreyt waves & | 19:16 | ||
tewk | qmole: Ah, Ok | ||
audreyt: I'll start looking into TermEnum | |||
audreyt | tewk: oh ok... the strategy is simple -- write something like wsLiterals and call it wsEnum | 19:17 | |
see parse_enumclass in svn.perl.org/parrot/trunk/compilers...P6Rule.pir | |||
once you can get it to parse, compiling it is dead simple | 19:18 | ||
you can go with a simple "choice", or a fancier MDyn | |||
probably "choice" is good enough for now | |||
anyway... be back in ~10 hours | |||
good night! | |||
19:20
DesreveR is now known as r0nny
|
|||
leo_ | obra: the msg via freenode doesn't work | 19:30 | |
(for me - unregistered) | 19:31 | ||
avar | leo_: you have to 1. register 2. get the other user to turn on messages from unreg users | 19:39 | |
leo_ | I don't want to register just another service, /msg on irc.pobox.com works anyway | 19:40 | |
stevan | audreyt: the failed test in bootstrap.t is when I check for the number of subclasses for Object | 20:14 | |
it used to be 1,.. now it is 9 :) | |||
so the test needs to be fixed | |||
(which I will do right now) | |||
aufrank | hey all | 20:36 | |
no takers, eh? | 20:38 | ||
stevan | hullo aufrank :) | ||
aufrank | oh, hi stevan! | 20:39 | |
how goes it? | |||
stevan | it goes well, and yourself? | ||
aufrank | very well-- the cavs are beating up on the pistons | ||
do you know anything about the ghc side of the make install process? | |||
stevan | aufrank: not a thing sorry :) | 20:40 | |
aufrank | me neither, unfortunately | ||
stevan | hey luqui | ||
luqui | hi stevan | 20:41 | |
luqui realizes he has been away for a while... | |||
que ha pasado? | |||
stevan has been only minimally here, so he didnt realy notice | |||
luqui | ahh | ||
I haven't really been doing anything at all... just watching tv, practicing music... I think it's because I haven't been exercising | 20:42 | ||
my brain has been off | |||
stevan | yeah I have been finishing all the unfinished projects around the house,.. so my brain was pretty mushy too | 20:43 | |
luqui | (where by "exercising" I mean "walking around campus" ;-) | ||
anyway, I'm trying to force myself to pick up these projects again | |||
aufrank | hi luke! | 20:44 | |
stevan | luqui: I think the Text.Parse.Rule stuff has come along nicely,.. you might wanna take a look | ||
see the journal for details | 20:45 | ||
luqui | hi aufrank... | ||
aufrank | stevan: audreyt's journal, neh? | ||
stevan | aufrank: yes | ||
luqui read the bulletin posted to p6c | |||
stevan looks to see wtf luqui is talking about | 20:46 | ||
luqui | audreyt just posted his journal to p6c | ||
stevan | cool,.. I didn't know audreyt was doing this | ||
luqui | because people said they'd be interested in that, and to help the summarizers | ||
I'm happy about it | 20:47 | ||
I'm much more content in my mail reader than having to check somebody's site every so often. And I don't have an RSS reader that i like. | |||
aufrank | which mail reader, luqui? | ||
stevan | yes it is nice | ||
luqui | gmail | 20:48 | |
aufrank | gotcha | ||
luqui | it's interface was good enough to get me off of mutt, and I was kind of a zealot | ||
(though I do miss writing in vim) | |||
aufrank | re: practicing music, me and my brother have been playing our banjos together. much fun. | 20:49 | |
stevan | aufrank: dueling ? | 20:50 | |
luqui | :-) | ||
aufrank | heh | ||
we tried | |||
but neither of us knows the breakdown | |||
he doesn't play that style, anyway | |||
luqui | breakdown is a technical term? | 20:51 | |
aufrank | yeah | ||
luqui | what does it mean? | ||
aufrank | good question | ||
I started to type a definition and then realized I had to think about it | 20:52 | ||
a long period of really fast picking? | |||
stevan | time for a little ... foggy mountain breakdown | ||
luqui | hmmm... I wonder how hard it would be to write a C backend for PIL2... | ||
stevan | luqui: using banjos, yes | ||
aufrank | yes is always the answer to how hard it would be | 20:53 | |
luqui | a C backend for banjos? | ||
stevan | luqui: you can probably start with PIL^N first,.. | ||
luqui | PIL^N? | ||
stevan | it is the level below PIL2 | ||
luqui | oh. I can probably start? Ha. | ||
I'm not touching that. Not for a week at least ;-) | |||
(two weeks ago I said I'm not touching PGE for P6) | 20:54 | ||
stevan | it is the level the metamodel bootstrap and container types are created at | ||
luqui | what's with the name? | ||
stevan | PIL.Native | ||
luqui | and the caret was just a pun..? | ||
stevan | it is the core stuff needed in the runtime | ||
no it is PIL with a superscript N | 20:55 | ||
but in ASCII... PIL^N | |||
luqui | Yeah, like "PIL to the N" | ||
Not a pun, but a play on a cliche | |||
aufrank | ok, /me has to figure out what's going on for new year's here in cleveland | 21:00 | |
happy new year, all | |||
stevan | luqui: is there a definitive list of "types" for p6 anywhere? | 21:02 | |
luqui | IIRC, S06 has the closest definitive thing there is | 21:04 | |
around line 1200 | 21:05 | ||
stevan | yeah, it is missing a number of items though | ||
luqui | somebody ought to figure out what those are and post them to p6l | ||
stevan | although maybe I am wrong,.. there seemed to be many other types mentioned in other Syns, but maybe they are not all up to date | ||
luqui: I have a ruough list going | 21:06 | ||
luqui | cool. if you post, I will wait a day and then update | ||
stevan | luqui: I will post it next week, I need to clean it up a bit first | ||
luqui | mmkay | ||
stevan | we will also need to define the interfaces for each, as well as determine the role/class hierarchies | 21:07 | |
luqui | er | ||
sorry for being a stickler about this | 21:08 | ||
but types don't have interfaces | |||
roles have interfaces (roles are interfaces) | |||
stevan | ok,.. then we need to define the roles which match these types | ||
i am thinking implementation details,.. not theory | |||
luqui | okay | ||
stevan | or we can define the multi-methods which operator on the types | 21:09 | |
luqui | but still, I think one of the biggest blocking points has been the confusion between types and classes | ||
stevan | however you wanna look at it :) | ||
well wont types eventually be implemented as classes? | |||
luqui | not necessarily | ||
stevan | I assumed that because of the "perl6 is oo" statement in S01 | ||
luqui | subtypes for example, and type synonyms | ||
stevan | ok | ||
luqui | anyway... | 21:10 | |
luqui goes back to work | |||
which isn't to the typing point yet | |||
so it's easy to get distracted | |||
stevan | ok | ||
nothingmuch | luqui: great blog on the music stuff | 21:19 | |
luqui++ | |||
i wish i could come =) | |||
yummy yummy yummy: www.thelightandtheland.com/pages/Po..._05_b.html | 21:20 | ||
anywayk, i'm off | 21:22 | ||
ciao | |||
stevan | audreyt: I roughed in the Array and Hash roles, based on quickref/data for now | 21:35 | |
I only implemented Array.elems for now,.. more to come later | |||
luqui | for the record, I don't see any reason to make the Array and Hash interfaces skinny | ||
stevan | skinny? | 21:36 | |
luqui | er, I mean, the Array and Hash methods. The interfaces (required methods to implement) should be skinny | ||
svnbot6 | r8524 | stevan++ | PIL/Native/Bootstrap | ||
r8524 | stevan++ | - added rArray and rHash roles for Array and Hash, they just have | |||
r8524 | stevan++ | method stubs for now (except for rArray.elems is implemented) | |||
r8524 | stevan++ | - I got the method list from quickref/data which may be wrong | |||
r8524 | stevan++ | but it is something to start with | |||
r8524 | stevan++ | t/pil/bootstrap.t | |||
luqui | the opposite of fat | ||
svnbot6 | r8524 | stevan++ | - fixed failing test | ||
stevan is not understanding luqui | |||
luqui | fat interfaces have lots of methods | 21:37 | |
stevan | you want them to be fat? or to be skinny? | ||
luqui | I see no reason for them not to be fat | ||
stevan | yes I get the meanings ,.. but which way | ||
ok | |||
yeah me either | |||
why have a built in when you can have a method :) | |||
luqui likes haskell because there's a function that does everything I need | |||
stevan | luqui: I am starting with the ones defined in quickref/data,.. and I will add more as needed | 21:38 | |
luqui | mmkay | ||
stevan starts to picture luqui as a guidance counsler with a very large head and small skinny body at a school somewhere in colorado :P | 21:39 | ||
luqui | skinny's bad, mmkay? | 21:40 | |
stevan goes off to prepare for tonight's festivities | |||
drugs er bad,.. mmmkay | |||
luqui | My middle school geometry teacher was just like that | ||
stevan | :) | ||
luqui | "You're gonna fail, mmkay? You don't know the material, mmkay?" | ||
stevan | I had a high school math teacher like that, and he liked to refer to himself in the 3rd person too | 21:41 | |
stevan really has to go or he will be in trouble with the $boss | |||
luqui | I always find people like that disturbing | ||
okay | |||
stevan | uh huh ,.. mmkay | 21:42 | |
svnbot6 | r8525 | Darren_Duncan++ | r1717@Darren-Duncans-Computer: darrenduncan | 2005-12-31 13:59:46 -0800 | 22:06 | |
r8525 | Darren_Duncan++ | /ext/Rosetta-Incubator : multiple small updates to all 18 files containing Locale::KeyedText Templates | |||
webmind | happy new year.. and happy coding in it :) | 23:14 | |
DaGo os desea un FELIZ 2006 | 23:23 | ||
avar | "An administrator of 'Pugs' has changed your role in the staff list. | 23:26 | |
Your role in the project is now 'Admin'." | |||
"An administrator of 'Pugs' has changed your role in the staff list. | |||
Your role in the project is now 'Member'." | |||
funky | |||
tewk | DaGo: de nada, nos falta ocho horas aqui | ||
23:33
avar is now known as avar\afk\woo
|