Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6, 2006-01-06

Perl 6 | Reference Documentation | Rakudo

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:16 lumimies_ joined perl6
00:18 stevan audreyt: I think I have the `create vs. .CREATE($repr, ... ) thing figured out
00:18 stevan audreyt: ping me when you are awake and have a moment
00:40 oylenshpeegul left perl6
01:06 frey_ joined perl6
01:11 joepurl joined perl6
01:26 xern joined perl6
01:32 xern_ joined perl6
01:33 brentp is now known as _brentp
01:34 vel joined perl6
01:37 xern__ joined perl6
01:41 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
01:45 stevan audreyt: I also think we should roll back the fix for the insane-larry model
01:45 stevan I think that is better addressed in the meta-model itself
01:46 SamB joined perl6
01:46 stevan i think that can be dealt with in the Eigenclass layer
01:46 stevan (which is not in PIL^N at the moment)
01:49 stevan 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:50 stevan in fact I think that is the ideal place for it since it keep the rest of the model sane too
02:01 SamB okay.
02:02 stevan :)
02:02 SamB so eigenclasses are the nuthouses in this model, the proverbial carpet under which all the nasty details are swept?
02:02 stevan SamB: not really actually
02:03 stevan Larry wants to not have Class objects, which is fine for the surface syntax
02:03 stevan and if you need to access the MOP (meta-object-protocol) then you use .meta
02:04 stevan the MOP manipulates the Class objects
02:04 * stevan waves his hands, "but you didnt see them cause they dont exist"
02:05 stevan but Larry want there to be a special kind of class thing, which is undef, but also can respond to various methods
02:05 stevan (which more often than not will be class methods)
02:06 stevan so this "class thing" has no real value (it is undef), but can (for instance) respond to .isa
02:06 stevan so ^Int.isa('Int') will work
02:06 stevan while ^Int.meta.isa('Int') will not
02:07 stevan because ^Int.meta is actually an instance of ^Class
02:07 * stevan waves hands again "you didn't see anything ..... "
02:09 stevan but all those ^Int class methods need to be stored somewhere
02:09 stevan this is where the eigenclasses come in
02:09 stevan in the model there are only instance methods
02:09 stevan there is no such thing as a class method
02:10 stevan eigenclasses are anon classes which are inserted between the instance and it's class
02:11 stevan this is how Ruby has the instance specific methods
02:11 stevan well if classes are just instances of ^Class, then you can apply the same principle here
02:11 stevan and your classes ^Object, etc, ... can have class methods
02:12 stevan (aka - instance specific methods on instances of ^Class)
02:32 stennie joined perl6
02:33 scook0 joined perl6
02:35 gilby joined perl6
02:39 gilby .leave
02:39 gilby left perl6
02:41 stennie left perl6
03:23 christo joined perl6
03:35 hexmode joined perl6
03:58 Cryptic_K joined perl6
04:02 elmex_ joined perl6
04:23 mjl69 joined perl6
04:23 christo joined perl6
04:28 Amnesiac joined perl6
04:32 rashakil joined perl6
04:38 meppl guten morgen
04:49 peacock joined perl6
05:05 phredmoyer joined perl6
05:06 phredmoyer left perl6
05:09 stevan good morning meppl
05:33 svnbot6 r8589 | stevan++ | examples/piln/lazy_stream.pil
05:33 svnbot6 r8589 | stevan++ | - added a PIL^N examples directory
05:33 svnbot6 r8589 | stevan++ | - example of a numeric range implemented as a lazy stream
05:33 svnbot6 r8589 | stevan++ |   it can handle 1 .. Inf too :)
05:44 svnbot6 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:52 justatheory joined perl6
06:00 phredmoyer joined perl6
06:08 azuroth joined perl6
06:35 kanru joined perl6
06:47 phredmoyer joined perl6
06:50 iblechbot joined perl6
06:51 phredmoyer joined perl6
07:21 gaal morning
07:23 beppu it's getting close to midnight here ;)  (california)
07:25 gaal $morning then.
07:30 lisppaste3 joined perl6
07:42 clkao clkao:~/work/pugs clkao$ svk up -s
07:42 clkao RA layer request failed: PROPFIND request failed on '/pugs': PROPFIND of '/pugs': 200 OK (http://svn.openfoundry.org)
08:05 gaal someone remember where Show instances are defined for Vals?
08:16 dduncan beppu, its a bit after midnight here (BC)
08:17 scook0 gaal: doesn't Val derive Show automatically?
08:22 beppu perl6 world wide
08:22 dduncan new commit done; enjoy
08:23 svnbot6 r8591 | Darren_Duncan++ |  r1809@Darren-Duncans-Computer:  darrenduncan | 2006-01-06 00:20:11 -0800
08:23 svnbot6 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?)
08:24 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:32 hugues23 joined perl6
08:41 G2 joined perl6
08:47 kanru joined perl6
08:48 Cryptic_K joined perl6
08:49 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 perl6
09:53 joepurl joined perl6
09:53 r0nny joined perl6
10:58 kane_ joined perl6
11:16 kanru joined perl6
11:47 marmic joined perl6
12:01 alexe_home joined perl6
12:08 joepurl_ joined perl6
12:22 jrieks joined perl6
12:42 cognominal joined perl6
12:49 mjl69_ joined perl6
12:49 cm joined perl6
13:03 elmex joined perl6
13:08 chris2 joined perl6
13:15 mjl69 joined perl6
13:23 Limbic_Region joined perl6
13:27 r0nny joined perl6
13:31 r0nny joined perl6
13:39 DaGo joined perl6
13:51 gaal audreyt: ping
13:55 Limbic_Region I think today is a $work day gaal
13:56 Limbic_Region not that ever stops her
13:57 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:58 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.
13:58 gaal anyone else here know Vars?
13:58 gaal luqui around maybe? iblech listening on? :)
14:16 elmex_ joined perl6
14:32 Qiang joined perl6
14:32 xinming joined perl6
14:41 audreyt gaal: pong
14:42 audreyt gaal:
14:42 audreyt \\n   Any       pre     yaml    safe   (Any)\
14:42 audreyt gaal: you want to change proto in prim from (Any) to (rw!Any) so it passes the container not the value.
14:42 audreyt next question :)
14:45 gaal whee! :)
14:45 gaal okay, here goes. I was just playing around with serializing objects
14:45 gaal --- !perl/Foo and so on
14:46 gaal 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 gaal (it isn't enough to tag the node with something other than "hash")
14:47 zuulvin_ joined perl6
14:47 pdcawley_ joined perl6
14:47 audreyt I don't :)
14:48 gaal okay, np. :)
14:49 gaal 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 :)
14:49 clkao hey audreyt
14:49 audreyt try rw!Any|Junction|Pair
14:49 audreyt hey clkao
14:49 gaal may be easier for me to send you a patch to YAML::Syck myself and port it to haskell ;-)
14:50 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
14:50 pdcawley_ YAML::Syck?
14:51 gaal pdcawley_: indeed. it's on CPAN
14:51 pdcawley_ It's *always* on CPAN! *Everything* is on CPAN.
14:51 gaal pdcawley_: Syck is a fast YAML implementation in c used by ruby and other languges.
14:51 gaal written by Why, the ruby guy.
14:52 pdcawley_ Kewl.
14:52 * pdcawley_ wishes he'd seen Why's OSCON thing...
14:52 gaal audreyt: no luck with the extended signature either :(
14:53 gaal there is a bit I don't understand though, which may be related to this:
14:53 gaal prettyVal says in the object case:
14:53 gaal hash    <- fromVal v :: Eval VHash
14:53 gaal is this forcing the instance of fromVal?
14:54 audreyt yup
14:54 gaal without the annotation, was there danger a different instance would run?
14:54 gaal which?
14:54 audreyt yeah, because the inferencer only sees hashRef below
14:54 audreyt so anything in (HashClass a, Value a) would do
14:54 audreyt so we need to tell resolve the ambiguity using type annotation
14:55 audreyt 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 :(
14:55 gaal sure, one sec.
14:57 gaal done
14:57 svnbot6 r8592 | gaal++ | Pugs.Prim: try to give .yaml a better invocant hint
14:57 audreyt pulling
14:58 hcarty joined perl6
15:01 audreyt gaal: heh, fixed.
15:02 audreyt you are doing a fromVal from Val to Val
15:02 audreyt that means "decomposing ref"
15:02 audreyt so hash gets decomposed.
15:02 gaal oh :(
15:02 gaal audreyt++ # eyes of a hawk
15:03 audreyt ooh, ironpython 1.0 beta.
15:03 audreyt nice work.
15:06 PerlJam gaal: eyes of a hawk, heart of a lion, intelligence of a savant, etc.   ?  :-)
15:07 gaal PerlJam: polymorphism.
15:08 audreyt oh wow hash dumping Just Works
15:08 gaal object dumping almost does, here.
15:08 audreyt committed... so you get to do the merge :)
15:08 gaal well, it lies by substituting a real tag with  "!perl/Foo" => attrs
15:09 gaal :)
15:09 gaal this is great, I get to learn some ruby
15:09 audreyt that's great
15:10 svnbot6 r8593 | audreyt++ | * {1=>2}.yaml Just Works now... woot :-)
15:10 audreyt I've just read thru PickAxe 1.5 times
15:10 audreyt probably need to do some real project with it (and with ironpython/pypy) to grok both
15:10 audreyt ?eval {1=>2, 3=>4}.yaml
15:10 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"
15:10 audreyt heh, not finished recompiling yet
15:12 gaal urp, those are traces, does evalbot pick up stderr?
15:12 gaal brb
15:17 gaal v
15:17 Aankhen`` joined perl6
15:18 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 perl6
15:20 gaal i dunno, the yaml-for-ruby page doesn't have online docs, but a chm/pdf download
15:22 gaal heh, it indeed returns Str. good catch :)
15:25 xinming joined perl6
15:25 elmex joined perl6
15:30 lisppaste3 joined perl6
15:35 gaal family dinner. bbl &
15:36 gaal (possibly syck_emit_tag but still uncertain re: how it's used in the ruby ext)
15:37 audreyt #ruby-lang? :)
15:38 gaal freenode?
15:38 gaal I'm happy to ask, but.. later :)
15:52 Aankh|Clone joined perl6
16:06 phredmoyer joined perl6
16:15 stevan audreyt: ping
16:17 audreyt stevan: pong
16:17 audreyt your proposal makes sense and I'll make it happen tomorrow :)
16:17 * stevan does a happy dance
16:17 audreyt stevan++
16:18 stevan audreyt++
16:18 stevan I might try to hack some of the basic roles this weekend too,.. like Ord, etc
16:18 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?
16:18 audreyt RW role would have infix:<=>
16:18 stevan probably yes
16:19 audreyt taken together that forms my version of context calculus
16:19 stevan ok
16:19 stevan I wanted to try and spec out these types of things this weekend
16:19 stevan give the objects more "behaviors"
16:19 audreyt woot
16:26 clkao audreyt: http://www.nntp.perl.org/gro​up/perl.perl6.compiler/1258
16:27 clkao great web nntp interface
16:28 audreyt you could've seen that in my blog anyway...
16:28 stevan clkao: you can't read that? :P
16:29 stevan they are pretty complex semantics :)
16:30 audreyt rofl
16:32 qmole next one is better
16:33 stevan I don't understand the context,.. but I am certainly coerced into believing that it will work :)
16:34 qmole heh
16:34 * stevan provides his own rimshot
16:35 * audreyt looks up what "rimshot" means
16:36 stevan it punctuates a bad joke
16:36 audreyt *nod*
16:36 stevan in Las Vegas style comedy acts
16:36 stevan hit the rim of the snare drum and then the cymbal
16:37 * Debolaz wonders why p6i hates him.
16:37 audreyt yeah, I know the concept, but not the word :)
16:41 Juerd_ clkao: I dunno why exactly, but even trying HARD for a week couldn't make me decode base64 without a computer :(
16:42 Juerd_ It's something I'd love to be able to
16:44 clkao don't. look out for snowcrash
16:46 audreyt food, bbiab
16:48 Limbic_Region anyone have a p5 implementation of the ackerman benchmark handy?
16:50 * stevan thinks me might have left that in his other pants
16:50 stevan I think there is a p6 one in examples/ though, not sure if that helps at all
16:51 Limbic_Region well in p6 I would expect compiler tail-call optimizations to negate the need for manual intervention
16:51 Limbic_Region but for a starting point it might help
16:52 Limbic_Region found 1
16:52 Limbic_Region http://www.newlisp.org/ben​chmarks/ackermann.perl.txt
16:56 iblechbot joined perl6
17:01 bsb joined perl6
17:25 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.
17:25 stevan that works :)
17:25 audreyt they are in objspace, but you can't reach them.
17:25 vel__ joined perl6
17:25 audreyt see Bootstrap.pil annotations :)
17:26 audreyt (my plan is to just bind things with :: and nothing else)
17:26 stevan ah
17:26 stevan very nice
17:26 audreyt oh, also, you want me to rollback lwall-hack and roll in eigen?
17:26 audreyt what will ::Int's repr be?
17:26 stevan so the ^ stuff will be behind .meta?
17:27 stevan yes, please roll back the lwall stuff,.. and we can hack in eigen's later
17:27 audreyt yes.
17:27 stevan I want to keep them out of the picture for the moment
17:27 audreyt but what will ::Int's repr be?
17:27 stevan a num
17:27 audreyt the class itself uses a num repr?
17:27 audreyt with a value in it?
17:28 stevan which we will pass into create_scalar()
17:28 audreyt which value is this?
17:28 audreyt I mean the object ::Int
17:28 audreyt not objects of class ::Int
17:28 stevan yes
17:28 stevan oh
17:28 stevan ^Class
17:28 audreyt right, so the idea is still the same, but not done as a special hack in runtime
17:28 audreyt got it
17:28 * stevan thinks he is understanding correctly the question
17:28 stevan yup
17:29 audreyt cool, we are back to vehement agreement
17:29 stevan :)
17:29 audreyt so do I rollback just the create_class hack
17:29 audreyt or also the resigiling?
17:29 audreyt I kinda like the resigiling.
17:29 stevan no we can keep the resigiling
17:29 audreyt yay.
17:30 stevan but lets do add all the :: stuff in a single file, to be loaded last in the process I think
17:30 stevan unless of course we find we need it later on
17:30 stevan s/later/earlier/
17:31 * stevan praises CAM::PDF for making Test::PDF possible and therefore his $work life easier
17:32 audreyt there's a Test::PDF?
17:32 stevan yeah, I wrote it :)
17:32 audreyt stevan++ # wow.
17:32 stevan it's not complete
17:33 stevan but it does a "rough visual" comparison
17:33 audreyt but still, wow.
17:33 audreyt I've pondered this when I was writing PDF::FromHTML
17:33 stevan I got sick of hand checking 100+ page PDF reports
17:33 stevan :)
17:33 audreyt dismissed it as ENOTOOLS
17:33 stevan CAM::PDF++ # makes it soooo simple
17:33 stevan ENOTOOLS?
17:34 audreyt i.e. there were no CAM::PDF back then.
17:34 stevan ah
17:35 stevan yes, it makes aggressive refactoring of PDF generating code a much more pleasent experience
17:36 audreyt $job++ # keeping touch with the CPAN roots is a great way to keep me motivated on doing perl6
17:42 elmex elmex++
17:42 perlbot What kind of idiot karmas himself?  Your kind of idiot!
17:42 elmex perlbot--
17:44 khisanth_ joined perl6
17:49 lisppaste3 joined perl6
17:54 Aankh|Clone perlbot karma perlbot
17:54 perlbot Karma for perlbot: 5
17:54 Aankhen`` is now known as Aankh|Clone
18:22 talby joined perl6
18:25 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:29 broquaint I would think not, talby.
18:30 broquaint What more do you need to expose when writing assembler?
18:31 talby I don't think I understand the question.
18:31 broquaint Never mind.
18:32 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
18:32 stevan although leo is sometimes around here
18:32 talby thanks.
18:33 audreyt stevan: so. do I just remove the ::Scalar := ^Scalar.create_class etc?
18:33 stevan yeah I think so,.. for now at least
18:34 stevan they are not really used anywhere at the moment
18:34 talby left perl6
18:40 audreyt so, ::Int's repr is an opaque
18:40 audreyt that creates interesting problems
18:40 audreyt say I have ::Point
18:41 audreyt which is an opaque itself with eigen under your scheme
18:41 stevan ok
18:41 audreyt what would ::Point store in its opaque?
18:41 audreyt what are the keys?
18:42 stevan wait
18:42 stevan I think ::Int's repr wont be an opaque
18:42 stevan it will be the create_scalar() repr
18:42 stevan it will just store the native num where an opaque would store a map of attr names
18:42 audreyt I mean ::Int the object
18:43 audreyt not objects of type ::Int
18:43 stevan what does that matter to ::Point then?
18:43 audreyt what I'm wondering is
18:43 audreyt what exactly does ::Int's opaque store? or ::Point's?
18:43 audreyt I can't seem to think of anything.
18:43 stevan oh,.. sorry,.. I am thinking ^Int
18:44 stevan uhm,.. no they dont really store anything I guess
18:44 stevan maybe they are create_nil()
18:44 audreyt exactly my point.
18:44 stevan this will give us the class but undef
18:44 audreyt yes.
18:44 stevan and you just call .meta through them
18:44 audreyt because I implemented that in createClass in new runcore
18:44 audreyt but I'm now rolling it back
18:44 stevan ok
18:44 audreyt in favor of your repr scheme
18:44 audreyt but I need its counterpart in repr.
18:45 stevan well I think we can mix the two together
18:45 audreyt yup
18:45 stevan but how would ::Int.new() work?
18:45 stevan or would that be ^Int.new()
18:45 stevan or ::Int.meta.new()?
18:45 audreyt ::Int.meta.new.
18:45 audreyt er wait
18:45 stevan ok
18:46 audreyt ::Int.new can work
18:46 audreyt its eigen does a dispatch to meta
18:46 stevan :es
18:46 stevan yes
18:46 audreyt that makes perfect sense
18:46 stevan should class methods be stored in ::Int ?
18:47 audreyt there's no notion of clsmeth in s12.
18:47 stevan meaning,.. is ::Int really just our eigen?
18:47 audreyt hm, ::Int has cls of itself
18:47 stevan yeah I know,..Larry is still very hand wavy on that
18:47 audreyt you mean like that?
18:47 audreyt every class object is its own metclass?
18:47 stevan hmm
18:48 stevan if ::Int is the "class object", which is also undef, then ^Int would be it's metaclass
18:48 stevan but ^Int is just an instance of ^Class
18:49 stevan 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
18:49 audreyt I mean, I don't think larry is handwavy
18:49 audreyt I think he is set on deliberate nontraditional OO model
18:49 stevan so how owuld they be handled?
18:49 audreyt as they are in p5
18:49 audreyt how are clsmeth in p5 handles?
18:49 audreyt s/handles/handled/
18:49 stevan hmm
18:50 audreyt I think S12 outlines a type-ified p5 model
18:50 audreyt but the p5 spirit stays
18:50 audreyt which is that there's no class methods
18:50 audreyt (but there could be eigens)
18:50 audreyt via gensym refs
18:50 stevan but how do I tell the diff between ::Int.stuff() and ::Int.new().stuff()?
18:51 stevan 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
18:51 stevan hmm
18:51 audreyt and if it does, then typechecker rejects the former.
18:51 audreyt exactly like in p5
18:51 audreyt except safer
18:51 stevan so there is no way to explicty mark amethod
18:51 audreyt but operational semantic stays
18:51 stevan as only takeing a class invocant
18:51 audreyt right, I think that's larry's basic idea
18:51 audreyt it's very prototypical.
18:52 stevan hmm
18:52 stevan yes
18:52 stevan ok,.. that works
18:52 stevan who am I to argue with Larry :P
18:52 audreyt "insanity is not only a good idea it's the law"
18:52 stevan ok,... so forget eigenclasses,.. we only need them for adding singleton methods
18:53 stevan :)
18:53 stevan insanity++
18:53 stevan class methods are overrated anyway
18:54 stevan 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 stevan I like that
18:54 stevan it works
18:54 stevan so ::Int's cls is ^Int
18:54 audreyt yes.
18:54 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!
18:54 audreyt okay, I'm glad I conveyed insanity
18:55 audreyt Odin-LAP: I agree... in fact I'm implementing it ;)
18:56 * 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.
18:56 * stevan thinks Odin-LAP is one of Them now
18:57 Odin-LAP Nonono. They're monitoring all of your body activity.
18:58 * 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.
18:59 * 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? :)
18:59 Odin-LAP (The 'nonono' was referring to the idea that they were just monitoring brainwaves.)
19:00 stevan :)
19:00 The-Man is now known as stevan
19:00 Odin-LAP Oh dear.
19:00 The-Man Odin-LAP, paging Odin-LAP  you are needed in the neurotransmitter monitoring room
19:00 stevan is now known as The-Man
19:01 audreyt ...
19:02 Odin-LAP audreyt: Speechless?
19:02 audreyt no, sending morse code to Them
19:03 Odin-LAP S?
19:03 audreyt yeah, it's an S expression in morse code!
19:04 audreyt *rimshot*
19:04 * audreyt learns fast
19:04 qmole lol
19:05 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
19:05 stevan ok
19:05 ingy joined perl6
19:05 stevan ingy!!!!!
19:05 ingy stevan: hey man
19:06 ingy I should logoff and log back on more often
19:06 ingy how goes
19:06 stevan it goes
19:06 stevan how is .tw treating you
19:07 ingy loverly
19:07 ingy I bought a scooter today
19:07 ingy http://www.atlas-kk.co.jp/bike/​taiwan/cygnus-sr/D32031_big.jpg
19:07 whiteg Did you also buy a helmet
19:07 whiteg ?
19:07 ingy that's the actual color scheme
19:08 ingy hi whiteg!
19:08 whiteg ingy: :)
19:08 ingy no I don't actually get the scooter until Monday though
19:08 ingy and technically it belongs to gugod
19:09 ingy I'm buying for him ;)
19:10 * ingy does the happy scooter owner dance
19:11 whiteg ingy: you should also buy yourself one or two helmets.
19:12 stevan cool
19:13 ingy whiteg: I definitely will
19:13 ingy and they will be cool ones
19:13 whiteg :)
19:13 ingy unlike gugod's
19:13 whiteg save one for me.:)
19:13 ingy pink?
19:14 whiteg ingy: well, I trust your taste.
19:14 ingy you should
19:14 ingy it rocks
19:14 * stevan recommends painting flames on the side of ingy's helmet
19:14 ingy most of the time...
19:15 ingy stevan: sounds hot! ;)
19:15 cognominal joined perl6
19:15 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
19:16 ingy heh
19:23 Southen joined perl6
19:31 cognominal joined perl6
19:35 svnbot6 r8594 | stevan++ | docs/notes/piln_object_repr_types.pod - added docs about the `create_nil() repr type
19:49 oylenshpeegul joined perl6
19:50 Southen_ joined perl6
20:01 gaal hullough
20:03 justatheory joined perl6
20:04 loftcity joined perl6
20:07 dduncan joined perl6
20:13 putter joined perl6
20:18 xinming joined perl6
20:29 oylenshpeegul left perl6
20:41 hexmode joined perl6
20:44 marmic joined perl6
20:55 hcarty left perl6
21:06 mncharity joined perl6
21:06 putter is now known as mncharity
21:07 * putter celebrates return of the journal
21:08 putter stevan: ping
21:09 putter hmm, colabti.de/irclogger has the sense of name changes backwards.  foo changed to bar gets a "<mangled> - changed to foo" line.
21:11 putter ingy: trademarks aside, how about a camel-nose helmet. ;)
21:14 pdcawley_ joined perl6
21:15 stevan putter!!!!!!!!
21:15 * stevan celebrates the return of putter
21:15 putter stevan!!!! ;)
21:15 audreyt putter!
21:15 putter err, disturbing icon.  maybe :) ?
21:16 putter audreyt!!! :)
21:16 putter delighted to see the new journal!
21:17 putter hmm, so what does the near-term critical path look like nowadays?
21:18 stevan PIL^N
21:18 stevan 'sall 'bout dah Lambda Yo
21:18 putter :)
21:19 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
21:19 putter so... time to bulk code massage Prim.hs into pil-mumble?
21:20 audreyt putter: yes, the builtin reprs and roles
21:20 audreyt we stash everything into prim
21:20 putter or better question, is there a near-term bitesized-tasks list?
21:20 audreyt that's gotta go
21:21 audreyt bitesized... look at parrot's new pad stuff and revamp Emit.PIR
21:21 audreyt that's more unicode-sized
21:21 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.
21:22 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 perl6
21:23 stevan putter: thanks :)
21:24 * 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
21:25 audreyt it's just it's not clear how to get here from there :)
21:25 gaal putter! hello :)
21:25 stevan audreyt: very true :)
21:25 stevan well we are nice people,.. we will share our stuff :)
21:25 putter hi gaal!
21:25 audreyt and PIR... makes a very good Tcl VM, which will become handy as the prims is getting populated quickly
21:25 audreyt so things are looking good :)
21:26 stevan I think of PIR and PIL^N as being two different approaches to the same problem
21:26 stevan although I may be off base there
21:26 * stevan has limited PIR experience
21:27 audreyt PIR doesn't nest, that's my #1 gripe
21:27 audreyt otoh, it does have goto, which we don't, so things balance out
21:27 stevan we have &redo := &?SUB which IMHO is just as good if not better
21:28 * stevan has yet to see a "Fixed Point considered harmful" paper
21:28 * putter looks at http://www.synchroedit.com/ - a web-based simultaneous editor
21:28 putter re FPch :)
21:31 putter ok, sooo... Pugs/Prim.hs gets shredded?  with parts converted into p6, pil...mumble, and mumble.hs?
21:34 elmex joined perl6
21:35 * 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?
21:35 * putter contemplates "p6 now" slogan
21:35 gaal I hadn't gotten that far in TaPL yet, but why BTW do some languages require you to say "let rec" explicitly? performance?
21:37 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
21:38 stevan audreyt++
21:38 gaal stevan: yes, so I suppose it introduces a fix. is that expensive?
21:38 stevan that will allow me to hack Ord, Eq, etc
21:38 stevan gaal: no idea,.. sorry
21:38 stevan although the paper I am looking at right now which is where I saw letrec in says that it is sideeffectual
21:39 * 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()
21:39 gaal s/with/for/
21:39 stevan gaal: haskell side or PIL^N side?
21:39 gaal sunny side
21:40 * stevan recommends http://www.dreamsongs.com/NewFiles/WhyOfY.pdf (I think asavige posted this here a few days ago too)
21:41 gaal in p5 you need to do a silly trick to get a recursive (anonymous) closure
21:41 gaal I read that
21:41 cognominal joined perl6
21:41 gaal you need to declare the container before assigning to it
21:41 gaal I think that's just a tecnical thing, a side effect of the implementation
21:41 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.
21:42 svnbot6 r8595 | audreyt++ | * allow <> in PILN identifiers.
21:42 gaal brb
21:44 stevan &infix:<+> := -> $lhs, $rhs { $lhs`add($rhs) }; &infix:<+>`(3, 4); = 7 :)
21:46 gaal re
21:48 gaal openfoundry's being slow :(
21:48 larsen_ joined perl6
21:50 putter stevan: so what does your next few days look like?  any well-defined bits you'd like to delegate?
21:51 stevan putter: I am actually waiting on audreyt to finish refactoring some of the PILN object stuff
21:52 putter ah :(
21:52 stevan everything else is very fuzzy stuff right now
21:52 stevan sorry
21:53 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
21:53 stevan which will be fairly well defined when we get to that point
21:54 stevan 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...
21:55 stevan well I am trying to figure out the role/class/type heirarchy for Perl6 and PILN/2
21:56 stevan I sent a mail to p6c a few days ago which is a start
21:56 stevan then Larry tore it up (which is exactly what I was hoping for)
21:57 putter hmm, ok, say the perfect spec came back, what would happen next?
21:57 putter :)
21:57 stevan implement it ;)
21:57 putter lol
21:57 stevan Larry wont write it though
21:58 stevan besides I think we need to allow for hand-waving and blurriness with the Perl 6 level
21:58 stevan and as long as the PIL level is solid and full featured
21:58 stevan we can support the needs of the Perl 6 layer
21:58 putter implementing it would mean... piln code?  p6?  ...?
21:58 putter ahm ,,,
21:58 stevan piln mostly
21:58 putter err, ah...
21:59 putter how solid and full featured is piln at present?
22:00 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
22:00 stevan :)
22:00 audreyt yes. PIL2 is just Perl6 with minimal internal nodes
22:00 putter night&
22:00 putter hmmm...
22:00 stevan then PIL2 will use the classes/types/roles built in PILN to serve as the "runtime"
22:01 stevan PILN is as full featured as it really needs to be
22:01 stevan IMHO that is :)
22:01 putter :)
22:01 stevan it is lambda calc with string, number, bool, list and hash literals
22:01 stevan list and hash being immutable too
22:01 putter err, ok, what exactly is the relation of pil2 and piln?
22:02 stevan PIL2 will call the PILN objects
22:02 putter p6->healthfoodstore->pil2->...
22:04 obra seen leo_
22:04 jabbot obra: leo_ was seen 6 days 2 hours 24 minutes 11 seconds ago
22:04 obra seen leo
22:04 jabbot obra: leo was seen 23 hours 34 minutes 4 seconds ago
22:04 audreyt PIL2 is compiled to PILN.
22:04 audreyt as it can be (and will be) compiled to PIR.
22:04 putter ah
22:04 audreyt PILN is basically our reference VM.
22:05 audreyt because the compiler needs an object space
22:05 stevan PILN is compiled to PIR? or PIL2 is compiled to PIR?
22:05 * putter feels guilty about keeping audreyt awake...
22:05 audreyt and currently all our backends have incompatible objspace semantics
22:05 obra ow.
22:05 audreyt none of which agree with S12
22:05 putter k
22:05 obra parrot is coming up as the canonical source for Pod::Simple::Text on CPAN
22:05 audreyt obra: ow
22:05 audreyt stevan: PILN can be compiled to PIR easily but perhaps not efficiently.
22:05 audreyt but we can do that first and should od that first.
22:06 audreyt stevan: at some point PIL2->PIR can enable better interop and optimization and whatnot.
22:06 putter hs|pilnvm<-(compile)-pil2<-(enzime)-p6 ?
22:06 stevan audreyt: but that will require a PIR objectspace right?
22:06 audreyt putter: something like that, yes, although piln can certainly be interpreted in p5.
22:06 audreyt stevan: yes.
22:06 audreyt stevan: or an isomorphism
22:06 stevan yes
22:07 * stevan hopes someone else will volunteer to write that one :P
22:08 putter ok... strawman question: so if there is a p6->pil2->piln compilation path... why isnt everything written in p6? ;)
22:10 audreyt putter: everything above object bootstrap should be in p6.
22:10 audreyt putter: we are still working on obj bootstrap ;)
22:10 putter :)
22:11 audreyt the objspace for compiler is still incomplete
22:11 audreyt once it's complete, then sure, have fun with those p6 objs.
22:13 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:14 audreyt we are degaussing it.
22:14 audreyt and it's no longer fuzzy now :)
22:14 audreyt at least as of this week
22:14 audreyt the class/role hierarchy needs more work
22:15 audreyt but it's just work... not pending larry et allanymore
22:15 audreyt s/all/al /
22:15 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]
22:16 audreyt the compiler must live in an objspace
22:16 audreyt no way around that
22:16 audreyt and then snapshot the post-GC space
22:16 audreyt save it as disk image
22:17 audreyt 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?
22:17 audreyt exactly so.
22:17 audreyt and the Haskell part is just the native representations and their methods.
22:18 audreyt which is like ~200 lines
22:18 audreyt and can be duped in p5
22:18 audreyt and then we get p6 running on p5.
22:18 audreyt that's the plan so far.
22:18 audreyt but it's 6am
22:18 putter ok... hmm...
22:18 audreyt I really really need to sleep.
22:19 * audreyt waves :)&
22:19 putter bad audreyt!  but my many thanks.  good night &
22:20 * putter pauses, remaining carefully quiet.  (wispers) steven: ping
22:20 * stevan pongs quietly
22:20 putter lol
22:22 gaal you mean lo(very quietly)
22:22 audreyt silly :)
22:22 stevan dammit putter you woke her up :P
22:23 audreyt I'll sleep once my rofl'ing stops :)
22:23 audreyt &
22:25 * gaal shops for a bedcage with effective stoppers against laughing hackers
22:26 * 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.
22:27 stevan putter: yes, kinda
22:28 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
22:28 stevan putter: have you seen the updated S12?
22:28 gaal I mean suppose I have a Just x
22:29 gaal I know for certain this can't be Maybe, so I want to let myself x
22:29 gaal s/Maybe/Nothing/
22:29 gaal I know about fromJust; my case is a little different
22:30 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 "
22:30 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...?
22:30 gaal but I *know* there's an evil trick to avoid that.
22:31 gaal golfing for the sake of readability, really!
22:31 stevan putter: should atan be a multi?
22:31 * stevan is fairly clueless on anything in the Math:: namespace
22:31 putter gaal: nothing comes to mind.  hmmm.   #haskell?
22:32 gaal good idea.
22:34 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:35 putter 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
22:35 stevan the unboxed types basically
22:36 stevan the idea is to keep the PILN vm instruction set small
22:36 stevan only those bits we really need
22:36 stevan with enough abstraction to cover the unboxed types
22:36 * stevan is not sure he explaining this well
22:37 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
22:37 putter circular prelude?
22:38 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:39 stevan I think there is something about it in doc/notes
22:39 stevan what does atan do BTW?
22:39 PerlJam atan == arc tangent
22:39 putter arc-tangent?
22:39 * stevan prepares to ask what an arc-tangent is and decides to not bother :P
22:40 stevan 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?
22:40 PerlJam or trigonometry
22:40 * putter tests Wikipedia.  neat.  http://en.wikipedia.org/wiki/Arc_Tangent
22:41 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 :)
22:41 stevan LOL
22:42 stevan well putter, probably for efficiency sake things like this should be implemented in the host langauge (C for parrot, Haskell for Pugs, etc)
22:43 stevan which would become native methods on the PILN num type
22:44 stevan 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 stevan at least that is how I see it
22:44 putter one liner is its the inverse of tan().  x == arctan(tan(x))   for all arcmumble (sin, cos, etc)
22:44 stevan <she who must not be named> may disagree
22:44 Juerd_ GPRS use abroad: 0.274 MB, costing me 4.76 EUR
22:44 Juerd_ Incredible.
22:45 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 perl6
22:45 Juerd_ PerlJam: Incredibly expensive.
22:45 Juerd_ PerlJam: You know how tiny an MB is, and the value of a EUR :)
22:45 * scrottie waves hi to Juerd
22:45 Juerd_ Hey scrottie
22:45 PerlJam Actually, I don't have a handle on the value of a EUR
22:45 Juerd_ PerlJam: In .nl, I get 1 GB/month for EUR 30.00
22:46 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
22:46 stevan it will give you context to the boxed/unboxed stuff I am babbling about
22:46 PerlJam Juerd_: stay in .nl  ;)
22:46 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
22:47 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
22:47 Juerd_ That's outrageous.
22:47 Juerd_ But apparently, normal.
22:50 Medvekom_ joined perl6
22:50 integral 1 EUR is a cup of coffee
22:51 putter stevan: is piln a subset of p6?  or novel?
22:51 stevan piln is the bastard love child of haskell, scheme and p6
22:51 putter err, given that _everything_ is a subset of p6... err... "basic" p6?
22:52 stevan it is not valid p6 no
22:52 stevan for instance,.. if you call a method on a primative object (num, str, code, list, etc), you use the ` infix operator
22:53 stevan but method dispatch to metamodel objects is with the . operator
22:54 PerlJam integral: thanks.
22:55 integral although if you go by the exchange rate this means that UK coffee is very expensive ;-)
22:55 oylenshpeegul joined perl6
22:55 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
22:55 stevan putter:  possibly
22:57 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
22:58 gaal well, it's time for bed for me too. night folks
22:58 gaal nice seeing you aroud, putter
22:58 putter 'night gaal &
22:58 gaal zzZ &
22:58 putter thanks :)
23:02 stevan putter: I am off to dinner, but I suggest looking over src/PIL/Native/Boostrap/*.pil as well
23:03 * 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?
23:04 putter oh, and OOBootstrap.p6 said inline_piln <<... END.  or whatever.  if we had source filters (still no?), that could just be  use PILN; ...
23:05 putter the neat thing being one then has one big happy flexible ball of p6 bits, which can mixed and matched to do whatever.
23:06 mjl69_ joined perl6
23:06 verve_ joined perl6
23:07 putter oops, stevan went to eat.  ah well.  me too &
23:13 PJF joined perl6
23:14 Medvekoma joined perl6
23:15 mjl69__ joined perl6
23:16 bsb On the exchange rate topic, can anyone tell me what an NIS is?
23:16 bsb http://www.osdc.org.il/payment.html
23:17 bsb Israel New Shekels?
23:18 PJF bsb: Correct.  New Israeli Sheqel, or שקל חדש for the unicode enabled.
23:20 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!)
23:20 bsb OSDC.il seems quite a bargain then
23:23 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:25 putter 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:27 putter random thought.  a bag of micro languages might be a happier place to be than a stack of them.
23:27 putter 'night all &
23:30 lisppaste3 joined perl6
23:36 PJ1 joined perl6
23:43 drbean joined perl6
23:54 Cryptic_K joined perl6
23:55 PJF is now known as PJ1
23:56 bsb left perl6

| Channels | #perl6 index | Today | | Search | Google Search | Plain-Text | summary

Perl 6 | Reference Documentation | Rakudo