Pugs 6.2.8 released! | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net Set by autrijus on 13 July 2005. |
|||
00:18
brentdax_ is now known as brentdax
|
|||
putter | Anyone around who understand the p5 runtime stuff? | 00:36 | |
Well, questions for later... I ahve a p5-ified PIL tree. I'd like to do &say("Hello world"). How do I... | 00:40 | ||
create a string object (Mumble->new("Hello world")) | 00:41 | ||
get the internal string back (a_mumble->get_string back()) | |||
define the primitive &say | 00:42 | ||
lookup &say (mumble->lookup("&say") | |||
apply say object to string object ($looked_up_say->call($string_object)) | 00:43 | ||
nothingmuch said PIL->P5 won't happen for a while yet. You just can _say_ things like that... ;-) | 00:44 | ||
back later | |||
clkao | it seems i have the same problem | 00:46 | |
t/var/my...........................................pugs: *** Can't locate Test.pm in @*INC (@*INC contains: /Users/clkao/work/pugs/blib6/lib /System/Library/Perl6/darwin-thread-multi-2level /System/Library/Perl6 /Library/Perl6/darwin-thread-multi-2level /Library/Perl6 .). | |||
putter | you tried ./pugs -Iblib6/lib t/var/my.t ? | 00:52 | |
after running make test until you see the sanity checking start (it has seemed in the past Test.pm doesnt end up in blib until make test is run...) | 00:54 | ||
or is your entire make test failing? | |||
brentdax | When I try to make a for loop go over an array of pairs, I get this: cannot cast from VInt 0 to (Pugs.AST.Internals.Val,Pugs.AST.Internals.Val) (Confusing pair?) | 00:58 | |
Known issue? Any workarounds? | |||
QtPlatypus | What does your code look like? | 00:59 | |
brentdax | Hmm...seems to work okay if I switch to array indexing (with keys [0] and [1]). Interesting. | 01:02 | |
QtPlatypus | Most of my "cannot cast" errors have come from syntax errors. | 01:05 | |
svnbot6 | r5584, autrijus++ | * changelog of 6.2.8, plus mdiep caught a changelog typo. | ||
cognominal | is there a way in Perl6 to call PMC methods? | 01:06 | |
stevan | putter: re: the p5 runtime stuff | ||
creating a string object: Perl6::Scalar->new('Hello World') | 01:07 | ||
you dont get the internal string back (unless you are some kind of primative function) | |||
actually Perl6::Scalar should stringify maybe? | |||
not sure 100% on that | |||
clkao | ./pugs -Iblib6/lib t/var/my.t | 01:08 | |
pugs: *** Can't locate Test.pm in @*INC (@*INC contains: blib6/lib /System/Library/Perl6/darwin-thread-multi-2level /System/Library/Perl6 /Library/Perl6/darwin-thread-multi-2level /Library/Perl6 .). | |||
there's indeed noblib6/lib/Test.pm | |||
using blib instead opf bli6 works | |||
stevan | putter: &say would be defined something like Perl6::Sub->new(sub { print @_, "\n" }); | 01:10 | |
that is a radical oversimplification, but thats the idea (i think) | |||
then the runtime would basically do: $say->call($putters_string) | |||
there would also likely be an arguments object of some kind | 01:11 | ||
putter: keep in mind that I am making this up as I go :) | 01:17 | ||
putter: I have no clue what the actual PIL evaluator will work like. I just assume that all your basic containers (Scalar, Array, Hash and Code) will be objects which the compiled PIL code manipulates. | 01:18 | ||
putter | stevan: ping? | 01:46 | |
clkao: re blib vs blib6 - I wonder if that's a bug. | 01:47 | ||
stevan: re Perl6::Scalar... is that ./perl5/PIL-Run/lib/PIL/Run/Container/Scalar.pm or ./perl5/Perl6-MetaModel/lib/Perl6/Container/Scalar.pm or something else? | 01:50 | ||
putter is still unclear on exactly how PIL-Run and Perl6-MetaModel differ... | |||
does Perl6::Code exist? ./modules/Perl-MetaModel/lib/Code.pm ? | 01:52 | ||
is there any kind of pad or environment to bind names in? | 01:53 | ||
thanks for your help. | 01:54 | ||
QtPlatypus blinks "Is there a side of this conversation I'm not seeing?" | 01:55 | ||
putter | async conversations++ | ||
QtPlatypus | Arh. | 01:56 | |
cognominal | how do you load PIR butecode from perl6? | 01:58 | |
putter | can one? | 02:01 | |
oh, p6 asks parrot to load it. | |||
cognominal | the perl6 equivalent of load_bytecode... | ||
hum, there seem to be an evalParrot | 02:02 | ||
putter | yes. is parrot one of the langs one can eval($x,:lang<parrot>)? | 02:03 | |
Pugs::Internals::eval_parrot | 02:04 | ||
and eval in Prelude knows both "pir" and "parrot". | 02:05 | ||
cognominal | is there such things as 'use pir:foo'? | 02:07 | |
putter | greping for load_ turns up things like evalParrot ".sub main\nload_bytecode 'PGE.pbc'\nload_bytecode 'PGE/Hs.pir'\n.end\n" | ||
I haven't seen such... doesnt grep... don't know. | |||
cognominal | I think I have enough info to convert in Perl6 pge/demo.pir | 02:08 | |
putter | convert? | 02:09 | |
cognominal | ...as an exercise | ||
putter | convert... err, what to what? i'm missing something... | 02:12 | |
cognominal | demo.pir is a parrot program, I just want to reformulate it in Perl6 | ||
putter | ahhh. | ||
neat. | |||
dudley | that would be pretty cool | 02:13 | |
that is the one that does rules interactively, right? | |||
cognominal | yes | ||
dudley | very cool | ||
cognominal | it is a way for me to learn Perl6 and bring back PIR memories | ||
dudley | You _want_ to bring those back? :-) | 02:14 | |
cognominal | arf, what is the __END__ equivalent? | 02:16 | |
=begin END # this is the beginning of the end :) | 02:20 | ||
putter | :) | 02:21 | |
stevan | putter: pong | 02:36 | |
stevan releases the semaphore, and waits for putter :) | 02:37 | ||
putter | :) | 02:39 | |
ahh... let's see... | |||
stevan | you were wondering about the PIL and Perl6 Metamodel version of Perl6::Scalar | ||
putter | yes | ||
stevan | the PIL version is deprecated | 02:40 | |
PIL-P5 version that is (to be more specific) | |||
putter | ah. | ||
stevan | this is because the MetaModel is going to use the base container types | ||
and if the metamodel uses them, and it defined in them, then we have a bootstrap issue | |||
and I am deliberately avoiding bootstap issues for now | |||
putter thinks svn mv PIL-P5 depreciated-PIL-P5 | |||
stevan | eventually the metamodel will be self-hosting/defining but that is for later | 02:41 | |
it is much easier to figure it out without having to worry about bootstrapping | |||
putter: I actually think all of PIL-P5 might be able to go away | |||
at least for now | |||
but you will have to check with nothingmuch, it is his code | |||
and to answer the other question, no Perl6::Code is not been created yet | 02:42 | ||
the PIL spec does talk about Pads I think, but again, I am no PIL expert | |||
also the current MetaModel containers are in Perl6::Container::* | |||
putter | something has to implement the environment... no? | ||
stevan | then will be aliased into Perl6::* by Perl6::MetaModel | 02:43 | |
this is a cheap hack to mimic how the Array Role might work in the "real" implementation | |||
putter: I assume so, but this is PIL issue (the environment) | |||
stevan digs around for the PIL haskell stuff | 02:44 | ||
putter | Sigh. I'm confused. Ok, I have some code "will start working any moment" which takes p6, runs -Cpil, munges the pil into a quite similar p5 expression, evals that generating p5 code for the runtime. at the moment, | 02:45 | |
stevan | you have that implemented right now?? | ||
putter | that code is simply p5. "say 3" -> "&say(3)". When it should be -> "lookupfoo("&say")->applyfoo(intfoo->new(3)))" | 02:46 | |
yes. hardest part was groveling over pil arities to parse the thing. we need a pil arity table. it is however slloooowww. 20 to do the Test.pm pil. | 02:47 | ||
s/20/20 sec/ | 02:48 | ||
stevan | where is the PIL code in Haskell? | ||
I cant find it | |||
autrijus | it's in Pugs.Compile | ||
I'm also looking to ditch GADT | |||
while it is fun, GADT can't be serialized with SerTH | |||
and I want SerTH support | |||
stevan | autrijus: maybe you should take these questions, they are out of my league | ||
autrijus | also it will decouple its parameter type with PIR's | ||
putter | nopaste | 02:49 | |
mugwump | What does SerTH stand for ? The TH is Template Haskell, this is for converting pugs internals to PIR ? | ||
putter | pastebot nopaste | ||
sigh | |||
autrijus | SerTH is Storable for haskell, based on TH. | ||
putter: see topic | |||
mugwump | jabbot: nopaste | 02:50 | |
autrijus | mugwump: very fast binary freeze/thaw for arbitary circular data | ||
stevan | putter: use this sial.org/pbot/perl6 | ||
mugwump | so dependant types don't matter anymore ? :) | ||
autrijus | it does | ||
but we'll simulate it with encoded fundep typeclasses | 02:51 | ||
it's a well known emulation | |||
pasteling | "putter" at 66.30.119.55 pasted "contents of an emacs buffer - a kludge in progress" (215 lines, 4.3K) at sial.org/pbot/11749 | ||
autrijus | oh wow, a Hs parser | ||
mugwump | do you have the TaPL grammar in this encoded fundep typeclasses form perchance? | 02:52 | |
wolverian | I think that deserves a respectful silence. or a frightened one. | ||
autrijus | mugwump: I don't, but other people may have. | ||
google around for encode GADT with typeclasses or ask #haskell | |||
putter | stevan: thanks. | ||
stevan | putter: your welcome | 02:53 | |
putter++ # now your questions make much more sense | |||
putter | autrijus: irc browser unfortunately allows topic to be edited. every time I go to cut, I mangle it. its become a running joke. :/ | ||
ah. :) | |||
stevan | full_context++ | 02:54 | |
putter | yeah, i should have started with a fuller description. | ||
stevan | putter: I just thought you were curious, but you are serious :) | 02:55 | |
autrijus | mugwump: currently PIL's deptype is hardcoded to agree with PIR | ||
that has to go once we go multibackend | |||
each CodeGen need to have its own deptype | |||
so using multiparam class and fundep is natural | |||
putter | :) | ||
autrijus | but if PIL can be SerTH'ed, then Test.pm can just have a Test.pil stored alongside it | 02:57 | |
each module can have one precompiled form | |||
and it will be very fast to use them regardless of the backend we are in | |||
since the backend just need to do straightforward codegen, not compilation | |||
and that is a Win | |||
it is also far more possible to run CodeGen.PIR and Emit.PIR in Parrot | 02:58 | ||
than the full Compile.* | |||
think of it as cross compilation to bytecode, and the emit part as platform specific jit aseembler | 02:59 | ||
it's one more level higher but essentially the same | |||
mugwump | so, you can still use GADTs, just not for PIL? | ||
autrijus | yeah | ||
we use GADT for container types | |||
that's probably not going to go away | |||
putter: so what was your question again? :) | 03:00 | ||
putter | ok. so thats a bit of a kludge. | ||
ok, I'm "say 'hi'"'ing by converting p6 "say 'hi'" to p5 "&say('hi')". I'd like to instead convert it to... | 03:01 | ||
something vaguely like "lookupfoo("&say")->applyfoo(intfoo->new(3)))" | |||
oh, s/3/'hi'/ | 03:02 | ||
but I am without a foo. | |||
I'm wondering what foo to do. | |||
It's late. | |||
stevan | :) | 03:03 | |
autrijus | ok. you want a full VM. | ||
that is yet to be written. it's supposed to be in perl5/PIL-Run/. | 03:04 | ||
I think it makes sense if we just hardcode the lookup as a prefixed form of p5 lookup | 03:05 | ||
i.e. compile it to | |||
\&perl6_say->('hi') | |||
and compile | |||
my &say; | |||
into | |||
my &perl6_say; | |||
i.e. share the lexical pad | |||
instead of building another lexical pad | 03:06 | ||
and just play games with the symbol name | |||
but other approaches may be valid too | |||
putter | ok. and create ./perl5/PIL-Run/lib/PIL/{Object,String}.pm ? | 03:07 | |
autrijus | yes. | 03:08 | |
basically we have our own object space not unlike Class::* | |||
in p5 | |||
but the runloop and pad is shared | |||
putter | ok. and how does Perl6 Metamodel figure into things? | 03:09 | |
autrijus | the p6 mm provides the object space composers | 03:10 | |
like "class" | |||
and "role" | |||
which are just functions | |||
PIL currently does not yet generate the class composing closure | |||
currently they are just static packages with hash slots | |||
because stevan's metamodel is yet to be ported to haskell | 03:11 | ||
but once it does, PIL will instantiate those | |||
and you can feed PIL's "class" and "role" calls in pilGlob into the metamodel | |||
to get back objects that you can insert at the type slot, i.e. "::FooClass" | |||
which curiously may be a valid perl5 symbol table entry too | 03:12 | ||
putter | oy | ||
autrijus | but you can't tie the symbol table in p5 | ||
so we can't control the dispatch that way | |||
that needs some thinking | 03:13 | ||
but I'm not too worried until the metamodel is ported to the PIL evaluator in Hs :) | |||
currently you can pretend we're dealing with perl4. | 03:14 | ||
(without objects) | |||
and method invocation are just function calls with the invocant as first argument. | |||
which, surprisingly, works very well in perl5 ;) | |||
(I hope I'm making some sort of sense to you) | 03:16 | ||
putter | yes, sorry, was going back over stevan and your comments to make sure I didnt miss anything. | 03:18 | |
autrijus | cool | ||
there is many gaps to be filled from a parse tree interpreter with perl5-style hash-as-namespaces, toward a full compiler with metaobjects | |||
I'm still learning about it as I go... PyPy and CLOS has been very helpful | 03:19 | ||
stevan | (+ 1 CLOS) | ||
autrijus | stevan: yeah, my brain is formatted into "objects are closures, classes are closure factories, worship the true lambda god" already | 03:20 | |
stevan | TinyCLOS was a great read. It made the Smalltalk stuff make sense (which is kinda weird) | ||
autrijus | stevan: kinda like I never grokked SSA until I read the ANF mapping paper | ||
(SSA being the imperative single-assignment intermediate language, and ANF being its equivalent, but expressed with lambda calculus with lexical bindings) | 03:21 | ||
stevan stops searching google for those acryonyms | |||
Single Assignment Rules! | |||
autrijus | # www.jantar.org/papers/ssa-lambda/ | 03:22 | |
stevan | erlang :) a personal favorite of mine | ||
autrijus | the trick is if all you have is pure lambdas with atoms in function position, then that is equivalent with single assignment | ||
yeah, erlang figured this out long long ago. I'm learning it | |||
so far it's very pleasant | |||
I miss types :) but not much | |||
stevan | that almost sounds like the S K I combinator stuff? | 03:23 | |
autrijus | er, it's higher level, it has named variables | ||
but they never change. strange sort of variables | |||
stevan | cool | ||
autrijus | (but they do get rebound) | ||
stevan | I was trying to describe erlang to nothingmuch the other day | ||
I was saying its high "written on top of Prolog" level, but you can easily get down to a byte level | 03:24 | ||
autrijus | it is interesting to see that haskell has a lot of syntax borrowed over from erlang, but maybe they are from ML | ||
stevan | its such a nice language | ||
autrijus | s/are/both are/ | ||
stevan | ML is cool too, I am still working on groking the full power of Functors | ||
functional_programming++ | 03:25 | ||
autrijus | it's just programming :) | ||
stevan | your right, programming++ # without it I would likely be working in McDonalds or something | 03:26 | |
autrijus | it's interesting to see that lwall's position on soft typing agrees almost 100% with meijer's | 03:29 | |
stevan | what is larrys position? | ||
autrijus | maybe there's a deeper connection between perl and visual basic that I'm only subconciously aware of :) | ||
er, "Static Typing Where Possible, Dynamic Typing When Needed" | 03:30 | ||
# pico.vub.ac.be/~wdmeuter/RDL04/papers/Meijer.pdf | |||
mugwump | that was on LtU recently, no? | ||
autrijus | yes | ||
the two main theme being: | 03:31 | ||
1. we should not ditch runtime typechecks as static typing people do; otherwise "Array of Foo" is monomorphic and hard to use | 03:32 | ||
2. we should not ditch type inference as dynamic typing people do; it makes program much more concise and optimizers much more efficient | |||
mugwump | you need a paper for these direct observations | ||
autrijus | rather, the position should be maximizing inference power with optional type annotation | ||
and do not shy away from runtime checks where the static checking becomes infeasible. | 03:33 | ||
mugwump missed the ? on his rhethorical question | |||
autrijus | well, observations backed up with details and examples tend to be more convincing :) | ||
mugwump | true | ||
stevan | part of me has always liked really strong/static typing in Ada | 03:34 | |
mugwump | especially if the examples are written in a language that exists | ||
stevan | but it was always really hard to use | ||
autrijus | mugwump: C# and Visual Basic is used :) | ||
stevan | the other part of me always liked the polymorphic types in ML | ||
autrijus | this is, after all, meijer at microsoft.com | ||
stevan | because you can say 'a' when types dont matter, and 'MyType' when they do | 03:35 | |
mugwump | I guess I know VB exists, unless the distant memories were actually vivid nightmares. C# I'll reserve judgement on | ||
autrijus | <- worked as VB consultant before brainwashed by CPAN | ||
stevan | C# is Java Improved (with some other nice things added in) | ||
autrijus | VB is a very nice language if you don't program in it. | 03:36 | |
really. :) | |||
stevan | :D | ||
autrijus | (but rather tell other people how to program in it) | ||
stevan really really hates VBScript | |||
putter | err, could someone remind me... __PACKAGE__ expands to current pkg, what expands to current sub name? | 03:40 | |
stevan | putter: I am not sure anything does in p5 | 03:42 | |
putter | ok. thanks. | ||
mugwump | have to get it with PadWalker or something :) | ||
autrijus | er, no no | 03:43 | |
(caller(0))[3] | |||
if you set $^H you get DB::sub. | 03:44 | ||
mugwump was just running perl -le 'sub foo { print foreach (caller(0)) }; foo()'; realising how wrong he was ;-) | |||
autrijus | $DB::sub that is | ||
putter | great. thanks! | ||
autrijus | er, sorry, I mean $^P of course | 03:45 | |
lwall was quite appalled that I consider the fact you can type $^P with two bytes a "feature" | |||
but it's gone from perl6 nevertheless. | 03:46 | ||
coral | autrijus: $^P in two bytes? | 04:09 | |
as in, control-P? | |||
svnbot6 | r5585, putter++ | perl5/PIL-Run/crude_repl.pl - Created. An evening's first attempt at driving a p5 runtime with PIL. Provides a very crude p6 read-eval-print loop running on p5. | 04:39 | |
yome | Hi. can anyone points me to an explanation of what the '>> <<' "explicit parallelism" operator does? | 04:40 | |
putter | I didn't get a chance to create PIL-Run/lib/PIL/{Object,String,Sub}.pm, but it's a start. | 04:41 | |
mugwump | yome: start with dev.perl.org/perl6/doc/design/syn/S..._operators | ||
yome | Oh, it's just a 'map', no? | 04:43 | |
mugwump | it's similar to map, except you can map over several things at once, eg | 04:44 | |
putter | good night all & | ||
mugwump | @a = @b Ā»+Ā« @b Ā»+Ā« @c | ||
cognominal | do we have anything like lexically scoped types? /ext/Perl-Compiler/lib/Perl/Compiler/PIL.pm with its repeated Perl::Compiler::PIL.pm is a sore in the eyes | ||
mugwump | cognominal: sure, my Class Foo { } | ||
cognominal | it would be nice to alias lexically Perl::Compiler::PIL to something shorter | 04:45 | |
mugwump | oh that's something else | ||
cognominal | well, I meant lexically scoped aliases... | ||
...of types | 04:46 | ||
mugwump | just use variables/constants? | ||
putter | ::($pcp)::... | 04:47 | |
cognominal | in perl5 I would mess with the global scope: *_ALIAS = *y Perl::Compiler::PIL | ||
mugwump | yes, or our $PCPIL = ::Perl::Compiler::PIL; | ||
cognominal | nice | 04:48 | |
I can swallow that PIL :) | |||
mugwump | jabbot, rimshot | ||
damn | 04:49 | ||
putter | ;) | ||
& | |||
cognominal | Meijer against SPJ, that's a war within MS? :) | 05:00 | |
mugwump | SPJ? | 05:03 | |
mugwump backlogs | |||
jdv79 | where's the best doc or docs on the new OO system? | ||
mugwump | jdv79: A12 and S12 are the normal reference works | 05:04 | |
cognominal | SPJ is Simon Peyton Jones: research.microsoft.com/Users/simonpj/ | ||
jdv79 | wasn't there on on the meta stuff specifiically? | ||
QtPlatypus | The GHC guy? | ||
cognominal | yup | 05:05 | |
stevan | jdv79: that would be me or mugwump | 05:06 | |
jdv79 | stevan, didn't you make up a little paper on the metamodel? | ||
stevan | I did a few docs, but most of them are not valid anymore | ||
they were just for learning the meta-thing | |||
jdv79: what exactly are you looking for? | |||
jdv79 | a good overview for someone who asked about "the p6 OO system". | 05:07 | |
stevan | from the user side, or the meta side? | ||
jdv79 | i guess user, you're right. | 05:08 | |
stevan | the user side, use S12 or A12 (although some of that is wrong and some is outdated) | ||
but the basics are still the same | |||
jdv79 | thanks | ||
stevan | you welcome :) | ||
mugwump completes stevan's statement with "are, hrrrmm." | 05:10 | ||
stevan wonders why mugwump thinks I talk like a pirate :) | |||
on of SPJ's books is online: research.microsoft.com/%7Esimonpj/p...ES/III.HTM | 05:11 | ||
jdv79 | stevan, one more thing - how complete is the OO system, from a users perspective. | ||
stevan | jdv79: in pugs, it is not very complete | ||
things like Roles are just aliases for Classes | 05:12 | ||
which is incorrect behavior | |||
submethods are really methods (also incorrect) | |||
jdv79 | gotcha | ||
stevan | but your basic Class/Object style OO is there | ||
opaque types, etc | |||
jdv79 | all the cool stuff isn't there yet - darn:( | ||
stevan | it should be enough to show someone as an example | ||
jdv79: well, the "cool" stuff is not even really "finished" yet from a design point of view | 05:13 | ||
jdv79 | hahaha | ||
stevan | there are many edge cases still to be worked out | ||
jdv79 | oh, i haven't been keeping track lately | ||
stevan | which I am trying to do with the meta model | ||
jdv79: yes, moving targets and all :) | |||
cwest | I don't suppose I could get some much needed svn help via /msg or somesuch? | 05:40 | |
svnbot6 | r5586, Stevan++ | Perl6::MetaModel - | 06:26 | |
r5586, Stevan++ | <NOTE: experiemental change!!!> | |||
r5586, Stevan++ | ::Method objects now check the caller/invocant and | |||
r5586, Stevan++ | make sure they can be legitimately be called by | |||
r5586, Stevan++ | the invocant. Currenlty only Perl6::SubMethod does | |||
r5586, Stevan++ | anything with this. see t/31_submethod.t for a | |||
r5586, Stevan++ | basic example. | |||
r5586, Stevan++ | I have to think more on this approach, but for now | |||
r5586, Stevan++ | it is too late :) | |||
nothingmuch_ | stevan++; # naughty activity adds to your cuteness | 06:40 | |
06:46
nothingmuch_ is now known as nothingmuch
|
|||
cwest | Stevan: Create META.yml files that end in new lines! ;-) | 06:52 | |
nothingmuch | hola cwest | ||
cwest fixes the jsan indexer that stevan broke. | 06:53 | ||
hi nothingmuch | |||
I shouldn't complain. He broke it with conrtibutions. | |||
nothingmuch can't see the jsan site =( | |||
coral | JSAN++ | ||
cwest | really? I've got it up. What's the problem? | ||
Aankhen`` | Morning. | 06:55 | |
cwest | morning | ||
Aankhen`` | cwest! | ||
May I PM you? | |||
cwest | sure | ||
gaal looks at SPJ's homepage url.... isn't /Users a mac thing? :) | 06:56 | ||
nothingmuch | yep | 07:03 | |
but not necessarily | |||
cwest: my browser crashes, and I don't know why | |||
safari, that is | |||
every time it loads, it just goes into beachball spinning mode | |||
cwest | nothingmuch: that's crazy. I run safari all day on openjsan and don't have issues. | 07:05 | |
You need to inable your debug menu option. | |||
Then you can look at the javascript console | |||
well, try cmd+shift+j and see if it'll come up. | |||
nothingmuch | can you zip your safari .app and put it up somewhere? | 07:06 | |
or anyone on tiger, for that matter? | |||
ugh... brb | 07:08 | ||
cwest: OSX update solved it | 07:17 | ||
cwest | oh nice | ||
excellent | |||
nothingmuch | eep | 07:18 | |
jsan.woobling.org/doc/a/ad/adamk/Up...index.html | |||
cwest | bummer | 07:19 | |
nothingmuch | i see why | ||
i'll comment that out | 07:20 | ||
i thought it was a perms problem, but it isn't | |||
ok, fixed | 07:21 | ||
cwest | cool | 07:22 | |
nothingmuch | can you provide rsync with a UID map? | ||
cwest | I'm not sure what you mean, but maybe. | 07:23 | |
is it trying to keep the uid of the files on my server? | |||
nothingmuch | yep | 07:24 | |
cwest | I think that's a client side option. | ||
nothingmuch | what's the named ID, btw? | ||
probably, if at all | |||
i know how to ignore UIDs | |||
or to make it use named UIDs instead of numerical ones | |||
if it's apache:apache then I'm happy | |||
cwest | my side it's cwest | ||
nothingmuch | okay... on my side it's my sister's user =) | 07:25 | |
cwest | it'd be nobody:nobody if it were my apache users. | ||
heh | |||
nothingmuch | i can just run it as apache instead of as root | ||
cwest | okay | ||
ah, excellent. home grown yaml errors | 07:27 | ||
nothingmuch | jsan.woobling.org/community/svn.html <-- not linked | 07:28 | |
use relative links | |||
cwest | nnot linked where? | 07:29 | |
nothingmuch | from itself | ||
you are linking directly to openjsan.org/D | |||
instead of just to /community/svn.html | |||
cwest | you mean from the homepage? | ||
nothingmuch | or "community/svn.html" | ||
yes | |||
cwest | oh yeah, that's a matter of convenience | ||
I'm being very lazy and copying my updates to my blog verbatim. | 07:30 | ||
nothingmuch | ah | ||
well, run a script on it or something, because I'm only mirroring index.html | |||
cwest | only? | ||
nothingmuch | well, the images too | 07:31 | |
and the distributions links are relative | |||
cwest | at the moment I'm trying to fix the indexer | ||
nothingmuch | but all the links from the news aren't going to be used | ||
cwest | yeah, this is true. they should all be changed. | ||
So check this out. svn co openjsan.org:81, edit in openjsan/trunk/tempaltes/src/index.html, send patch to jsan-devel ;-) | 07:32 | ||
gaal | lwall++ # The Element of Surptise: %*INC is lexically scoped! | ||
cwest | Or, you know, wait for me to do it. | ||
nothingmuch | okay | ||
cwest | if you wait I'll fix it tomorrow | ||
Aankhen`` | gaal++ # "Surptise" | 07:33 | |
nothingmuch | nono, i'll do it now | ||
cwest | finally fixed indexer, broken due to broken META.yml files. | ||
gaal | (creative typos)++ | ||
Aankhen`` - hi! - you were looking for me the other day? | |||
Aankhen`` | Hi. | ||
And yeah, I was... | |||
Aankhen`` tries to remember. | |||
Oh yeah! | |||
Did you see examples/eval.p6? | |||
gaal | yes | 07:34 | |
Aankhen`` | Well, basically, I want to emulate Pugs.Shell; I was wondering if you could maybe add hooks into all the functions it uses? | ||
gaal | what are your plans for it? | ||
cwest | Note: If you upload broken META.yml files they will not be included in the index! | ||
anyway | |||
gaal | hooks? | 07:35 | |
Aankhen`` | A way to call the functions from Perl 6. | ||
gaal | oh, you mean for :d and :D and those things in <interactive>? | ||
Aankhen`` | Yeah. | ||
nothingmuch | cwest: what do all the pretty animal logos symbolize? | 07:36 | |
gaal | i'll take a peek to see what that implies | ||
Aankhen`` | OK. | ||
Thanks. :-) | |||
gaal | np :) | ||
nothingmuch | cwest: svk patches are OK? | 07:40 | |
cwest | nothingmuch: sure. I don't know what they'll look like but maybe it's time I try svk. :-) | 07:42 | |
I'm up for anything at this point as long as it includes some kind of contribution. :-) | |||
Aankhen`` | I WILL COMPILE SUBVERSION ONE OF THESE DAYS | ||
cwest | (with ssl support) | 07:43 | |
cwest updates his journal and plans to head to bed | |||
nothingmuch | oof! | ||
cwest | very very late | ||
nothingmuch | wait 2 more minutes | ||
cwest | alright | ||
gaal | Aankhen``: there is some coupling to tease apart there to make it work. so can you say why we need this? ie why a user would use eval.p6 instead of the native pugs shell? | 07:46 | |
(it's not like eval.p6 will be portable to other p6 implementations if those hooks are exposed) | |||
Aankhen`` | Well, I just put it together as an example; putter said it might be a good idea to start working on a native P6 read-eval-print implementation... | ||
gaal | ahh | ||
so you need to implement those things natively :) | 07:47 | ||
hooking into the internals is cheating | |||
Aankhen`` | Riiight... I need to implement the Haskell representations natively... :-P | ||
nothingmuch | autrijus: ping | 07:48 | |
gaal | looks like you just want CmdParse[Raw]? then | 07:49 | |
Aankhen`` checks. | |||
gaal | doParse in Main.hs:217 | ||
nothingmuch | cwest: ok, i only have svk di to offer | 07:50 | |
Aankhen`` | That returns the "pretty" representation? | ||
nothingmuch | i don't know how to make a "proper" patch | ||
cwest | So... is it ever to early to start a lexicon thingy for jsan, so it can be converted to multiple langauges? | ||
gaal | actually it prints it | ||
Aankhen`` | Ah. | ||
cwest | nothingmuch: send it to jsan-devel, I'll see if I can make sense of it. | ||
Aankhen`` | Hrm. | ||
I need to get at the syntax tree. | 07:51 | ||
gaal | hmmm, doParseWith is more like it since you will want to supply an env. | ||
cwest | nothingmuch: also, you rock | ||
Aankhen`` | I can use `.perl` for the pretty representation. | ||
gaal | you want a *string* of the syntax tree | ||
Aankhen`` | Er, yeah. | ||
nothingmuch | i don't know how to make a "proper" patch | ||
pasteling | "nothingmuch" at 212.143.92.226 pasted "svk di //local-branches/jsan //mirror/jsan" (45 lines, 1.9K) at sial.org/pbot/11754 | ||
nothingmuch | oof! i hate confusion | ||
Aankhen`` | Isn't it fun to be clueless and learn as you go along? ^_^ | ||
cwest | nothingmuch: Oh I see. svk di isn't something I can work with? | ||
nothingmuch: It's cool, send the whole file. | 07:52 | ||
I can do the rest. | |||
nothingmuch | i think it is workable | 07:53 | |
pasteling | "nothingmuch" at 212.143.92.226 pasted "index.html template" (150 lines, 4.5K) at sial.org/pbot/11755 | ||
cwest | yeah, that's cool. | ||
nothingmuch is not able to sign in to google groups | |||
set up commit access =) | |||
gaal | okay, i think i know what's needed. | 07:54 | |
cwest | heh. send me the output of htpasswd -cm /some/fille you_user_name | ||
Aankhen`` | Be back in 10 minutes. | 07:56 | |
gaal | good idea. me too | ||
i know how to do it, but only in a hacky manner. so i'd rather wait a bit until a better idea comes up. | 08:12 | ||
i want to avoid duplicating the code in doParse: and instead having that call a Prim (just like doLoad delegates to &require) | 08:13 | ||
but then there's the question of passing prettyFunc (either pretty or show) as an argument | |||
my alternatives are either writing two different prims (yech) | 08:14 | ||
or writing one prim with an integer arg indicating print func (yech also) | |||
both look easily vulnerable to bloat, like e.g when you'd want errors to show up as different colors in some environments | 08:15 | ||
hmm, though that one can easily be overcome by making error messages actually fails | 08:16 | ||
so the caller's responsibility is to look in $! and print that | |||
but i dislike having the magic numbers in there | |||
Aankhen`` | That's alright. | 08:22 | |
It's a WIP. | |||
I can wait. | |||
rafl | Pugs installs a lot of stuff as a default, including object files and some headers. I doubt if everything is really needed. Who can tell me what can be safely removed? | 08:35 | |
gaal | you mean the CORE stuff? | ||
rafl | Right. | ||
gaal | backlog i think three days ago, i believe it's required for -C / -B | 08:36 | |
rafl | Even some c source gets installed.. | ||
I don't log IRC. Do you? | |||
gaal | colabti.de/irclogger/irclogger_logs/perl6 does | 08:37 | |
with search | |||
rafl | Can you give me a keyword? I can't find the discussion you're refering at. | 08:38 | |
gaal | sorry, don't remember exactly. core? sources? blib? | 08:39 | |
alternatively use svn log -v to find the first instance of CORE | |||
...or look at Makefile.PL history... :) | 08:41 | ||
err, you don't need -v for that svn log greppage | |||
i'm going off till late tonight. see 'ya. & | 08:42 | ||
rafl | Bye gaal. | ||
Aankhen`` | SWIG sucks. :-\ | 09:18 | |
rafl | Here are the pugs Debian packages I prepared: www-user.tu-chemnitz.de/~rafl/Code/Debian/Pugs/ - I plan to upload them to unstable today. Maybe someone want's to try them out before? | 09:23 | |
Aankhen``: ACK | |||
Aankhen`` wanders off to shave and shower. | 09:25 | ||
integral tries the .debs | 09:26 | ||
well the dpkg -i went smoothly :-) | 09:29 | ||
and it works! rafl++ rafl++ | 09:30 | ||
rafl | src/Pugs/CodeGen/PIR/Prelude.hi, src/Pugs/CodeGen/PIR/Prelude.o ext/Test-Builder/destroy_test.p6 aren't cleaned when running make clean. | 09:36 | |
svnbot6 | r5587, rafl++ | * Improved the Debian package: | ||
r5587, rafl++ | * Moved architecture independent modules to pugs-modules | |||
r5587, rafl++ | * Closed the ITP bug with the changelog | |||
r5587, rafl++ | * Clean up properly in clean rule | |||
rafl | Someone should fix that. | ||
integral | it's because of the funky way that the list of files to clean is specified :-) | 09:40 | |
hrm, and they should get cleaned | |||
rafl: hmm, I'm not seeing that problem, my src/Pugs/CodeGen/PIR gets cleaned just fine :-/ | 09:43 | ||
ah, it is this problem: src/Pugs/CodeGen/PIR is an autogenerated directory, not part of svn | 09:44 | ||
rafl | As well as ext/Test-Builder/destroy_test.p6. | 09:49 | |
nothingmuch | pretty: www.artlebedev.ru/portfolio/optimus/ | 09:50 | |
rafl | Cool.. | 09:53 | |
integral | rafl: would it be an idea for the debian packages to setup an alternative for /usr/bin/perl6 to point to pugs? | 09:54 | |
rafl | There's no alternative yet. | ||
Should pugs be able to coexist together with the real perl6? | 09:55 | ||
integral | definately | 09:56 | |
castaway | just make a "pugs" link.. | ||
? | |||
rafl | Well, I don't think installing an alternative is needed, atm. | 09:57 | |
castaway: That only defers making an alternative until there's another perl6 interpreter available. We could also do that now. | |||
castaway: It's not "nice", anyway. | |||
castaway | sorry, which isnt nice? | 09:58 | |
I would do that now, were it me. | |||
rafl | Simply installing a symlink from perl6 to pugs. | ||
castaway | I dont see why thats not nice | 10:00 | |
castaway shrugs | |||
rafl | Because as soon as there's another perl6 interpreter available I would need to remove that anyway. | 10:01 | |
And the perl6 maintainer would need to ask me to do that before he can upload his package. That would just delay the process. | 10:02 | ||
castaway | so just make a pugs link and forget the perl6 one? | ||
integral | "pugs link"? | 10:03 | |
castaway | oh, wait, thats what integral wanted, no? I misread what he said | ||
rafl | To what should the pugs link point? There's already the pugs executable in /usr/bin. | ||
castaway should shut up | |||
integral | huh? I wanted /usr/bin/perl6 to point to /usr/bin/pugs, where /usr/bin/pugs is the pugs binary. | ||
castaway | yeah, I read "an alternative to perl6 link" | 10:04 | |
which suggested to me there already was one | |||
integral | ah | ||
rafl | castaway: alternatives are a technology of Debian to make packages that provide the same files coexist together in peace. | 10:06 | |
I just updated the Debian packages again to put also the perl5 libs into pugs-modules. They were in the pugs package before. | |||
castaway | like the prefered_browser thing, or whatever its called? | ||
wolverian | sensible-browser | 10:07 | |
castaway | thats the thingy | ||
wolverian | (and -editor and -pager) | ||
castaway only suffers Debian on the machine she doesnt use ,) | |||
wolverian | debian only suffers me. I enjoy it. | ||
rafl | castaway: x-www-browser and www-browser, right. | ||
wolverian | the sensible- things check the environment for X, yeah. | 10:08 | |
(they're not part of alternatives really.) | |||
castaway | anyway, I think the "perl6" whateveritis, is a bad idea :) | 10:09 | |
Debian annoyed me at some point in the past, and I#ve get to figure out why, and thus cant resolve myself to using it.. (yeah, i'm irrational) | |||
s/get/yet/ | 10:14 | ||
wolverian | tried ubuntu? :) | 10:15 | |
Aankhen`` | cwest, you around? | 10:54 | |
nothingmuch | Aankhen``: he went to bed | 10:56 | |
Aankhen`` | Darn. | ||
nothingmuch | Aankhen``: i can commit stuff to openjsan now | 10:57 | |
can't update though | |||
Aankhen`` | That's cool. | ||
nothingmuch | if you need anything | ||
that way the next time he runs make it will be OK | |||
maybe he runs it automatically, so even better | |||
Aankhen`` | I need to ask cwest if it's okay to give his e-mail address to someone who I'm trying to get onboard... | 10:58 | |
Wait, his e-mail address is on the site anyway, so it's not exactly private... :-P | |||
nothingmuch | huraah! | ||
Aankhen`` | You know who Dean Edwards is? | 11:02 | |
Oh heck. | |||
Aankhen`` wanders off. | |||
nothingmuch | Dean Edwards? nope... | 11:03 | |
dean.edwards.name/ | |||
i like it when hackers' websites google rank higher than celebrities with the same name | 11:04 | ||
castaway | heh | 11:06 | |
nothingmuch is almost succeeding this: www.bogleg.com/jag/movies/3ballr1.mpg | 11:13 | ||
my problem is with the second under throw | |||
i can't time it right | |||
svnbot6 | r5588, scook0++ | * Haddock tweaks to Eval | 11:35 | |
nothingmuch | kungfuftr: i have a concrete task for you: | 11:51 | |
whenever you click the [+] and [-] buttons the row changes height | |||
i'd like the test name to stay put | |||
do you think you can solve it? | |||
kungfuftr | nothingmuch: argh... lemme get back to you on it... can you wait until the weekend at all? | 11:56 | |
nothingmuch | sure, this is not urgent | 12:00 | |
my HTML fu is just teh sux0r | |||
irssi + growl == fun | 12:07 | ||
brb | 12:08 | ||
rafl | Pugs is now in the Debian NEW queue: ftp-master.debian.org/new.html | 12:14 | |
It should go into unstable in about a week or so. | 12:15 | ||
Limbic_Region | rafl - I had a dream I met you last night | 12:17 | |
odd - I was at some perl conference (which I have never been to IRL) | |||
I was getting ready to leave and you introduced yourself and said hope to see you again next time | |||
nothingmuch | bah! | 12:18 | |
Limbic_Region | the dream then progressed into a murder trial where I could hear the thoughts of the defendent - wonder if that means anything *grin* | ||
nothingmuch | sorry everyone | ||
Limbic_Region | nothingmuch - will have some questions for you in a bit if you will be around? | 12:19 | |
nothingmuch | yes - for the next 35 minutes | ||
then I have to go pick up my dad | |||
Limbic_Region | ok - will likely have to wait until after then | ||
I just started a new make smoke | |||
I got to thinking about the types of things that you had mentioned wanting to isolate in a short easy to read string | 12:20 | ||
and I am not sure how I am going to be able to find them - since I have a single system with a single configuration - where does the diversity come in? | 12:21 | ||
nothingmuch | if you have two test. | ||
yml files | |||
like for example yours and this one ... | |||
nothingmuch.woobling.org/pugs_test_.../tests.yml | 12:22 | ||
jdv79 | anyone know why whitespace is allowed between the sigil and the identifier in p5 but not in pugs? | ||
nothingmuch | (updated regularly) | ||
Aankhen`` | nothingmuch >> I am aware of who Dean Edwards is, I was asking if you know him. :-P | ||
nothingmuch | interesting things inside the suummary are: osname, pugs_revision, | ||
Aankhen`` | Know of him, even. | ||
Limbic_Region | ok nothingmuch - that should do it | ||
thanks | |||
nothingmuch | oh... no | ||
sorry Aankhen`` | 12:23 | ||
Aankhen`` | S'okay, no biggie. :-) | ||
nothingmuch | make it generic | ||
Aankhen`` | BTW, what's the page where the [+] and [-] changes height blah blah? | ||
nothingmuch | and I'll ask autrijus how to add the pugs embed flags, etc | ||
nothingmuch.woobling.org/detail.html | |||
when you minimize or maximize a case, the line with 't/dummy.t expanded view' wobbles | 12:24 | ||
i'd like it to stay put | |||
Aankhen`` | Ah. | ||
QtPlatypus | jdv79: I didn't even know what white space was permitted there. | ||
jdv79 | perl -e 'my$ foo="bar";print $ foo;' | 12:25 | |
but then run that with pugs:) | |||
Limbic_Region | nothingmuch - well I need to work on a $work project while this make smoke is running - hopefully it won't take too long | ||
I need to come up with a list of last names from somewhere | |||
I am going to get first names by screen scraping a baby name web site | |||
Aankhen`` | jdv: C:\Documents and Settings\Aankhen>perl -ew "my$ foo='bar'; print $ foo" | ||
Um. | |||
Sorry. | |||
Hrm, that's DOS's fault. | 12:26 | ||
Anyway. | |||
It prints nothing. | |||
nothingmuch | Limbic_Region: ok.... i'll be around when I return | ||
jdv79 | does for me? | ||
Aankhen`` | jdv79 >> What version? | 12:27 | |
(of Perl) | |||
nothingmuch | gaal: ping | ||
pasteling | "jdv79" at 216.6.168.167 pasted "[jman@bla ~]$ perl -we 'my$ fo" (21 lines, 765B) at sial.org/pbot/11756 | 12:28 | |
QtPlatypus | My guess is that larry thought it was a missfeature. | ||
jdv79 | and the latest pugs, 6.2.8 is it | ||
:) | |||
Aankhen`` | I am using 5.8.7... maybe that makes a difference? | ||
jdv79 | its been in there for a while - i remember it coming up once before a while ago | ||
nothingmuch | Limbic_Region: another tests.yml, stolen from gaal: perlcabal.org/~nothingmuch/tests.yml | 12:29 | |
that way you don't need to wait for yours | |||
jdv79 | pretty weird behavior - i'm all for getting rid of it. | 12:30 | |
nothingmuch | perlbot: seen Corion? | 12:36 | |
gugod: please give us jabbot back, we miss him | |||
gugod | err | ||
ouch, | |||
there you go | 12:37 | ||
Limbic_Region | thanks nothingmuch - I got that one too | ||
nothingmuch | Limbic_Region: get cracking then | 12:38 | |
gugod: thanks! | |||
Aankhen`` | nothingmuch >> Just out of curiosity... what the heck have you and L~R been discussing over the past few days? | ||
I try very hard to understand, but I appear to have missed some critical points. | 12:39 | ||
nothingmuch | Aankhen``: he is going to generate the distinguishing string ('real run', and 'dummy failures' in the example) from tests.yml | ||
so that if you compare two revisions, each will have the rev | |||
Aankhen`` | I see. | ||
Ahh. | |||
Neat. | |||
nothingmuch | but if you compare two platforms, same revision, only the osname is shown | ||
Aankhen`` | Right. | ||
nothingmuch | basically generate an array of attribute strings, filter out those which are the same | ||
and try to compress the result if it's too long by replacing long words with shorter ones | 12:40 | ||
like s/windows/win/; s/embedded perl5/+p5/ | |||
as much as needed | |||
Aankhen`` | Where will this be used? | ||
And how do you compare the two? | |||
nothingmuch | I'm schemeing a smoke server written in catalyst | 12:41 | |
where people upload tests.yml files | |||
Aankhen`` | Oh, right, now I remember that part of it. | ||
nothingmuch | then you can search by revision, platform, etc | ||
and accumilate a list of reports you care about | |||
and then get a graph of them together, to see the difference | |||
Aankhen`` | This is the one where you told me to shut up? | ||
nothingmuch | uh, maybe | ||
around that time, anyway | |||
Aankhen`` | Yay! I remember! | ||
What difference would a graph show? | 12:42 | ||
A graph of the success %? | |||
s/success/passed/ | |||
Limbic_Region | nothingmuch - as I said, $work project has priority - besides, I am still smoking | ||
nothingmuch | blah blah blah, work | ||
you're not doing what you're told | |||
Aankhen`` | Right, thanks for bearing with my questions. :-P | 12:43 | |
Aankhen`` 's memory is due for an upgrade. | |||
svnbot6 | r5589, autrijus++ | * Perl6::MetaModel - EXTEND in Array containers means growing _to_ a | 12:55 | |
r5589, autrijus++ | certain number of entries, not growing _by_ that number of entries. | |||
masak | question: | 13:06 | |
is this supposed to work? | |||
my %h; given %h { .{'key'} = 'value'; } say %h{'key'} | |||
(it doesn't, but it feels natural to do) | |||
QtPlatypus | masak: Isn't that part of what the whole long ugly thread on p6l is about? | 13:07 | |
masak | it is? :) | ||
maybe punt the answer then | |||
QtPlatypus: wait, do you mean the ./ thread? | 13:08 | ||
i think not | |||
this is hash dereferencing | 13:10 | ||
QtPlatypus | Its a method call. | ||
masak | but it has nothing to do with $self | ||
of $_SELF, or whatever | |||
:) | |||
QtPlatypus | On %h | ||
masak | yes, yes | 13:11 | |
rafl | Limbic_Region: That scares me. | ||
masak | but there are no invocants | ||
i don't claim to fully understand what they're discussing in the $long_ugly_thread, but I do think this falls outside | 13:12 | ||
at least the semantics does | |||
so i rephrase my question as: will it ever be possible to do something in the spirit of what i wrote above, using whatever syntax? | 13:13 | ||
QtPlatypus | Yes | ||
And if it isn't damn it I will write a with macro | 13:14 | ||
masak | :) | 13:15 | |
so, should I add a test for this? | |||
how do you add a test for unsupported syntax? pugs dies with "unexpected {" inside the given | 13:16 | ||
QtPlatypus | Check the bible, if you can find soumething that supports your veiw then do it | ||
eval | |||
masak | thx xx 2 | 13:17 | |
ok, so apoc 4 talks about given | 13:22 | ||
www.perl.com/pub/a/2002/01/15/apo4.html?page=2 | |||
this is old stuff, though | |||
and the only things i find about method calls seem to imply that my use case is ok | 13:23 | ||
Khisanth | masak: search.cpan.org/~ingy/Perl6-Bible-0..._statement ? | ||
masak | Khisanth: thx | 13:24 | |
"A method must be written with a unary dot to distinguish it from other forms." | 13:26 | ||
"The method may have arguments. In essence, when you write .foo(1,2,3) it is treated as if you wrote { $_.foo(1,2,3) }" | 13:27 | ||
i don't know if that's relevant, but that's the only thing i find about it | |||
svnbot6 | r5590, iblech++ | New test testing the return values of use and require: | ||
r5590, iblech++ | t/packages/require_and_use.t (with three helper .pms). | |||
r5591, iblech++ | examples/eval.p6: | |||
r5591, iblech++ | * fail_s are catched now | |||
r5591, iblech++ | * Switched to P5-regex, as PGE is currently borked. | |||
r5591, iblech++ | * Made ^D/^Z work and updated the banner message. | |||
r5592, iblech++ | Usual svn props, EOLs at EOFs, minor doc and Haddock fixes. | |||
Khisanth | masak: well that page is a bit more updated but probably still not up to date | 13:33 | |
svnbot6 | r5593, iblech++ | util/version_h.pl -- Made it work again (it was removing Help.{hi,o}, where it | ||
r5593, iblech++ | should remove Version.{hi,o}). | |||
integral | iblech++ | ||
masak | Khisanth: do you think anyone has mentioned my use case? it feels intuitive to me | 13:49 | |
Khisanth | masak: I think it is a bug :) | 13:50 | |
QtPlatypus | Khisanth: Why? | 13:52 | |
Khisanth goes to grep logs and prepares to hit QtPlatypus :) | 13:53 | ||
kungfuftr | bit off topic, but has anyone played with Apache::PAR and a catalyst package? | 13:54 | |
masak | Khisanth: note that it doesn't work in current pugs | ||
but i want it to | |||
Khisanth | masak: the question is, has given been fully implemented yet? :) | 13:58 | |
QtPlatypus | Also does anyone know if in the situation like this macro tree (&code) { say $/;&code }; Should $/ contain the parse tree for &code? | ||
autrijus | the short answer is no :) | 13:59 | |
Khisanth | well there you go! :P | ||
autrijus | macro gets PIL -- in the Pugs world, that is -- in the alternate universe you get PAST -- but you never get match objects. | 14:00 | |
however. | |||
it is conceivable that you can get match objects attached to PIL | |||
Khisanth | pugs not working with current (more or less) HEAD of parrot is correct? | ||
autrijus | and it may even come with $/ if lwall desire so | ||
but it's unspecced. and you can't return $/ and expect it to work | |||
Khisanth: I don't know, hadn't tested; I'm waiting for leo-ctx5 to land | 14:01 | ||
svnbot6 | r5594, autrijus++ | * In span-code.t the now-illegal `sub {$^a}` form is used; | ||
r5594, autrijus++ | change it to the canonical `{$^a}`. | |||
QtPlatypus | autrijus: The bible seems to imply that $/ will contain some sort of AST in that situation. | ||
autrijus | define "not working"? | ||
Khisanth | autrijus: the "PackFile_unpack: Bytecode not valid for this interpreter: fingerprint mismatch..." thing I mentioned the other day | ||
autrijus | QtPlatypus: A06? | 14:02 | |
Khisanth: maybe the installed version of parrot does not match the linked one? | |||
QtPlatypus nods. "Like my find the quote where I got that impression from" | |||
autrijus | it looks like it tries to load a .pbc and fails | ||
Khisanth | err I only have one parrot as far as I know | ||
QtPlatypus | BTW how do I get at the PILL in that situation? | ||
autrijus | QtPlatypus: you likely get an object in the style of ext/Perl6-Compiler/ | 14:03 | |
Perl-Compiler | |||
Khisanth tries a make clean | |||
nothingmuch | autrijus: i want to try pil on p5 another way: | 14:04 | |
implement a PIL walker and PIL nodes in perl 5 | |||
and just walk that | |||
autrijus | nothingmuch: sure | ||
nothingmuch | and also try to emit perl5 code that represents PIL walking (that is, unroll the wrapping for PIL) in haskell | ||
autrijus | QtPlatypus: anyway. the deal is that $/ will not be a regular match object tree; it will be PIL annotated with match objects, or match objects anotated with PIL | ||
nothingmuch | i think Perl 6 doesn't have enough tools for the job | ||
and perl5's tools aren't good enough | |||
autrijus | QtPlatypus: so maybe you can indeed return $/ and expect it to work, but the structure of $/ is likely to be not a regular Match object | 14:06 | |
masak | autrijus: is `my %h; given %h { .{'key'} = 'value' }` meant to work eventually? | ||
svnbot6 | r5595, iblech++ | Clean temporary files, rafl++ for noticing: | ||
r5595, iblech++ | * ext/Test-Builder/t/010_Test_Builder.t: destroy* | |||
r5595, iblech++ | * perl5/PIL-Run/crude_repl.pl: deleteme.p6 | |||
r5595, iblech++ | * Makefile.PL: Prelude.{hi,o} | |||
autrijus | QtPlatypus: pmichaud mentioned something about rebinding $/ inside rules and make it return something else entirely | ||
QtPlatypus | "Macros are considered methods on the current parse state object, so they have an invocant Macros are considered methods on the current parse state object | 14:07 | |
We treat macros as if they were methods on the parse object returned by the grammar rule, so the first argument is passed as if it were an invocant, and it is always bound to the current parse tree object, known as $0 in Apocalypse 5. | |||
autrijus | right, and that's written before the understanding that a one-pass parser can't generate AST. :) | ||
QtPlatypus | Arh. | 14:08 | |
autrijus | what I'm saying is just A06's view is naive | ||
its interface may be of use, but all its speculation about internals is to be taken as way off :) | |||
(which is why we need a separate macro synopsis.) | |||
QtPlatypus nods. | |||
autrijus | back when A06 was written, the dominant view is that there's no separate compilation | 14:09 | |
and P6 AST will just be like P5 -- parse tree annotated with some type information | |||
that view is now shown as naive, and I don't think any of @Larry is still holding onto it | |||
from what I gather at hackathon, the consensus is now separate compilation with a separate AST structure. | 14:10 | ||
(this is also because pmichaud and I both observed that we can't share a parse tree structure with python, but there's a good chance that we can share something at PIL's level with python.) | |||
(and macros are better done at that post-compilation level, not the naive pre-compilation parse level) | 14:11 | ||
"are better" is understatement; "only sane way" is more like it :) | |||
masak: it looks like it should work, yes | 14:13 | ||
QtPlatypus | Does that mean that some macro's are impossable to be portable accross perl6 implimentations? | ||
autrijus | masak: I'm surprised there's no todo test yet | ||
QtPlatypus: if the macro synopsis is written with a certain interface of syntax nodes | 14:14 | ||
then that becomes normative | |||
and all implementations are supposed to honour it. | |||
QtPlatypus nods "Sorry about asking all these questions and contributing relativly not much." | 14:15 | ||
autrijus | there's a good chance that if PIL is up to the task then ext/Perl-Compiler/ interface can be made part of that spec. | ||
(since it's one of the points that pmichaud and I both agree vehemently on) | |||
QtPlatypus: oh, that's fine -- if you'd like to contribute you can do what putter did and write this up and append to docs/notes/plan | 14:16 | ||
someone will then do what geoffb did and edit it into beautiful prose :) | |||
masak | autrijus: i can write one | ||
autrijus | masak++ # go ahead then :) | 14:17 | |
masak | `my %h; given %h { .<key> = 'value' }` should work too | ||
autrijus | right. | ||
QtPlatypus: so, got some cycles to do a writeup? :) | 14:18 | ||
Khisanth | hmm make clean; make; fixed that problem with parrot | ||
autrijus | Khisanth: glad to hear | 14:19 | |
Khisanth starts wishing for better alternatives to make :) | |||
QtPlatypus | autrijus: Sure. | 14:20 | |
autrijus | QtPlatypus++ | ||
svnbot6 | r5596, masak++ | Added tests for hash dereferencing inside a given block | 14:27 | |
QtPlatypus | Also, I have a have a base conversion sub that is usefull and a Base64 en/decoder. Where should thouse things go? | 14:29 | |
autrijus | ext/MIME-Base64/ | ||
QtPlatypus nods. | 14:30 | ||
Though its only going to be usefull when we get raw bytes. | |||
autrijus | aye. which means our VStr type needs a rethink. | 14:39 | |
but wait... I've thought about it before :) | |||
(culminating in Dan's ParrotString design) | |||
so maybe we just take that. | |||
QtPlatypus nods. | 14:41 | ||
autrijus | Juerd: | 14:42 | |
Juerd | ""? | ||
autrijus | I'm waiting for the remaining 4 days to pass. :) | ||
Juerd | So am I. | 14:43 | |
autrijus | good. just so we know we agree :) | ||
Juerd | But I finally found the name of this biblical figure (had been searching for a few days), so had to post it | ||
autrijus | ahh. | ||
Juerd | I find it a very bad way to interact with people to force this situation. | 14:44 | |
But I needed the reference for a better post :) | |||
14:49
joepurl_ is now known as joepurl
|
|||
svnbot6 | r5597, fglock++ | added Span::Code.stringify | 14:55 | |
r5598, fglock++ | fixed stringify | |||
r5599, qtplatypus++ | Raw dump of macro discussion, nice-ed up version to follow | |||
masak | Juerd: king Solomon and the baby? | 15:01 | |
Juerd | Yes | 15:04 | |
If you can't pick a real solution, kill the entire idea, and hope someone screams loudly. | |||
autrijus | to date 4 people screamed loudly. | 15:07 | |
Juerd | Yes, I am a bit amazed that not everyone screams loudly. | 15:08 | |
autrijus | so obviously ./ is sane! | ||
;) | |||
Juerd | I never claimed it was sane | ||
I don't think it is | |||
elmex | i hate ./ | ||
Juerd | It is, however, a pretty and good looking solutino for a real problem | ||
elmex | ./ is no solution. | ||
Juerd | It is a solution | ||
It is perhaps not a syntax you like | 15:09 | ||
But it is a solution | |||
elmex | it's a syntax that doesn't fit into the language | ||
Juerd | Haha | ||
As if all those other things "fit in" | |||
elmex | #$*(#%#$(*#$*#.method () is also a solution | ||
Juerd | There is no syntax that will fit in. | ||
autrijus | right. so both are solutions :) | ||
Juerd | It's simply unavailable | ||
elmex | at least larry doesn't want ./ to be the default | 15:10 | |
autrijus | in certain other languages all it takes is for the Power That Be to declare 'self' or 'this'. :) | ||
elmex | autrijus: perl5? | ||
Juerd | A keyword would be unperlish in that a function (or what looks like a function) then represents a "current" variable, which is unprecedented except for I/O stuff (cwd) | ||
autrijus | elmex: er, no, anything but perl5 | ||
Juerd | A variable can't fit in because some crazy guy decided all predefined variables had to be ugly upper case and having a twigil | 15:11 | |
autrijus | Juerd: ... and schwern's $*CWD. | ||
fwiw, $?SELF makes sense and fits in, it's just very hard to type. | |||
Juerd | And there is only ONE single-character available in term position, the character being ^, which doesn't fit in because ^ has a lot of other meanings, all of which are somehow related. | ||
autrijus: Indeed. | |||
And I wouldn't mind NOT having any syntax for ./foo, but I do mind - intensely - not having .foo to default to $_.foo | 15:12 | ||
svnbot6 | r5600, fglock++ | fixed tests, examples | ||
autrijus | Juerd: indeed. | ||
but I can see people minding the other and not minding the other. | 15:13 | ||
which is why larry went Solomonian. | |||
Juerd personally thinks invocant method calls don't really need a shorter syntax. Invocants, like other arguments, should be declared. (There will of course, within a day from 6.0.0's release, be a module that introduces something that adds a $self declaration to every method's signature that doesn't already declare the invocant.) | |||
(And I would also not mind this te be default) | |||
elmex | Juerd: do you mean larrys decision about these crazy meaning about .method => $_.method ? | ||
nothingmuch | whatr is "Solomon judgement" in this context? | ||
autrijus | elmex: Juerd meant _outlawing_ .method within a topicalizer in methods | 15:14 | |
that is insane. | |||
nothingmuch simply doesn't see what's so bad about $_ being the default invocant, and .method always working on $_ | |||
elmex | autrijus: indeed | ||
Juerd | elmex: Larry's decision to let .foo mean $_.foo is a good one, and the only correct choice in light of the entire language, and history. | ||
autrijus | it's the least sane solution | ||
elmex | Juerd: indeed, yes | ||
autrijus | but I can follow larry's logic into that solution :) | ||
Juerd | elmex: Larry's decision to disallow .foo entirely whereever a $?SELF exists, is stupid and makes me angry. | ||
autrijus | Juerd: it pisses everybody off equally. | ||
elmex | Juerd: i completly agree | 15:15 | |
nothingmuch utters a "me too" | |||
autrijus | nothingmuch: "solomon judgement" means pissing everybody off equally at +Inf | ||
Juerd | autrijus: I can follow the logic. But I think this was neither wise nor friendly. | ||
elmex | Juerd: changing the semantics of .method depending on whether the code is in a sub oder method is not good | ||
autrijus | see, elmex and Juerd agreed | ||
elmex | (imho) | ||
autrijus | that won't happen were larry didn't make that solomonian ruling. | ||
;) | |||
by virtue of having everybody pissed off at +Inf, suddenly we all agree :) | 15:16 | ||
Juerd | autrijus: It would have happened. I have said before that I have absolutely no strong opinion at all about invocant.foo, while I do have a very strong opinion about .foo meaning $_.foo in every situation. | ||
Yes, I invented ./foo, but that was by coincidence, and I have admitted from the beginning that the mnemonic is forced, and that it doesn't really make all too much sense. | |||
It works for me. | 15:17 | ||
But it doesn't HAVE TO be there. | |||
autrijus | Juerd: right but people care about different things differently, and the only way to make us all agree is by blatantly breaking all parts that people can conceivably care about :) | 15:18 | |
Juerd | I did get the impression that people who have actually already written lots of Perl 6 code, all like ./foo | ||
nothingmuch | Juerd: are you saying "the './' syntax as shorthand for $?SELF.foo doesn't need to be the default, but .foo must always mean $_.foo"? | ||
Juerd | While people who think it's ugly generally haven't really written any class greater than 5 lines yet. | ||
I might be mistaken. | |||
nothingmuch | has this exact claim been raised on the list? | 15:19 | |
Juerd | autrijus: I know how it works. The solomon thing is a nasty but very obvious move. | ||
nothingmuch | i've been enjoying ./foo a lot, because it is very different to *type*, and thus very good for the mind | ||
elmex | Juerd: i have a strong opinion agains './', imho anything but './' (and other crazy punctation) would be fine... even larry's o.method (). and i agree, that .method -> $_.method is going to be quite useful | ||
Juerd | nothingmuch: Yes, I am saying that I don't care about the $?SELF.foo shortcut at all. | ||
nothingmuch: And that .foo must be $_.foo | |||
nothingmuch | Juerd++; # very sane | ||
Juerd | And those things I have uttered repeatedly on the list, as far as my memory serves me correctly. | 15:20 | |
(Which, I admit, is rapidly going downhill) | |||
autrijus | Juerd: oh, and that would mean method do not topicalise $?SELF ? | ||
or you are neutral on that? | |||
nothingmuch | i think methods topicalize on $?SELF | ||
unless $_ is in the parameter list | |||
Juerd | autrijus: In general, for consistency, I'd want it to topicalise. But it's not important enough to fight over. | 15:21 | |
nothingmuch | there is absolutely no reason not to do it | ||
elmex | nothingmuch: \/\/\/\/\/\/\/\/.method would be different to type too ;-) or ((((.method or ~^~.method ;-) | ||
autrijus | nothingmuch: there is a very good reason, namely you can't copy a naive .foo into a given block. | ||
Juerd | I think that the body of a given { } should be abstractable to a method without any code changes, but adding a given to the method itself would work for me too. | ||
autrijus | `given` block. | ||
elmex | autrijus: that quite a reason ! ;) | ||
nothingmuch | autrijus: hmm... fair enough | ||
autrijus | anyway, for the three axis I can argue at both sides | 15:22 | |
iwlx | Hmm. | ||
Juerd | autrijus: The copying thing is a reason to *have it*, in my opinion | ||
iwlx | What does ./foo do? | ||
autrijus | so that gives eight positions | ||
Juerd | autrijus: "copy & paste" is way too often associated with copying from websites and manuals | ||
nothingmuch | iwlx: ./foo always calls on $?SELF, .foo always calls on $_ | ||
Juerd | autrijus: It's the most important refactoring technique as well. | ||
15:22
iwlx is now known as wilx
|
|||
autrijus | and I can understand larry's desire of stack overflow :) | 15:22 | |
nothingmuch has to practice some bass | |||
ciao! | |||
wilx | I see... | ||
Juerd | given $object { | ||
autrijus | Juerd: I'm talking about | ||
Juerd | .foo; | ||
.bar; | |||
autrijus | method foo { .bar }; | 15:23 | |
vs | |||
Juerd | if (.baz) { .quux } | ||
} | |||
Now, that's great if I want to do that once | |||
autrijus | method foo { given $z { .bar } }; | ||
Juerd | But if I want to do it twice, I'd want a method | ||
To get that method, if methods topicalise, I can just change the first line to: | |||
elmex | nothingmuch: ./ doesn't call on self. or is it already in perl6? | ||
autrijus | I see your position and I used to argue from that posision too :) | ||
putter | just a quick note, | ||
Juerd | method do_something { | ||
nothingmuch | elmex: we want it there ;-) | ||
i'm off | |||
Juerd | If it doesn't, I wrap the method around it: | ||
elmex | nothingmuch: i don't want it | 15:24 | |
Juerd | method do_something ($object) { | ||
nothingmuch | tell Limbic_Region i'll be back later tonight if he asks | ||
Juerd | given $object { | ||
... | |||
autrijus | Juerd: yes. I understand completely | ||
Juerd | } | ||
nothingmuch | elmex: so what, we don't care about your opinion, or Larry's | ||
Juerd | } | ||
nothingmuch | ;-) | ||
Juerd | I don't care much, but I think the former solution is a little bit more practical | ||
autrijus | I'm just saying you describe a fairly orthodox OO pattern of programming | ||
nothingmuch | seriously though - the './' syntax is just a variation on whatever | ||
autrijus | and there are other patterns that makes people care about other things | ||
putter | nothingmuch: just in case you didnt notice, you can quickly get started on pil tree in p5 but taking pilc in crude_repl and evaling it in a package that has sub c{} bound to something which creates nodes... | ||
elmex | nothingmuch: well, i already accepted that perl6 is a bogous misdesign in many places. and quite overdesigned too. i'm going to write perl5 for a long time still :) | ||
Juerd | But this being a time of crisis makes me want to officially declare that I don't care. | ||
wilx | Hmm. | 15:25 | |
autrijus | Juerd: good :) | ||
wilx | I thought it over and if $?SELF is the same thing as this pointer in C++ then it sounds completely sane to me. | ||
nothingmuch | as long as there is no pragma to select the syntax, that is there is one true syntax, i'm happy | ||
and it should be 2 chars or less | |||
Juerd | Can we please not compare to static languages? | ||
It's usually rather fruitless. | 15:26 | ||
putter | & | ||
elmex | nothingmuch: o.method | ||
nothingmuch | putter: i'll have a look later | ||
autrijus | nothingmuch: $?.method | ||
nothingmuch | elmex: that's horrible | ||
PerlJam | horrible? | ||
nothingmuch | autrijus: shit makes the . hard to get right | ||
PerlJam: yes. | |||
PerlJam usually writes $o->meth() in perl5 now. | |||
elmex | nothingmuch: ./ is hjorrible | ||
nothingmuch | yed, $o is much better than o | 15:27 | |
elmex | nothingmuch: $o is a scalar | ||
nothingmuch | right | ||
masak | Juerd: I support your position. I don't care about the exact semantics, but fwiw I like ./ among the alternatives | ||
nothingmuch | o is fudgery | ||
Juerd | elmex: The invocant is a scalar too! | ||
PerlJam | elmex: why is ./ horrible again? | ||
integral | $?self would be nice to type | ||
Juerd | integral: Except for the ? | ||
nothingmuch | integral: you can always do that | ||
PerlJam | Juerd: add a "me too" to what masak just said. | ||
Juerd | masak, PerlJam: scream loudly in the mailinglist :) | 15:28 | |
svnbot6 | r5601, kolibrie++ | added pretty duration printing to seenbot | ||
r5601, kolibrie++ | no longer report 'saying:' when last action had no text | |||
Juerd | That I'm sure is what Larry wants | ||
integral | it's the caps that I hate to type | ||
Juerd | Or, rather, I hope is what he wants. | ||
PerlJam | Juerd: in fact, I just read what you said earlier about those that don't like ./ are those that haven't really written any perl6 code, and I tend to agree with that assessment as well. | ||
elmex | PerlJam: ./ doesn't fit into the syntax, it's semantically bs imho... but if people think, inventing new meaningless syntaxes is fine... okay, go. and make your perl6 ... | ||
integral | "doesn't fit into the syntax"? | ||
PerlJam | elmex: "fit into the syntax"? what does that mean exactly? | ||
elmex | it does mean, that it just doesn't feel right | 15:29 | |
Juerd | elmex: Just for the record, not as a means of judgement: how much Perl 6 have you already written? | ||
elmex | Juerd: no line | ||
Juerd | So far my theory holds then :) | ||
justatheory holds | |||
masak | Juerd: scream loudly, ok. but what? "i don't care, but ./ is nice"? | 15:30 | |
integral sees the only thing that can be said against ./ is that it's totally novel | |||
PerlJam | elmex: what feels wrong about it? | ||
elmex | it's a theorey, and perl6 isn't specified clearly... as the simplest things aren't yet defined... | ||
PerlJam | integral: yes, and that seems to be the objection | ||
autrijus | integral: that makes people think that ./method looks like it's matching something, or dividing something. | ||
integral | o_O | ||
Juerd | masak: Whatever your opinion is, as long as it includes that .foo should be $_.foo, unconditionally :) | 15:31 | |
elmex | PerlJam: '.' is a seperator somehow, and '/' is a division operator... ./ doesn't form any nice structure in my brain. sorry. | ||
Juerd | Unless, of course, you disagree with that, in which case you should still voice your opinion. | ||
wilx | ./ is current directory. | ||
elmex | wilx: in the SHELL | ||
wilx | Completely sane analogy :) | ||
elmex | wilx: perl6 is not shell programming | ||
masak | Juerd: i agree with that, do i'll write that | ||
PerlJam | elmex: so ... what's $foo..$bar ? or /my pattern/ ? | ||
autrijus | right, or executing something in the current directory. | ||
elmex | PerlJam: / / is a pattern match. but './' isn't even that | 15:32 | |
autrijus | execution, matching and dividing are the three immediate metaphors | ||
Juerd | elmex: Does the purpose of the language matter for its syntax? | ||
autrijus | and none of them fit very well with prior experience | ||
elmex | Juerd: i think so, yes | ||
integral | there's // too | ||
Juerd | elmex: Perl has always, since the very beginning, taken syntax from other languages and dialects. | ||
elmex | Juerd: but carefully | ||
Juerd | elmex: Even languages that have nothing to do with what Perl is used for nowadays. | ||
PerlJam | elmex: context is the key (as always in perl). In the context of <whitespace>./<identifier> surely one can say easily map that to "method on $?SELF" | ||
autrijus | but ./ is completely novel -- it's not taken from anywhere :) | ||
Juerd | autrijus: That's the official story | 15:33 | |
QtPlatypus | Like most lanagues perl is a polyglot. | ||
svnbot6 | r5602, qtplatypus++ | Cleaned up version of the macro discussion. | ||
autrijus | Juerd: right, but actually it's taken from shell programming | ||
Juerd | The real story is that I typed ./pugs and was struck by a bolt of sanity. | ||
autrijus | right. | ||
or insanity. | |||
PerlJam | The right kind of insanity IMHO | ||
elmex | PerlJam: you can map any syntax to 'method on $?SELF' | ||
Juerd | That depends only on one's preference :) | ||
PerlJam | elmex: EXACTLY! | ||
Juerd | elmex: Well, not really, as only ^ is available as single-char | 15:34 | |
elmex | PerlJam: and <whitespace>o.<identifier> does map as nice | ||
Juerd | And most characters are ruled out for first-of-two chars too | ||
integral | elmex: I'd disagree a undecorated o looks very weird to me | ||
Juerd | ./ is an amazingly available combination, but I'm sure you can think of others. | ||
elmex | integral: '/' does look weird to me | ||
autrijus | anyway. in my limited experience of writing p6 code I find ./ to be very useful. the matching and division metaphors are strong enough so I'm not completely comfortable in it, but I think it's the best one we've got. | ||
integral | and o looks weird to me :-) | ||
Juerd | I'm also sure that the division between likers and dislikers will be more or less the same as for ./ | ||
PerlJam | You know ... this is the same problem as python's semantic whitespace. Perl programmers tend to find it annoying or weird, but anyone who has programmed in python for a while finds that it's not so bad after all. | 15:35 | |
Juerd | PerlJam: Except for me | ||
integral | hmm, I find haskell's whitespace annoying when scopes get too long and too deep | ||
Juerd | integral: The keyword there is "too" | ||
QtPlatypus | Would someone look at plan and tell me if my write up is sane. | 15:36 | |
Juerd | too $anything is bad. | ||
elmex: // is used for pattern matching. Has that ever bothered you? | |||
PerlJam | Juerd: to summarize the detractors then, ./ is too "looks like something else" | ||
Juerd | elmex: // is also defined-or. Has that ever bothered you? | ||
integral | once I might have suggested a punct var like $$, or $^, but that doesn't fit in p6 | 15:37 | |
elmex | Juerd: no, but it makes sense for me | ||
PerlJam | elmex: why does it make sense? | ||
elmex | PerlJam: because the slash is used as delimiter ? | ||
masak | Juerd: there, posted to perl6-language | 15:38 | |
elmex | PerlJam: and m#<pattern># does work too | ||
integral | elmex: not in a defined-or ... | ||
Juerd | "The divisioniness is something you'll just have to get over. Do you see | ||
any division in /\w+/? Or any addition in $foo +| $bar? Or any | |||
comparison in =>, +>, or <>? Or any price in $var? Or any percentage in | |||
%hash? Or any conjunction in &sub?" | |||
PerlJam | elmex: It makes sense because you've *learned* what it is and what it means in certain contexts. Same goes for ./ (once you get used to it) | ||
Juerd | -- [email@hidden.address] | ||
I think $1 is the best indication of our ability to get used to different meanings in different syntaxes | 15:39 | ||
In English, it means 1 dollar | 15:40 | ||
PerlJam | one dollar? ;) | ||
Juerd | It does not have that association in any programming language I know, though | ||
Still, we use $1 for the first match variable | |||
PerlJam | except in perl6 where it's $0 | ||
Juerd | Which has nothing to do with dollars, except when it matches something that does :) | ||
elmex | yep, perl6 does redefine many meanings of perl5 operators and introduces completly new weird syntax. i really wonder why it's called >perl<6, it hasn't evolved from perl5, as it completly throws away perl5. imho perl6 should be renamed to something like purl6 or parl6 | ||
Juerd | elmex: I used to think Perl 6 should get another name | 15:41 | |
PerlJam | elmex: that is just ridiculous. | ||
Juerd | But I got used to calling Perl 6 Perl 6 | ||
PerlJam | elmex: *clearly* perl6 has evolved from perl5 | ||
Juerd | So I can live with it now | ||
integral | elmex: well to me it's perl because it's design by lwall, and like perl1 it's grabbing features from everywhere and doing it better | ||
Juerd | Purely theoretically and religiously, I still agree. | ||
PerlJam | "perl" is not just about syntax you know. | ||
webmind | it's like c++ and c# have little to do with C | ||
but they are related | |||
elmex | PerlJam: yes, where is the reused code ? all the experience which went into the perl5 interpreter is being thrown away for the sake of a unfinished slow VM | 15:42 | |
PerlJam | elmex: Are you insane? | ||
elmex | PerlJam: and perl6 is a completly NEW language | ||
Juerd | elmex: Be careful there. | ||
QtPlatypus | We should call perl6 ./ (Therefor reducing two arguments into one). | ||
PerlJam | elmex: just like perl5 was a completely new language. | ||
Juerd | elmex: You're spreading FUD. Have you been reading Rindolf's articles or something? | ||
PerlJam | QtPlatypus++ | ||
elmex | PerlJam: but evolved from perl4 | ||
webmind | elmex, it's new use.. but clearly a perl follow up | ||
elmex | Juerd: what articles? | 15:43 | |
integral | rindolf-- | ||
elmex | Juerd: i don't read any articles | ||
Juerd | elmex: Experience that went into Perl 5 is not thrown away. You can't throw away experience. We can throw away code, and gladly do so if the old code is ugly and unmaintainable. | ||
elmex | webmind: because the took some syntax from perl5 ? | ||
perl5 took syntax from awk too.. and sed ... | |||
integral | elmex: hmm, parrot isn't actually slow, and the people writing parrot and pugs have seen the perl5 internals, and know them | ||
elmex | but perl5 hasn't evoolved from awk | ||
Juerd | elmex: Parrot is not slow. There are few optimizations yet, but in some circumstances, it is already faster than Perl 5's vm. | ||
elmex | Juerd: in some optimized circumstances | 15:44 | |
Juerd: i benchmarked it | |||
broquaint | perl5 evolved from perl4 evolved from perl3 evolved from perl2 evolved from perl1 evolved from awk evolved from sed ... | ||
elmex | Juerd: most benchmarks are slower here than perl5's benchmarks | ||
QtPlatypus | Pugs is slowler the perl5, but thats because Pugs is optimized for getting written. | ||
Speed of implementation. | 15:45 | ||
elmex | QtPlatypus: yep, bt thats okay, pugs' aim isn't to be fast :) | ||
integral | elmex: hmm, which benchmark did you use, and what parrot compiler did you use? | ||
Juerd | elmex: What have you benchmarked? | ||
elmex: pugs against perl 5? | |||
'cause that really ain't fair. | |||
elmex | examples/benchmarks/ | ||
PerlJam remains silent as Juerd and integral are doing a fine job grilling elmex ;) | |||
elmex | parrot/examples/benchmarks/ | 15:46 | |
Juerd | Now, grilling toothpaste. That's a weird mental image. | ||
wilx | Hehe. | ||
elmex | Juerd: i didn't testes pugs agains perl5, i tested parrot. and all i said was, that the current VM isn't very fast | ||
i never said something about pugs | |||
Juerd | elmex: And how is any of those benchmarks relevant when it comes to a comparison with Perl 5? | 15:47 | |
Or were you saying that Parrot, uncompared, is slow? In general. | |||
elmex | Juerd: well, there are p5 benchmarks too. i compared them | ||
Juerd | Because then, I can easily counter with: Perl 5 is even slower, for which I would also not need proof. | ||
PerlJam | Juerd: he's claiming that if the VM is slow (slower than perl 5), so must the languages that use the VM (aka perl6) | ||
autrijus | masak++ # p6l | ||
Juerd | elmex: They benchmark different things! | ||
autrijus | I've chimed in as well. | ||
Juerd | elmex: How can that ever give you comparable numbers? | ||
elmex | Juerd: addit.imc and addit.pl do similar things. and addit.imc is slower. | 15:48 | |
Juerd: yes they benchmark different things: parrot and perl5 | |||
autrijus | elmex: the imc compiler is very slow. | ||
have you tested it in .pbc form? | |||
elmex | autrijus: it's the runtime, parrot thats slow. and i also tested addis.pasm | 15:49 | |
Juerd | elmex: That's not all too weird, is it, given that the IMC compiler is slow, and that arrays are unoptimized in parrot, but *heavily* optimized in Perl 5? | ||
elmex | addid.pasm | ||
autrijus | okay then. | ||
elmex | addid.pasm and addid.imc were quite similar in runtime. .imc a little slowed | ||
autrijus | my benchmark of unboxed mandel showing parrot being faster by 10%; however the same test on osx makes parrot much slower. | ||
but boxed mandel makes parrot much slower, say by 50%. | 15:50 | ||
elmex | well, but i am SURE that parrot will be QUITE fast if they make parrot quite fast | ||
Juerd | There is currently NO way of telling whether Perl 5 or Perl 6 will be faster than the other. There is also no way to guess, unless you are intimately familiar with the internals of both. | ||
autrijus | the one saving grace of parrot, at this point, is that it's a continuation-based VM :) | ||
PerlJam | elmex: That's not at the top of the priority list (and shouldn't be) just yet. | ||
elmex | PerlJam: i agree :) | ||
autrijus | (and it is easier for me to make parrot faster than to make perl5 faster) | 15:51 | |
integral | anyway, isn't any argument between parrot and perl5 mute since perl5 is basically impossible to progress with for new developments? | ||
autrijus | integral: ow, just painfully hard, not impossible | ||
elmex | integral: there were many ideas to improve perl5, but then came perl6 and killed all new ideas | ||
Juerd | elmex: You agree that speed shouldn't be a priority just yet, but you do use the bad performance as an argument regarding throwing away Perl 5... | ||
elmex | Juerd: they could have taken perl5 and make it even more faster ;) | 15:52 | |
Juerd | elmex: Do realise that this means that from now on, I can't but question whatever you say | ||
No, they couldn't have. The reasons for that are well laid out in many places. Please find a way of informing yourself. | |||
autrijus | elmex: uhm, you're not a perl5-porters, right? :) | ||
elmex | autrijus: no | ||
Juerd | elmex: Read Perl 5's source code. Then tell us what you think of it. | 15:53 | |
elmex | but i have been into the perl5 code... and i were afraid... | ||
autrijus | okay. it was obvious very long ago that it is nearly impossible to make perl5 faster :) | ||
integral | elmex: and never tried to actually understand or change perl5? | ||
Juerd | elmex: And then try to implement continuations, roles and junctions. | ||
autrijus | cleaner, maybe. more robust, certainly | ||
but not faster. :) | |||
integral | *cough*Coro*cough* | ||
elmex | (yes, Coro is cool) | ||
webmind | elmex, no.. because they took the -idea- of perl5 | 15:54 | |
autrijus | (and Coro is extremely slow) | ||
elmex | Juerd: quite impossible for me, i'm not in the guts of perl5 so narrow. but writing a completly new VM isn't easy too... | ||
integral thinks it's not as hard as parrot made it look | 15:55 | ||
Juerd | elmex: Much easier than upgrading perl5's :) | ||
elmex: It's the big difference between a great challenge, and the halting problem. | |||
elmex | Juerd: okay... | ||
autrijus | as Dan observed, it's extremely difficult to do a new design that's less maintainable than perl5 :) | 15:56 | |
Juerd | It didn't have to be as much work as Parrot got to be | ||
But while they're at it, why not make the best thing out there? | |||
There's no *need* to support everyone's favourite languages | |||
But having it is great. | |||
elmex | i will wait for perl6, and i will write perl6 code once it is released. until then, i will write perl5 code. i don't like to learn languages that change all time... that doubles the efford for me | 15:57 | |
kolibrie | personally, I like pioneering | 15:59 | |
autrijus | elmex: I suspect you'd have no problem using perl6 libraries once they are compiled to perl5, though :) | 16:00 | |
(since that'll just be yet another cpan library) | 16:01 | ||
kolibrie | autrijus: remember way back when you tried to help me fix a linking problem when embedding p5? | ||
elmex | autrijus: well, some nice features are in perl6 that i would like to use | ||
autrijus | kolibrie: yes? | ||
kolibrie | autrijus: putter helped me find the problem yesterday: my libperl.so wasn't in any of the -L paths | ||
put in a sym-link, works great now | 16:02 | ||
debian unstable | |||
autrijus | ah. right. | ||
integral | that sounds strange :-/ | ||
autrijus | I remember running into that in PAR | ||
is this debian? | 16:03 | ||
kolibrie | yes | ||
autrijus | right. I think its %Config lies | ||
kolibrie | possibly | ||
autrijus | because following that config does not lead one to a working -lperl | ||
I had to append a search path manually. | |||
(which is isomorphic to a symlink) | 16:04 | ||
kolibrie | so really the debian maintainer should fix %Config | 16:05 | |
autrijus | either that or our understanding of perlembed needs fixing | ||
kolibrie | is there a way to detect that libperl.so is not in a known place, and warn the user of the problem | 16:06 | |
autrijus mumbles something scary about autoconf | |||
kolibrie | I was able to make a symlink very easily, once I knew where to put it | ||
autrijus | but I think the better workaround is to append to $Config{ccdlflags} | 16:07 | |
in Makefile.PL | |||
but I don't have a debian system here so I can't dup or fix currently :-/ | |||
kolibrie | my libperl sits in /usr/lib/libperl.so.5.8.7 | 16:08 | |
I can let you use mine some time, when I'm at home | |||
integral | the system doesn't search /usr/lib already? | ||
autrijus | integral: no, -lperl doesn't do .5.8.7 | 16:09 | |
that's the main problem | |||
integral | oh, linkers-- | ||
kolibrie | right, so now I have a symlink in ...perl5/CORE/libperl.so | ||
without 5.8.7 | |||
autrijus | kolibrie: can you bring this issue to the usual debian venues? | 16:10 | |
libperl-dev maintainer or whom it may concern | |||
there may be a well known solution already | 16:11 | ||
but a quick google can't find it | |||
kolibrie | is that an e-mail address? never contacted debian before | ||
integral | the bug database is bugs.debian.org | ||
kolibrie | ok | ||
and just state that -lperl doesn't seem to find libperl.so? | 16:12 | ||
autrijus | right, or there's no libperl.so, and you needed to symlink .5.8.7 off | ||
and mention ways to reproduce this with pugs and your workaround | |||
if this is a FAQ I expect people will recognise the keywords | 16:13 | ||
kolibrie | sounds good | ||
autrijus | kolibrie++ | ||
kolibrie | thanks | ||
nothingmuch needs valium | 16:14 | ||
kolibrie | autrijus: hmm, looks like I have libperl5.8 installed, but not libperl-dev | 16:19 | |
the one is required by programs which embed a Perl interpreter and the shared Perl library | |||
integral | err, libperl-dev is what you should have for compiling stuff against libperl, and might be the problem | 16:20 | |
autrijus | pebcak then? :) | ||
kolibrie | the other contains Files for developing applications which embed a Perl interpreter | ||
autrijus | but still it'd be nice to detect and warn about that. | ||
kolibrie | so write to libperl5.8, rather than libperl-dev? | 16:21 | |
autrijus | maybe | 16:25 | |
kolibrie | ok | ||
or both, and they can figure out who needs to do what | |||
nothingmuch: since jabbot is missing, is seenbot.p6 an alternative? | 16:31 | ||
Aankhen`` | iblech++ # examples/eval.p6 | 16:40 | |
masak | it's ok to commit corrections to typos in the interview in /docs/notes/plan, right? | 17:25 | |
Juerd | Yes. | 17:26 | |
masak | good | ||
Aankhen`` spots a typo on masak's nose and quickly wipes it. | |||
eric256 | nope. sorry those are public record now and may not be touched! ;) | ||
Juerd | Corrections of any kind are always welcome in wikis and wiki-like things, like svn trees :) | ||
masak | :) | 17:27 | |
it just feels a bit odd to edit someone's replies in an interview | 17:28 | ||
but they do need cleaning | |||
Aankhen`` | Well, you're the third person to edit that file. | 17:29 | |
Sorry, fourth. | |||
eric256 | just don't go "correcting' the actual meanings lol....well i'm sure he realy meant to say "...." | 17:30 | |
masak | eric256: i try to avoid that :) | 17:31 | |
correcting typos is a bit like optimizing code | 17:32 | ||
you want the text to be more efficient | |||
but you don't want to change the semantics :) | |||
Aankhen`` | masak++ | 17:34 | |
masak | aah, karma :) thx | ||
jabbot | masak: :) thx has neutral karma | ||
masak | shut up, jabbot | 17:35 | |
Aankhen`` | LMAO. | ||
svnbot6 | r5603, masak++ | Cleaned up docs/notes/plan a bit more -- there's still work to do, | ||
r5603, masak++ | though | |||
cognominal | jabbot, what is the half lfe of a point of karma? :) | 17:36 | |
jabbot | cognominal: å | ||
autrijus | jabbot: ę²äŗäøč¦äŗčŖŖäøę | 17:37 | |
jabbot | autrijus: å¬å¤©å°äŗļ¼å°±ę³åå¾é£½é£½ēć | ||
autrijus | (translation follows) | ||
Aankhen`` | masak >> What column are you wrapping at? | ||
cognominal | :) | 17:38 | |
at least, I got the right fonts. | |||
autrijus | <jabbot> cognominal: Oh. <autrijus> jabbot: don't suddenly speak Chinese out of the blue <jabbot> when it's Winter I'd like to eat until I'm full. | ||
autrijus stops taunting jabbot with random chinese | |||
masak | Aankhen``: 70, but i did a lot of intentional wrapping | ||
Aankhen`` | I thought 80 is the standard? | 17:39 | |
masak | didn't appear to be in that file | ||
so i set vim to 70 | |||
with set columns=70 | |||
Aankhen`` | OK. | 17:40 | |
putter | ok, the p5 runtime has some primitives written in p5, others in p6. PrimP5.pl and PrimP6.pl? | 17:44 | |
so there is a single perl6-wide Predule, and all the backends provide Prim's? | 17:45 | ||
svnbot6 | r5604, fglock++ | Span::Code.intersects() | 18:01 | |
kolibrie | seen nothingmuch | 18:03 | |
jabbot | kolibrie: nothingmuch was seen 2 hours 35 minutes 38 seconds ago | ||
dudley | am I right in thinking that PIL is not a language per se, but more like an abstract syntax tree? | 18:13 | |
autrijus | dudley: well, you are free to give it a concrete syntax. | ||
(and in fact it does have one in each of the host languages) | |||
but yes, it is more properly thought of as an syntax tree, not a language meant for puny humans to write in | 18:14 | ||
dudley | there's a little impedance mismatch in by brain between PIR, which is a language, and PIL, which is a representation :-) | 18:15 | |
s/by/my | |||
fglock | how do I create a Lazy List? $x = 1..Inf doesn't work. | 18:22 | |
anyone know how to create a Lazy List? $x = 1..Inf doesn't work. | 18:51 | ||
Limbic_Region | my @foo = 1..Inf; # guessing | ||
fglock | no, it hangs | 18:52 | |
Aankhen`` | I think Lazy-ness hasn't been implemented yet... | ||
Limbic_Region could have swore it was | |||
try just the dots | |||
my @foo = 1...; | 18:53 | ||
fglock | i thought i could return a lazy list from Span.pm | ||
Limbic_Region | ?eval my @foo = 1...; @foo.perl | ||
oh - eval bots not here | |||
fglock | no, it hang too | 18:54 | |
there could be some kind of hooks that Span.pm could implement | 18:55 | ||
Limbic_Region | fglock - I don't think the lazy keyword that had been discussed was sanctioned or implemented - but you might want to try that - AFAIK, Pugs has some lazy stuff so it is a matter of getting authorative answer | 18:57 | |
fglock | i could try to implement this in pugs, but i don't grasp the compiler yet | ||
Limbic_Region: do you mean to ask in the p6 list? | 19:00 | ||
Limbic_Region | no - I meant to wait until one of the internal hackers were paying attention | 19:01 | |
cause I don't grok Haskell at all | |||
nothingmuch ping | |||
fglock | btw - is there a pugs specific mail list? | 19:02 | |
Limbic_Region | nope | ||
or at least not that I know of | |||
nothingmuch - in the event that you backlog - everything that you want to compare for differences is everything but meat: right? | 19:04 | ||
putter | The current plain is for the p5 runtime to map p6 packages onto p5 packages. Anyone care what the name of the p6 root is in p5 package space? | 19:08 | |
s/plain/plan | |||
dudley | putter: what are you thinking? | 19:17 | |
elmex | Crap:: ? | ||
Limbic_Region: the common perl6 mailinglists are fine for questions about pugs | 19:18 | ||
putter | dudley: PIR::Run::Root ? | 19:20 | |
elmex | putter: Perl6:: ? | ||
dudley | PIR? or PIL? | ||
putter | yeah, that's the other possibility. oh PIL. sigh. | 19:21 | |
Perl6::Root ? | |||
Limbic_Region | elmex - I didn't say it wasn't? | 19:22 | |
elmex | Limbic_Region: oh, my fault | ||
fglock: the common perl6 mailinglists are fine for questions about pugs | |||
dudley | putter: what about Perl6::Run? | 19:25 | |
putter | could be. I though having "Root" in there helped clarify what it was. | 19:32 | |
kolibrie | "Root" doesn't help me see what it is | 19:33 | |
putter: what exactly are you storing? p6, p5, pil, pir? | 19:35 | ||
dudley | I don't know, naming the root Root seems redundant to me. | 19:37 | |
putter | *say goes in p6's ::* as &::*::say. *say would go in the p5 runtime in p5's Perl6::Root as &Perl6::Root::mangled_name_say. | 19:38 | |
There would also be a Perl6::Root::main, etc. | |||
dudley | Are real live humans going to be using these packages, or is it all behind the scenes? | 19:39 | |
putter | Mostly behind the scenes? | ||
kolibrie | so are you compiling p6 into p5 and then storing at that namespace? | 19:40 | |
putter | exactly. | ||
kolibrie | hmm | ||
dudley | Oh, then by all means call it Perl5::Runtime::For::Perl6::Root::Namespace or whatever | ||
putter | ;) | ||
dudley | I was thinking readability, but let's abuse the silicon lifeforms for our own amusement. ;-) | 19:41 | |
kolibrie | Perl6::AsPerl5 | ||
or just plain AsPerl5 | 19:42 | ||
then we could store anything there | |||
putter | ok. thanks for the feedback. i may switch back to using PIL::Run::Root, just so all the PIL::Run stuff is in one place for now. we can move it later... | 19:44 | |
dudley | I like PIL::Run::Root | ||
putter | let it be so | ||
What was the reason for using "is builtin" in Prelude.pm? Why "sub say is builtin (){}" rather than "sub *say (){}"? | 19:55 | ||
Limbic_Region | use.perl.org/~autrijus/journal/25681 just says "New trait for Prelude.pm: is builtin (installs into the global namespace)" | 19:57 | |
putter | Maybe *foo wasn't implemented at the time? Or to give warnings about overwriting builtins? ...? | 20:01 | |
Aankhen`` | Maybe *foo doesn't work in the precompiled form? | 20:02 | |
putter | Maybe. ah well, I'll fudge it for now. | 20:03 | |
Aankhen`` | $bad_joke_about_hot_chocolate_fudge | 20:04 | |
putter | :) | 20:05 | |
Ok, now you've made me hungry. ;) | |||
Aankhen`` | I made myself hungry. :-( | ||
putter | Fudge in the fridge. No icecream though. | ||
Aankhen`` | But it's not my fault. cwest got me thinking about ice-cream. | ||
putter | :) | 20:06 | |
Memetic contagion. | |||
voiceover: "Suddenly, all over the planet, there were people thinking about ice-cream who hadn't been a moment earlier." | 20:07 | ||
masak infects some more people with thoughts of ice cream | |||
wonder what it would take to start a new ice cream movement | 20:08 | ||
"make ice cream, not war!" | |||
kolibrie | my freezer is low on ice-cream, I should make some more | ||
maybe mint-chocolate-chiop | |||
s/chiop/chip/ | 20:09 | ||
masak | kolibrie++ # for making ice cream | ||
kolibrie | tastes much better :) | ||
masak | 'course | ||
kolibrie | and much much better than war | 20:10 | |
masak | what do you put into mint-chocolate-chip ice cream? | ||
kolibrie | my mom got me some mint syrup, since we couldn't find any mint extract | 20:11 | |
and then minature chocolate chips | |||
add the syrup during freezing | |||
masak | during freezing? | ||
kolibrie | add in the chocolate chips afterwards | ||
masak | how? | ||
kolibrie | well, before you start freezing | ||
masak | ah | ||
my freezer is too small to add the syrup during freezing :) | 20:12 | ||
kolibrie | it probably doesn't take that much | ||
I'm thinking 6 cups cream/milk, 1/4 cup syrup | |||
but haven't tried it yet | |||
Aankhen`` | GIMME ICE CREAM | 20:13 | |
kolibrie | tomorrow, haven't made it yet | ||
masak wants to write a perl6 script for generating random ice cream recepies | |||
:) | |||
maybe using &pick somehow | 20:14 | ||
but, that'll have to wait till tomorrow | |||
now, sleep | |||
nothingmuch | good night | ||
kolibrie | g'night | ||
masak | g'nite | ||
Chewie[] | Where would the @foo [++] operator be found in the docs? | ||
That is, the right numerical concatenation operator? | 20:15 | ||
nothingmuch | Chewie[]: circumfix [] is the meta operator | ||
sub sum (*@numbers) { [+] @numbers }; | |||
is that what you meant? | |||
Chewie[] | Exactly. | ||
Excuse my unfamiliarity. | 20:16 | ||
kolibrie | seen nothingmuch | ||
jabbot | kolibrie: nothingmuch was seen 46 seconds ago | ||
nothingmuch | kolibrie: ? | ||
kolibrie | saw you having troubles with jabbot earlier | 20:17 | |
seems to be working now | |||
but I hacked on seenbot.p6 to make it nicer | |||
in case we wanted to use that instead | |||
nothingmuch | kolibrie: run it =) | 20:18 | |
kolibrie | can't from here, $work doesn't allow irc through firewall | ||
nothingmuch | hmm | ||
kolibrie | dial-up at home | 20:19 | |
nothingmuch | got a feather.perl6.nl account? | ||
kolibrie | yes, but jabbot is doing fine with seen right now | ||
so it's not neccessary | |||
nothingmuch | svnbot6 replaced jabbot for commit reporting | 20:20 | |
gugod: are you happy with jabbot becoming redundant? ;-) | |||
Aankhen`` pokes Chewie[]. | |||
kolibrie | well, if jabbot wants to stop monitoring people, seenbot.p6 works great | 20:21 | |
Chewie[] | Aankhen``! | ||
nothingmuch | okay, all we need is karmabot.p6 | 20:22 | |
Aankhen`` | Hola. | ||
What's shakin'? | |||
Chewie[] | Not a whole lot. | 20:23 | |
I've got a shell on a machine with Pugs installed, so I'll be doing the base64 encode/decode stuff in P6 (like a wimp) in the near future. | |||
Aankhen`` | Neat. :-D | ||
nothingmuch ponders unpack with arbitrary base | 20:24 | ||
one algorithm i never had the guts to try: LZW | |||
you start with 8 bits per word | |||
Aankhen`` | And as usual, since Chewie[] is on... | ||
nothingmuch | and as your dictionary grows, you add bits, one at a time | ||
9-16 | |||
or at least that's how compress does it, IIRC | 20:25 | ||
Aankhen`` | G'night. | ||
Chewie[] | nothingmuch: I've always wanted to try that algorithm. | 20:29 | |
Always. | |||
nothingmuch | Chewie[]: it's surprisingly simple | ||
since it's got no special cases, whatsoever | |||
start with an array of tokens, for the whole 0-255 values | |||
then read in your input | 20:30 | ||
i forget what the rules for deciding what a word is exactly, i'll check | |||
Chewie[] | Er, it shouldn't be token-delimited. | ||
nothingmuch | Chewie[]: by word I mean something more like a word is N bytes | ||
basically i think you match entries on the input | 20:31 | ||
and encode a new entry for them | |||
Chewie[] | The way it's always been in my head, the file has to be scanned for the largest possible strings with two or more ocurrances, and calculations have to be made as to the optimum symbol table and such. | ||
nothingmuch | but use the old byte values to write them down | ||
that's huffman coding | |||
the beauty of LZW is that it's compeltely streaming | |||
and has no embedded dictionary | |||
Chewie[] | That's only part of Huffman coding. Perhaps I'm not explaining it well enough. | 20:32 | |
nothingmuch | statistical analaysis and then huffman coding? | ||
damnit, now you've got me started. | |||
time to brush up my C | |||
Chewie[] | Minus the Huffman coding. The data is still encoded in an LZW-like fashion, except that the strings that correspond to super-ASCII codes are generated in a Huffman-like way. | ||
nothingmuch | the dictionary generation is the catch of LZW | 20:33 | |
example: | |||
abab | |||
a and b are already in the dictionary | |||
let's say at entries 1 and 2 | |||
and that is our entire alphabet | |||
Chewie[] | As in, the file is scanned for the largest strings with duplications, calculations are made as to whether it would save a lot of space in the final file, and if so, the string is added to the table, and encoded as necessary. | ||
nothingmuch | it's not scanned at all =) | 20:34 | |
it's not a file, it's a stream | |||
it's completely O(N) | |||
Chewie[] | Those calculations take into account whether it would still be a Good Thing to do if adding another entry involves incrementing the unit size (from 9 to 10 bits, or something.) | ||
nothingmuch | that's not lzw | ||
let's do the example | 20:35 | ||
our output is: match two entries | |||
a, b were matched | |||
output them: 1,2 | |||
ad an entry 'ab' to the dictionary, it's value is '3' | |||
match 2 entries: 'ab', EOF | |||
print out 3 | |||
Chewie[] | I never said this was LZW. It's kind of like LZW, but kind of like Huffman. It's a weird combination I've had in my head forever. | ||
nothingmuch | ah | ||
oh, your own thing | |||
Chewie[] | Yeah. | 20:36 | |
nothingmuch | oops =) | ||
Chewie[] | My algorithm would be as follows for that string: | ||
nothingmuch | anywho, i'll just finish decoding: since you know 1,2 already (predefined dictionary), you can deduce that the next entry is the combination of the two entries | ||
Chewie[] | It would scan, find that 'ab' is the largest string with repetitions, and it would discover that creating the symbol table, incrementing from 8 to 9 bits, and writing the codes and the like would be a waste. No modifications would be made. | ||
nothingmuch | so you add 'ab' as entry 3 | ||
then you see 3, and you know what it is =) | |||
Chewie[]: isn't it insanely expensive to compute? | 20:37 | ||
Chewie[] | Of course, it would be forced to start with 9-bit compression units, anyway. | ||
nothingmuch: My mind is fluttering about in a perfect world. | |||
Hmm. | 20:38 | ||
nothingmuch | Chewie[]: how do you decompress that? | ||
Chewie[] | Yeah. 9 bits would be required for compressed files, because you need at least one super-ASCII code to separate the symbol table from the compressed data stream. | ||
nothingmuch | is the dictionary stored with the compressed text? | ||
Chewie[] | nothingmuch: Just like LZW. Except that the first 256 compression units are the ASCII character set. And yes, it's stored in the file. | 20:39 | |
Those first 256 units are hard-coded. | |||
nothingmuch | lzw doesn't store it in the file, that's what I like about it =) | ||
svnbot6 | r5605, fglock++ | intersection of different types of ranges | ||
Chewie[] | nothingmuch: Really, now? | ||
nothingmuch: Where does it get stored? | |||
nothingmuch | yep | ||
it doesn't get stored | |||
read back through my exazmple | |||
the dictionary is implied | |||
Chewie[] | Ahhhhh. | 20:40 | |
Well, my perfect world is much more complex than your perfect LZW world, then. | |||
Basically, the file would be as follows: Symbol table entries, delimiter, compressed stream. | 20:41 | ||
The symbol table entries are optional, but are delimited by the space before unknown codes. | |||
nothingmuch | damnit, look what you've done | 20:42 | |
now i'm implementing it | |||
Chewie[] | As in 0x101, (9-bit-encoded) 'Hello, World!', 0x100. | ||
Really? You little.. :-P | |||
That was my rainy day project. :-P | |||
nothingmuch | what is the reverse of an exponent? | 20:49 | |
number_of_bits($number); # does this function have a name, like unexponent(base => 2, num => $num) ? | 20:50 | ||
shit! | 20:53 | ||
why doesn't vec() support unaligned bits | 20:54 | ||
putter | Could I get a reality check. The p5 runtime stores p6 names in the p5 namespace. So *say and &foo become Root::say and Root::main::foo. (well, PIR::Run::Root...). Question: can anyone think of a reason the p6 names have to be mangled? | 20:55 | |
nothingmuch | putter: make everything an object | ||
putter | Or can the simply be inserted directly in the symbol tables. | ||
nothingmuch | including the symbol table | ||
then make use of p5's stuff | |||
we have much more complexity | |||
more scope handling | |||
i don't think it can all fit | |||
IMHO at least | 20:56 | ||
bit twiddling is so tedious | |||
putter | autrijus suggested using the symbol table directly. it would certainly be faster. can you think of some semantics which would be a problem? the mapping of p6 packages to p5 packages needn't be one-to-one... | 20:57 | |
nothingmuch | well, we have rules | 21:00 | |
they are a new type of sigil | |||
but aside from that nothing at the moment | |||
i had some reasons | |||
but I don't remember them now | |||
so they were obviously negligiable | |||
putter | "obviously negligiable"... except for those nasty ones that come back later and gleefully proclaim "GOTCHA!!". | 21:01 | |
nothingmuch | yuck yuck yuck | 21:03 | |
Chewie[]: you are an aweful person | |||
i'm implementing bit alignment in perl because of you | 21:04 | ||
Chewie[] | nothingmuch: Giggle. | ||
Limbic_Region | nothingmuch - did you read the backlog? | ||
nothingmuch | Limbic_Region: nope, i never do | ||
approx hour and timezone? | |||
Limbic_Region | no worries - will repeat myself here | 21:05 | |
majority of day was spent on $work project - which was fun | |||
nothingmuch | don't do that on #catalyst though | ||
Limbic_Region | question regarding yaml files - what you want is differences on everything except what is in meat: right? | ||
nothingmuch | yep | 21:06 | |
Limbic_Region | ok - fingers crossed for tomorrow then | 21:07 | |
it looks fairly straight forward | |||
nothingmuch | hurrah! | 21:09 | |
21:11
Limbic_Region_ is now known as Limbic_Region
|
|||
pasteling | "nothingmuch" at 212.143.91.217 pasted "first attempt at compressor" (64 lines, 1.8K) at sial.org/pbot/11764 | 21:22 | |
nothingmuch | Chewie[]: tadaah | ||
svnbot6 | r5606, fglock++ | improved polymorphism | ||
nothingmuch | ofcourse, it doesn't compile yet | 21:23 | |
Chewie[] | nothingmuch: Nice. If I weren't rather brainless right now, I'd provide witty input and comments. | 21:28 | |
nothingmuch | =) | ||
compression is working | 21:51 | ||
Ontolog | is it done yet? | 22:02 | |
nothingmuch | soon, baby | 22:03 | |
PerlJam | surely you saw my 2-years predictions | ||
nothingmuch | svn co svn.openfoundry.org/pugs | ||
get yourself GHC to compile it (www.haskell.org/ghc) | |||
and then brush up on your synopses | |||
PerlJam | theoretically we'll get a perl6 compiler that people can use this year. | ||
(whether that's pugs or not remains to be seen) | 22:04 | ||
Ontolog | i gots teh ghc | ||
nothingmuch | is it 6.4? | ||
IIRC gentoo ships 6.2 | |||
Ontolog checks | |||
your right | 22:05 | ||
and i think that was the problem | |||
nothingmuch | Ontolog: install ghc in ~/bin | ||
or /usr/local/bin/ | |||
Ontolog | nothing_pasta: i hear it's a grueling process | ||
doh | |||
nothingmuch: i hear it's a grueling process | 22:06 | ||
nothingmuch: I'll give it a shot when I get home tonight | |||
nothingmuch | Ontolog: download a binary | ||
22:08
knewt__ is now known as knewt_
|
|||
Ontolog | nothingmuch: ohhh yeah lol will do | 22:10 | |
nothingmuch | Ontolog: whyy not? | ||
Ontolog | nothingmuch: didn't get that email yet btw send it ova | ||
nothingmuch | it said: "* Invitation sent to [email@hidden.address] | 22:11 | |
Ontolog | nothingmuch: i said I _will_ do | ||
hmm | |||
let me checks again | |||
nothingmuch | err, i wasn't supposed to post that publicly, was I? | ||
nothingmuch-- | |||
Ontolog | eh it's ok | ||
i mean | 22:12 | ||
it's not posted on the web is it? | |||
nothingmuch | *cough* | ||
nothingmuch scratches his ear, bending his head sideways | |||
stevan | nothingmuch: smoooooootttthhhhh | ||
nothingmuch | does this count? colabti.de/irclogger/irclogger_logs/perl6 | ||
stevan: no first class functions for you | 22:13 | ||
stevan | nothingmuch: you likka my submethods though :P | ||
nothingmuch | touch my monads, bitch | ||
that is, if 'likka my submethods' was an insult | |||
nothingmuch wasn't sure | 22:14 | ||
putter | woot! p5 runtime has primitives...! (of course, almost all of them just die with "mumble: unimplemented", but still...) | ||
stevan | nothingmuch: always assume insult, unless I tell you diff :P | ||
putter++ | |||
nothingmuch | putter: woo | 22:15 | |
putter++ | |||
finally someone is getting something done ;-) | |||
Ontolog | lol | 22:16 | |
it's ok | |||
hey | |||
that open foundry site seems sketchy though | |||
stevan | Ontolog: shhh dont say that round here | ||
it is autrijus's site :) | |||
Ontolog: did it ask you a lot of stuff in chinese? | 22:17 | ||
Ontolog | well i'm just referring to the legal thing | ||
nothingmuch | Ontolog: it's a taiwanese govt thing | ||
Ontolog | "If you accept the Term of Use and consent to all its content without making any | ||
verification, Open Foundry will provide you with all online information and | |||
Service." | |||
nothingmuch | like sourceforge | ||
putter | tnx :) | ||
Ontolog | what does "without making any verification" mean?!!? | ||
nothingmuch | uh... | ||
stevan | Ontolog: roughly translated "we own your first born" | ||
Ontolog | yeah | ||
i don't like that! | |||
stevan | Ontolog: well, at least we are all in the same boat :) | ||
Ontolog | but i suppose i've clicked through those a thousand times before lol | ||
i gotta put one of those up on my site | 22:18 | ||
i bet people would click it | |||
then i'll go sue them for stuff | |||
lol | |||
stevan | nothingmuch, putter: check out the latest metamodel commit,.. I added basic $?SELF support | ||
svnbot6 | r5607, Stevan++ | Perl6::MetaModel - | ||
r5607, Stevan++ | basic support for $?SELF (although we have to call it | |||
r5607, Stevan++ | SELF() since p5 can't handle the twigil). I might make | |||
r5607, Stevan++ | this into a tied scalar later on. | |||
r5607, Stevan++ | Support for $?CLASS should be coming soon too :) | |||
Ontolog | anywho sorry to ramble i'll agree | ||
stevan | svn.openfoundry.org/pugs/perl5/Perl.../08_SELF.t | 22:19 | |
ok dinner time for me, adios all & | |||
Ontolog | nothingmuch: ok all registered | 22:21 | |
dudley | putter: is your p5 code in svn? | 22:23 | |
nothingmuch | Ontolog: have fun | ||
stevan: ciao | |||
Ontolog | nothingmuch: thx! | 22:24 | |
peace | |||
putter | dudley: just in, r5608 | 22:30 | |
svnbot6 | r5608, putter++ | * p5 runtime gets primitives! perl5/PIL-Run/lib/PIL/Run/PrimP5.pm is derived from Prim.hs. Needs lots of implementations filled in. cd perl5/PIL-Run/; perl -Ilib -w crude_repl.pl with pugs in your PATH. Use ApiX to change between p6 and p5 objects. | ||
fglock | putter: are lazy lists implemented? | 22:31 | |
putter | stevan: will do. I'm afraid the p5 runtime is still using raw p5 data objects. Changing that is step after next. Next being ripping some of the packages in crude_repl out to stand on their own. | 22:33 | |
fglock: ha! "say 'hi'" works. "say pi" works. all other bets are off. | |||
fglock | putter: i mean, would it be possible to write an Iterator class and use it in a "for $iterator {...}" | 22:38 | |
putter | not for a while yet. it's still at the point of having strings, but not really, having ints, but not really, and calling primitives, but a double call "say 'hi';say 'hi'" may or may not work. | 22:41 | |
nothingmuch | 22:42 | ||
putter: where is the code? | |||
putter | perl5/PIL-Run/lib/PIL/Run/{ApiX,PrimP5}.pm and perl5/PIL-Run/crude_repl.pl | 22:43 | |
A project for someone who understand the metamodel stuff would be to create a p5 FooStr class which for "say 'hi'" supports FooStr->new('hi'), and FooStr->get_internal_string to get 'hi' back out. Perhaps also a identity function ->as_string or somesuch, to do string coersion in a FooInt class. | 22:45 | ||
svnbot6 | r5609, fglock++ | refactoring | ||
nothingmuch | putter: i'll have a tryy as soon as my svk is fixed | 22:55 | |
putter | :) ! | ||
nothingmuch | none of the unicode levels business though | ||
also: String is a role | |||
so i'll really make an array of char that does string | |||
isn't that nice? | |||
nothingmuch can hear perl6 on p5 slooooowwwwwiiiiinnngngggg doooooowwwwnnnn | 22:56 | ||
putter | Ah, right. What is the real class of a string supposed to be? | ||
nothingmuch | that's what it is =) | ||
putter | Oh, Str. | ||
nothingmuch | except array is also a role. | ||
hmmm | |||
ah! but we can instantiate roles now | |||
putter | pugs> "foo".ref #=> Str | ||
nothingmuch | yup | ||
i'm only kidding | 22:57 | ||
Str will be a silly class in the begining | |||
putter | releaved breath. i was getting veeerrry confused. ;) | ||
Juerd doesn't like lwall's latest replies | |||
He's WAY too serious about .foo being somehow related to $?SELF | 22:58 | ||
nothingmuch | Juerd: what do you plan to do about it? | ||
Juerd | nothingmuch: Fork Perl the minute it's released | ||
nothingmuch | heh | ||
i | |||
i think i'm with you | |||
Juerd | The "uncrippled" version | ||
This works with commercial software too | |||
If you have a way to uncripple software, people will pick your solution over the original. | 22:59 | ||
It'll be theoretically faster too, as a check for $_ =:= $?SELF can be removed | |||
nothingmuch | sane junctions! proper MMD! no implicit autothhreading! for @list <-> $i! | ||
putter | Most of the things I've seen argued about are just macros to change.. | ||
Juerd | Junctions are values, and can be assigned | ||
do while is possible, different from Perl 5, but no longer blocked | |||
<-> is around, for obvious reasons | 23:00 | ||
autothreading is done implicitly only for pure functions | |||
(Or functions otherwise marked as autothreading) | |||
Re MMD: that isn't a limitation | 23:01 | ||
putter wonders if there will be a CLOS-like dispatcher hook to change dispatch algos... | |||
Juerd | It's a design philosophy, not a simple "die if" like thing, as the other things are. | ||
Well, the autothreading thing isn't | |||
nothingmuch | Juerd: manhatten distance is very limiting | ||
Juerd | So that also can't go in the uncrippled version | ||
nothingmuch: What's that? | |||
nothingmuch | it will make MMD flakey in the context of refactoring | ||
and it doesn't handle half the typing cases people will try to throw at it (junctive types in MMD? no sir!) | 23:02 | ||
Juerd | An uncrippled version should only uncripple, not fix bugs or add features | ||
nothingmuch | okay, i'll fork the fork then | ||
i'll call it Moose | |||
Juerd | Good :) | ||
nothingmuch | gaal will use it | ||
Juerd | I probably will too | ||
mugwump | Damian seems to like Manhattan distance, and claims to have good credentials for it | 23:03 | |
nothingmuch | mugwump: i doubt they are valid in perl lamd | ||
mugwump | can the major objections to it be summaried easily? | ||
nothingmuch | ChiaDog isa Dog, Tree | ||
mugwump | or have they already been deep in that long thread? | ||
nothingmuch | Dog isa Animal | ||
Juerd | Anyway, Perl 6 as it stands is fucked up by stupid and widely impopular one man decisions | 23:04 | |
nothingmuch | method bark (Tree $inv) {}; method bark (Dog $inv); | ||
Odin-LAP | Hmm. | ||
Juerd | And that I don't find compatible with the "community's rewrite" idea | ||
nothingmuch | someone goes and refactors ChiaDog | ||
Odin-LAP | This last decision is, IMO, a case of a loud minority getting its way... | ||
nothingmuch | Tree -> Plant -> ChiaPet -> ChiaDog | ||
putter | back later & | ||
nothingmuch | suddenly the MMD semantics change | ||
Juerd | There must be someone to pick the least of evils, and to decide things whenever the community can't agree | ||
nothingmuch | they shouldn't | ||
Juerd | But blocking features just because people don't agree is wrong. | 23:05 | |
And if most people do agree with eachother, their solution should be used. | |||
You don't need a decision maker for that, just someone who takes polls, or reads the mailing lists carefully. | |||
mugwump | Let's have a poll on Perlmonks | ||
:) | |||
nothingmuch | and pragmas to let disagreers choose is worse! | ||
Juerd | I have seen noone seconding Larry's decisions on crippling | 23:06 | |
nothingmuch | go explain that to newbies | ||
go read someone elses code | |||
Juerd | nothingmuch: Agreed. | ||
use dot; | |||
use self; | |||
nothingmuch | paste your code somewheere else | ||
Juerd | use bla; | ||
use sanity; | |||
use Junctions; | |||
"to enable this feature, just add: use foo" is WRONG if the feature is already implemented but disabled without it | 23:07 | ||
mugwump | Personally I think people complaining about ./ just because they don't like it are stirring. the history behind that decision is clear. | ||
Odin-LAP | Kinda like "use strict" and "use warnings"? :> | ||
nothingmuch | Odin-LAP: much worse | 23:08 | |
Juerd | Okay, bad phrasing | ||
nothingmuch | Odin-LAP: those pragmas each bring a change of dialect | ||
not a change of semantics | |||
Juerd | I mean those cases where without the pragma, there is a "die if". | ||
Odin-LAP | nothingmuch: Juerd's phrasing *did* include those. | ||
But yeah, I get the point. | |||
nothingmuch | what I don't understand is why ./foo is so bad | 23:09 | |
it's Good Enough(tm) | |||
Juerd | mugwump: I can understand that people convinced Larry to drop ./foo | ||
mugwump: Either in favour of something else, or just dropped altogether | |||
BUT THAT HAS NOTHING TO DO WITH .foo! | |||
Odin-LAP | nothingmuch: There's a handful of people who complain loudly about it. | ||
nothingmuch | Odin-LAP: they don't need to use it | ||
Odin-LAP | nothingmuch: Doesn't seem to stop them. ;) | ||
nothingmuch | just like I use ${ } explicitly to help me type balanced derefs | ||
and some people don't like it | |||
mugwump | exactly, so I think in the absence of consensus we should switch to democracy, vile as that prospect is | ||
nothingmuch | they can go read someone else's code | 23:10 | |
Juerd | nothingmuch: There are but two reasons they come up with | ||
nothingmuch: 1. Looks like shell scripting (duh) | |||
Odin-LAP | mugwump: Meh. "Consensus" is no magic word. ;) | ||
Unanimity isn't always useful. Groupthink, anyone? :p | |||
Juerd | nothingmuch: 2. The dot is in the wrong place (sort of true, but ./ isn't infix anyway | ||
nothingmuch | Juerd: but those reasons are utter crap, they shouldn't stop me from enjoying them... | ||
it's a shortcut | 23:11 | ||
is not the invocant | |||
it has a mnemonic value | |||
Odin-LAP | What, they want a slashdot operator in Perl? | ||
Juerd | I ignore, aggressively, all "it's ugly" and "/ is for division" crap. | ||
nothingmuch | and all unix heads are used to typing ./ | ||
if / is for division what is '.'? the method call 'anything on anything'? | |||
blah! | |||
Juerd | Odin-LAP: Not possible because /. would initiate a pattern match | ||
nothingmuch | /. is also icky to type | ||
Juerd | And wouldn't fit in anyway | 23:12 | |
As that would make / the invocant | |||
nothingmuch | ./ is just a macro for $?SELF., as I see it | ||
Juerd | And a \W alias for $?SELF is a bad idea for many reasons | ||
nothingmuch | it's not something pure or aesthetic or correct, it's a convenient shorthand for when $?SELF is not topicalized | ||
Juerd | nothingmuch: It is! | ||
Odin-LAP | s/macro/text macro/; # Doesn't the spec assume lispy macros? | ||
Juerd | I guess it's something like: macro term:<./> { '$?SELF.' } | 23:13 | |
nothingmuch | Odin-LAP: both | ||
Odin-LAP | Something like that. | ||
Nice and easy. | |||
Juerd | I don't knom if there's a separate category "term" for "prefix" without arguments. | ||
mugwump | I didn't mind the post-meta-operator bit | ||
Juerd | The / is **NOT** a meta operator! | ||
mugwump | so, eg, any operator could have / put after it to make it act on self | 23:14 | |
Juerd | There is no . in ./ | ||
As there is no rat in "separate" | |||
nothingmuch | mugwump: '.' is not an operator | ||
mugwump | it isn't? | ||
nothingmuch never understood why | |||
Juerd | The "." *character* is in "./", not the "." *operator* | ||
mugwump | sure, right now "./" is its own operator | ||
Juerd | The "rat" *characters* are in "separate", not the "rat" *word* | ||
But, yes, ./ can be confusing for people who fail to separate mind streams | 23:15 | ||
And I can imagine it's dropped | |||
But .foo has nothing to do with this, and should continue to unconditionally mean $_.foo | |||
nothingmuch | right | ||
but even so, we need a solution for a shorter $?SELF, and a pragma isn't a solution, it's a workaround | |||
webmind | what does ./ do ? | 23:16 | |
nothingmuch | and a language with workarounds designed from the start is definately NOT going to last 20 years like they want | ||
mugwump | webmind: find the most recent perl 6 summary, it has a link to the thread | ||
Odin-LAP | webmind: Method calls on $?SELF, i.e., the current object. | ||
webmind | Odin-LAP, thanks | ||
nothingmuch | webmind: $?SELF.foo == ./foo | 23:17 | |
webmind | nothingmuch, thanks | ||
nothingmuch seriously doubts that any(@Larry) but luqui actually wrote any perl6 | |||
e.g. more than 200-300 lines | |||
of something that isn't an example designed to show off the language | |||
chromatic | You know, *I* wrote a few lines of Perl 6. | 23:19 | |
nothingmuch always forgets chromatic ~~ @Larry | |||
Odin-LAP | O_o | 23:20 | |
Were you watching someone else's screen, or..? | |||
chromatic | Browsing through the logs on colabti.de. | ||
Odin-LAP | Huh. I see. | ||
chromatic | ... and it goes quiet. | 23:22 | |
webmind | heh | ||
nothingmuch | =) | ||
Odin-LAP | So it does. Can't talk behind people's backs when they're present, can you? ;p | ||
chromatic | Hey, I'm not $Larry or even ~~ @Larry[0..2] | 23:23 | |
Juerd | 01:24 < chromatic> Browsing through the logs on colabti.de. | ||
nothingmuch really didn't mean chromatic when he said @Larry, since I remember Test::Builder | |||
Odin-LAP | Hehe. :) | ||
webmind kinda likes ./foo but I've got no clue what I'm talking about if it's an issue with internals.. but as a user it makes sense | |||
Juerd | Those logs are quite up to date then. | ||
Odin-LAP | Juerd: Indeed. | ||
nothingmuch | webmind: it's an issue with aesthetics, and nothing more | ||
which is why it's so frustrating | |||
chromatic | Aesthetics are important. | 23:24 | |
mugwump | I really don't think that $?SELF should topicalise by default. It's far too confusing. | ||
nothingmuch | chromatic: but subjective | ||
chromatic | That's why @foo and @foo[1] | ||
webmind | nothingmuch, politics ? | ||
nothingmuch | that's consistency, not aesthetics | ||
Odin-LAP thought $foo[1] made plenty of sense. | |||
nothingmuch | the consistency has some aesthetic appeal | ||
chromatic | $foo[1] is consistent too; $ always marks a scalar. | ||
nothingmuch | Odin-LAP: i agree, but not N levels deep | ||
Odin-LAP | nothingmuch: Indeed. | 23:25 | |
nothingmuch | i actually really really liked $foo[0] | ||
but it seemed logical only later | |||
chromatic | Ditto. | ||
I'm also coming around to the idea of not topicalizing $?SELF. | 23:26 | ||
On the other hand, I have little sympathy for people who topicalize over something else in a method and clobber the invocant. | |||
nothingmuch | right! they should have methods called on the topic! that'll show them! | 23:27 | |
and make perl 6 useful for those of us who know what they're doing | |||
Juerd | chromatic: Aesthethics are somewhat important, but if they're as important as they appear to be now, then why does Perl even still exist? It's ugly, but practical. Beauty was never Perl's selling feature, and I don't think it ever will be. | 23:28 | |
chromatic: Also, I quite like the looks of ./foo, while some other people don't. I don't like how =:= looks, but others like it. It's all VERY subjective, and can hardly be a guide for what to keep and what to drop. | |||
Juerd keeps typing :=: instead of =:= too. | 23:29 | ||
chromatic | The universe catches up to cheaters eventually. Tough luck. | 23:31 | |
Yep, if you write ambiguous code, you have ambiguous results. | |||
I mean of course, if they use .foo() syntax inside given. | |||
Juerd, I disagree. ./ introduces a visual idea present nowhere else in the language. Maybe it's the best solution, but it's out by itself and things like that worry me a bit, aesthetically. | |||
Juerd | It's not ambiguous if .foo always means $_.foo, you see. | ||
chromatic: I actually agree with that. | |||
Odin-LAP | What idea? :/ | 23:32 | |
chromatic | And I agree that .foo should always mean $_.foo. | ||
Juerd | Even if $_ is aliased to the invocant, .foo is not ambiguous. It's just like having an implicit given. | ||
And that's why I don't really care much for this. I can add the given myself if I really need it. | 23:33 | ||
chromatic | Yep. If you need an explicit invocant, put it in the signature. | ||
Juerd | Although I would enjoy method mylc { .lc } | ||
method seconds { .minutes * 60 } | |||
And the fun thing is: now that $_ is lexical, there is no value for $_ at all anyway | 23:34 | ||
chromatic | Want an evil idea? $ is the default invocant if you don't bind one in the signature. | ||
Juerd | So topicalizing the invocant doesn't do any other code damage in any way. It only adds to the language. | ||
chromatic | Wait, it's always the default invocant. | ||
Odin-LAP | Errr. Just '$'? | ||
chromatic | Yes. | ||
Odin-LAP | Well, you *did* say it was evil... | 23:35 | |
Juerd | chromatic: I've thought about that, but $.foo is ambiguous with, well, $.foo | ||
(the "has" thing, that is) | |||
chromatic | It's already ambiguous that way. Try defining a method named foo and watch it clash with the attribute. | ||
Juerd | Hm, true! | ||
mugwump | in fact, isn't it important that $.foo calls $?SELF.foo anyway? | 23:36 | |
Juerd | Anyway, ^ is available. It has no meaning in term position yet. | ||
chromatic | Exactly. | ||
Juerd | It's the only single char left other than >, but still I'm more than willing to give it up. It's just that more people are opposed to ^foo than to ./foo (the reason for that is beyond me) | 23:37 | |
mugwump | so, the question is, what should $.foo(@args) mean? :) | ||
Juerd | mugwump: No, $.foo the variable is a variable like any other, not an lvalue sub. There are subtle differences. | ||
mugwump | is that a call to $?SELF.foo, then expecting the result to be a coderef, or calling $?SELF.foo(@args) | ||
chromatic | Call the method foo(), passing @args. | ||
mugwump | and, if you want it to mean the other thing, then call it {$.foo}(@args) | 23:38 | |
Juerd | mugwump: $.foo does (without chromatic's change) *not* call the method 'foo'. | ||
chromatic | Opaque objects. | ||
Juerd | While the method 'foo' does use the variable '$.foo' | ||
mugwump | Juerd: what is this difference between variables and methods? I don't see a difference | ||
Juerd | mugwump: The method can in theory return a different lvalue each time, while the variable should never do that. Also, for the variable, no *call* is needed, so it's faster theoretically. | 23:39 | |
mugwump | But if I define an accessor method I can make it do whatever I want | ||
including return a different lvalue each time | |||
Juerd | Yes | 23:40 | |
That doesn't change the $.foo variable | |||
has-variables are like my-variables, except only two things | |||
1. the container is in the object somehow (and thus duration is equal to the object's) | |||
2. there's a twigil | 23:41 | ||
chromatic | That "somehow" is important. I think that's why $.foo is a method call. | ||
Juerd | chromatic: I quite liked the difference between $.foo and .foo, actually | ||
Using $.foo being the frowned-upon-but-much-faster way of doing the same thing | 23:42 | ||
nothingmuch | $.foo is an optimizable method call in my eyes | ||
chromatic | Right. That's why $ forces the immediate left-most term to treat everything to the right as a single unit. | ||
Er, that's why I think $ is $?SELF, if you really squint. | |||
Juerd | chromatic: I could certainly live with it. | ||
As I could live with any syntax made up for this. | |||
mugwump | ok, so $.foo and $:foo are method (and submethod) calls, then. | 23:43 | |
chromatic | I'm halfway joking, but I do like the consistency, even if it means rationalizing a few other things. | ||
Juerd | $.foo, ^foo, ./foo, $?SELF.foo | ||
If .foo means $_.foo, I don't care much for which of the above is chosen :) | 23:44 | ||
nothingmuch | ^foo is less related than ./foo IMHO | ||
mugwump | However, it might mean you loose spellchecking on $.foo attributes when you have AUTOMETH defined | ||
Juerd | nothingmuch: ^ and ./ are equal, except in appearance | ||
nothingmuch | i mean in appearance | ||
Juerd | The appearance of ./ is misleading. | ||
chromatic | mugwump, it depends on how far you can detect lvalue context. | ||
Juerd | The dot in it is NOT the dot operator. | ||
nothingmuch | Juerd: i mean that './' looks more "homely" than '^' | 23:45 | |
Juerd | Homely is ~/ :) | ||
Hm... | |||
~/foo | |||
nothingmuch | i am not an idiot, i just said the same thing you told me now N lines ago | ||
chromatic | Call foo() on the god object? | ||
Juerd | Oh, str rx | ||
nothingmuch: Homely? | |||
nothingmuch | then we'll have to make '==>' be '|' | 23:46 | |
Juerd: the 'dot is not an operator thing' | |||
hola Maddingue | |||
Juerd | 01:50 < nothingmuch> then we'll have to make '==>' be '|' | ||
Well - that'd be fun anyway, but I like | for junctions, and I like <== too | |||
Juerd uses <== more than ==> | 23:47 | ||
nothingmuch | Juerd: shells don't have that, it should go | ||
and shells don't have junctions either | |||
unless we write the | operator as 'perl -MQuantum::Superpositions -e ...' | 23:48 | ||
Juerd | Lack of something in some language cannot be translated to the same lack of that thing in Perl, as that would leave us with only brainfuck. | ||
I'm going to try and sleep again. | 23:49 | ||
Imagine - I got out of bed because my hands hurt, and I get lured to my computer because it beeps for new mail. | |||
Now I don't even feel my fingertips anymore. Damn discussions. | |||
nothingmuch | heh | ||
Juerd | Good night! | ||
Odin-LAP | Nasty. :p | ||
nothingmuch | Juerd: you are getting old. | 23:50 | |
sleep well! | |||
Juerd cares MUCH too much about .foo | |||
afk |