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