6.2.10 released! xrl.us/hxnb | geoffb's column (/. ed): xrl.us/hxhk | pugscode.org | pugs.kwiki.org | paste: feather.perl6.nl:8888/ | www.geeksunite.net
Set by Juerd on 20 October 2005.
autrijus yeah 06:29
geoffb Has an odd visual impact. Mildly signifies that a | is somehow less than a $ . . . . 06:30
Khisanth waits for article titled "How to kill with a Sigil"
autrijus I sent the "sub Bool eqv (|T $x, |T $y) { ... }" suggestion to p6l. 06:31
Khisanth notes that sial.org/pbot/perl6 is back as well
in place of ¢T ?
autrijus yeah 06:33
if we are to have tyvar, better have something easy to type.
(imvvho.)
Khisanth nods
¢ requires hiting 4 keys here 06:34
autrijus yup
I'm seeing ¢ the same way as haskell people and scheme people use λ
PLT scheme even recognizes the λ form
Khisanth even with the compose thingy it's still 3 keys compared to 2
autrijus but it's there just so pretty papers can be written 06:35
in everyday use, it'd be the easy to type equivalent.
jql methinks I'll be finding it unnecessary in everyday usage 06:37
and :: required hitting 3 keys. :) 06:39
geoffb To sleep or to hack, that is the question . . .
Sleep is in the lead, at the moment
jql avoids sleep on the weekend -- that's what work is for 06:40
gaal aloha! 08:08
autrijus yo gaal 09:13
ooh, irc.pugscode.org back
autrijus proceeds to upload new versions of XUL slides
fixed the multi-xul problem
lucs++
so they are now all one files each 09:14
r0nny morning
autrijus hi r0nny
r0nny is there a way, to use c++ libs with pugs ?
autrijus you can use haskell FFI and link it statically 09:15
or use Parrot NCI to call it
or compile to JS and link Spidermonkey with C++ libraries 09:16
depends on what specific lib you want to use I guess
r0nny quit hw problems 09:28
autrijus NPW talk going to be on air in... 30mins 10:44
slightly updated slides are on pugscode.org/ 10:45
xerox Which one?
autrijus pugscode.org/euroscon/pugs.xul 10:47
the other ones are also condensed into single xul
Juerd autrijus: feather now accepts mail for perlcabal.org, by the way 10:49
autrijus: Sorry it took so long :)
10:50 r0nny_ is now known as r0nny
Juerd (This was a few days ago, but I hadn't told you yet) 10:50
rafl_ Cool.. 8-)
Juerd I wonder what keeps fucking up utmp 10:51
Clearly more users are logged in than are listed in utmp
autrijus I'll be off net...
rafl_ also wants the slides of the other talks. Especially the UTF8 and SVK one..
autrijus wish me luck :)
xerox Have fun autrijus!
Juerd autrijus: Good luck! 10:52
svnbot6 r7696 | autrijus++ | * Slight tweak for Pugs.Compile: s/CompMonad/Comp/g
Juerd Heh, a last minute pugs commit during the last minute slide adjustments? :)
cognominal |T for a type variable will make difficult some future arithmetic on types. 11:33
Or blank would have to be significant. That is | T possibly meaning something different from |T 11:34
I like significant spaces because that leaves more space (pun intended) for more grammar 11:35
wolverian hmm, ¢ is 3 keys here; altgr+shift+e. it's not that hard to type really. why don't all keyboards have altgr (or similar)? 12:16
Aankhen`` goes to sleep. 12:27
clkao rafl_: the svk talk is on opensource.fotango.com/~clkao/svk-intro/ 12:32
autrijus cognominal: we have signif whitespace anyway. 12:35
compare:
%hash vs % hash 12:36
cognominal yea but so far we are ashamed of it instead of claiming it an asset 12:53
autrijus well, it's nothing to be ashamed of 12:56
it's an asset :)
also
&code vs & code
which is very close to |type vs | type
integral pity prefix * is already used 13:02
xerox Use µ :) 13:03
integral ∀ or a capital lambda would make some sense ;)
xerox Ø ? :)
cognominal btw, on X window where is the doc about typing unicode chars? 13:14
autrijus docs/quickref/unicode ? 13:19
r0nny yo 13:26
does someeone have a getopt imp for perl6 ? 13:27
autrijus no, there's some test in ext/Getopt-Long 13:35
takers welcome
svnbot6 r7697 | iblech++ | * Usual svn props. 13:53
r7697 | iblech++ | * docs/quickref/unicode: Added some missing Vim ^K digraph sequences.
stevan_ mumbles about crappy IRC clients ........ 14:45
autrijus mumbles about incredibly crappy wifi 14:49
stevan_: I'm reading PickAxe :)
stevan_ autrijus!
autrijus: great book, I think i have a first edition around here somewhere 14:50
stevan_ went out and bought it after reading pragmattic programmers
autrijus: I have been giving some thought to the metamodel/container-type intregration
autrijus yes? 14:51
stevan_ well I have some questions
unboxed types will be implented in the interpreter/compiler right? 14:52
and the boxed versions will be implemented in the metamodel, correct? 14:53
autrijus yes and yes.
(wifi reset every 5min)
stevan_ autrijus: so, the metamodel needs to be written using the unboxed types
autrijus that is most likely the case, yes 14:54
stevan_ will we want to wrap the metamodel after bootstrapping, so it deals with boxed types? or will be have automagic boxing? 14:55
14:57 stevan_ is now known as stevan
autrijus stevan: automagic? 14:58
stevan automatic (with a little magic sprinkled on it)
autrijus there needs to be a wrapping there that exposes |class into |Class 14:59
just so you can augment it
er, I mean ::class and ::Class.
that part needs to be done by the runtime, so the compile will assume ::Class is already there 15:00
stevan hmm, so we will really need to wrap the metamodel post-boostrapping then 15:01
autrijus yes, I think that is unavoidable
stevan ok
autrijus hi DaGo 15:04
DaGo hi autrijus 15:05
stevan autrijus: I am going to experiment with this using fglock's containers
autrijus greeitings from NPW
1st day of conf just ended
so wifi may go away anytime
stevan: cool!
stevan fglock__: ping 15:06
autrijus bbiab... & 15:07
featherpaste "gaal" at 192.115.25.249 pasted "p5 emb warnings. linux / 6.4.1-1" (12 lines) at feather.perl6.nl:8888/2 15:40
rafl_ clkao: Thanks. 15:52
gaal eep, now the build hangs on Compile.Run. I think this may be a problem with hs-plugins though. :/ 15:53
whoop, no, just got freed.
r0nny re 15:55
rafl_ clkao: What does the graph in slide 24b show? 16:09
16:21 Limbic_Region_ is now known as Limbic_Region
Limbic_Region For anyone who wasn't aware - Dan has posted a Parrot post mortem 16:39
www.sidhe.org/~dan/blog/
fglock stevan: pong 16:50
16:51 Limbic_Region_ is now known as Limbic_Region
fglock stevan: pong 17:51
stevan fglock__: pong 18:48
autrijus: ping 19:32
autrijus stevan: pong!
stevan autrijus: some questions re: the container types 19:33
ifyou have a moment
autrijus sure
stevan so I am trying to make a list of the native "things" we will need
autrijus ok
stevan that the interpreter will need to support
and I am using fglocks list to start with (from Perl6::Value)
autrijus ok 19:34
stevan my question is.. how do those (Num, Int, Bit, List, etc) fit with the Scalar, Array Hash of the Perl6::Container group
Are the Values just things which can be stored into a Cell?
and will all the Value types be subtypes of Scalar? or is Scalar just another type? 19:37
autrijus ok
for a Scalar cell, yes, a value is just something that can be stored into it 19:38
a Scalar is an object type.
stevan boxed, unboxed, or either?
autrijus either.
stevan and the Cell is the native type from which Scalar gets it's implementation? 19:39
when you say "Scalar is an object type", do you mean a boxed type? 19:40
autrijus yeah, Cell is not exported
stevan hey luqui
autrijus yes, Scalar is a boxed type.
stevan there is no such thing as an unboxed Scalar right?
luqui hi stevan 19:41
stevan do unboxed types have methods? like num.to_str()? or is that sugar for Num.new(num).to_str()?
autrijus there is no such thing as an unboxed scalar. 19:42
stevan meaning we autobox it if you start "poking" it?
luqui I think they do...
autrijus autoboxing is on by default, that I'm pretty sure.
svnbot6 r7698 | autrijus++ | * remove the "t e s t" directory for testing as it gives
r7698 | autrijus++ | sky problems on his osx, and we are not using them anyway.
luqui but the autoboxing behavior is unspecced, and probably will remain so
autrijus yup.
stevan ok
luqui: just to catch you up, I am trying to seperate the native types from the boxed types
so that I can figure out where the metamodel fits in 19:43
luqui the unboxed types are there so we can make code that needs to run fast do so, so features on boxed types are allowed to be limited
s/boxed/unboxed/
heheh... including unboxed types in the metamodel could be... painful
stevan luqui: no, I need to build the metamodel out of unboxed types since the metamodel will provide the boxes themselves :) 19:44
luqui er, why? 19:45
stevan where are the boxes going to come from?
luqui where have they been coming from until now?
stevan if Array is a Role, then you need Roles before you have Array
luqui would not consider unboxed types to be more "fundamental" than boxed types
stevan luqui: I have no idea :P
luqui instead, I consider them an optimization technique
autrijus we have a runtime. it provides certain stuffs natively. 19:46
we may choose to export those things into p6 land as unboxed types.
we also need to use them to implement the metamodel.
stevan I am assuming that the runtime provides a set of unboxed types
then we implement the metamodel with them
autrijus those two are not identical
stevan then we make all the pretty boxes for the types
autrijus we can use some stuff from runtime that we don't expose
eg native "hash" 19:47
luqui ohh, assuming the implementation provides a set of unboxed types
stevan for the metamodel?
autrijus in the metamodel
luqui I get it
autrijus or we can also expose additional stuff we don't use in metamodel
stevan autrijus: why not an unboxed Map?
luqui I don't think that those are the same unboxed types as "int", "num", etc
autrijus like "complex"
Juerd Are unboxed types guaranteed to be available?
autrijus stevan: becasue it varies from runtime to runtime.
stevan: and because it's not partof spec.
Juerd Or can only those be used that actually exist on the target platform?
luqui because they will be different from implementation to implementation, they should be hidden from userland
stevan ah, the spec :)
autrijus Juerd: if the target platform has no native unboxed complex, we need to emulate them slowly. 19:48
luqui Juerd, they are always available, but they are not always guaranteed to be unboxed :-)
autrijus what luqui said.
Juerd I see
stevan autrijus, luqui: but can't we have a decent unboxed Map/Hash impl, just built on top of whatever the runtime supports? 19:49
luqui of course
stevan the only reason I wonder is that the metamodel relys heavily on hashes
luqui but the unboxed underbelly need not be seen by perl users, need it?
stevan luqui: I dont care either way :)
autrijus stevan: we can assume the runtime has a very fast hash/map.
stevan autrijus: ok 19:50
autrijus but the hash/map/dictionary thing operates differently on p6
unlike int or num which works pretty reliably
stevan ok
autrijus so it makes little sense to expose hash to userland.
stevan gotcha
autrijus :)
stevan now, what about code objects, they are a slightly different beast 19:51
autrijus is, of all things, hacking darcs<->svk support with clkao.
luqui autrijus, interesting
luqui is starting to dislike svk a little
maybe I'm not using it correctly
stevan blasphemer!!!!!
autrijus luqui: how so?
luqui svk blame foo.pl # all come up as my name 19:52
stevan luqui: cause you dah man!
luqui no, I don't mind that they all come up as me when I do svk praise :-)
clkao blame -x ?
stevan autrijus: I am wondering how unboxed Code objects interact with pads.
autrijus stevan: talk in code? 19:53
(and also, "unboxed code" as such is not really part of p6 spec.)
stevan I am not sure how to do that
ok, then what will native executable chucks look like?
autrijus again, "unspecced"
stevan hmm
luqui clkao, no luck
autrijus luqui: svk blame //mirror/pugs/path/to/file 19:54
luqui autrijus, eeew, okay
autrijus luqui: unpleasant, I know.
should have a blame --upstream or something
stevan autrijus: well we can assume all runtimes provide some type of subroutine right?
forget about how it is exposed to the user for now 19:55
luqui stevan, you mean closure?
stevan luqui: yes (i think)
clkao ah
luqui hmm.. I think we can assume that
yes we can (because we are assuming continuation :-)
clkao was talking about proper merge traversal api so we will be able to do that
stevan what I am getting at is that I would like to be able to bind things to a subroutines lexical scope/execution context 19:56
this would make the metamodel, and in particular the method "implementation" easier
luqui stevan, I don't quite follow 19:57
stevan luqui: we are deep in the bowels of the runtime,.. what do the closures look like?
luqui stevan, think perl 5 19:58
that's what you get
stevan can I say: $my_closure.bind_to_env('$?SELF' => $obj);
luqui: I know next to nothing about the bowels of p5
luqui the bowels of the p5 runtime is all in p5 userland
however, a level of indirection will always get you what you want I think 19:59
pass env as first parameter to sub
bundle in the same object as the closure
stevan hmmm,. very LISPish
autrijus (we already do that for p5embed) 20:00
stevan well, is that going to the be the sub types responsibility? or is the runtime going to manage pads?
luqui ohhhh, stevan, you are wondering what is in the runtime interface 20:01
stevan luqui: yes, I care nothing for users :P
luqui I was actually approaching from the opposite direction, that you were in the guts of the runtime
but you are actually the meat in the middle of the sandwich
stevan luqui: I am thinking from both ends sort of
luqui or jelly 20:02
okay, I think that the runtime has to provide a closure with an env
stevan agreed
does each closure mange the env? or does the closure ask the runtime for the current env? 20:03
or does that not matter really
luqui "ask the runtime"?
stevan autrijus: thoughts?
luqui: is it
$closure.add_to_env('$value' => 1);
or:
$env.add('$value' => 1); $closure->($env) 20:04
who manages the pads I guess
luqui oh, I think the runtime does
stevan ok
luqui because it knows more about how it can make that fast
also more about closures behave... 20:05
more about everything actually
hmm
what' a good template that I can steal for writing an ext/ module 20:07
stevan uhm
for what?
luqui L::AG in particular
autrijus luqui: Test-Builder? whatever
luqui is just making sure he didn't steal a bad example
autrijus stevan: a native closure maintains its env in itself 20:08
stevan ok
but once it exits, then its back to the runtime?
autrijus I think so.
stevan or is the top level, just an implicit closure,.. 20:09
autrijus the toplevel is definitely just an implicit closure 20:11
because you can capture that
stevan so all closures maintain their own state,..
autrijus yes
stevan ok
so it might look something like this: 20:12
for a top level environment
Closure->new(env => %{::main}); 20:13
geoffb mmm, tea 20:18
stevan hey geoffb
geoffb Hey stevan, autrijus, luqui
luqui hi geoffb 20:20
?eval module Foo; our class Bar { } Bar.new.say 20:22
evalbot_7698 Error: unexpected "B" expecting variable name or "("
luqui ?eval module Foo; class Bar { } Bar.new.say
evalbot_7698 <obj:Bar> bool::true
stevan autrijus: so, do we have a list of unboxed types that must exist? 20:23
luqui are you talking about userland unboxed types, or runtime-interface types? 20:24
stevan userland
let me explain my motivation
I want to (using Flgocks stuff) implement all the runtime stuff I will need for the metamodel
luqui stevan, see S09 20:25
stevan then I am going to re-write/hack the metamodel to be implemented in terms of them
but I dont want to deal with any more unboxed types that I need to
luqui okay
stevan luqui: thanks
I mean, the metamodel has no need for Pair, or Junction
luqui righto
stevan or Rat
luqui ?eval fail "foo" 20:26
evalbot_7698 Error: No compatible subroutine found: "&fail"
luqui ?eval die "foo"
evalbot_7698 Error: foo
luqui ?eval class Foo { has $.bar = 1 } say Foo.new.bar 20:27
evalbot_7698 Error: unexpected "=" expecting trait, "handles", ";" or "}"
luqui ?eval class Foo { has $.bar; method set($.bar) { } } my $foo = Foo.new; $foo.set(42); say $foo.bar 20:29
evalbot_7698 42 bool::true
stevan ok, thanks much luqui, autrijus .. I am going to sketch some of this out later tonight 20:30
but now I need to go pick up the kids from grandmas house :) &
autrijus: one last question 20:35
what about control structures
should the metamodel use the native control strucutres? or the ones implemented in the runtime
or does it not really matter since the internals of the metamodel are a black box anyway 20:36
luqui stevan, how would you possibly use the control structures in the runtime? 20:37
stevan luqui: magic!
luqui ?eval switch 42 { default { say "hi" } } 20:38
evalbot_7698 Error: No compatible subroutine found: "&switch"
luqui ?eval given 42 { default { say "hi" } }
evalbot_7698 hi bool::true
luqui (duh)
stevan ok, the I am going to assume a for-loop, while-loop and an if/then/else construct in the runtime 20:39
thats pretty safe
luqui isn't sure why you're being so minimal 20:40
stevan s/runtime/native implementation language/
luqui: its a reference implenation of the metamodel,.. it can be optimized per-platform
luqui right
so... why so minimal?
stevan uhm, ... I dunno,.. what do you suggest? 20:41
luqui it's not like given can't be translated into a cascade or a switch
stevan yes, but why use it if I dont need it
luqui stevan, true
but why not use it if it will help understanding
stevan luqui, true 20:42
luqui just write it in canonical perl
you're not bootstrapping with it, correct?
so there's no need to write in a subset
stevan bootstrapping in what way?
bootstrapping the compiler,.. no 20:43
luqui right
stevan although I am trying to keep that in mind
but I really have to run now,.. I will be back later tonight, thanks &
luqui later
dduncan fyi, I'm now going to attempt moving my development to svk from svn, partly for its offline commits feature ... I may or may not encounter issues that would lead to questions here on those that use svk 21:00
my client for pugs and other projects, that is
geoffb dduncan, also you might want to join #svk too
dduncan good idea ... is it on freenode? 21:01
integral yep
dduncan okay ... entering ...
svnbot6 r7699 | luqui++ | r2044@feather: fibonaci | 2005-10-22 23:02:20 +0200 21:05
r7699 | luqui++ | Started working on L::AG.
r7700 | luqui++ | Heh, perl5ism. 21:11
wolverian S04 says 'default {...}' is the same as 'when true {...}'. should it be 'if true {...}' instead? 21:20
Juerd No
when breaks
default { ... } unreachable();
wolverian right, but that means it does 'if $_ ~~ true { ...; leave }' (or so)
Juerd Yes
But that's not if true { ... } 21:21
I see what you mean, though
wolverian if $_ is false it doesn't execute
I think.
Juerd It's that "~~ true" tests boolean equivalency
I think that's useless anyway 21:22
as there is no 'true' and there is no 'false'
wolverian I don't know which 'true' is meant here
Juerd In case of booleans, you'd do if/else, not when/when
wolverian bool::true or true()
$_ ~~ true() would be even more bizarre (but no less wrong)
Juerd true should be a scalar op 21:23
And accept 1, no more, but certainly no less, arguments 21:24
wolverian anyway, I'd fix it if I could
but I don't think the AES live in public repos?
Juerd They do indeed not
wolverian should I submit a bug report (if so, where? p6l?)
Juerd p6l 21:25
Don't forget the ;leave
wolverian right.
Juerd Alternatively, suggest removing ~~ true
I don't believe it makes sense to have it.
bool::true's explicit usage should be discouraged.
wolverian do you mean ~~ bool::true
Juerd Yes. 21:26
wolverian right.
I'm not sure what you mean with removing ~~ bool::true 21:28
care to elaborate?
(I'm really tired, so I might not get it anyway :) 21:29
Juerd Make ~~ bool::true not mean anything special
eh,
mean something special
wolverian I don't think it does now, does it?
Juerd okay, rephrase:
Make ~~ bool::true always return true
wolverian ah. I think that is misleading.
Juerd I think allowing use of bool::true is misleading 21:30
As when bool::true appears in code, people start using if ($foo ~~ bool::true) instead of if ($foo)
Too many languages prove this. 21:31
When dealing with bools, use if, not when
when is for smarter values
wolverian right. I'm just saying that making it return always true is misleading 21:32
make it blow up if you want.
Juerd You are right
wolverian btw - I think that ; leave will exit the block given to 'if', am I right? that is not what it should do.
Juerd I do think, though, that there should be an RHS for ~~ that makes it always return true 21:33
Because of when
"default" should have an expansion with "when".
wolverian Juerd, id? when $_ { ... }
Juerd That's the one. Thanks for doing my thinking :)
wolverian :)
Juerd default { ... } is when $_ { ... }, but more efficiently. Makes sense.
wolverian sent. 21:36
do you have thoughts on the leave() issue?
Juerd leave 1 21:37
wolverian does that DWIM in for loops?
Juerd I don't think it exists yet.
But I think it should. 21:38
wolverian right.
it should also behave like next() in for loops
buu Quick! Someone cheer me up!
wolverian oh. leave() just might.
Juerd wolverian: Doesn't when do next anyway?
buu: lol + lol = hihi. 21:39
wolverian Juerd, er. I think leave = next
at least if for() is implemented as a sequence of calls to the block given to it
(how else?)
Juerd buu: This may be a Dutch thing, though: ) 21:40
buu: Try it on a calculator: 707 + 707 = 1414.
afk
buu I was reading Dan's "Parrot Post Mortem" and some related material about p6 and parrot 21:41
Very depressing =[
Juerd buu: oliebol, then? 21:42
buu: (7083170)
afk
wolverian whoa, my Epiphany has SVG support, apparently. Ubuntu++ 21:45
buu stares at Juerd 21:46
wolverian what the heck; my ISP's SMTP relay is denying me access 21:55
goddamn, I'm not paying nothing to them for this kind of a service!
(unless I decide to upgrade the service)
okay, at least they have a notification about it on their site. 21:57
23:10 rep is now known as CrazyNeko 23:12 CrazyNeko is now known as rep