The Return of the Journal : pugs.blogs.com/ | pugscode.org | pugs.kwiki.org | paste: paste.lisp.org/new/perl6 or sial.org/pbot/perl6
Set by GammaRay on 31 December 2005.
00:16 lumimies_ joined
stevan audreyt: I think I have the `create vs. .CREATE($repr, ... ) thing figured out 00:18
audreyt: ping me when you are awake and have a moment
00:40 oylenshpeegul left 01:06 frey_ joined 01:11 joepurl joined 01:26 xern joined 01:32 xern_ joined
rent is now known as _brentp 01:33
01:34 vel joined 01:37 xern__ joined
svnbot6 r8588 | stevan++ | docs/notes/piln_object_repr_types.pod - proposal for handling the different $repr types in the PIL^N runtime 01:41
stevan audreyt: please review/sanity-check docs/notes/piln_object_repr_types.pod when you have time
audreyt: I also think we should roll back the fix for the insane-larry model 01:45
I think that is better addressed in the meta-model itself
01:46 SamB joined
stevan i think that can be dealt with in the Eigenclass layer 01:46
(which is not in PIL^N at the moment)
every class will have an eigenclass between itself and it's class (^Class), which will already handle the class methods, so it can just as easily handle the crazy Larry stuff there too 01:49
in fact I think that is the ideal place for it since it keep the rest of the model sane too 01:50
SamB okay. 02:01
stevan :) 02:02
SamB so eigenclasses are the nuthouses in this model, the proverbial carpet under which all the nasty details are swept?
stevan SamB: not really actually
Larry wants to not have Class objects, which is fine for the surface syntax 02:03
and if you need to access the MOP (meta-object-protocol) then you use .meta
the MOP manipulates the Class objects 02:04
stevan waves his hands, "but you didnt see them cause they dont exist"
but Larry want there to be a special kind of class thing, which is undef, but also can respond to various methods 02:05
(which more often than not will be class methods)
so this "class thing" has no real value (it is undef), but can (for instance) respond to .isa 02:06
so ^Int.isa('Int') will work
while ^Int.meta.isa('Int') will not
because ^Int.meta is actually an instance of ^Class 02:07
stevan waves hands again "you didn't see anything ..... "
but all those ^Int class methods need to be stored somewhere 02:09
this is where the eigenclasses come in
in the model there are only instance methods
there is no such thing as a class method
eigenclasses are anon classes which are inserted between the instance and it's class 02:10
this is how Ruby has the instance specific methods 02:11
well if classes are just instances of ^Class, then you can apply the same principle here
and your classes ^Object, etc, ... can have class methods
(aka - instance specific methods on instances of ^Class) 02:12
02:32 stennie joined 02:33 scook0 joined 02:35 gilby joined
gilby .leave 02:39
02:39 gilby left 02:41 stennie left 03:23 christo joined 03:35 hexmode joined 03:58 Cryptic_K joined 04:02 elmex_ joined 04:23 mjl69 joined, christo joined 04:28 Amnesiac joined 04:32 rashakil joined
meppl guten morgen 04:38
04:49 peacock joined 05:05 phredmoyer joined 05:06 phredmoyer left
stevan good morning meppl 05:09
svnbot6 r8589 | stevan++ | examples/piln/lazy_stream.pil 05:33
r8589 | stevan++ | - added a PIL^N examples directory
r8589 | stevan++ | - example of a numeric range implemented as a lazy stream
r8589 | stevan++ | it can handle 1 .. Inf too :)
r8590 | stevan++ | examples/piln/bottom_up_mergesort.pil - copying the mergesort from ^List since audreyt is planning implementing a `sort in the host language 05:44
05:52 justatheory joined 06:00 phredmoyer joined 06:08 azuroth joined 06:35 kanru joined 06:47 phredmoyer joined 06:50 iblechbot joined 06:51 phredmoyer joined
gaal morning 07:21
beppu it's getting close to midnight here ;) (california) 07:23
gaal $morning then. 07:25
07:30 lisppaste3 joined
clkao clkao:~/work/pugs clkao$ svk up -s 07:42
RA layer request failed: PROPFIND request failed on '/pugs': PROPFIND of '/pugs': 200 OK (svn.openfoundry.org)
gaal someone remember where Show instances are defined for Vals? 08:05
dduncan beppu, its a bit after midnight here (BC) 08:16
scook0 gaal: doesn't Val derive Show automatically? 08:17
beppu perl6 world wide 08:22
dduncan new commit done; enjoy
svnbot6 r8591 | Darren_Duncan++ | r1809@Darren-Duncans-Computer: darrenduncan | 2006-01-06 00:20:11 -0800 08:23
r8591 | Darren_Duncan++ | /ext/Rosetta-Incubator : updated Language.pod to start the new section DATA TYPES AND VALUES, which will replace the old DATA TYPES OVERVIEW when done (tomorrow?)
dduncan I'm also incorporating some elements of perl 6 into Rosetta's internal language, or at least more general things that I learned about or had clarified in connection with perl 6 08:24
08:32 hugues23 joined 08:41 G2 joined 08:47 kanru joined 08:48 Cryptic_K joined
gaal scook0: oh, silly me, I was trying to print an Eval Val in ghci, not Val 08:49
scook0 ah
09:39 larsen joined 09:53 joepurl joined, r0nny joined 10:58 kane_ joined 11:16 kanru joined 11:47 marmic joined 12:01 alexe_home joined 12:08 joepurl_ joined 12:22 jrieks joined 12:42 cognominal joined 12:49 mjl69_ joined, cm joined 13:03 elmex joined 13:08 chris2 joined 13:15 mjl69 joined 13:23 Limbic_Region joined 13:27 r0nny joined 13:31 r0nny joined 13:39 DaGo joined
gaal audreyt: ping 13:51
Limbic_Region I think today is a $work day gaal 13:55
not that ever stops her 13:56
gaal dumpYaml doesn't even get a chance to see it got called on a hash. I don't understand why, but it thinks it is getting invoked on a list of pairs. 13:57
obra It's a $work day and she just disappeared for a while 13:58
gaal though if the hask is deep, on inner levels it does see a hash.
anyone else here know Vars?
luqui around maybe? iblech listening on? :)
14:16 elmex_ joined 14:32 Qiang joined, xinming joined
audreyt gaal: pong 14:41
gaal: 14:42
\\n Any pre yaml safe (Any)\
gaal: you want to change proto in prim from (Any) to (rw!Any) so it passes the container not the value.
next question :)
gaal whee! :) 14:45
okay, here goes. I was just playing around with serializing objects
--- !perl/Foo and so on
I can probably figure this out myself, but if you know the api setup needed for this you can save me time looking :) 14:46
(it isn't enough to tag the node with something other than "hash")
14:47 zuulvin_ joined, pdcawley_ joined
audreyt I don't :) 14:47
gaal okay, np. :) 14:48
hmmm, rw!Any didn't change what toYaml sees :( 14:49
audreyt once you figure it out I'll port it to YAML::Syck in the Jhubei.pm hackathon :)
clkao hey audreyt
audreyt try rw!Any|Junction|Pair
hey clkao
gaal may be easier for me to send you a patch to YAML::Syck myself and port it to haskell ;-)
clkao looking forward to hackathon 14:50
gaal hmm that's what .perl does, though I don't see why that should fix this problem
pdcawley_ YAML::Syck?
gaal pdcawley_: indeed. it's on CPAN 14:51
pdcawley_ It's *always* on CPAN! *Everything* is on CPAN.
gaal pdcawley_: Syck is a fast YAML implementation in c used by ruby and other languges.
written by Why, the ruby guy.
pdcawley_ Kewl. 14:52
pdcawley_ wishes he'd seen Why's OSCON thing...
gaal audreyt: no luck with the extended signature either :(
there is a bit I don't understand though, which may be related to this: 14:53
prettyVal says in the object case:
hash <- fromVal v :: Eval VHash
is this forcing the instance of fromVal?
audreyt yup 14:54
gaal without the annotation, was there danger a different instance would run?
which?
audreyt yeah, because the inferencer only sees hashRef below
so anything in (HashClass a, Value a) would do
so we need to tell resolve the ambiguity using type annotation
can you check in your Prim.hs first? 14:55
gaal hmm. okay, so I don't think it is related to the current problem :(
sure, one sec.
done 14:57
svnbot6 r8592 | gaal++ | Pugs.Prim: try to give .yaml a better invocant hint
audreyt pulling
14:58 hcarty joined
audreyt gaal: heh, fixed. 15:01
you are doing a fromVal from Val to Val 15:02
that means "decomposing ref"
so hash gets decomposed.
gaal oh :(
audreyt++ # eyes of a hawk
audreyt ooh, ironpython 1.0 beta. 15:03
nice work.
PerlJam gaal: eyes of a hawk, heart of a lion, intelligence of a savant, etc. ? :-) 15:06
gaal PerlJam: polymorphism. 15:07
audreyt oh wow hash dumping Just Works 15:08
gaal object dumping almost does, here.
audreyt committed... so you get to do the merge :)
gaal well, it lies by substituting a real tag with "!perl/Foo" => attrs
:) 15:09
this is great, I get to learn some ruby
audreyt that's great
svnbot6 r8593 | audreyt++ | * {1=>2}.yaml Just Works now... woot :-) 15:10
audreyt I've just read thru PickAxe 1.5 times
probably need to do some real project with it (and with ironpython/pypy) to grok both
?eval {1=>2, 3=>4}.yaml
evalbot_8592 toYaml VList: [VRef <Pair>,VRef <Pair>] toYaml VRef: VRef <Pair> type=(mkType "Pair") toYaml VList: [VStr "1",VInt 2] toYaml VRef: VRef <Pair> type=(mkType "Pair") toYaml VList: [VStr "3",VInt 4] a hash: [(YamlStr "<ref>",YamlSeq [YamlStr "1",YamlStr "2"])] a hash: [(YamlStr "<ref>",YamlSeq [YamlStr "3",YamlStr "4"])] "--- \n- \n <ref>: \n - 1\n - 2\n- \n <ref>: \n - 3\n - 4\n"
audreyt heh, not finished recompiling yet
gaal urp, those are traces, does evalbot pick up stderr? 15:12
brb
v 15:17
15:17 Aankhen`` joined
gaal is it common in ruby to publish docs in pdf? 15:18
audreyt I thought ri/rdoc is the way to read docs
15:20 justatheory joined
gaal i dunno, the yaml-for-ruby page doesn't have online docs, but a chm/pdf download 15:20
heh, it indeed returns Str. good catch :) 15:22
15:25 xinming joined, elmex joined 15:30 lisppaste3 joined
gaal family dinner. bbl & 15:35
(possibly syck_emit_tag but still uncertain re: how it's used in the ruby ext) 15:36
audreyt #ruby-lang? :) 15:37
gaal freenode? 15:38
I'm happy to ask, but.. later :)
15:52 Aankh|Clone joined 16:06 phredmoyer joined
stevan audreyt: ping 16:15
audreyt stevan: pong 16:17
your proposal makes sense and I'll make it happen tomorrow :)
stevan does a happy dance
audreyt stevan++
stevan audreyt++ 16:18
I might try to hack some of the basic roles this weekend too,.. like Ord, etc
audreyt also, do you think a RW role, a Plural role (with to_single), as well as a Single role (with to_plural) makes some sense?
RW role would have infix:<=>
stevan probably yes
audreyt taken together that forms my version of context calculus 16:19
stevan ok
I wanted to try and spec out these types of things this weekend
give the objects more "behaviors"
audreyt woot
clkao audreyt: www.nntp.perl.org/group/perl.perl6.compiler/1258 16:26
great web nntp interface 16:27
audreyt you could've seen that in my blog anyway... 16:28
stevan clkao: you can't read that? :P
they are pretty complex semantics :) 16:29
audreyt rofl 16:30
qmole next one is better 16:32
stevan I don't understand the context,.. but I am certainly coerced into believing that it will work :) 16:33
qmole heh 16:34
stevan provides his own rimshot
audreyt looks up what "rimshot" means 16:35
stevan it punctuates a bad joke 16:36
audreyt *nod*
stevan in Las Vegas style comedy acts
hit the rim of the snare drum and then the cymbal
Debolaz wonders why p6i hates him. 16:37
audreyt yeah, I know the concept, but not the word :)
Juerd_ clkao: I dunno why exactly, but even trying HARD for a week couldn't make me decode base64 without a computer :( 16:41
It's something I'd love to be able to 16:42
clkao don't. look out for snowcrash 16:44
audreyt food, bbiab 16:46
Limbic_Region anyone have a p5 implementation of the ackerman benchmark handy? 16:48
stevan thinks me might have left that in his other pants 16:50
I think there is a p6 one in examples/ though, not sure if that helps at all
Limbic_Region well in p6 I would expect compiler tail-call optimizations to negate the need for manual intervention 16:51
but for a starting point it might help
found 1 16:52
www.newlisp.org/benchmarks/ackermann.perl.txt
16:56 iblechbot joined 17:01 bsb joined
stevan audreyt: I was also thinking that we might need a way to have "private" roles/classes which are not exposed to the user-land, but used in the object-space/PIL^N land,.. but this is still an unfinished thought 17:25
audreyt stevan: we simply don't bind them to the final lexpad.
stevan that works :)
audreyt they are in objspace, but you can't reach them.
17:25 vel__ joined
audreyt see Bootstrap.pil annotations :) 17:25
(my plan is to just bind things with :: and nothing else) 17:26
stevan ah
very nice
audreyt oh, also, you want me to rollback lwall-hack and roll in eigen?
what will ::Int's repr be?
stevan so the ^ stuff will be behind .meta?
yes, please roll back the lwall stuff,.. and we can hack in eigen's later 17:27
audreyt yes.
stevan I want to keep them out of the picture for the moment
audreyt but what will ::Int's repr be?
stevan a num
audreyt the class itself uses a num repr?
with a value in it?
stevan which we will pass into create_scalar() 17:28
audreyt which value is this?
I mean the object ::Int
not objects of class ::Int
stevan yes
oh
^Class
audreyt right, so the idea is still the same, but not done as a special hack in runtime
got it
stevan thinks he is understanding correctly the question
yup
audreyt cool, we are back to vehement agreement 17:29
stevan :)
audreyt so do I rollback just the create_class hack
or also the resigiling?
I kinda like the resigiling.
stevan no we can keep the resigiling
audreyt yay.
stevan but lets do add all the :: stuff in a single file, to be loaded last in the process I think 17:30
unless of course we find we need it later on
s/later/earlier/
stevan praises CAM::PDF for making Test::PDF possible and therefore his $work life easier 17:31
audreyt there's a Test::PDF? 17:32
stevan yeah, I wrote it :)
audreyt stevan++ # wow.
stevan it's not complete
but it does a "rough visual" comparison 17:33
audreyt but still, wow.
I've pondered this when I was writing PDF::FromHTML
stevan I got sick of hand checking 100+ page PDF reports
:)
audreyt dismissed it as ENOTOOLS
stevan CAM::PDF++ # makes it soooo simple
ENOTOOLS?
audreyt i.e. there were no CAM::PDF back then. 17:34
stevan ah
yes, it makes aggressive refactoring of PDF generating code a much more pleasent experience 17:35
audreyt $job++ # keeping touch with the CPAN roots is a great way to keep me motivated on doing perl6 17:36
elmex elmex++ 17:42
perlbot What kind of idiot karmas himself? Your kind of idiot!
elmex perlbot--
17:44 khisanth_ joined 17:49 lisppaste3 joined
Aankh|Clone perlbot karma perlbot 17:54
perlbot Karma for perlbot: 5
ankhen` is now known as Aankh|Clone
18:22 talby joined
talby I don't know exactly what to call it, but if anyone is familar with Mozilla's xptcall functionality for allowing JavaScript to masquerade as C++, does anyone know if Parrot is expected to include features to allow dynamic wrapping of Parrot interpreter entry points to C? 18:25
broquaint I would think not, talby. 18:29
What more do you need to expose when writing assembler? 18:30
talby I don't think I understand the question. 18:31
broquaint Never mind.
talby would there be value in being able to pass a hunk of Parrot bytecode in place of a C callback function? 18:32
stevan talby: you might have better luck asking on #parrot actually
although leo is sometimes around here
talby thanks.
audreyt stevan: so. do I just remove the ::Scalar := ^Scalar.create_class etc? 18:33
stevan yeah I think so,.. for now at least
they are not really used anywhere at the moment 18:34
18:34 talby left
audreyt so, ::Int's repr is an opaque 18:40
that creates interesting problems
say I have ::Point
which is an opaque itself with eigen under your scheme 18:41
stevan ok
audreyt what would ::Point store in its opaque?
what are the keys?
stevan wait 18:42
I think ::Int's repr wont be an opaque
it will be the create_scalar() repr
it will just store the native num where an opaque would store a map of attr names
audreyt I mean ::Int the object
not objects of type ::Int 18:43
stevan what does that matter to ::Point then?
audreyt what I'm wondering is
what exactly does ::Int's opaque store? or ::Point's?
I can't seem to think of anything.
stevan oh,.. sorry,.. I am thinking ^Int
uhm,.. no they dont really store anything I guess 18:44
maybe they are create_nil()
audreyt exactly my point.
stevan this will give us the class but undef
audreyt yes.
stevan and you just call .meta through them
audreyt because I implemented that in createClass in new runcore
but I'm now rolling it back
stevan ok
audreyt in favor of your repr scheme
but I need its counterpart in repr.
stevan well I think we can mix the two together 18:45
audreyt yup
stevan but how would ::Int.new() work?
or would that be ^Int.new()
or ::Int.meta.new()?
audreyt ::Int.meta.new.
er wait
stevan ok
audreyt ::Int.new can work 18:46
its eigen does a dispatch to meta
stevan :es
yes
audreyt that makes perfect sense
stevan should class methods be stored in ::Int ?
audreyt there's no notion of clsmeth in s12. 18:47
stevan meaning,.. is ::Int really just our eigen?
audreyt hm, ::Int has cls of itself
stevan yeah I know,..Larry is still very hand wavy on that
audreyt you mean like that?
every class object is its own metclass?
stevan hmm
if ::Int is the "class object", which is also undef, then ^Int would be it's metaclass 18:48
but ^Int is just an instance of ^Class
we need an eigenclass in there somewhere to handle proper class methods (regardless of what S12 says) 18:49
audreyt I'd like to think there is no class methods
I mean, I don't think larry is handwavy
I think he is set on deliberate nontraditional OO model
stevan so how owuld they be handled?
audreyt as they are in p5
how are clsmeth in p5 handles?
s/handles/handled/
stevan hmm
audreyt I think S12 outlines a type-ified p5 model 18:50
but the p5 spirit stays
which is that there's no class methods
(but there could be eigens)
via gensym refs
stevan but how do I tell the diff between ::Int.stuff() and ::Int.new().stuff()?
well if we don't have class methods, we really have no need for eigens 18:51
audreyt there is no diff if method stuff doesn't use attrs
stevan hmm
audreyt and if it does, then typechecker rejects the former.
exactly like in p5
except safer
stevan so there is no way to explicty mark amethod
audreyt but operational semantic stays
stevan as only takeing a class invocant
audreyt right, I think that's larry's basic idea
it's very prototypical.
stevan hmm 18:52
yes
ok,.. that works
who am I to argue with Larry :P
audreyt "insanity is not only a good idea it's the law"
stevan ok,... so forget eigenclasses,.. we only need them for adding singleton methods
:) 18:53
insanity++
class methods are overrated anyway
so ::Int will have repr of nil, and ::Int.meta will be ^Int,.. which means we will have a nil instance of ^Int 18:54
I like that
it works
so ::Int's cls is ^Int
audreyt yes.
Odin-LAP audreyt: Well, and so what? Good ideas don't need the force of law, and the force of law often doesn't suffice to press bad ideas upon people. So ... make good ideas become the law!
audreyt okay, I'm glad I conveyed insanity
Odin-LAP: I agree... in fact I'm implementing it ;) 18:55
stevan shuffles around the asylum in his pajamas mumbling something about the satelittes which are monitoring his brainwaves 18:56
Odin-LAP stevan: Oh, they're not monitoring your brainwaves.
stevan thinks Odin-LAP is one of Them now
Odin-LAP Nonono. They're monitoring all of your body activity. 18:57
stevan wonders how Odin-LAP knows so much if he is not one of Them 18:58
Odin-LAP The brainwaves, really, are the least of their concern. They're much more interested in neurotransmitter activity, i.e. which specific transmitters are active where.
stevan stands very still 18:59
Odin-LAP stevan: Oh, I never said I wasn't. But you don't know where my allegiance lies, do you? :)
(The 'nonono' was referring to the idea that they were just monitoring brainwaves.)
stevan :) 19:00
he-Ma is now known as stevan
Odin-LAP Oh dear.
The-Man Odin-LAP, paging Odin-LAP you are needed in the neurotransmitter monitoring room
teva is now known as The-Man
audreyt ... 19:01
Odin-LAP audreyt: Speechless? 19:02
audreyt no, sending morse code to Them
Odin-LAP S? 19:03
audreyt yeah, it's an S expression in morse code!
*rimshot* 19:04
audreyt learns fast
qmole lol
stevan :D 19:05
audreyt stevan: so, add it to the repr document if you've got a second... I'll revert the internals hack now and complete repr spec tomorrow
stevan ok
19:05 ingy joined
stevan ingy!!!!! 19:05
ingy stevan: hey man
I should logoff and log back on more often 19:06
how goes
stevan it goes
how is .tw treating you
ingy loverly 19:07
I bought a scooter today
www.atlas-kk.co.jp/bike/taiwan/cygn...31_big.jpg
whiteg Did you also buy a helmet
?
ingy that's the actual color scheme
hi whiteg! 19:08
whiteg ingy: :)
ingy no I don't actually get the scooter until Monday though
and technically it belongs to gugod
I'm buying for him ;) 19:09
ingy does the happy scooter owner dance 19:10
whiteg ingy: you should also buy yourself one or two helmets. 19:11
stevan cool 19:12
ingy whiteg: I definitely will 19:13
and they will be cool ones
whiteg :)
ingy unlike gugod's
whiteg save one for me.:)
ingy pink?
whiteg ingy: well, I trust your taste. 19:14
ingy you should
it rocks
stevan recommends painting flames on the side of ingy's helmet
ingy most of the time...
stevan: sounds hot! ;) 19:15
19:15 cognominal joined
ingy ok nighty night sixers 19:15
stevan I would say to go Easy Rider style with the american flag, but maybe not in the current world political climate
ingy heh 19:16
19:23 Southen joined 19:31 cognominal joined
svnbot6 r8594 | stevan++ | docs/notes/piln_object_repr_types.pod - added docs about the `create_nil() repr type 19:35
19:49 oylenshpeegul joined 19:50 Southen_ joined
gaal hullough 20:01
20:03 justatheory joined 20:04 loftcity joined 20:07 dduncan joined 20:13 putter joined 20:18 xinming joined 20:29 oylenshpeegul left 20:41 hexmode joined 20:44 marmic joined 20:55 hcarty left 21:06 mncharity joined
utte is now known as mncharity 21:06
putter celebrates return of the journal 21:07
stevan: ping 21:08
hmm, colabti.de/irclogger has the sense of name changes backwards. foo changed to bar gets a "<mangled> - changed to foo" line. 21:09
ingy: trademarks aside, how about a camel-nose helmet. ;) 21:11
21:14 pdcawley_ joined
stevan putter!!!!!!!! 21:15
stevan celebrates the return of putter
putter stevan!!!! ;)
audreyt putter!
putter err, disturbing icon. maybe :) ?
audreyt!!! :) 21:16
delighted to see the new journal!
hmm, so what does the near-term critical path look like nowadays? 21:17
stevan PIL^N 21:18
'sall 'bout dah Lambda Yo
putter :)
stevan hmmm, when last you were here, I think I hadn't begun the Perl6::ObjectSpace stuff 21:19
audreyt putter: PILN, then PIL2 targetting it, then porting over parse tree stuff
putter so... time to bulk code massage Prim.hs into pil-mumble?
audreyt putter: yes, the builtin reprs and roles 21:20
we stash everything into prim
putter or better question, is there a near-term bitesized-tasks list?
audreyt that's gotta go
bitesized... look at parrot's new pad stuff and revamp Emit.PIR 21:21
that's more unicode-sized
Debolaz Aight, pkgsrc package for parrot 0.4.1 is more or less done. Only to wait for the release now. Also made a package that gets the source from the subversion repo when building.
putter stevan: re P6::OS, yes, neat! The old p5 backend rewrite quickly hit "I'm just making this up as I go along" on the oo type hierarchy. Awesome to see something real. 21:22
audreyt also, p6doc stuff is definitely bitesized
21:22 Southen joined
stevan putter: thanks :) 21:23
stevan wonders when the PIR/PGE/TGE hacking folks will realize that same thing ;) 21:24
audreyt heh... PGE is quite self contained and TGE is a well-proven minimal algorithm
it's just it's not clear how to get here from there :) 21:25
gaal putter! hello :)
stevan audreyt: very true :)
well we are nice people,.. we will share our stuff :)
putter hi gaal!
audreyt and PIR... makes a very good Tcl VM, which will become handy as the prims is getting populated quickly
so things are looking good :)
stevan I think of PIR and PIL^N as being two different approaches to the same problem 21:26
although I may be off base there
stevan has limited PIR experience
audreyt PIR doesn't nest, that's my #1 gripe 21:27
otoh, it does have goto, which we don't, so things balance out
stevan we have &redo := &?SUB which IMHO is just as good if not better
stevan has yet to see a "Fixed Point considered harmful" paper 21:28
putter looks at www.synchroedit.com/ - a web-based simultaneous editor
re FPch :)
ok, sooo... Pugs/Prim.hs gets shredded? with parts converted into p6, pil...mumble, and mumble.hs? 21:31
21:34 elmex joined
putter birthday coming up. getting old. christmass passed. no p6. sniff. friend's 2.5 yr-old growing up. is using truely miserable software. shudder. want to write better. no p6. weep. looking around for bottlenecks/critical path/pacing factors to poke at. ideas? 21:35
stevan audreyt: can you easily make "&infix:<+> := -> $lhs, $rhs { $lhs`add($rhs) };" parseable in PIL^N?
putter contemplates "p6 now" slogan
gaal I hadn't gotten that far in TaPL yet, but why BTW do some languages require you to say "let rec" explicitly? performance?
stevan I dunno about ML (or whatever TaPL uses), but IIRC scheme's letrec is a form of let which allows things to be self referential 21:37
audreyt stevan: done, committing
stevan audreyt++ 21:38
gaal stevan: yes, so I suppose it introduces a fix. is that expensive?
stevan that will allow me to hack Ord, Eq, etc
gaal: no idea,.. sorry
although the paper I am looking at right now which is where I saw letrec in says that it is sideeffectual
gaal wonders if there's something he can do with PIL^N? 21:39
stevan and does not seem to indicate that it is using a fix()
gaal s/with/for/
stevan gaal: haskell side or PIL^N side?
gaal sunny side
stevan recommends www.dreamsongs.com/NewFiles/WhyOfY.pdf (I think asavige posted this here a few days ago too) 21:40
gaal in p5 you need to do a silly trick to get a recursive (anonymous) closure 21:41
I read that
21:41 cognominal joined
gaal you need to declare the container before assigning to it 21:41
I think that's just a tecnical thing, a side effect of the implementation
putter gaal: my fuzzy impression is there shouldnt be a performance hit for the mere binding discipline. only if it gets combined with an orthogonal choice to evaluate sequentially. my (very) fuzzy recollection is scheme's letrec has explicitly undefined clause evaluation order.
svnbot6 r8595 | audreyt++ | * allow <> in PILN identifiers. 21:42
gaal brb
stevan &infix:<+> := -> $lhs, $rhs { $lhs`add($rhs) }; &infix:<+>`(3, 4); = 7 :) 21:44
gaal re 21:46
openfoundry's being slow :( 21:48
21:48 larsen_ joined
putter stevan: so what does your next few days look like? any well-defined bits you'd like to delegate? 21:50
stevan putter: I am actually waiting on audreyt to finish refactoring some of the PILN object stuff 21:51
putter ah :( 21:52
stevan everything else is very fuzzy stuff right now
sorry
putter ok, so piln gets refactored, then what happens? 21:53
stevan I need to refactor the stuff written in PIL^N to work with that
which will be fairly well defined when we get to that point
which may be in the next few days,.. I am just not sure of audreyt's shedule 21:54
putter ok, so piln is refactored, the existing piln is updated to match, and then...
stevan well I am trying to figure out the role/class/type heirarchy for Perl6 and PILN/2 21:55
I sent a mail to p6c a few days ago which is a start 21:56
then Larry tore it up (which is exactly what I was hoping for)
putter hmm, ok, say the perfect spec came back, what would happen next? 21:57
:)
stevan implement it ;)
putter lol
stevan Larry wont write it though
besides I think we need to allow for hand-waving and blurriness with the Perl 6 level 21:58
and as long as the PIL level is solid and full featured
we can support the needs of the Perl 6 layer
putter implementing it would mean... piln code? p6? ...?
ahm ,,,
stevan piln mostly
putter err, ah...
how solid and full featured is piln at present? 21:59
stevan If i understand audreyt's plan correctly, then Perl 6 will get compiled down to PIL2, which is really just *very very* desugared Perl 6 22:00
audreyt waves and sleeps... will backlog in future
stevan :)
audreyt yes. PIL2 is just Perl6 with minimal internal nodes
putter night&
hmmm...
stevan then PIL2 will use the classes/types/roles built in PILN to serve as the "runtime"
PILN is as full featured as it really needs to be 22:01
IMHO that is :)
putter :)
stevan it is lambda calc with string, number, bool, list and hash literals
list and hash being immutable too
putter err, ok, what exactly is the relation of pil2 and piln?
stevan PIL2 will call the PILN objects 22:02
putter p6->healthfoodstore->pil2->...
obra seen leo_ 22:04
jabbot obra: leo_ was seen 6 days 2 hours 24 minutes 11 seconds ago
obra seen leo
jabbot obra: leo was seen 23 hours 34 minutes 4 seconds ago
audreyt PIL2 is compiled to PILN.
as it can be (and will be) compiled to PIR.
putter ah
audreyt PILN is basically our reference VM.
because the compiler needs an object space 22:05
stevan PILN is compiled to PIR? or PIL2 is compiled to PIR?
putter feels guilty about keeping audreyt awake...
audreyt and currently all our backends have incompatible objspace semantics
obra ow.
audreyt none of which agree with S12
putter k
obra parrot is coming up as the canonical source for Pod::Simple::Text on CPAN
audreyt obra: ow
stevan: PILN can be compiled to PIR easily but perhaps not efficiently.
but we can do that first and should od that first.
stevan: at some point PIL2->PIR can enable better interop and optimization and whatnot. 22:06
putter hs|pilnvm<-(compile)-pil2<-(enzime)-p6 ?
stevan audreyt: but that will require a PIR objectspace right?
audreyt putter: something like that, yes, although piln can certainly be interpreted in p5.
stevan: yes.
stevan: or an isomorphism
stevan yes
stevan hopes someone else will volunteer to write that one :P 22:07
putter ok... strawman question: so if there is a p6->pil2->piln compilation path... why isnt everything written in p6? ;) 22:08
audreyt putter: everything above object bootstrap should be in p6. 22:10
putter: we are still working on obj bootstrap ;)
putter :)
audreyt the objspace for compiler is still incomplete 22:11
once it's complete, then sure, have fun with those p6 objs.
putter hmm... given that the p6 oo model seems a bit... fuzzy at present... could the compiler use a lower-level set of constructs, which then get assembled into the oo model dejure? 22:13
audreyt we are degaussing it. 22:14
and it's no longer fuzzy now :)
at least as of this week
the class/role hierarchy needs more work
but it's just work... not pending larry et allanymore 22:15
s/all/al /
putter much of the object space doesnt seem(?) to depend on the exact details, and thus could be written when then lower levels were still in flux [putter sees next comments - ah]
audreyt the compiler must live in an objspace 22:16
no way around that
and then snapshot the post-GC space
save it as disk image
and to run it is to call the &::('') entry object 22:17
putter so the only thing which gets written in piln is a bare minimum set of objects/methods to bootstrap the object system? and then the objects (and perhaps methods) get fleshed out by p6 code once bootstrapped?
audreyt exactly so.
and the Haskell part is just the native representations and their methods.
which is like ~200 lines 22:18
and can be duped in p5
and then we get p6 running on p5.
that's the plan so far.
but it's 6am
putter ok... hmm...
audreyt I really really need to sleep.
audreyt waves :)& 22:19
putter bad audreyt! but my many thanks. good night &
putter pauses, remaining carefully quiet. (wispers) steven: ping 22:20
stevan pongs quietly
putter lol
gaal you mean lo(very quietly) 22:22
audreyt silly :)
stevan dammit putter you woke her up :P
audreyt I'll sleep once my rofl'ing stops :) 22:23
&
gaal shops for a bedcage with effective stoppers against laughing hackers 22:25
stevan carefully slips mufflers over audreyt's virtual ears 22:26
putter so it sounds like there is an exercise of taking the set of objects/methods still written in haskell, subtracting those needed (==currently used?) by the oo system bootstrap (and thus written in piln), and massaging the rest. Either into p6 where possible, or into... something... for true primitives.
stevan putter: yes, kinda 22:27
gaal hmmm, there was a syntax trick in haskell to use a let expression just for the sake of a pattern match. anyone in GMT < +4 remember what it was? 22:28
stevan the OO bootstrap is mostly complete, it just needs some polishing before it can work on the p6 level
putter: have you seen the updated S12?
gaal I mean suppose I have a Just x
I know for certain this can't be Maybe, so I want to let myself x 22:29
s/Maybe/Nothing/
I know about fromJust; my case is a little different
stevan putter: it is worth reading since it is much less hand-wavey 22:30
gaal in longhand I'd spell out case v of (Just x) -> my code; _ -> error "
putter Hmm, so take atan(). Currently its hs-atan | Prim.hs:p6-atan(). what's the new version? does piln have an atan? or an inline-hs(), with a hs-backend-specific p6 file? or...?
gaal but I *know* there's an evil trick to avoid that.
golfing for the sake of readability, really! 22:31
stevan putter: should atan be a multi?
stevan is fairly clueless on anything in the Math:: namespace
putter gaal: nothing comes to mind. hmmm. #haskell?
gaal good idea. 22:32
putter stevan: I guess the question is really, does the piln vm end up with a very large "instruction set", including things which on some platforms one might prefer to write in p6, or 22:34
is it much narrower, but with backend-specific tunneling functions (inline/eval), accompanied by backend-specific p6 code. 22:35
stevan putter: well PIL^N has the ability to access methods on things which P6 will not have the ability to do
the unboxed types basically
the idea is to keep the PILN vm instruction set small 22:36
only those bits we really need
with enough abstraction to cover the unboxed types
stevan is not sure he explaining this well
putter atan()? you do want access to unboxed types. but a vm with all the mathops wont be exactly small. 22:37
stevan I am also thinking that nothingmuch's circular prelude idea will work well here
putter circular prelude?
stevan nothingmuch proposed that we define everything in p6, and then each backend/compiler/interpereter would implement the min bits it needed to to support the prelude 22:38
I think there is something about it in doc/notes 22:39
what does atan do BTW?
PerlJam atan == arc tangent
putter arc-tangent?
stevan prepares to ask what an arc-tangent is and decides to not bother :P
if you can write it in p6, then you dont need to have access to the unboxed types 22:40
PerlJam stevan: Haven't you ever taken a math or geometry class?
or trigonometry
putter tests Wikipedia. neat. en.wikipedia.org/wiki/Arc_Tangent
stevan PerlJam: I went to Art School and was asleep/high/too-busy-drawing during High school math 22:41
PerlJam stevan: gotcha. Glad we rescued you then :)
stevan LOL
well putter, probably for efficiency sake things like this should be implemented in the host langauge (C for parrot, Haskell for Pugs, etc) 22:42
which would become native methods on the PILN num type 22:43
and we would just add the method to the boxed ::Num type in PIL^N so it can dispatch to the native num 22:44
at least that is how I see it
putter one liner is its the inverse of tan(). x == arctan(tan(x)) for all arcmumble (sin, cos, etc)
stevan <she who must not be named> may disagree
Juerd_ GPRS use abroad: 0.274 MB, costing me 4.76 EUR
Incredible.
PerlJam Juerd_: is that cheap or expensive? 22:45
Juerd_ And in total, I spent 85 EUR on mobile phone stuff in Germany .
22:45 scrottie joined
Juerd_ PerlJam: Incredibly expensive. 22:45
PerlJam: You know how tiny an MB is, and the value of a EUR :)
scrottie waves hi to Juerd
Juerd_ Hey scrottie
PerlJam Actually, I don't have a handle on the value of a EUR
Juerd_ PerlJam: In .nl, I get 1 GB/month for EUR 30.00
stevan putter: also you should look at this docs/notes/piln_object_repr_types.pod 22:46
Juerd_ Outside .nl, an MB costs well over EUR 10
stevan it will give you context to the boxed/unboxed stuff I am babbling about
PerlJam Juerd_: stay in .nl ;)
putter stevan: re circular, it would be nice if one could do that on a pure perl level. use Base; use BaseTweaks12; use SomeStuffOnHS; use OtherStuffOnHS; # now bootstrap done
Juerd_ It's over 325 times more expensive outside than inside .nl 22:47
stevan putter: maybe, I dont have that wide a view of things at the moment
Juerd_ That's outrageous.
But apparently, normal.
22:50 Medvekom_ joined
integral 1 EUR is a cup of coffee 22:50
putter stevan: is piln a subset of p6? or novel? 22:51
stevan piln is the bastard love child of haskell, scheme and p6
putter err, given that _everything_ is a subset of p6... err... "basic" p6?
stevan it is not valid p6 no 22:52
for instance,.. if you call a method on a primative object (num, str, code, list, etc), you use the ` infix operator
but method dispatch to metamodel objects is with the . operator 22:53
PerlJam integral: thanks. 22:54
integral although if you go by the exchange rate this means that UK coffee is very expensive ;-) 22:55
22:55 oylenshpeegul joined
putter hmm. if it got wrapped with an inline_piln <<'END'...END, it would be valid p6... topped with use PILN;... 22:55
stevan putter: examples/piln is what piln looks like
putter: possibly
putter and the compiler could then recognize it an do piln magic... 22:57
stevan putter: yes, but it would not be portable unless we compile PILN to PIR/Perl5/whatever
gaal well, it's time for bed for me too. night folks 22:58
nice seeing you aroud, putter
putter 'night gaal &
gaal zzZ &
putter thanks :)
stevan putter: I am off to dinner, but I suggest looking over src/PIL/Native/Boostrap/*.pil as well 23:02
stevan goes to eat & 23:03
putter stevan: so I'm wondering if one could just have a StandardHsRuntime.p6 which just said use OOBotstrap; use CommonRuntime; use CommonTweak4; use HsPrims; and pugs --compile StandardHsRuntime.p6 -o pughs would give you a hs pugs?
oh, and OOBootstrap.p6 said inline_piln <<... END. or whatever. if we had source filters (still no?), that could just be use PILN; ... 23:04
the neat thing being one then has one big happy flexible ball of p6 bits, which can mixed and matched to do whatever. 23:05
23:06 mjl69_ joined, verve_ joined
putter oops, stevan went to eat. ah well. me too & 23:07
23:13 PJF joined 23:14 Medvekoma joined 23:15 mjl69__ joined
bsb On the exchange rate topic, can anyone tell me what an NIS is? 23:16
www.osdc.org.il/payment.html
Israel New Shekels? 23:17
PJF bsb: Correct. New Israeli Sheqel, or שקל חדש for the unicode enabled. 23:18
bsb That came out as "x"s and copyright symbols so I don't think I'm unicode enabled 23:20
oylenshpeegul (cool...I didn't realize my IRC client was unicode enabled!)
bsb OSDC.il seems quite a bargain then
putter audreyt/stevan: so, two thoughts: when creating the object universe, it could be a nice, maintainable, and flexible approach to do overriding mixins of p6 code (files... modules?). this then works nicely with the concept that many p6 files with start with use Mumble; where mumble is some domain specific language. like piln. 23:23
as with the js backend and inline_js, the compiler then just recognizes the resulting (piln) nodes, and does the right thing. the boundaries between p6, pil2, piln, and backend-specific code, then get nicely fuzzy and flexible. 23:25
random thought. a bag of micro languages might be a happier place to be than a stack of them. 23:27
'night all &
23:30 lisppaste3 joined 23:36 PJ1 joined 23:43 drbean joined 23:54 Cryptic_K joined
J is now known as PJ1 23:55
23:56 bsb left