pugs.blogs.com/dist/Perl6-Pugs-6.2.13.tar.gz released! | run.pugscode.org | spec.pugscode.org | paste: sial.org/pbot/perl6 | pugs.blogs.com
Set by audreyt on 17 October 2006.
TreyHarris audreyt: ok, but which of those should have worked? 00:00
i don't see any "unbinding" syntax in synopses
audreyt $x := Scalar.new;
should have worked.
Scalar(6) may work but it's not yet clearly specced 00:01
but $x := Scalar.new should always work.
to unbind just bind to undef ;)
TreyHarris ok, so my tests should be for both $x := Scalar.new and $x := undef
thanks! 00:02
audreyt but then you can't assign into $x
because Undef isn't a good lvalue
TreyHarris oh...
audreyt i.e.
$x := undef ; $x = 5
will fail.
TreyHarris so "my $x" is syntactic sugar for.... what?
audreyt my $x is Scalar
which binds $x to Scalar.new
upon each pad entry
TreyHarris oh, because Scalar::infix:<=> does that? 00:03
audreyt hm?
my $x;
is same as
my $x is Scalar := Scalar.new;
rather, my $x is Scalar; ENTER { $x := Scalar.new }
TreyHarris but "my Moose $x;" is not the same as "my $x is Moose; ENTER { $x := Moose.new }". 00:04
clkao audreyt: so commitbit worky?
TreyHarris so where's the magic, if not in Scalar's =?
audreyt well, neither is "my Scalar $x".
look closer :)
TreyHarris cocks his head sidewise 00:05
audreyt my PROTO-CONSTRAINT $x is CONTAINER-CLASS
"my $x" is saying
my Any $x is Scalar
"my Moose $x" is saying
my Moose $x is Scalar
or actually
my Moose $x is Scalar of Moose
or actually
my $x is Scalar of Moose; ENTER { $x := Scalar.new(::Moose) } 00:06
TreyHarris ok, then "my $x is Moose;" should be the same as "my $x is Moose; ENTER { $x := Moose.new }" then? so it's a bug?
00:06 _SamB_bot joined
audreyt what's a bug? 00:06
"my $x is Moose" is useful when you don't want to assign into $x
or when Moose actually handles infix:<=>.
TreyHarris ?eval my $x is Moose; $x.WHAT 00:07
evalbot_r14596 ::Scalar
audreyt that is a bug.
clkao: aye, worky. do you have a way to measure bandwidth?
TreyHarris ok. should complain at compiletime that Moose is undefined, or at runtime that Moose::infix:<=> is undefined?
audreyt mod_bwshare ?
TreyHarris: well, the former
TreyHarris roger dodger. 00:08
00:09 Psyche^_ joined
audreyt the understanding of this interaction wasn't clear to me until this summer :) 00:09
00:09 Psyche^_ is now known as Patterner
audreyt so Pugs's old runcore lags behind a lot. 00:09
which is what all this newVal newExp thing is about :) 00:10
TreyHarris right. I think that's why the Lang/TSa/any(@Larry, me, etc.) conversations go on for so long.... it's very, very difficult to extrapolate the core from the synopses, so since we have a known-incorrect core for experimentation... 00:11
thanks, i'll go write tests now
svnbot6 r14597 | fglock++ | MiniPerl6 - implemented "If", "When", "Int", "Undef" nodes
clkao audreyt: svn? jifty? 00:12
audreyt clkao: moddav 00:13
anatolyv ?eval { $x } 00:17
00:17 evalbot_r14596 is now known as evalbot_r14597
evalbot_r14597 \undef 00:17
anatolyv ?eval { $another_x }
evalbot_r14597 \undef
TreyHarris boggles
anatolyv evalbot is non-strict?
TreyHarris ?eval $x = 1 00:18
evalbot_r14597 \1
anatolyv ?eval { usr strict; $another_x }
evalbot_r14597 Error: No compatible subroutine found: "&strict"
anatolyv ?eval { use strict; $another_x }
evalbot_r14597 Error: *** Unsafe function 'use' called under safe modeā¤ at -e line 16, column 7-77
TreyHarris oh, right, that's a new change
anatolyv oh well :)
TreyHarris anatolyv: it didn't used to be strict
anatolyv audreyt: my point - which I can't demonstrate with evalbot - is this: { $x; my $x } does not fail in strict mode. Is this a bug?
TreyHarris if i have a moment, i'll look and see if i can modify evalbot to let you do "strict;" or some such. use is non-safe. 00:19
anatolyv sounds nice.
clkao audreyt: i don';t know. but i bet you can use throttle of some other stuff 00:21
00:24 silug joined 00:25 Psyche^ joined, Psyche^ is now known as Patterner
eviltwin_b ...Vensre? 00:26
01:03 mako132_ joined
svnbot6 r14598 | audreyt++ | * Quite impossibly, most of MiniPerl6 is now parsed! 01:15
r14598 | audreyt++ | <fglock> Now let's write an emitter!
r14598 | audreyt++ | <audreyt> Or two...
01:21 dmq joined 01:22 mako132_ joined, rodi joined 01:27 kanru joined
audreyt seen on #haskell: 01:36
02:34 < audreyt> before Pugs showed up, people used to say the only way to run perl6 code is to ship a complementary clone of larry wall with each installation of perl6...
02:35 < Igloo> Of course, the advent of pugs has set back the development of cloning processes by decades
eviltwin_b heh 01:39
01:50 diakopter joined 01:59 xinming joined 02:06 scsibug joined 02:16 kanru joined 02:23 geoffb joined 02:26 _SamB_bot joined 02:33 loumz joined 03:00 shobadobs joined 03:19 stevan joined 03:20 shachaf_ joined 03:47 RHainsworth left 03:52 weinig is now known as weinig|zZz 03:55 loumz joined 03:56 penk joined 03:59 mako132_ joined, SubStack joined
svnbot6 r14599 | allbery_b++ | AUTHORS: hello, world\n :) 04:31
r14599 | allbery_b++ | src/Pugs/Compat.hs: added file time tests
r14599 | allbery_b++ | src/Pugs/Internals.hs, src/Pugs/Prim.hs: abstract out guts of "time" for
r14599 | allbery_b++ | use in $*BASETIME and file tests
r14599 | allbery_b++ | src/Pugs/Run.hs: add $*BASETIME
r14599 | allbery_b++ | src/Pugs/AST.hs: document _reserved and filterUserDefinedPad; add $*BASETIME
r14599 | allbery_b++ | to _reserved
r14599 | allbery_b++ | src/Pugs/Prim.hs: add file time operators -M, -C, -A
r14599 | allbery_b++ | src/Pugs/Prim/FileTest.hs: add implementation of file time operators
r14599 | allbery_b++ | t/operators/filetest.t: correct existing file time operator tests, add a few
r14599 | allbery_b++ | more, add all of them to the plan
eviltwin_b maybe I should have done it in smaller chunks :)
04:45 f0rth joined 04:49 SubStack joined 05:14 eggzeck[laptop] joined
meppl guten morgen 05:26
05:39 drrho joined 05:55 baest joined
jrockway ok, i got pugs to build on openbsd :) 05:55
the issue was that the int __init in p5emebed.c conflicts with an __init function in the C library 05:56
let's see what the test suite thinks about my renaming :)
i think the C standard forbids naming a symbol with a __ prefix... it's reserved for internal compiler use 05:57
let me go look that up
eviltwin_b correct. but one common use for __init is that it serves as a shared library initialization. 06:06
which is in fact what (a) the embed probably wants (b) libc also wants
06:07 nusgnaf joined
eviltwin_b but openbsd, per usual, is not following the convention, so they conflict 06:07
jrockway any objections to renaming it to something like _p5embed_init? 06:08
06:08 nusgnaf joined
eviltwin_b well, correct behavior is to figure out what the platform wants for a shlib initialization symbol. 06:09
on some platforms it *must* benamed __init
jrockway i see
eviltwin_b on others __init will be used a s a fallback but correct procedure is to insert a reference to the symbol in some object file section.
in any case,m just renaming it will likely break other platforms 06:10
(the linker maps __init specially on those platforms; GNU C has a way to do the magic section foo on ELF platforms, but for the general case one relies on the linker to do magic) 06:11
jrockway probably needs to be IFDEF'd then if people want to compile it from !ports 06:15
in ports it can just be a patch, though, depending on how y'all feel about IFDEFs
06:47 mr_ank joined 06:55 mr_ank joined 07:16 mr_ank joined 07:26 mr_ank joined 08:08 esstone joined 08:14 marmic joined 08:15 iblechbot joined 08:35 larsen_ joined 08:57 kisu joined 09:22 the_dormant joined 09:23 buetow joined 09:24 larsen_ joined 09:31 kisu joined 09:52 ruoso joined 09:54 kisu joined 09:58 ludan joined 10:03 drrho joined 10:34 BooK joined 10:38 chris2 joined 11:08 jferrero joined 11:13 mr_ank joined 11:21 gene9 joined 11:30 mr_ank joined 12:14 fglock joined 12:23 cmarcelo joined
cmarcelo is feather ssh down or something? 12:25
lambdabot cmarcelo: You have 1 new message. '/msg lambdabot @messages' to read it.
Juerd cmarcelo: No. I say this from a feather ssh session :) 12:29
12:30 norageek joined
cmarcelo hmm. its rejecting my pass in ssh but accepting it on feather site.. (webirc). 12:31
12:32 Psyche^ joined
cmarcelo (hmm.. maybe is the firewall in here..) 12:32
12:47 ilogger2 joined
xinming @tell Juerd "Sorry, I don't know that pugs bot would take so much cpu usage. I'll renice it. 12:56
lambdabot Consider it noted.
cmarcelo @tell audreyt re moh: with only pure functional data, how would I keep "object identity", e.g., Attached methods "points" to their origin classes, but adding methods (eg. when add the constructor to a class or sth else) actually changes the class. a maybe solution is making an indirection on this identification (via IORef).. what do you think? 12:57
lambdabot Consider it noted.
13:00 Limbic_Region joined 13:06 cmarcelo joined
miyagawa_ clkao++ 13:07
# for Data::Hierarchy performance improvement
now svk co for plagger is 10 seconds
13:15 timbunce joined 13:16 diakopter joined, timbunce joined
Limbic_Region src/Pugs/Run.hs:38:7: Could not find module `System.Posix.Time': 13:19
is that a known build error?
13:23 larsen_ joined 14:05 ilogger2 joined
eviltwin_b \first revision used EpochTime, later corrected to use the same time as everything else 14:05
Limbic_Region I was trying to sneak in the library without the unix package but decided I had better not
so I can remove the import line locally? 14:06
things should then "just work"?
eviltwin_b yes. I'm doing a quick compile here to verify then I'll commit 14:08
Limbic_Region well, I didn't wait for a reply - I am attempting a compile now
on 8 of 92
eviltwin_b hm, I don't understand the FileTest error
Limbic_Region what file test error? masak's ? 14:09
eviltwin_b yes
okay, it's happy here. 14:10
14:10 Limbic_Region joined
Limbic_Region grrr 14:10
I am not sure that masak is Win32
masak Limbic_Region: nope, it's CentOS here 14:11
Limbic_Region I however am not building locally even after removing the import line
perlbot nopaste
perlbot Paste your code at sial.org/pbot/perl and #perl will be able to view it
lambdabot Title: sial.org Pastebot - pasteling
masak lambdabot: you bots are so cute
pasteling "Limbic_Region" at 129.33.119.12 pasted "r14599 after removing the import System.Posix.Time line from Run.hs" (27 lines, 1.7K) at sial.org/pbot/20853 14:12
masak filling in for each other
Limbic_Region eviltwin_b - I won't have much more time to test/debug 14:13
eviltwin_b huuuh. those are defined *in* Compat.hs
svnbot6 r14600 | allbery_b++ | src/Pugs/Run.hs: whoops, System.Posix.Time left over from early EpochTime-based
r14600 | allbery_b++ | time code that I scrapped to match the rest of Pugs
eviltwin_b nor will I, need to get ready for work soon
Limbic_Region did you see my nopaste though - if you have ideas let me know and I will take a look
eviltwin_b yes, I saw it 14:15
hm, I think I get it
yep. I can't fix it 14:16
problem is that the stat file time calls don't exist on win32
I suppose I need to insert fail stubs
Limbic_Region please @tell audreyt as you know better than I do 14:17
today is apparently going to be a busy $work day too :-( 14:18
14:20 iblechbot joined
eviltwin_b @tell audreyt it appears you can't do stat() foo on win32. committing failWith stubs now 14:20
lambdabot Consider it noted.
svnbot6 r14601 | allbery_b++ | src/Pugs/Compat.hs: Win32 doesn't implement getFileStatus, it appears 14:22
Limbic_Region eviltwin_b - trying build now 14:24
eviltwin_b win32 compatibility is obviously not one of my strong points 14:25
Limbic_Region well - hacking in something is better than hacking in nothing so eviltwin_b++ 14:26
things appear to be compiling
33 of 92
svnbot6 r14602 | allbery_b++ | t/operators/filetest.t: skip file time tests on win32 14:31
r14603 | allbery_b++ | t/operators/filetest.t: one-line paste overshoot 14:34
Limbic_Region 81 of 92, look like it might make it
14:43 kisu joined 14:47 shobadobs joined
Limbic_Region @tell eviltwin_b r14603 built fine on Win32 - thanks 14:57
lambdabot Consider it noted.
eviltwin_b ok
lambdabot eviltwin_b: You have 1 new message. '/msg lambdabot @messages' to read it.
eviltwin_b (will be around for about 10 minutes more) 14:58
Limbic_Region @tell audreyt after removing the import System.Posix.Time from Run.hs and eviltwin_b++ changing to failWith stubs - Win32 compiles fine as of r14603
lambdabot Consider it noted.
Limbic_Region ahh, didn't know
eviltwin_b @messages
lambdabot Limbic_Region said 55s ago: r14603 built fine on Win32 - thanks
eviltwin_b dunno if it hols on to those forever or something :)
15:01 rlb3 joined 15:18 jferrero joined
audreyt eviltwin_b: you can opPerl5. 15:20
lambdabot audreyt: You have 7 new messages. '/msg lambdabot @messages' to read them.
audreyt eviltwin_b: namely call into perl5 to get stat
that's Always Our Plan now
see how fork and crypt is done in Pugs.Prim
the talk was a resounding success!
Limbic_Region audreyt++
audreyt people asked a lot of perl6 questions
masak audreyt: cool. congrats
audreyt someone asked if I'm afraid fglock is forking pugs and we'll diverge 15:21
and I answer "no, because I met fglock in person. :) and that was hilarious 15:22
and people seems feeling very upbeat about perl, even nonperl users
so I suspect Brazil perl mongers is doing some good work here :)
15:22 Pomin joined
Limbic_Region nice 15:22
masak great
audreyt lunch now, more hacking this afternoon as I can't grok any of the pt-br talks anyway... 15:23
be back in a couple hours.
Limbic_Region audreyt - if I understood one of your last blog entries, we intentionally dropped code for certain features in favor of a unified code base and that in the interim of building that unified code base back up with those features we can just use v5;
hrm, shouldn't have taken so long to type the question I guess 15:24
masak I'm still getting the same make error 15:25
strange
maybe time to upgrade to GHC 6.6...
Limbic_Region masak - it will soon be required so make the plunge 15:43
masak plunges immediately 15:44
15:46 polettix joined 15:52 diakopter joined 16:03 hexmode joined
masak plunge complete. attempting compile again... 16:04
16:12 miyagawa_ joined 16:51 DHGE joined 16:53 avar joined 17:00 DHGE joined 17:10 Debolaz2 joined 17:12 jferrero joined 17:27 polettix joined 17:28 pmurias joined
pmurias hi 17:28
Audrey's blog states that thing bootstraped in MiniPerl6 will be faster the the handwriten parts 17:30
is it due to the fact the will be written with less low-speed constructs? 17:31
eg. things witch are emulated 17:32
TimToady that's how I read it 17:33
audreyt pmurias: correct. for example, the calling convention will be so simple that te call site syntax is exactly as normal perl5 calls 17:43
17:43 rodi joined
nothingmuch grazes 17:43
nothingmuch also greets the hackathoners
xerox have you taken part to the hackaton? 17:44
nothingmuch ?
no, i was hiking
and now i'm pooped
xerox er.
[particle] moose poop
nothingmuch both activities were not being performed in .br
nothingmuch woke up today, and proceeded to nap on the couch, subsequently resting in the arm chair 17:45
audreyt fglock is giving a p6 crash course to conisli people
xerox alright
do you know that there are the videos online of the event?
nothingmuch oh! cool
xerox @yarr
lambdabot I'd like to drop me anchor in her lagoon
audreyt I'm back at my room going to take a nap and then finish up commitbit transition; ook up iveminder as our todo list, and sketch up some microgrant ideas, and other administrivia. oh and also finish up emitter design 17:46
eviltwin_b I'm not going to touch win32 stuff, sinced (as I demonstrated) I can't test it
audreyt that line should read "hook up hiveminder"
nothingmuch ooks up a CPAN
xerox Ook! Ook?
Ć¹
@google site:wikipedia.org ook programming language 17:47
lambdabot en.wikipedia.org/wiki/Brainfuck
xerox Er.
audreyt @tell cmarcelo you can use IORef, or you can use recursive-do notation ("mdo"). I'd suggest ioref for ease of mplementation 17:48
lambdabot Consider it noted.
nothingmuch audreyt: what is that for? 17:51
the mutable fields of the classes?
audreyt nothingmuch: yes 17:53
nothingmuch please ignore the 'is rw'
make them all ro
that's just out of laziness because we can in perl
but moh should be purely functional
audreyt how do you attach methods ten 17:54
then
nothingmuch that's for pugs
to use moh pugs will map the mutable model to the pure ones
audreyt can you add comments on the MO code where such mapping will suppose to happen? 17:55
that'd help caio and me a lot
nothingmuch nowhere in the mo code
that is the responsibility of moh using code, i guess
the structure of the mutable metaclasses should be optimized for the convenience of pugs' implementation 17:56
as long as it's easily translatable to moh before pugs uses moh it still makes sense 17:57
that way moh is useful for systems which don't care about mutable metaclasses
audreyt ok
nothingmuch sorry for blabberring, i'm not very coherent
that sentance wasn't coherent either... it was ambiguously redundant ;-)
17:59 diakopter joined
audreyt bbiab... 17:59
nothingmuch @tell cmarcello please backlog for around the time audreyt's moosage was sent... unless she objects i think i ruled otherwise
lambdabot Consider it noted.
pmurias audreyt: thanks 18:05
Limbic_Region audreyt - if I understood one of your last blog entries, we intentionally dropped code for certain features in favor of a unified code base and that in the interim of building that unified code base back up with those features we can just use v5; 18:10
18:16 ludan joined 18:17 hexmode joined
nothingmuch audreyt: please pong, i'd like to toss around an idea before p6l-ing 18:24
18:34 loumz joined
jrockway hmm, so i'm smoking trunk on openbsd now 18:34
and it's been printing "# Actual: undefined" for the last hour or so 18:35
shoudl I just kill the smoke?
loumz a little question, 1 == 0 in the pugs shell returns Bool::False ... how do I print this Bool::False value so that it is visible? 18:42
svnbot6 r14604 | particle++ | v6: whitespace cleanup and editor hints
jrockway oh, it finished :) 18:43
nothingmuch loumz: what do you mean by visible? 18:48
loumz nothingmuch: print Bool::False doesn't print anything... how do I convert this Bool::False into a string representation like the way the pugs shell does it 18:49
nothingmuch .perl
?eval Bool::False
evalbot_r14604 Bool::False
nothingmuch ?eval Bool::False.perl
evalbot_r14604 "Bool::False"
loumz nothingmuch: thanks
nothingmuch .perl is a dumper
much like Data::Dumper
?eval Bool::False.yaml 18:50
evalbot_r14604 "--- false\n"
nothingmuch also useful =)
loumz nice :)
nothingmuch foooooo 18:54
19:13 frederico joined 19:28 cmarcelo joined
nothingmuch hola cmarcelo 19:28
cmarcelo hey 19:29
lambdabot cmarcelo: You have 1 new message. '/msg lambdabot @messages' to read it.
cmarcelo @moosages
lambdabot audreyt said 1h 40m 12s ago: you can use IORef, or you can use recursive-do notation ("mdo"). I'd suggest ioref for ease of mplementation
nothingmuch err, two
cmarcelo nothingmuch: its cmarcelo with only one L
nothingmuch i sent mine to cmarcello =(
yeah
cmarcelo but i read
nothingmuch i do that every time
cmarcelo so i should ignore this origin/attach thing? 19:30
nothingmuch nope
origin is precisely what allows moh to be purely functional
without too much effort when the input was mutable to begin with
also, it lets us do weird shit with the layouts/accessor inlining
cmarcelo well: 19:31
nothingmuch { origin :: Show a => a, item :: b } 19:32
then you could give this data type the instance over the type class AttachedAttribute if b has an instance of the typeclass attribute, for example 19:33
my syntax is off, but you get what i'm saying, right?
cmarcelo if I attach method to a class [both data] the class itself would change, so origin I create for the method will be obsolete dont?
nothingmuch nope
the notion of attaching is different 19:34
you can add a method in a mutable model
that doesn't matter
the type of the function that plumbs pugs land into moh land should be along the lines of MetaObject (IORef Method) -> IO MetaObject Method 19:35
where MetaObject is something like a class
and (IORef Method) and Method are the type of the subitems
of course, a richer meta object would require types for the other possible submeta objects
then when this is all fed into the meta model moh runs through it
and creates attachment 'tags' that simply keep track of where a method was found
stevan so there is a meta object to indicate the attachment as well 19:36
nothingmuch yes
stevan your meta-crazy boy!
nothingmuch the idea is that given $class->all_methods you get back a list of items
and you can know which susperclass each method was defined in
and the method meta object doesn't have to keep track of this on it's own
stevan is the attachment object two way? 19:37
nothingmuch this makes metamodel translation easier
it's a wrapper
stevan wrapper?
nothingmuch class AttachedMethod { has $method; has $origin }; # plus some delegated methods for conenience
stevan origin --> class? 19:38
nothingmuch $class->all_methods; # this runs through the class precednece list, as computed by the MRO, including all roles etc
# and for each class it encournters it lists all it's defined methods
and attaches them to that class
the result is a list of AttachedMethod objects
each of which contains the origin (class/role which the method was defined in)
and the method itself
stevan so by using the monads to associated metas (which is what I assume the IO* stuff is), you are keeping it purely functional? 19:40
nothingmuch no, i don't do that at all
stevan ok
nothingmuch s/me/moh/;
in theory
mo is just a computation library
for object oriented stuff
cmarcelo nothingmuch: when I add a method to a class, it changes the class, making older origins obsolete, .. or Im getting wrong and should provide every method upfront? 19:41
nothingmuch no
you never add a mehtod to a class in moh
you create a new class that has thed combination of the methods
stevan you attach it :)
nothingmuch no =)
stevan :P
nothingmuch attached items are intermediate data structures
they are only used during compilation to mark the origin of a method
they are not maintained and kept up to date at all 19:42
stevan so how do you handle runtime introspection then?
nothingmuch s/introspection/modification/;
stevan nop
nothingmuch that's pugs' responsibility
stevan e
nothingmuch wtf?
you just do it
stevan s/modification/introspection on immutable attributes/ 19:43
nothingmuch they must be wrapped in a language b indeing
19:43 TSa joined
stevan who is "they" 19:43
nothingmuch all the methods 19:44
sorry
for example
all_methods
stevan other than the people in the black helicopter who follow my every move
nothingmuch that is a method on meta classes
in pugs that wrapper will do this:
take the mutable meta class in question, present moh with an immutable "snapshot" of this
call the moh all_methods method on that snapshot
and wrap the result in whatever monad it's using to evaluate 19:45
e.g. Eval [MetaMethod]
stevan ok
so the mutable meta class which Pugs has, this is not introspectable on it's own? 19:46
nothingmuch it is
stevan all introspection and modification must go through MOH ?
nothingmuch not necessarily
the lightweight stuff can ignore mo
for example extracting the "local" methods
stevan what is lightweight?
nothingmuch (not inherited ones)
anything that doesn't require computation over the meta model is just a direct mapping to the data structure 19:47
for example superclasses is lightweight
it's just a list
stevan I think maybe it should still be MOH's responsibiltiy
cmarcelo nothingmuch: im trying to commit some code so you can see what im getting wrong
nothingmuch class_precedence_list, on the other hand, is heavy weight
TimToady memoized metas, yum.
nothingmuch my latest obsession is getting FRP support in perl 6 through passthrough types 19:48
i'll p6l that once i reach more coherence
stevan nothingmuch: why not put it all on MOH's burden
PerlJam FRP support?
nothingmuch so theoretically recompution through P6MO will be very very easy
PerlJam: functional reactive programming
PerlJam ah
#perl6 is always speaking in tongues to me ;-) 19:49
nothingmuch stevan: because the question "what are all the methods of class x, which inerhits blah blah blah" is not related to IORefs in any way
TimToady I thought it was Fantasy Role Playing...
nothingmuch with FRP the translation layer in pugs/p6 will be to simply present moh with signals for classes 19:50
for example the 'superclasses' will be Signal [Method]
TimToady I suppose that's not so different, actually...
nothingmuch err
Signal [Class]
and methods will be Signal [Method]
the moh code will be transformed by the signal passthrough type to recompute as necessary
when the signal is updated due to some event
e.g.. modifying the metaclass
TSa HaloO, what does MOH mean? 19:51
nothingmuch the port of MO to haskell 19:52
nothingmuch.woobling.org/MO/
TimToady it's .HOW spelled rotated 180Ā°
lambdabot Title: Index of /MO
nothingmuch TimToady++
... the reason for all this purely functional mumbo jumbo is that you can then do translations of the metamodel with no worries 19:53
TimToady What, me worry? 19:54
nothingmuch for example, augmenting all the classes with an additional method is simply a matter of running the meta model through a mapping function that takes a class and returns a copy of that class with an augmented list of methods
stevan nothingmuch: it eliminates side-effects,... worries are another thing entitely
because the p6 view of it is not purely functional
nothingmuch i just explained how it is =) 19:55
TimToady It's all safely hidden behind .HOW as far as I'm concerned. Ignorance is bliss...
nothingmuch it's not purely functional
it just inverts the control flow
such that the computation part is purely functional
stevan ok
nothingmuch pugs' purify_class :: IOClass -> IO Class 19:56
stevan I mean that from the p6 point of view, the transformation of metaclasses are a side-effectual thing
nothingmuch all_methods :: IOClass -> IO Method
stevan unless of course I am misunderstanding (which is entierly possible)
nothingmuch all_methods = all_methods . purify_class
that's two steps 19:57
19:57 SubStack joined
nothingmuch transform, and then commit back to the metamodel 19:57
the metamodel is kept in some sort of IORef in the pugs runtime
the symbol table, likely
but the "natural" return value of a transformation is just an anonymous class
the input is also an anonymous class
classes don't know their names in moh, just their definitions 19:58
cmarcelo nothingmuch: feather.perl6.nl/~cmarcelo/moh/MO/C...e/Class.hs .. see class Class, the method add_method_class doesnt make sense, at least not for creating constructors and such, right? they should be created all toghether and once.. 19:59
lambdabot tinyurl.com/yndc8n
nothingmuch cmarcelo: moh does not have add_* or remove_*
that's just the pugs meta model
MO.Compile.Class is a snapshot of a pugs meta class
that is, you can easily do add_method in mo 20:00
and the type is indeed c -> AnyMethod -> c
but wrapping that in a monad is the responsibility of whoever is using moh
stevan nothingmuch: so (meta)object identity is not tied to a particular meta object, but transfered during the transformation process?
nothingmuch stevan: not unless it's necessary for the meta model itself 20:01
stevan yes
cmarcelo ok. if Pugs need change something itll regenerate everything again...
stevan but if there is a change and a new class is generated
nothingmuch cmarcelo: naively yes
stevan: explain?
stevan c -> AnyMethod -> c
nothingmuch the input c and the output c are not the same c
stevan yes
nothingmuch they may be stored in an IORef that is accessible under the same name 20:02
stevan but from an identity POV they are
nothingmuch no
stevan yes, that is what I mean
nothingmuch: nomenclature issues abound :P but I think I understand
nothingmuch my $anon_class_with_method = $anon_class->add_method( $method );
while we can support this in MO(H)? i don't think this is useful in any way 20:03
stevan and $anon_class_with_method->oid == $anon_class->oid right?
nothingmuch stevan: there is no oid in mo
it's all haskell baby
stevan ->name then
nothingmuch no name either
stevan whatever,.. some kind of global identifier with which you can access it from perl-land
nothingmuch none 20:04
stevan it does not have to be in the haskell itself
nothingmuch there is no such thing
unless the user explicitly adds it to their meta classes
stevan if it has no name,.. how do I find it
nothingmuch you have to give a way to find it
that's the whole point
moh doesn't care at all
stevan yes
nothingmuch instalce MyClass Mo.Class blah blah blah
stevan but someone will have to care at some point
nothingmuch where MyClass has some oid
stevan yeah
nothingmuch *nod* 20:05
stevan ok,.. makes sense
nothingmuch but yhou only need it for "root" objects
cmarcelo nothingmuch: i'll get rid of add_method then and see if get the origin/attach into class..
nothingmuch a method doesn't need to care about which classes it's attached to
cmarcelo: origin/attach are orthogonal to add_method
they are very very important
so please keep them =)
add_method might be part of a convenience package 20:06
stevan so really MOH is a set of functions to operate over the meta-land data structures
nothingmuch yes
stevan s/MOH/MO/
nothingmuch i've said so before, perhaps not so succintly
stevan no you said it fine :)
nothingmuch well, not realily functions, since it's OO ;-)
cmarcelo nm: yep, but add_method was making origin/attach depend on mutable data.. 20:07
audreyt cmarcelo: where are you?
nothingmuch no
audreyt methods are just named closures ;)
nothingmuch origin/attach is just where it c ame from "right now"
audreyt: not in mo
the class is responsible for naming them
audreyt 21:06 < nothingmuch> well, not realily functions, since it's OO ;-) 20:08
cmarcelo audreyt: in Perl "stand" but is very noisy here.. where you?
audreyt was metareplying
not userland
nothingmuch ah =)
cmarcelo: remember that $attached is an intermediate value
audreyt cmarcelo: in my room just woke up. maybe 1)you come up and hack or 2)we meet at lobby and hack, say in 30min?
nothingmuch if you have class A isa B { method foo } class B { method bar }
then A.all_methods will return two methods, 'bar', and 'foo'
wrapped in Method::Attached objects 20:09
which point to the class they were found in
cmarcelo audreyt: lobby in 30min then
nothingmuch audreyt: got 10 mins?
cmarcelo audreyt: btw, unicamp folks were *very* amazed with pugs' anarchistic dev environment... 20:10
audreyt nothingmuch: yes?
cmarcelo: and what's this unicamp? :)
cmarcelo err.. University of Campinas :)
nothingmuch audreyt: i have been thinking of how to specify "wrapper" types, or "passthrough" types, whichever name is more metaphorically applicable 20:11
audreyt oh ok :)
nothingmuch the idea is basically to create values with added value ;-)
this is for FRP in Perl 6 without adding FRP to the core
for example, the FRP signal object is a wrapper over any value
a parametrized type
that supports all the methods that the underlying type supports 20:12
but gets to intercept them
to implement an FRP signal you first delegate to the normal method with all the arguments 20:13
if the arguments are signals themselves you unwrap them
then you capture the caller continuation, and put it in all the signal arguments' update list
thus you can reuse "normal" code that operates on a certain type in FRP code with no change 20:14
by simply giving that chunk of code wrapped types
runtime costs will be fairly high, i guess
but this is very useful
$audreyt->sanity_check( @backlog );
audreyt er, I know, and that's how exactly we'll target CLR
nothingmuch okay 20:15
audreyt from what I gather with emeijer and other CLR folks
nothingmuch i think i can draft up a new type
wrapper Foo { ... }
audreyt is glad a certain microsoft is now contractually obliged to not sue us over patents if we make that happen
nothingmuch ooooh
shiny
who is "us" in that sentance? 20:16
.. the reason i'm liking FRP so much lately is that it really simplifies writing dynamically updating code 20:17
so things like changing the metaclass can be supported without making the code that compiles the metaclass (moh in perl 6) very very ugly ;-)
this naturally also applies to link time optimizations being unvalidated by dynamically loaded code 20:18
and other crazy stuff which we want but don't want to really write
audreyt "us" is whomever works on pugs -CCLR, probably not now, maybe some time in the future :)
nothingmuch ah
anymoose, please think about the api wrapper types will want
for representing overloaded passthrough values 20:19
for stuff like FRP, foreign objects, etc
i will try to write something up, and then maybe you can give critique
20:19 c6rbon joined
audreyt okay. 20:20
nothingmuch where is Cont documented, btw?
oh, nevermoose
found it
haskell.org/ghc/docs/latest/html/li...-Cont.html 20:21
lambdabot tinyurl.com/gnsuu
cmarcelo audreyt: did you find more help to translate ppencode?
audreyt cmarcelo: no 20:22
nothingmuch: it's just CPS. 20:23
nothingmuch audreyt: yeah, i've been finally reading up on it 20:24
i was curious where when came from
but it's actually in Monad
20:28 mauke joined 20:30 fglock joined
nothingmuch zzzz & 20:33
audreyt prepares to go down to lobby
fglock audreyt: we're at the Perl booth 20:37
lambdabot fglock: You have 2 new messages. '/msg lambdabot @messages' to read them.
nothingmuch @mooooooooooooosages 20:38
lambdabot Unknown command, try @list
audreyt fglock: ok, tell cmarcelo I'll go to perl booth to fetch him (or you both)
nothingmuch <3 lambdabot
*poof*
fglock ashleyb: re sial.org/pbot/20775 - I included it in the test suite - thanks! I couldn't fix it yet 20:39
obra how's the conference?
lambdabot Title: Paste #20775 from "ashleyb" at 66.201.51.66
fglock obra: fine!
obra excellent.
I really must get there one of these years. 20:40
fglock obra: we are the only language with a booth :)
20:40 cmarcelo joined
fglock I'm working on the MiniPerl6 emitter (written in MiniPerl6, of course) 20:41
audreyt ...but not emitting to miniperl6... 20:42
clkao but... i want maxiperl6
and also poniperl6
TimToady @fglockĀ»++
lambdabot Unknown command, try @list
20:42 dvorak joined
fglock emitting to Perl5, for now 20:43
obra wonders if MiniPerl6 would be an interesting language for one of the parrot hackers to just hack up
fglock Parrot hacks bottom-up, Pugs hacks top-down
TimToady there's a middle there somewhere... 20:44
obra TimToady: as long is the middle isn't that cloud that we see in the middle of every network diagram
TimToady I dunno--that's been a pretty successful cloud, as clouds go... 20:45
fglock you know the chinese icon for "stay" (up and down) balas++ for teaching some chinese to us
audreyt U+5361
obra Fair enough
TimToady 協
fglock not knowing if a middle actually exists, the projects keep moving 20:46
ugh - can't commit from the booth - ssh blocking firewall 20:48
TimToady the middle usually exists when the radical is used as part of another characrer: å³ 
垰 å³  ꌊ ę”› č£ƒ 鞐 20:50
佧 ꋤ 胩 鉲 are the ones without a middle. 20:52
(at least in my font)
audreyt praises TimToady's reverse semantic index system into UniHan
TimToady one of these years I'll have to do all the compatibility characters as well... 20:53
20:54 miyagawa_ joined
audreyt it's fortunate that you're still hacking perl instead of joining Unicode.org's Ideographic Rapporteur Group... 20:55
TimToady by the way, 協 is called "checkpoint" in my system. The "middle" form is called "updown".
audreyt I hear people go into IRG and was never heard from again...
Limbic_Region audreyt - if I understood one of your last blog entries, we intentionally dropped code for certain features in favor of a unified code base and that in the interim of building that unified code base back up with those features we can just use v5;
TimToady I almost went into my own private IRG and was never heard from again... 20:56
Limbic_Region wonders if his client is eating his chatter
half of what I have typed has apparently not made it into the channel according to the irc logs 20:57
audreyt Limbic_Region: well, it's more like we want to Bootstrap Now
TimToady you'll either have to type twice as fast or half as fast. Not sure which...
audreyt in particular the grammar engine is to be thoroughly ported to perl6
but we also want it to run competitively fast on both our runtimes 20:58
and the full perl6 just can't run on perl5 competitively fast without a bunch of XS speedups
which increases maintainence overhead
fglock Limbic_Region: MiniPerl6 works as an intermediate language, also good for bootstrapping
bootstrapping = implementing Rules, MO
and a Perl6 compiler 20:59
audreyt but _not_ the runtme :)
fglock the Perl6 compiler will then implement the remaining features 21:00
Limbic_Region ok - I guess I either didn't spend enough time reading that blog post or the intent wasn't clear
Limbic_Region re-reads it
fglock which can be supported by the VM natively or not
21:01 aufrank joined
fglock Limbic_Region: a nice thing is that MiniPerl6 is written in MiniPerl6 - and it took just a couple of days to put it together 21:02
audreyt: mk is here 21:03
Limbic_Region my confusion came from "Oud rallying cry is one single Pugs codebase in Perl 6, as we seek to remove the massive code duplication in the current Haskell and Perl 5 runtimes."
and then "To facilitate the migration, I've amended the relevant part of the Modules spec (S11), so now we can trivially inline Perl 5 code inside a Perl 6 programs, with use v5 at the beginning of a lexical block." 21:04
but if what this really means is bootstrapping then wooooooot
fglock Limbic_Region: yes, these are 2 unrelated features
TimToady they'd have had to remove a lot more of S?? to chop the entire language down to that size. :) 21:05
audreyt Limbic_Region: let's see... we still implement full perl 6. 21:06
but we implement the full perl 6 with part of perl 6.
and at this moment that part of perl 6 includes some part of perl 5.
TimToady (at least for now)
Limbic_Region audreyt - yeah, I get it now
audreyt and once we have full perl 6 implemented in part of perl 6
then we implement full perl 6 in full perl 6 :)
fglock Perl6 can grow back lost limbs 21:07
wolverian wasn't this the plan like, three years ago? nice to see plans working out :)
audreyt more than three years ago
but yeah :)
"mini" is shorter to type than "featherweight".
TimToady Perl6ish is shorter by 1 21:08
audreyt Perl6i is shorter
TimToady Perl6ly
audreyt it's the next version of Perl5i
wolverian perl6.0-omega
audreyt of damian's
TimToady Perk6
wolverian er, pork.. now I'm hungry. bye! 21:09
audreyt if I continue IRC I'll never make downstairs
jrockway anything cool that we can do with miniperl6 right now? (i'm way behind on my perl6 lists :/ )
audreyt so... bbiab
fglock audreyt: are you at the lobby? I need some help :)
oh, ok :)
audreyt fglock: going there in a bit
TimToady jrockway: not yet, unless you just want to compile MiniPerl6. 21:10
Limbic_Region so my limited understanding of bootstrapping is that you write a minimal compiler for lang X in lang Y and then compile lang Y with that minimal compiler and for subsequent iterations you use the complete lang Y implementation
TimToady they're currently working on emitters.
Limbic_Region except when you need to start fresh and there isn't a pre-existing binary
fglock jrockway: yes - write itself (it's under devel)
Limbic_Region in which case you always keep around the minimal version in lang X
so my question is this
TimToady then you usually do cross-compiler instead.
Limbic_Region what is our lang X - ghc? 21:11
jrockway "mini" things are always exciting to me because they're small enough to do a really good job on, which is nice
:)
Limbic_Region TimToady - yes, I understand the cross-compiling
fglock Limbic_Region: MiniPerl6 "X" is (Haskell|Perl5) 21:12
Limbic_Region fglock - ok
TimToady that's what blog meant by "unified", in part
Limbic_Region so we are trying to keep MiniPerl6 as mini as possible so that Lang X could be any lang X?
fglock and hopefully Parrot soon
Limbic_Region IOW - parrot
ahh, ok 21:13
fglock Limbic_Region: yes - Javascript, for example
Limbic_Region is experiencing a great deal of lag
not everything I am typing is getting to the channel either
ok, well fglock++ audrey++ TimToady++ upvotes all around 21:14
fglock so we implement the mini-perl6 emitter in lang X, and it compiles the remaining parts (but you still need to make the runtime libs)
cj so... I heard something about perl6 running in a javascript vm? 21:15
Limbic_Region does smartlinks give us an indicator of what percentage of the existing spec is implemented? 21:16
fglock cj - not yet - it's a plan
cj fglock: alrighty
I'll not plan on using it in production then :)
21:16 kane-xs joined
fglock Limbic_Region: MP6 requires a different programming style - it's not likely to compile Test.pm 21:17
21:17 penk joined
Limbic_Region fglock - not what I meant 21:17
avar where's this in svn? 21:18
(mp6)
fglock Limbic_Region: ?
avar: /v6
Limbic_Region fglock - I am asking in any/all backend with our test suite smart linked to the synopses
fglock no, I think only Pugs is smartlinked 21:19
Limbic_Region ok, so for Pugs then - does the smart linking give us an indicator of the % of the existing spec that is implemented
fglock - I apologize, I switched thoughts without telling you 21:20
fglock I don't know 21:21
Limbic_Region seems like it would be a nice metric to have
TimToady seems like you'd have to smartlink to individual sentences to have that. 21:22
Limbic_Region "The existing Perl 6 specification is 87% of the expected complete specification. Pugs implements 98% of the known Perl 6 specification."
TimToady I suspect most smartlinks only test a few sentences out of a paragraph
Limbic_Region TimToady - I suspect you are right
my quoted statement above for anyone not reading context is an example of the thing it would be nice to say and does not necessarily reflect reality 21:23
</disclaimer>
21:23 crem joined
wolverian I don't really see the specification's completeness as a linear percentage. 21:26
Limbic_Region well great work everyone - have a good weekend wherever you might be
Limbic_Region calls it a weekend
TimToady the most accurate measure of that is probably the ratio of todos to todones, given there are tests for most of P6 already, even if coverage is a bit spotty. 21:27
wolverian it seems like you'd want to graph it at least in two dimensions :)
21:30 rodi joined 21:41 BooK_ joined 21:42 eggzeck[laptop] joined 21:52 fglock joined 21:53 cmarcelo joined
TimToady Chinese doesn't have preincrement or postincrement, but it does have topincrement: 蓎 22:03
svnbot6 r14605 | audreyt++ | * Pugs::Runtime::Perl6 - Disallow typed assignment into a Value type. 22:25
r14605 | audreyt++ | * Pugs::Runtime::Perl6 - Also allow easy-blessing syntax for classes:
r14605 | audreyt++ | class Foo { has $.x; has $.y; }
r14605 | audreyt++ | Foo(x => 1, y => 2); # makes an object.
r14605 | audreyt++ | * Pugs::Runtime::Perl6 - Add a native .perl method to all objects.
r14606 | audreyt++ | * MP6: fglock++ implemented the beginning of the ->perl5 emitter, 22:30
r14606 | audreyt++ | wrote tests in MiniPerl6 and coverted sanity tests into MiniPerl6,
r14606 | audreyt++ | and it all passed with flying colours.
r14606 | audreyt++ | (fglock++ would like to point out audreyt++ helped a bit as well.)
ashleyb fglock: thanks for adding my test... 22:35
fglock ashleyb: np - I'll try to fix it later 22:38
it's a backtracking problem, it seems 22:39
22:44 Aankhen`` joined
ashleyb fglock: one other question, when I switch the module from 'Regex' to 'Rule' my grammer stops working (code that that test was taken from) - and prints out some ugly error -- is this something you know about or should I send you another test? 22:45
22:48 larsen_ joined
Juerd TimToady: Ooh! topfix:<...> operators :) 22:49
lambdabot Juerd: You have 1 new message. '/msg lambdabot @messages' to read it.
TimToady topfix:<~>
Juerd ~ 22:50
Si, senor
TimToady topfix:<ĀØ> 22:51
hmm, circumfix should really be ambifix. a true circumfix would be like āƒ 20DD COMBINING ENCLOSING CIRCLE 22:54
fglock ashleyb: try 'Token' instead - Rule adds significant-space, this may change the meaning 22:55
TimToady on the other hand, if it relies on backtracking... 22:56
22:59 diakopter joined
ashleyb fglock: for example, take that test and s/Regex/Token/g or also s/Regex/Rule/g and you get the same thing. 23:04
fglock ashleyb: backtracking into Token/Rule quantifiers is not implemented 23:14
ashleyb ok cool.
TimToady somebody forgot to add continuations to Perl 5. :/ 23:18
avar blames TT 23:19
TimToady TrueType? :) 23:20
avar TimToady: nope:) 23:28
23:32 Limbic_Region joined
diakopter has svn been moved over yet? 23:35
23:36 gnuvince joined 23:39 cmarcelo joined
pasteling "cmarcelo" at 200.150.229.66 pasted "new (final?) translation" (156 lines, 2.5K) at sial.org/pbot/20862 23:41
svnbot6 r14607 | audreyt++ | * Pugs::Runtime::Perl6: Add .yaml for all objects. 23:43
r14608 | audreyt++ | * Pugs::Grammar::Term - Allow @.foo but for now parse it as $.foo
r14609 | audreyt++ | * Pugs::Grammar::Expression - Parse for hyper methods: "@foo.>>bar", "@foo>>.bar" 23:46
r14609 | audreyt++ | and "@foo.>>.bar", because MiniPerl6 emitters really want that ;)
r14610 | audreyt++ | * Pugs::Emitter::Perl6::Perl5 - Support for emitting hyper method calls
r14610 | audreyt++ | and hash/array dereferences.
audreyt diakopter: no, I'll send a mail to every committer when that happens 23:49
svnbot6 r14611 | audreyt++ | * MiniPerl6 Emitter: Add emission for these classes:
r14611 | audreyt++ | Lit::Seq Val::Num Val::Buf Val::Undef
r14611 | audreyt++ | Val::Object Lit::Seq Lit::Array Lit::Hash
r14611 | audreyt++ | Index Lookup Call Apply Return If Index Lookup
audreyt also working on hiveminder integration
dinner bbiab
23:59 mako132_ joined