pugscode.org/ | nopaste: sial.org/pbot/perl6 | ?eval [~] <m oo se> | We do Haskell, too | > reverse . show $ foldl1 (*) [1..4] | irclog: irc.pugscode.org/
Set by diakopter on 11 July 2007.
pugs_svn r19333 | Darren_Duncan++ | ext/Muldis-DB/ : updated copyright range-ends to 2008 00:03
00:19 REPLeffect left 00:26 shafire joined
shafire hi 00:26
ranti?
:o
ah pbuetow :) 00:27
pbuetow hallo shafire
shafire 3st xD 00:28
00:28 lorn_ joined 00:32 pbuetow is now known as buetow 00:33 buetow is now known as pbuetow 00:42 jferrero joined 00:46 shafire left 01:14 devogon left 01:32 drbean joined 01:56 kanru joined 02:04 vdrab joined 02:07 Caelum left 02:09 jferrero left 02:16 Caelum joined 02:23 Limbic_Region joined 02:36 hexmode left 02:48 hexmode joined
pugs_svn r19334 | rhr++ | [Unicode.pm] factor out Utable, tests for Utable, some S29 stuff, misc fixes 02:48
02:57 jrm__ joined 03:13 DaGo left 03:14 jrm__ left 03:16 Limbic_Region left, lisppaste3 left
pugs_svn r19335 | rhr++ | [Unicode.pm] implement <alpha> <digit> <isZs> etc. 03:19
r19336 | rhr++ | [Unicode.pm] forgot ;s 03:22
03:27 lisppaste3 joined 03:30 thoughtpolice left 03:50 vainguard joined 04:10 lorn_ left 04:16 vainguard_ joined 04:21 nipotaway is now known as nipotan 04:25 vainguard left
diakopter TimToady: you're trying to keep the language agnostic, or trying to keep the language implementation agnostic? If the former, it tickles me. 04:29
above, insert a hyphen between implemenation and agnostic. 04:30
04:49 vainguard_ is now known as vainguard 05:32 nipotan is now known as nipotaway 05:49 Andrew__ left, vainguard left 06:08 szabgab left 06:27 Auzon left 06:28 Schwern joined
Schwern What's "quasiquoting"? 06:28
Schwern just found q:code in S02
jql larry stole that from lisp 06:29
Schwern Ok, what's it in Lisp?
allbery_b backquote 06:30
Schwern WHAT DOES IT DO
allbery_b it quotes except when things are *un*escaped 06:31
Schwern I don't understand. Can you give an example?
allbery_b in Lisp, `(sexpr) is quoted excvept whn something is preceded by , or ,@
in which case it is expanded (,foo expands a list in place as (list), ,@foo expands the list inline so it is added to whatever the current sexp is) 06:32
Schwern Let's assume I don't know Lisp
jql (don't `(you ,@quote-me))
Schwern What do you use it for?
Tene allbery_b: can you give an example of a Perl 6 quasiquote, perhaps, and its meaning?
allbery_b code generation (in lisp via macros; in perl by manipulating ASTs)
jql it's for interpolating variables into an eval{} q construct
Schwern How is it better than eval STRING? 06:33
allbery_b in p6? not so much. I'm still weak on the language, never mind how the AST stuff worjks
06:33 __Ace__ joined
jql eval "\$foo $bar" vs q:list<$foo ,$bar> 06:34
err, s/list/lisp/
Schwern Isn't it q:code? 06:35
jql yes, but my version wasn't valid for q:code
mine was made-up bs
Schwern ah ha
allbery_b the very shoprt version, as I understand it (which may bre incorrect): you have more control over the substitution because you specify exactly the context into which it substitutes. in the evlal string version, the string could contain random evil stuff; in quasiquoted code, it has to be exactly what is permitted at that place (e.g. if it's looking for a variable, only a variable can be substituted) 06:36
it's not interpolating a string, it's interpolating a semantic element 06:37
Schwern What's "it" in "it's looking for a variable"?
allbery_b (niot syntactic)
jql quasi-quoting is a lot more like allowing interpolation into an eval{} than an eval""
allbery_b it = the perl parser
quasiquoted code is parsed. but you can substitute specific things into it (hence "quasi": you control where substition is permitted) as long as what is substituted is acceptable in that particular place in the generated parse tree (not in the source!) 06:39
Schwern Yeah, I'd need to see an example
allbery_b except I'm not sure if it actually works at the parse tree level or at the source level
I think we all do, to be honest :)
jql I don't know the syntax for dequoting stuff 06:40
allbery_b I'm not cl;ear on what level p6 quasiquoting actually operates
Schwern It came up because of the issues with this in Perl 5: eval "sub $name { my \$foo = 42; print $name }"
jql oh bleh 06:41
Schwern The whole problem of interpolating code as a string and how there's no good way to do it.
allbery_b I know how quasiquoting works in lisp, and have some idea of how it works in template haskell (which operates on the level of the parse tree / AST). I think p6 is more like the latter
Schwern And realizing that Perl 6 interpolating {} is going to make that easier and harder.
So there must be an improved substitute.
And then stumblign on q:to:code
jql macro gimmeh($name) { qc{ my sub !$name! { my $foo = 42; print !$name! } } } # how about I steal some syntax 06:44
Schwern qc already means something. 06:45
jql actually, print !$name! is a syntax error
jql sucks
Schwern quote closure
jql say !!$name!!
there, invented "" for quasis
heck, it could be a meta-twigil 06:46
$'name 06:47
although reintroducing unmatched ' is verboten
06:52 hexmode left 06:57 jjore-m joined 06:58 jjore-m left, jjore-m joined 07:38 lyokato_ joined
pugs_svn r19337 | Darren_Duncan++ | ext/Muldis-DB/ : in Value.pm, demoted Order type from generic to catalog-specific 07:40
07:56 Aankhen`` joined 08:05 pmurias joined
pmurias Schwern: the quasi-quote is equvialent to writing the ast AST in the AstNode.new(...) form, only with better syntax 08:07
checking if the example i wrote is update with the spec 08:09
TimToady yes, the basic problem with eval "" is that it has to reparse the entire string, including (often) large quantities of non-varying code 08:11
a quasi quote allows you to parse the non-varying bits only once at compile time, while still allowing you to plug in bits of AST for the varying parts
not only is this more efficient, but it's also more secure 08:12
(much like the placeholders that DBI uses to prevent SQL injection attacks)
pmurias TimToady: one thing i wandered about is if the various implementatins will have to adapt a single AST to make the macros portable?
TimToady seems like it, doesn't it? 08:13
pmurias * implementations
if the have the same grammar and AST they will probably have interchangable componets 08:15
* components
TimToady on the other hand, we can probably parse bits of code with an eval-like operator that returns AST
as long as the parser knows which rule to start with
so as long as the same rules are called, it doesn't matter so much if the trees are different 08:16
but that approach would not be quite as safe as directly constructing AST 08:17
so yes, I'm hoping for convergence there
or maybe there's some common AST form that each implementation can transmogrify into its own form 08:18
08:29 devogon joined 08:33 p6quester joined
pmurias .HOW returns a metaclass instance, which .isa a metaclass, right? 08:34
pugs_svn r19338 | pmurias++ | [yap6] fixed minor grammar issues 08:38
08:42 p6quester left
TimToady pmurias: correct 08:49
thunk & 08:50
pmurias TimToady: thanks 09:03
gaal hi there 09:30
09:30 devogon left, devogon joined 09:32 devogon left, devogon joined 09:33 jisom joined
pmurias gaal: hi 09:34
10:33 thoughtpolice joined 10:47 meppuru joined 10:48 IllvilJa joined 11:07 meppuru left 11:16 iblechbot joined 11:39 vdrab left 11:40 cognominal_ left, cognominal_ joined 11:45 meppuru joined 11:49 meppel-san joined 11:55 Schnueff joined 12:03 jisom left 12:09 meppuru left 12:11 rindolf joined 12:14 jferrero joined 12:20 lyokato_ left 12:21 kanru left, blindfish_ joined 12:23 kanru joined 12:46 masak joined 12:49 jedai joined
ruoso pugs: my int $a = '1'.int(); 13:49
exp_evalbot RESULT[\1]
ruoso pugs: my Int $a = '1'.int();
exp_evalbot RESULT[\1]
ruoso pugs: my Int $a = '1'.Int();
exp_evalbot OUTPUT[*** No such method in class Str: "&Int"ā¤ at /tmp/VJ8PDfysAF line 1, column 8-22ā¤]
13:49 ludan joined 13:56 meppel-san left 13:57 araujo left 13:59 __Ace__ left 14:01 __Ace__ joined 14:05 meppel-san joined 14:06 jrm_ joined 14:08 lorn joined 14:20 ludan left
ruoso pugs: my Int $a = 1; my int $b = $a; 14:21
exp_evalbot RESULT[\1]
ruoso Int and int autoboxes
right, but which is the method we call on Int to get a int? 14:22
I suppose that is "standard" API 14:23
I mean, there might be several Int implementations coexisting 14:24
14:24 drrho joined
ruoso as any object can have a metaclass that returns true on $obj.^does(Int) 14:26
14:27 __Ace__ left 14:29 polettix joined
ruoso maybe these would be metamethods 14:30
like .^does and .^can
maybe .^native($type) 14:31
In the YAP6 model, it makes sense to be in the metaclass 14:32
pmurias ruoso: you seem to be using the phrase "metaclass" in place of "metaclass instance"
ruoso yes 14:33
in fact
pmurias go on
ruoso but that's because in this model,
the metaclass is always a prototype
that is realized in the low-level 14:34
in C
hmm
ok... it doesn't need to be a prototype
hmm 14:35
not sure
in fact, it's its own prototype
yes
but anyway
you know what I mean, right
?
there's no metaclass class 14:36
there are only metaclass instances
pmurias i see
ruoso and the metaclass API
which have .does, .can and .isa 14:37
pmurias there will be metaclasses when the model bootstraps
?
ruoso and I'm now thinking about .native
always
that's how you'll be able to use p5 objects from yap6
or even PMCs
remember, a Int is simply something that returns true to .^does(Int) 14:38
so nothing stops me from using a SV* directly as an Int 14:39
pmurias i mean .HOW() returns a metaclass instance, which is not .isa anything at first
ruoso it's design by contract
yes
metaclass .isa itself
heh
14:40 xinming joined
pmurias ruoso: but Foo.HOW() .isa Class.HOW() 14:42
(Foo.HOW).isa(Class.HOW) 14:43
ruoso in theory, that's true if both Foo and Class are laid out as the same metaclas 14:44
s/as the/by the/
because the metaclass is also a prototype
pmurias a metaclass? 14:45
ruoso "metaclass instance"
but it never realizes itself as an object 14:46
Foo.HOW().new() should return another prototype
instead of an object that have Foo.HOW() as its prototype
pmurias i think metaclass instance and the prototype object are seperate thing
ruoso they are
I mean
Foo.WHAT is not the same as Foo.HOW 14:47
pmurias yes
ruoso but Foo.HOW.WHAT is the same as Foo.HOW
and Foo.HOW.HOW is the same as Foo.HOW
pmurias Foo.HOW.HOW is diffrent from Foo.HOW
ruoso and what is it? 14:48
the metaclass's metaclass
you just change the invocant
$a.foo() is $a.HOW.can(foo).call($a: ) 14:49
$a.foo() is $a.HOW.can("foo").call($a: ) actually 14:50
pmurias ruoso: Foo.HOW.HOW is the Foo's metaclass instance parents metaclass instance
so it's Class.HOW
ruoso Only if Foo is laid out by the Class metaclass 14:51
pmurias we need a better term than "metaclass instance" a metaobject would be fine
ruoso which may not be true
pmurias ruoso: yes
ruoso and what is Class.HOW if not Class again?
and there's the bootstrap
pmurias Class.HOW is the special case 14:52
ruoso we don't need a special case
we can bootstrap
pmurias Class.HOW is not Class 14:54
ruoso that's an implementaiton detail
14:54 vainguard joined
ruoso actually Class.HOW may be p6opaque 14:54
but then Foo.HOW will probably be p6opaque again
pmurias Class.HOW.HOW === Class.HOW # that's the special case
14:55 ispy_ left
ruoso well.. it's a special case in the implementation, not in the architecture... 14:55
it's a bootstrapped metaclass
a metaclass that can be described by itself
pmurias normal class are not bootstrap is what i mean 14:56
* classes
ruoso normal classes depend on the metaclass
and by class here, we really should use prototypes
a metaclass is something that is self-suficient 14:57
pmurias prototype objects are not metaclass instances
ruoso no,
but metaclass instances are prototype object
s
pmurias i don't think they are 14:58
ruoso I mean, they don't need to be
that's how I managed to figure out how to bootstrap in the model I designed
that is implementation specific 14:59
pmurias i mean in Perl 6
ruoso Perl 6 doesn't really differentiate between prototypes and objects
a prototype is something that can be used as an object
it's implementation specific how to define the differences between them 15:00
15:01 Schwern left
pmurias class Foo {method methods() {print "foo!!!"}};::Foo.methods 15:01
kp6: class Foo {method methods() {print "foo!!!"}};Foo.methods 15:02
exp_evalbot r19338: OUTPUT[foo!!!]
pmurias kp6: class Foo {method methods() {print "foo!!!"}};Foo.HOW.methods
exp_evalbot r19338: OUTPUT[syntax error at position 53, line 1 column 53:ā¤class Foo {method methods() {print "foo!!!"}};Foo.HOW.methodā¤ ^ HEREā¤]
pmurias kp6: class Foo {method methods() {print "foo!!!"}};(Foo.HOW).methods
kp6: class Foo {method methods() {print "foo!!!"}};say (Foo.HOW).methods
exp_evalbot r19338: RESULT[no method 'APPLY' in Class 'Undef'ā¤ at compiled/perl5-kp6-mp6/lib/KindaPerl6/Runtime/Perl5/MOP.pm line 345ā¤ KindaPerl6::Runtime::Perl5::MOP::__ANON__('HASH(0x824c364)', 'APPLY', 'HASH(0x8e76204)') called at compiled/perl5-kp6-mp6/lib/KindaPerl6/Runtime/Perl5/MOP.pm line 169ā¤
..main::DISPATCH('HASH(0x824c364)', 'APPLY', 'HASH(0x8e76204)') ca...
r19338: OUTPUT[methodsHOWWHATā¤]
ruoso kp6: say Int.HOW.WHAT 15:03
exp_evalbot r19338: OUTPUT[Intā¤]
ruoso kp6: say (Int.HOW).WHAT
exp_evalbot r19338: OUTPUT[Classā¤]
ruoso but that's how kp6 implements
nothing says that the metaclass instance of Int must be Class
it can be anything else
kp6: say (Int.HOW).HOW
pmurias ruoso: yes but it can't be Int
exp_evalbot r19338: OUTPUT[Classā¤] 15:04
ruoso pmurias, it could
nothing stops it from being
it only needs to be a Int implementation that supports the metaclass API
pmurias ruoso: i meant the standard Int class 15:05
ruoso the thing is
there's no "standard" int class
Int is anything that returns true to $foo.^does(Int)
15:05 xinming_ left
ruoso I can have several Int implementations coexisting 15:06
Ok, only one will be registered in the namespace as Int
but even then
I can have it changed
and the change can be scoped 15:07
pmurias the one which is registered in "vanilla" Perl 6 15:08
ruoso you mean the API
I agree that there's a standard API
it's design by contract 15:09
15:09 jhorwitz joined 15:18 alester joined
pugs_svn r19339 | ruoso++ | [yap6] a big block of comment in yap6.h introducing how to deal with the native types. 15:21
ruoso pmurias, please take a look at that last comment block in yap6.h
pmurias ok 15:25
ruoso: i don't think the native method has to live in the metaclass 15:29
ruoso where would it be? 15:30
pmurias in the Int class
ruoso I thought about it, 15:32
but there's one important reason for it to be in the metaclas
which is the fact that building a native object requires low-level call
I mean
you can't say int.new(1) 15:33
pmurias class Int {has int $.value;method int {return $.value;}
ruoso because 1 is already a int
so
it woul be int.new(int.new(int.new( ...
the low-level int creation needs to be made at low-level
pmurias 1 compile to well... 1 which is int
s/compile/compiles/
ruoso yeah... but thinking in implementation, this means a C call 15:34
not a Perl clal
call
pmurias yes
ruoso and this even for classes implemented completely in Perl 15:35
so, considering that the metaclass already needs to be implemented in C 15:36
at least some part of it
I thought it would be interesting to consolidate that there
pmurias ruoso: how will you pass the value of the int to the metaclass 15:37
unless you use church numerals
ruoso that's the point, the metaclass understands the object representation
and can extract it from there
pmurias if you pass buf yes 15:39
ruoso hm?
pmurias a bag of bits
ruoso I mean, we are talking about C code here
the metaclass understand the C structure of the data 15:40
and can deal with that
pmurias so we can do int.new(1)
ruoso in C, yes
which would probably be yap6_int_create(1)
15:41 meppel-san left
pmurias in opcode tree we do something in the style of call(prototype('int'),'new',int(1)) 15:41
15:42 meppel-san joined
ruoso pmurias, no... probably something more call(lowlevel('int_create',1)) 15:42
pmurias was just making stuff up 15:43
ruoso I see, but I really mean that this should be an explicit lowlevel thing
15:43 kanru left
ruoso not implicit 15:43
it's a lowlevel operator
15:45 vainguard_ joined
pmurias in order for native to work you'll need a custom metaclass for Int 15:52
pugs_svn r19340 | ruoso++ | [yap6] some more reasoning on why the "native" method resides in the metaclass
ruoso pmurias, probably... 15:53
but I would probably have it in the first place
because I don't want Int to have the same representation of Complex
or Str 15:54
but, for instance... 15:55
if we're mapping SV*s
every SV object can return a native type in the same way
so the YAP6-SV metaclass would implement native(int) directly 15:56
without an extra call to imply numeric context
so, basically, every SV would be able to say .^does(Int) 15:57
hmm 15:58
but it doesn't need to
16:00 vainguard left 16:04 vainguard joined
ruoso pmurias, ok... now I'm in doubt 16:05
maybe it should go to the Int implementation
and not the metaclass
16:12 acmoore joined
pmurias ruoso: you can have a perl5-hash-based-object metaclass, but a YAP6-SV would be rather limited 16:16
ruoso pmurias, as limited as perl5-hash-based-object is 16:17
pmurias s/limited/diffrent
different 16:18
16:18 vainguard_ left
ruoso well... p5 oo may have different implementations 16:18
but in the end you have a ref blessed to a package name 16:19
pmurias you can have metaclasses for diffrent p5 oo implementations
* different
or a read only one for a ref blessed to a package name
ruoso pmurias, I wouldn't expect to be able to have a rw metaclass to a p5 object 16:23
I mean,
my $foo = some_sub_that_returns_a_p5_object()
$foo does Bla; 16:24
would create a new prototype that extends the original class and composes with Bla
the new prototype would point to a "composition" metaclass
that would know how to ask for the previous prototype 16:25
16:29 rindolf left 16:34 rindolf joined 16:41 |Jedai| joined
pmurias the metaclass would wrap the perl5 object so that perl5 integers returned from methods will be turned into perl6 int's 16:43
hosting a starcraft lan party& 16:45
16:45 pmurias left 16:48 _Jedai_ joined 16:52 Psyche^ joined
pugs_svn r19341 | ruoso++ | [yap6] declaring the native-type prototypes and the low-level API for using them 16:54
16:55 thoughtpolice left
mncharity exists MY::<$a> ?? MY::<$a> !! exists OUR::<$a> ?? OUR::<$a> !! exists GLOBAL::<$a> ?? GLOBAL::<$a> !! CANDO($?PACKAGE, Item, '$a') 16:57
is that what name resolution of $a looks like?
16:59 jedai left
mncharity TimToady: ^^^ ? tnx 17:02
17:02 DaGo joined
pugs_svn r19342 | ruoso++ | [yap6] I think this is the entire external API for YAP6 17:05
17:06 |Jedai| left 17:07 _Jedai_ left 17:09 Patterner left, Psyche^ is now known as Patterner 17:11 fihi09 joined
rhr can you slice up slurpy args like so? sub foo(*$first, *@ignored[11], *$thirteenth, *@rest) {...} 17:23
17:26 Psyche^ joined 17:30 marmic left 17:33 marmic joined 17:35 rindolf left 17:37 chris2_ joined 17:45 araujo joined 17:50 Patterner left, Psyche^ is now known as Patterner 17:53 barney joined 18:11 rindolf joined 18:12 alester left
diakopter Juerd_: ping 18:14
18:18 meppel-san left
pugs_svn r19343 | ruoso++ | [yap6] yap6.h now includes three files. This files now should have the YAP6 external API complete. 18:19
r19344 | ruoso++ | [yap6] The public headers are moved from src to include. These are the headers that programs using YAP6 will include. 18:23
ruoso I still have to work on the MESSAGE method of the metaclass to include something related to exception model and stuff... 18:26
but apart from that, I think the way it's design will support Perl 6 completely
18:51 vainguard_ joined 19:02 Schnueff left, masak left 19:05 vainguard left
pugs_svn r19345 | rhr++ | [Unicode.pm] start reading and dumping the UCD. implement %open2close per S02:68 19:08
r19345 | rhr++ | [Utable.pm] add .perl and tests
19:22 meppuru joined 19:23 jjore-m left, vainguard joined
pugs_svn r19346 | ruoso++ | [yap6] a "repr" member of the YAP6__Object structure is where the object representation will be held. 19:26
19:28 jisom joined 19:39 vainguard_ left 19:44 drrho left 19:48 lorn left 19:51 barney left 19:53 chris2_ left 19:55 barney joined
TimToady rhr: no, formal parameters can't take subscripts 19:55
mncharity: not exactly. MY should give a view of all lexically scoped declarations including "our" and "state" 20:00
arguably it's misnamed
also, it doesn't fallback to GLOBAL under strict
20:03 vainguard_ joined
TimToady (or do the package CANDO lookup either) 20:04
under strict, if it's not lexically declared or imported, it's not visible
wolverian TimToady, can you use pattern matching to do the same thing (slice up the slurpy args)? though doing that beyond splitting head and tail goes into dependent types territory if you want to define it that way.. 20:07
TimToady you can certainly apply subsignatures to array arguments, so there's doubtless some way to work it so the nth element gets bound to a particular variable name, but subscript notation doesn't have much to do with it on the formal end 20:10
wolverian yeah. 20:13
20:15 jisom left 20:18 vainguard__ joined 20:20 vainguard left
rhr TimToady: yes, I see. how would you do that? I can't see any way to get an xx in there without using eval 20:24
20:27 kingkongrevenge joined
TimToady you can match a signature to any individual listy parameter using [$a,$b,$c] 20:28
so $c is by definition the 3rd element
see S06:1328 "Unpacking array parameters" 20:30
lunch
&
20:33 vainguard_ left 20:37 vainguard joined, vainguard__ left 20:40 devogon left
rhr can you do something like: my Sig $one := :(*$ignored); my Sig $eleven := $one xx 11; sub foo(*$first, |$eleven, *$thirteenth, *@rest) {...} ? 20:45
20:49 vainguard_ joined
mncharity TimToady: thanks 20:49
On an unrelated note, 20:51
it seems the kp6 and pugs front-ends are complementary (objects vs language-coverage) 20:52
has anyone considered doing common backend?
Ie, a kp6 backend which also works as a pugs backend.
So one could do the prelude in kp6 dialect, but drive it with the entire pugs t/. 20:53
thoughts? questions? 20:54
20:56 barney left 20:57 vainguard_ left 20:58 vainguard left 21:05 barney joined 21:07 rindolf left
mncharity avar: ping? 21:12
anyone know the state of the kp6 lisp backend? 21:15
fax: aankhen: fglock: ping?
21:15 devogon joined
mncharity err, Aankhen 21:16
Aankhen`` even 21:17
21:28 DaGo left
mncharity Is there a recommended revision (and ghc version) to get a working pugs? make o 21:30
rhr current rev should work well with 6.6.1, I think 21:31
mncharity n HEAD failed with Setup: error reading dist/setup-config; run "setup configure" command? Build failed for '/a/home/jobsearch/a_bit_of_perl6/pugsx1/dist/build/libHSPugs-6.2.13.a': 256 at util/build_pugs.pl line 372.
rhr: trying... my thanks
Aankhen`` mncharity: Yes? 21:36
mncharity Aankhen``: hi. I was wondering what the state of the kp6 backend is. saw you in the log. 21:38
*lisp backend
Aankhen`` mncharity: I'm not sure, sorry. avar would know better.
mncharity np. thanks
Aankhen`` I stopped working on it a long time ago.
mncharity ok 21:39
hmm, was any thought given to being a pugs backend as well? or was the focus entirely on kp6? 21:40
Aankhen`` The focus was entirely on KP6 while I was there. 21:41
I'm not sure Pugs entered the picture.
mncharity ok. thanks again
21:43 ispy_ joined 21:44 Aankhen`` left 21:53 jhorwitz left 21:54 kupopo left
pugs_svn r19347 | rhr++ | [Unicode.pm] a new Str.graphs. some p5 unicode prop defs. 22:01
Juerd_ diakopter: pong 22:04
mncharity gaal: re Test-TAP-HTMLMatrix, 103 passes, 1 failure, and guess which configuration I have. sigh. :) 22:14
TreyHarris i'm puzzling at a line in TimToady's recent edit to S09: my :($obj) := $cap; 22:26
that ":($obj) :=" is creating an anonymous Pair, and binding $obj to the value part of the Pair? 22:27
mncharity I'm quite rusty, but I believe the :($obj) is a Signature, rather than a Pair. 22:28
TreyHarris oh! i thought signatures were :: 22:29
mncharity I remember seeing "my :($obj) " is the same as "my($obj)".
TreyHarris I was going by S02, the line "'' => $x :($x)" 22:30
mncharity: you just said two different things... the colon makes it a Signature, or the colon is doing nothing at all? 22:31
22:32 fglock joined
fglock obra: ping 22:32
lambdabot fglock: You have 1 new message. '/msg lambdabot @messages' to read it.
mncharity In "my($x);", the "($x)" part is a Signature, with the ":" optional here in my. 22:33
hi fglock
fglock mncharity: hi
TreyHarris mncharity: so you're saying TimToady didn't need the colon there in S09? 22:34
mncharity fglock: any idea what the state of the kp6 lisp backend is? 22:35
fglock mncharity: it blocked at implementing an AST transform to emulate perl6 lexical scopes, 22:36
kp6-c is also waiting for that 22:37
mncharity TreyHarris: assuming my understanding is correct, I'm saying the code would behave identically without it. which is _not_ saying it isn't needed there in S09 for expository purposes.
"AST transform to emulate perl6 lexical scopes"? 22:38
rhr: indeed ghc 6.6.1-3.fc7 x86_64 is indeed working on f8. make test is running. thanks again. 22:40
22:50 barney left
fglock mncharity: the lisp and C runtimes don't implement lexical scopes directly (but Perl 5 and Parrot do); we need to translate the AST to a very simplified form 22:50
mncharity the lisp runtime can't implement lexical scopes directly too? 22:53
fglock good question, I think it could 22:55
mncharity so perhaps the kp6 lisp backend is more sleeping than blocked 22:58
fglock mncharity: do you know some lisp? :P 23:00
23:01 Auzon joined
fglock mncharity: re kp6 and pugs - I'm now trying to make kp6 and perl6-parrot converge 23:03
unfortunately, I don't know enough haskell
mncharity: and pmurias has been working on merging v6.pm into kp6 23:04
mncharity re lisp, a bit. :)
re converges, oo, nifty
though converging with parrot... well, 23:05
hmm. I note that, in the past, attempts to converge with parrot have proved troubled and time absorbing. so... 23:06
23:07 cathyal joined
cathyal hi 23:07
pbuetow hi
mncharity perhaps just keep an eye on the slippery slope, and don't let it absorb all your time? perhaps?
fglock kp6 can be developed simultaneously in several platforms, so Parrot features are not really blocking kp6 itself 23:09
re absorb - I don't think it makes sense to have more than one Perl6-in-Perl6 compiler 23:13
so I'm trying to work on perl6-parrot too
mncharity re pugs/haskell, one random idea might be to dump the pugs front-end's incomplete PIL for t/, in some form more easily manipulated, into svn. So one could then generate kp6 compatible something... kp6 ast? To provide an additional source of exercise for kp6 components.
re parrot, ok 23:14
23:15 Samsta joined
Samsta how do I XOR the hexadecimal values of two strings together? 23:16
mncharity fglock: do you have any feel for how easy/hard it might be to translate PIL to kp6?
fglock hmm
easy, but I don't think it's a good idea
mncharity :)
fglock we need to fix kp6 instead 23:17
which means (current milestone) to integrate the STD grammar 23:18
mncharity hmm
fglock the grammar refactoring is stalled, we've been working in the bootstrap and optimizations instead 23:20
mncharity the last time I looked at STD, long ago, it was kind of scary how much p6 had to be working to use it as written.
s/much p6/much of p6/ 23:21
fglock we seemed to need bootstrap and optimizations before refactoring the grammar - now I'm not so sure
kp6 implements most of the scary parts
it still needs a longest-token algorithm in regexes 23:22
23:23 cathyal left, Limbic_Region joined, vainguard joined
mncharity re scary parts implemented, :) 23:23
fglock re t/ - some problems are VM problems, not compiler problems 23:24
mncharity i don't understand 23:25
fglock kp6 has some tools to work around missing virtual-machine features, but the run-time cost is high 23:26
features == OO, closures, variable scopes, threads, ... 23:28
mncharity ahhh
23:28 ispy_ left
fglock most of last year's work has been focusing on working around these features, instead of focusing on the compiler 23:30
mncharity yeah. I keep looking for a backend language which makes it easier. p5, ruby, CL, etc. but a lot of the value of p6 lies in its being able to do this set of things which currently aren't easy to get together. so for bootstrap, it's a pain. :) 23:32
23:35 vainguard_ joined
mncharity is kp6 self compiling? 23:35
23:35 iblechbot left
fglock re pain - kp6 strong point is working around missing features in the backend 23:35
mncharity ah, interesting 23:36
fglock it does compile itself,
but you need to compile using "less features" in order to have reasonable performance 23:37
mncharity /me pictures "use v6; use less features;"
fglock that's why we are working on optimizations
mncharity backend performance or compiler? 23:38
fglock either you have the perfect VM, or you emulate+optimize and hope it still works reasonably fast 23:39
backend
the third option is, use less features
mncharity right
23:40 Samsta left 23:42 jferrero left
mncharity is it plausible to picture "optimizing" the backend by swapping in a different language/runtime? eg, something with a good JIT? 23:43
fglock obra: we'll be in Porto on sunday until 17h 23:44
mncharity how straightforward would it be to implement p6-style oo at this point? on top of some random modern non-strongly-typed oo language.
fglock that's what ruoso is working on - hmm, but C is strongly typed and not modern 23:46
do you mean python or what?
I did implement mp6 on Groovy, but that was just an experiment 23:47
23:48 jferrero joined 23:52 vainguard left
fglock sleep & 23:54
23:56 vainguard_ left
mncharity good night fglock. nice talking with you. 23:57
re what?, I was just looking... :) 23:58