»ö« | perl6.org/ | nopaste: paste.lisp.org/new/perl6 | evalbot usage: 'perl6: say 3;' or rakudo:, alpha:, pugs:, std:, or /msg p6eval perl6: ... | irclog: irc.pugscode.org/ | UTF-8 is our friend!
Set by lichtkind on 5 March 2010.
00:05 yinyin joined 00:11 leprevost_ joined, leprevost_ left 00:27 lest_away is now known as lestrrat 00:29 ashleydev left 00:31 lestrrat is now known as lest_away
dalek kudo: 1277e18 | pmichaud++ | docs/ROADMAP:
Add closures to ROADMAP (so we don't forget about them :-).
00:36
00:40 lest_away is now known as lestrrat, masonkramer left 00:43 masonkramer joined 00:44 rgrau joined
sorear TimToady: Where are native types in the type hierarchy? 00:54
01:01 wolverian left, Transformer joined 01:03 Transformer left
diakopter heh 01:04
they are at the bottom/top, imho 01:05
seeing as how they auto-upgrade to their InitialCaps equiv
when needed 01:06
I wish I understood that better.
sorear my interpretation of S12 is that my int $foo can hold any object which answers true to .isa(int) 01:08
which is ... not ideal
diakopter :'( 01:09
01:09 azert0x left
diakopter priviledged -> typo in S12 01:10
spello
pugssvn r31404 | diakopter++ | [S12] sppelo 01:14
diakopter and then on the next line 01:15
"All constraints considered in type narrowness."
that's not a sentence
01:16 Fozo joined
pugssvn r31405 | diakopter++ | [S12] verbo 01:17
01:28 skids joined
cj diakopter: lolz @ sppelo 01:29
sorear: right. it should be .isan(int) to be ideal, rite? 01:30
cj considers making a .isan() just to increase his famousness 01:31
01:33 TiMBuS joined
TimToady sorear: think of them as subset types of the non-native equivalent type, where the constraint determines what will or will not fit into the storage 01:34
e.g. subset uint8 of Int where 0..255; 01:35
so calculations are really done in the base type, and it's only when they need to be reinstalled into storage that the constraint is enforced 01:36
decommuting &
01:43 kazoo joined
Fozo umm | was trying toconfigure Rakudo on Windows andgot an error can anyone help? 01:44
01:44 plobsing joined 01:45 kazoo left 01:49 shade_ is now known as \shade\
[Coke] I don't have windows atm, but maybe. 01:49
can you nopaste the error you're getting? 9and teh steps you took to get the error?)
spinclad TimToady: S03:2045 : s/rangechar range/char range/ ? 01:52
(r31271) 01:53
Fozo sry coke afk umm yah I guess I can write it out put hold on it may take while
dalek ok: f022fc4 | (Hongwen Qiu)++ | src/subs-n-sigs.pod:
[subs-n-sigs.pod] typo
01:54
01:55 whiteknight left
Fozo how can I get started devolping perl? 01:55
sorear Fozo: there's a menu item, Mark I think it's called 01:57
Mark the error message
Copy 01:58
paste into the text box on paste.lisp.org/new/perl6
then copy the URL here
Fozo it is from the command line
01:58 molaf joined
sorear How should I know? You're the one with the error message. 01:59
Fozo I ment I can not copy from the command line
sorear You could copy from the command line in Windows 98 02:00
Fozo well this is not windows 98
sorear Which is it? Maybe someone here knows
02:01 rgrau left
diakopter you can copy from the command line in all versions of Windows afaik 02:01
Fozo XP
sorry I'm mad theres an annoying fly flieing around me and my sound is completly screwed up and how? 02:02
02:02 redicaps joined
diakopter you can google for that question 02:03
Fozo mark does nothing
diakopter www.google.com/search?hl=en&q=w...mmand+line
Fozo Reading configuration information from parrot_install/bin/parrot_config ... 02:04
hold on let me just write it out 02:07
Reading configuration information from parrot_install/bin/parrot_config ... 02:08
'parrot_install' is not recognized as an internal or external command,
operable program or batch file. 02:09
Died at configure.pl line 119.
there mark worked
no answer? 02:16
02:16 dju joined
sorear using paste.lisp.org is non-negotiable 02:16
this is your only warning
your computer is completely screwed up 02:17
it shouldn't have said "operable program or batch file" twice
needs to be replaced, probably 02:18
Fozo no sorry I just typed it twice, \\ 02:20
02:20 supernovus joined 02:24 colomon joined 02:26 supernovus left
redicaps rakudo: sub human ($name,$gender){say $name~' ~~'~$gender}; human(name => 'hu','male' 02:27
p6eval rakudo 00efa1: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 11␤»
redicaps rakudo: sub human ($name,$gender){say $name~' ~~'~$gender}; human(name => 'hu','male')
p6eval rakudo 00efa1: OUTPUT«hu ~~male␤»
redicaps sub human ($name,$gender){say $name~' ~~'~$gender}; human(name => 'hu', gender => 'male') 02:28
rakudo: sub human ($name,$gender){say $name~' ~~'~$gender}; human(name => 'hu');
p6eval rakudo 00efa1: OUTPUT«Not enough positional parameters passed; got 0 but expected 2␤ in 'human' at line 11:/tmp/dFmB8XJQne␤ in main program body at line 11:/tmp/dFmB8XJQne␤»
redicaps rakudo: sub human ($name,$gender){say $name~' ~~'~$gender}; human(name => 'hu', gender => 'male') 02:29
p6eval rakudo 00efa1: OUTPUT«hu ~~male␤»
redicaps Hi, perl6. What is exactly the difference between positional parameters and named parameters? 02:30
rakudo: sub human ($name,$gender){say $name~' ~~'~$gender}; human(name => 'hu'); 02:31
p6eval rakudo 00efa1: OUTPUT«Not enough positional parameters passed; got 0 but expected 2␤ in 'human' at line 11:/tmp/GufexSV6Xc␤ in main program body at line 11:/tmp/GufexSV6Xc␤»
redicaps well, It might should be "got 1 but expected 2" ? 02:32
Fozo thans for the help guys!
02:32 Fozo left
sorear TimToady: Suppose I have an $object CREATED with a repr of P6hash. How can I hashily use $object? 02:33
TimToady redicaps: see S06:785 or thereabouts 02:34
02:35 JimmyZ joined
JimmyZ rakudo builds failed on Windows XP, see gist.github.com/447846 02:36
TimToady sorear: I don't know. I'd probably use 'does
'does Associative'
the repr API is still subject to some amount of slop
the SMOP folks probably have some ideas on that particular Q 02:37
since they're likely to be interoperating with P5Hash at least
sorear ok 02:39
I'm currently fleshing out the model for mapping Perl 6 to the CLR (.NET)
TimToady in some sense that's outside the purview of P6, except insofar as P6 defines multiple responder interfaces
sorear it looks like I'm going to be using three representations mostly
- a null representation for proto-objects
- a hash representation for open classes 02:40
- a native CLR object representation for closed classes with only HardRoutine methods
TimToady I think smop was using some $obj.^!foo syntax for RI calls
jnthn++ would know if rakudo does something similar somewhere 02:41
since they basically use Parrot hashes, I think
it's one of things I'd kinda like to see fought out by the various implentations
*men 02:42
sorear S02 talks about P6opaque as if it were a full-fledged type in its own right
What are the valid operations on it?
TimToady btw, that's for cleaning up the pad mess; my dev computer was relatively inoperable until this afternoon... 02:43
well, looking up slots via the $!foo syntax, mostly, however that looks to the RI 02:44
redicaps TimToady: Thanks, I probably got it, not so clear. So they are different way to pass the parameters, and sometimes we can mix them
TimToady we try to use "parameters" only for the formals, and reserve "arguments" to talk about what you pass in. 02:45
sorear So Perl 6 has a concept of an RI?
Are HOW objects special? Can I write my own object which sports can, isa, does methods then start cranking out objects with HOW set to whatever I want? 02:46
TimToady yes, presumably
so the repr type is perhaps just a key into the known metaclasses 02:47
they're documented as types, but perhaps they're really just symbol constants
and perhaps there's some underlying registration interface for repr types 02:48
sorear So a single metaclass instance, say Dog.HOW, can only manage a single representation type? 02:49
TimToady the RI is something that ruoso++ and jnthn++ have been discussing off and on
dunno
sorear I was under the impression that every instance of Dog could have its own repr
TimToady conceivably
but that seems a bit inefficient 02:50
but as far as P6 is concerned, yes, each object's .HOW could be independent
we would certainly like to support low-level OO types such as C structs or C++ classes 02:51
and that's all swept under the RI carpet; from the language level, it's always just $!foo
it's (we hope) a level of encapsulation that is mostly hidden even to the innards of the P6 class 02:52
sorear Can it be said that, given $foo ~~ Dog, $foo has a known representation even if subclases are involved?
Does this imply rules on metaclasses? FakeDogHOW could affirm .does(Dog), but have a different repr 02:53
TimToady it always seemed to me that a given subclass could delegate to a superclass object in a has-a-ish way to work around different classes having different reprs, if necessary 02:54
so in that sense a given Dog might have more than one repr 02:55
but you'd have to ask the Mammal bits of the Dog object what it thought the .HOW was to get to it
02:56 Limbic_Region left
TimToady and this might even be automatically delegated internally when you see that someone wants to derive something from a different repr 02:56
that's how we were, for instance, planning to handle derivation over the P5/P6 boundary 02:57
so the P6 bits would be P6opaque, but the P5 bits would be P5hash
TimToady waves hands vaguely
02:58 agentzh joined
TimToady but we'd really like to keep all this cruft out of the definition of "normal" Perl 6, to the extent possible, which is why I think the implementors should agree on an API instead 02:58
and it becomes sort of a library problem 02:59
I feel like the implementors will have a better idea of what's really needed there than I do. 03:00
metamodels are not my chief interest
[Coke] (crap, I got distracted by ricardo)
sorear so in other words, I, as a wearer of the implementor hat, should make up my own decisions on this for now and try to get pmichaud and pmurias to agree 03:01
TimToady or maybe more like ruoso and jnthn
but yeah 03:02
03:03 molaf left, Transformer joined
sorear After my $x = []; Dog.bless($x); what does $x look like and what can I do with it? 03:03
TimToady I suspect it would degrade to a model that looks a lot like P5 03:04
sorear but Array is a class. 03:05
TimToady indeed
but in P5 you can bless almost anything
sorear yes, because in P5 arrays aren't classes
they're reprs 03:06
03:06 meppel joined, alester left
TimToady it's not something I feel strongly about trying to support in 6.0 :) 03:06
(if ever)
sorear if you took a Rakudo [] and reblessed it, you'd have a Dog with one field named $!rpa or something like that
oh oka.
03:06 Transformer left
TimToady to map the P5 notion, it seems more useful these days to mixin an array or hash role, and the stub is P6opaque with no attrs 03:07
but blessed arrays and scalars are pretty hacky and non-interoperative in P5 03:08
sorear I'm thinking that reprs or RIs or whatever we want to call them, are something mostly orthogonal to the class system 03:09
TimToady yes, in that sense class code is somewhat generic, and can be instantiated of multiple reprs 03:10
s/of/over
03:10 meppl left
TimToady even on top of arrays, if you can map $!foo to slots 03:10
(obviously easier with SI than MI)
but with an implicit delegation model for super, we could extend an array class that wasn't meant to be extended 03:11
this is actually the sort of thing we talked about a lot in the early P6 design meetings lo these many years ago 03:12
sorear implicit delegation raises questions about Liskov and representation polymorphism
TimToady since the P5/P6 problem was looming large in our minds
well, sure, and you'd like to be able to pass refs into P5 that can reconstitute to the original derived type if passed back to P6, which is a trick 03:13
sorear for the same reasons that pointer casts in C++ aren't always runtime noops
TimToady yes, the "active" spot in a list of refs, basically
03:14 Transformer joined
TimToady P6 kinda gets this notion via $obj.SomeClass::method 03:14
where $obj knows its real type, but when we call the method we know it's on behalf of SomeClass, not the actual run-time type 03:15
03:16 skangas left
TimToady but something that more permanently remembers "I'm currently pretending to be SomeClass" 03:16
03:16 Transformer left
TimToady as with your C++ casts 03:17
03:17 SartenX left
TimToady so this is something we brainstormed about, and then more or less put it on the shelf for when P5/P6 interop was being worked for real 03:18
(as it is, these days)
sorear sounds like a proxy object of some kind 03:19
TimToady or something like typed references 03:20
sorear ? 03:21
TimToady or some fundmentally allomorphic object that knows how it's being used, and acts differently in different contexts, presuming there's some good way for it to know that 03:22
03:22 JimmyZ left
TimToady I think there's a literature on typed references, but I haven't really grovelled through it. 03:23
sorear my dictionaries are not being helpful on "allomorphic" 03:24
TimToady well, back in the day, the CS folks borrowed it from linguistics/mineralogy as something more general than the polymorphism of the typical class hierarchy 03:28
but perhaps the term has falled out of favor
but basically an object that not only knows its type, but knows how to behave like any of several types if expected to
03:28 Sarten-X joined
TimToady P5 scalars are somewhat that way 03:28
and unlike the normal polymorphism, the types it knows how to be are not necessary related 03:29
diakopter sorear: I recommend treating everything as an open class (with Hash repr) initially (since that has to be done eventually, and it's infinitely easier)
sorear nods 03:30
diakopter: ok
TimToady I've been braggin' on you guys at YAPC :)
diakopter looks at sorear
yesterday I almost sprung for the $500 overnight flight to Columbus but decided against it 03:31
I probably should've planned a bit better 03:32
sprang 03:33
TimToady well, I've had a long and tiring day, and didn't get my geezer nap, so I'd probably better turn in soonish... 03:34
any other questions I can evade?
diakopter sorear: if we really wanted to be good CLR citizens, we could use the DynamicObject in the DLR (that auto-extends classes ...), but more likely we'll just steal ideas from it
TimToady does that hurt interop? 03:35
diakopter since the DLR's builtin dispatch models have nothing as horrifyingly complex as p6's
it doesn't hurt interop, but using DynamicObject would help when using p6 code from an IronPyThong or IronRupee host, 03:36
TimToady well, it's just a different repr from P6's perspective. :) 03:37
diakopter (using p6objects I mean, where the method & attribute names are specified in other languages)
TimToady looks innocent while the implementors fall down in terror
diakopter terrifically innocents the falls 03:39
03:40 meppel left
TimToady ~~ ('z' xx *) 03:41
sorear Braggin' us, eh. 03:43
04:11 tedv left
mberends wakes up to another long $work day - teaching 12+ hours at a boot camp. Keeping up with backlogs is barely possible. Phew! 04:36
04:37 ashleydev joined
mberends phenny, tell Tene http-daemon should have been fixed a few days ago, it was mainly those changed variable interpolations in HTML strings that needed to be broken up with concatenations 04:39
phenny mberends: I'll pass that on when Tene is around.
mberends found the problems when researching for a P6 version of HTTP::Server::Simple::PSGI, which is planned to pave the way for a P6 Dancer 04:42
05:05 macdaddy left
sorear hello mberends 05:10
mberends hi sorear 05:11
05:11 justatheory left, justatheory joined 05:16 s1n left
sorear phenny: tell TimToady I finally understand what you were talking about re. allomorphism. It's a core concept in the CLR, although we call it "interfaces". 05:17
phenny sorear: I'll pass that on when TimToady is around.
05:25 Guest23195 joined
sorear If &postcicumfix:<( )> is a sub, not a method, what are the members of role Callable? 05:27
Tene mberends: sounds like you applied the same patches I did, then. I'll look at it sometime, I guess. 05:28
phenny Tene: 04:39Z <mberends> tell Tene http-daemon should have been fixed a few days ago, it was mainly those changed variable interpolations in HTML strings that needed to be broken up with concatenations
mberends :)
05:36 orafu left 05:37 orafu joined 05:46 ashleydev left 05:54 s1n joined
moritz_ good morning 05:55
05:58 Mowah joined
moritz_ rakudo: my @a = { a=> 1}, {a => 2}; say @a».<a> 06:01
p6eval rakudo 1277e1: OUTPUT«12␤»
06:09 mberends left 06:14 xinming_ is now known as xinming
sorear hello moritz 06:16
06:20 agentzh1 joined 06:22 agentzh left 06:23 mberends joined
sorear Mu is a role now? :( 06:23
dalek meta: r337 | stefa...@cox.net++ | trunk/vicil (2 files):
[vicil] Commit a bunch of notes on mapping Perl 6 to the CLR
06:24
06:24 Su-Shee joined
moritz_ sorear: is it? 06:29
who says so?
sorear docs/Perl6/Spec/S32-setting-library/Basics.pod 06:30
06:31 foodoo joined
pmichaud good morning, #perl6 06:42
moritz_ sorear: don't believe the parts of S32 that weren't touched by Larry :-) 06:45
good morning pmichaud
sorear good morning pmichaud 06:54
What's NPQ, and will there be slides? 06:57
pmichaud ...NPQ? do you mean NQP? 06:58
sorear colomon's blog references "Patrick's NPQ lecture"
so I guess it was a typo
pmichaud yes, that's a typo
either that or he attended a different Patrick's lecture :) 06:59
pmichaud.com/2010/pres/yapcna-nqp # slides 07:00
sorear sweet
pmichaud I even tried to make a screencast of the talk, but I think my notebook failed to capture the audio. 07:01
after I get my slides ready for today's talk, I may try again on the audio 07:02
(so that I can capture today's talk)
07:07 am0c joined, rgrau_ left
sorear I appreciate that 07:10
jnthn morning, folks :-) 07:25
pmichaud jnthn: o/
jnthn pmichaud: ...must be early there :-)
Or late. ;-) 07:26
pmichaud early.
Need to make my slides for today's talk :-|
jnthn Ah.
pmichaud plus have an icky headache that won't go away :-|
jnthn Eww
pmichaud: Nice nqp slides! :-) 07:33
sorear morning jnthn 07:36
pmichaud jnthn: thanks
I was quite pleased to be able to write entire compilers using only nqp (and all in one file)
afk for a bit 07:37
jnthn pmichaud: Yes, the only hacky bit was getting the args from Parrot. 07:39
pmichaud: That's a good candidiate for an nqp:: absraction. ;-)
07:42 cjk101010 joined
cjk101010 hi. 07:42
sorear Hello.
jnthn Time to pay attention in $dayjob meeting again :-) 07:43
sorear Not at YAPC? 07:44
mathw pmichaud: very awesome slides 07:48
pmichaud mathw: thanks 07:51
07:54 plobsing left, Trashlord left 07:58 Trashlord joined
mathw pmichaud: I really should try writing a toy compiler in NQP, it looks great. Might help me understand Rakudo a bit :) 08:01
08:04 ejs joined
moritz_ robey.lag.net/2010/06/21/mensch-font.html looks nice 08:04
sorear mathw: have you ever used grammar/rule/token/regex in Rakudo?
Rakudo doesn't currently implement parsers itself; they're passed straight down to NQP 08:05
(which is why our Match objects are !~~ Any)
moritz_ rakudo: say Match ~~ Any
p6eval rakudo 1277e1: OUTPUT«1␤»
moritz_ sorear: you're lagging several weeks behind :-) 08:06
sorear: pmichaud and I mostly fixed up match objects; if you find more nqp leakage in them, let me know
mathw sorear: yes, I have, Form.pm is built on the things (although it doesn't work with master right now)
mberends <- noms an @ again :-)
sorear moritz_: oh? excellent! 08:07
moritz++ for stealth compiler improvement 08:08
moritz_ sorear: not so stealthy, it was both in the ChangeLog and in the last release announcement :-)
08:10 rgrau joined, ejs left
sorear is laying the groundwork for a Perl 6 compiler in Perl 6 08:13
mathw Yapsi? 08:14
sorear No 08:15
VICIL, the next iteration of Sprixel, or maybe the one after that
08:15 spinclad left, ejs joined 08:16 jedai joined
mathw Whoa, C++ doesn't have &&= 08:18
never run into that before
08:19 cygx joined, jedai left
cygx hi 08:19
phenny cygx: 21 Jun 22:21Z <sorear> tell cygx to check out search.cpan.org/perldoc?IO::Pty::HalfDuplex
mathw Hi cygx 08:20
08:20 synth left
moritz_ good morning 08:20
cygx sorear: what I really want to know is when 'Rakudo' is blocking on input from the 'Controller' so the frontend can stop polling for updates 08:21
I don't see how this can be done without modifying 'Rakudo', or whether it's feasible at all...
moritz_ cygx: you could check for a prompt from rakudo 08:22
and fail horribly if some output contains "\n>"
:-)
08:23 dakkar joined
moritz_ it's fine to cheat for now if a "real" solution is too involved 08:24
mathw Clearly the only route is to give PCT a generic way of handling a REPL, make Rakudo use that, then extend that generic method to present it as a web interface...
cygx well, you could use some of the nice ASCII special chars (like record separator or some such); but again, that would involve changes to the 'Rakudo' part
moritz_ cygx: it's not like changes to rakudo are impossible :-) 08:25
cygx moritz_: there are also some design decisions about session handling to be made (more)
moritz_ cygx: we can talk with pmichaud about the problem, I'm sure he has an opinion :-)
cygx should session be (1) per client or (2) per browser-window; should sessions be resumable (as long as they are still active)? 08:26
moritz_ how would you implement (2)? passing session identiers as GET/POST parameters?
08:26 jedai joined
cygx yes 08:27
moritz_ (2) would be preferrabel, if it can be implemented with reasonable effort
cygx that should be possible
moritz_ what do you mean with resumable? that if one closes a browser window, and opens it again, you get the same session? 08:28
cygx if you use the URL query tring for the session id, you can close the browser window and later call the same address
*string
moritz_ well 08:29
what I don't like is that if you share your current URL, you share your session
which can lead to weird action-at-a-distance
there are two possible solutions
1) never make the session id user visible (ie only use ajax calls, never redirect to a different URL) 08:30
or 2) make sessions per-client (1)
both work for me
cygx it's also possible to make it work completely without client-side scripting if you cache all output during the lifetime of a session and expose the session-id to the user 08:32
moritz_ not sure if it's worth the trouble 08:33
usually I'm all for websites that work without js
sorear cygx: you really ought to read my tells 08:34
I gave you a solution
moritz_ but if it's intrinsically interactive, you simply can't expect good user interaction without JS
sorear an unbreakable, if slightly unportable, solution
moritz_ so I'd be fine with having it work only with js
08:35 jedai left, jedai joined
sorear also, I spent quite a bit of time on IO::Pty::HalfDuplex and I'd like to see it used for something other than nethack 08:35
moritz_ if it works on debian, that's fine 08:36
the server environment doesn't need to be all that portable
sorear developed on debian 08:37
cygx sorear: so recv() does exactly wht I want? I saw the tell, but didn't realise it's what I looked for
sorear cygx: yes. doesn't return until the child process blocks on STDIN 08:38
actually read, not recv
cygx would this mean that partial output can't be streamed to the client? fine with me, but what do others think? 08:40
moritz_ works for me
sorear partial output can be streamed, but you'll want to set a specific latency 08:41
or timeout
moritz_ we want something running first; it can later be refined if it turns out that's needed
jnthn Somebody *will* try for 1..* { .say } :-)
sorear although if you just want to stream, you don't really need to find out if output has ended, do you?
moritz_ jnthn: somebody *will* get a timeout
08:42 wolverian joined
jnthn ;-) 08:42
Will the Rakudo instance also get killed? 08:43
sorear I think that's spelled SIGXCPU anyway.
jnthn After a while?
moritz_ yes
cygx sorear: the client has to poll for output (AJAX long polling - not the best solution - chunked XHR would be superior, but only works in FF)
it's just a difference between how many calls have to be made
sorear cygx: ah. ok. 08:44
hrm. maybe I should push out 0.03 with the ability to return partial output?
cygx it would be nice from a UI standpoint, but complicates the implementation 08:46
sorear you wouldn't have to use it immediately 08:48
08:55 clintongormley joined 08:58 thebird joined 09:01 yahooooo left
pmichaud wonders if we should trap "for 1..* { .say }" into responding with "Sorry, Dave, I cannot do that." 09:08
arnsholt I think the best solution is to resource limit the Rakudo processes and have some kind of timeout 09:10
moritz_ uhm, why?
arnsholt Can't solve the halting problem anyways =)
moritz_ (to pmichaud)
pmichaud: we can try, just not finish
rakudo: for 1..* {.say} 09:11
pmichaud forgot to put the smiley at the end.
moritz_ ok :-)
arnsholt Oh, right ^^
p6eval rakudo 1277e1:
..OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤11␤12␤13␤14␤15␤16␤17␤18␤19␤20␤21␤22␤23␤24␤25␤26␤27␤28␤29␤30␤31␤32␤33␤34␤35␤36␤37␤38␤39␤40␤41␤42␤43␤44␤45␤46␤47␤48␤49␤50␤51␤52␤53␤54␤55␤56␤57␤58␤59␤60␤61␤62␤63␤64␤65␤66␤67␤68␤69␤70␤71␤72␤73␤74␤75␤76␤77␤78␤79␤80␤81␤82␤83␤84␤85␤86
sorear Why are calls and returns so different in Perl 6? 09:15
moritz_ are they? 09:16
return $capture is really a call
sorear Calls take a Capture
Returns take anything
Calls bind to a signature
Returns don't
pmichaud (yes they do) 09:17
my (Int $a, Str $b) := foo();
that's a signature bind
Returns also take a capture
sorear always?
pmichaud at least conceptually, yes. 09:18
sorear returns are more flexible than calls
09:18 masak joined
sorear oh 09:18
so, my $a = foo(); $a.WHAT # Why no Capture?
pmichaud implementations are free to cheat a bit, but conceptually the arguments to a return are treated as a capture
moritz_ sorear: captures of one argument are allowed to degrade into its argument, iirc 09:19
jnthn pmichaud: returns take a Parcel.
pmichaud jnthn: yes, that's more accurate.
moritz_ and captures in general degrate into parcels, iirc
pmichaud but calls take a Parcel too.
jnthn pmichaud: And important difference.
If you retnrn :a<foo> it's a positional.
moritz_ is that spec? 09:20
jnthn (though if you do my (blah signaure) := foo();
Then it's coerced into a Parcel
moritz_: Yes
sorear *coerced into a Capture
jnthn sorear: yes
:-)
jnthn back to dayjob :-)
pmichaud the point being that returns are much closer to calls than they are different.
jnthn pmichaud: Yes :-)
And conceptually a call is a Parcel coerced to a capture.
pmichaud in the case of my $a = foo(); it's the = that causes its rhs to be acted upon as a Parcel 09:21
jnthn So I guess it is symmetic after all.
sorear Next question: Are Parcels representationally monomorphic, or is user code allowed to make fake parcels?
pmichaud i.e,. one has to use a special syntax to get at the underlying capture
(just as one has to use special syntax in a signature to get at the underlying capture in a call)
I'm not sure I understand "fake parcels" 09:22
moritz_ user-defined Parcel types
pmichaud I don't know.
haven't explored that part yet.
sorear pmichaud: objects which answer true to .HOW.isa($_, Parcel)
(and they don't necessarily inherit from Parcel...) 09:23
09:23 ab5tract left
sorear s/isa/does/ 09:23
pmichaud I don't see anything that would specifically prevent that atm.
09:23 ab5tract joined
pmichaud as long as those objects know how to respond to .Capture, seems like it could work. 09:23
masak oh hai, #perl6 09:25
moritz_ lolitsmasak
masak pmichaud: fancy seeing you here at this time of day :)
pmichaud masak: o/
masak: yes, I'm trying to get my slides ready for today's talk. 09:26
masak procrastinating++
pmichaud (7.5 hrs from now)
I really wish I could say it was due to procrastination.
This time, I'm innocent of that charge.
masak I see.
pmichaud We had another medical emergency on Friday (and no, it was not my wife this time) 09:27
and so the time I had set aside to work on slides was spent in a hospital again.
(and yes, all appears to be well now, but that wasn't clear until Sunday morning.) 09:28
anyway, I'm writing slides now. :-)
masak don't let me detain you :) 09:29
pmichaud Fortunately(?), I have *tons* of experience in creating presentations only hours before they're needed.
:-)
arnsholt I don't think it's possible to graduate from a university without learning that =)
moritz_ it is, in fact 09:30
my studies only involved 3 mandatory presentations, all of which were well scheduled in advance :-)
arnsholt Heh. That means you're a better person than me, moritz_ =)
Well, I haven't done many presentations either, but term papers, exams and so on... 09:31
moritz_ not quite. Only that my fear of failure drives me to write the slides earlier than you
arnsholt Or that 09:32
Either way, I have way too much experience doing preparations too late 09:33
moritz_ Q: how do you know you spend too much time on Perl 6? A: When you write \capture instead of \caption to set titles for your figures in latex
09:35 diffly joined, diffly left
masak mathw: Java doesn't have &&= either. 09:37
jnthn What does Java have?
masak a = a && b, I guess.
jnthn masak: heh. I was being snarky. :-) 09:38
masak jnthn: yes, I guessed that. :)
jnthn :P
09:38 yinyin left
masak I just have this habit of answering joke questions seriously... :) 09:38
jnthn masak: I'm escaping to the UK tomorrow and amd gutted that I'm missing out on sill. ;-)
*am
cygx client-server-communication design proposal for try.rakudo.org: nopaste.snit.ch/21462
masak jnthn: no, you're not. :) 09:39
jnthn :)
moritz_ reads
jnthn masak: I will take some JungleRoar to feed to my family though ;-)
masak cygx++
jnthn: excellent.
cygx: I prefer 'cookie' to 'session-id' in address, if only because it looks nicer. 09:40
moritz_ agreed
cygx: minor details: I'd like the server not to send a Refresh-header if JS is available 09:41
cygx: so that the 204 No Content responses become unnecessary
there can be an additional flag, like &js=1 or so 09:42
set by the javascript code, if exists
09:42 cls_bsd left
cygx moritz_: my example frontend actually already doeas this 09:43
moritz_ great
sorear -> sleep
moritz_ cygx: please also put these notes into the repo 09:45
dalek meta: r338 | stefa...@cox.net++ | trunk/vicil/ (6 files):
[vicil] Very start of prototyping for compiler framework
09:46
cygx moritz_: the idea behind using a 204 response is so that the same mechanism can be used in the scripting and no-scripting cases (just a plain html form submit); also, it decouples sending a request from waiting for an answer to account for the cost of the frontend-controller-rakudo roundtrip and allow the script to produce all its output 09:47
moritz_ cygx: makes sense. If you prefer that way, I'm fine with it 09:50
cygx moritz_: also, I think the session-id need not be user-exposed even if we don't use cookies; the only problem I see is a manual reload: if the user hits F5, a new session would be generated... 09:52
dalek ok: c7b73a0 | (Hongwen Qiu)++ | src/classes-and-objects.pod:
[classes-and-objects.pod] fix the answer for exercise 3.
moritz_ cygx: unless we use a hidden form for the session id, and the browser preserves the value in that form 09:54
I can't help but thinking "I'm sure in HTML5 this would all be much simpler" 09:55
cygx ;) 09:56
moritz_ but maybe it isn't
and I really don't know any html5, so I can't tell
avar the indenting for the last book commit looks broken 09:57
moritz_ right 09:58
avar: want to fix it?
hugme: add avar to book
hugme hugs avar. Welcome to book!
avar nah, doing $otherstuff, but thanks 09:59
moritz_ ok, I'll do it then
10:01 ejs left
cygx moritz_: using visible session-ids would make it possible to pass links to them around: Bob has a problem, sends his session address to #perl6 and Alice can see excactly what Bob did and even show him how it's done correctly 10:01
moritz_ cygx: but it's very confusing as a default 10:02
cygx: I'd rather have it hidden, and have a "share this session" link
*hidden by default, that is
10:03 lestrrat is now known as lest_away, JimmyZ joined
JimmyZ hello masak 10:03
masak: see gist.github.com/447846 10:04
dalek ok: 1d1c812 | moritz++ | src/classes-and-objects.pod:
fix indenting from last commit
moritz_ JimmyZ: seems like a byte order mark accidentally inserted in a core file 10:05
10:06 ejs joined
JimmyZ moritz_: maybe, I can't see it. 10:07
moritz_ JimmyZ: hexdump will tell you. git diff will also show that something's changed, even it doesn't show what's different 10:08
cygx moritz_: anyway, the first decision which should be made is to allow multiple sessions per client; if we don't, we can use cookies and the problem goes away; if we do, afaik it's either using a user-exposed session-id or breaking manual page-refresh
moritz_ cygx: then I'm in favor of one session per user. But whoever implements it has the final say :-) 10:09
cygx moritz_: ok; I'll write that up and add it to the repository later today 10:11
I'm off for now...
moritz_ cygx++ # lots of work so far 10:12
cygx: thanks, and have fun
10:12 cygx left
JimmyZ moritz_: yes, removed the line and re-add it, compiles now 10:14
moritz_ JimmyZ: I'd also recommend to use an editor that you can configure not to add BOMs to UTF-8 files 10:15
10:16 masak` joined
moritz_ it doesn't make much sense 10:16
JimmyZ moritz_: I didn't edit the file, I just git pull it from github
10:16 masak left
moritz_ JimmyZ: from the rakudo repository? 10:17
JimmyZ yes
moritz_ JimmyZ: I know a patch of yours once introced a BOM, but I didn't merge that part 10:18
that's curious
arnsholt is not on the best of terms (pun not intended =) with NQP's LTM
JimmyZ moritz_: let me check again. 10:24
10:25 ejs left 10:26 ejs joined 10:27 aCiD2 joined 10:30 rv2733 joined
colomon is now trying to figure out what NPQ could stand for... 10:38
"new perl quines" 10:39
"nano porcupine quills" 10:41
literal next question please 10:42
colomon literal: that's NQP 10:43
literal oh, right
www.urbandictionary.com/define.php?term=npq
colomon oh, nice! ;) 10:44
10:47 lest_away is now known as lestrrat 10:55 JimmyZ left 11:04 masak` is now known as masak 11:06 agentzh1 left
masak another perl6 logo proposal: intertivity.com/share/camelia_esskar_perl6.png 11:10
11:15 christine left, christine joined 11:20 Zapelius joined
_sri masak: i don't think it's meant as a proposal, it's a stock icon 11:21
masak aye, might be.
_sri: both that one and yours, but I wouldn't say that they have as much "personality" as Camelia. 11:22
phenny: tell JimmyZ if moritz_ is right, and I think he is, a BOM must've snuck into your src/core/metaops.pm -- maybe you've edited that file? 11:23
phenny masak: I'll pass that on when JimmyZ is around.
jnthn I hate it when a text editor sets up me the BOM.
Notepad on Windows does that. :-|
masak jnthn: that never happens to me. guess all the editors I use are... insufficiently insane. 11:24
_sri masak: "both that one and yours, but..." what did you mean? 11:27
masak um. meant to say "I like the look of both that one and yours".
_sri ah
masak sometimes wishes he drank coffee
_sri well, now at least i have something to point at when people say i don't do enough for perl marketing ;p 11:28
masak :) 11:29
moritz_ rakudo: say (* + 1).signature.perl 11:41
p6eval rakudo 1277e1: OUTPUT«:(;; Mu $x)␤»
moritz_ rakudo: say (* + 1).WHAT
p6eval rakudo 1277e1: OUTPUT«WhateverCode()␤»
moritz_ rakudo: say (*.foo).WHAT
p6eval rakudo 1277e1: OUTPUT«WhateverCode()␤»
moritz_ rakudo: say (*.foo).signature.perl
p6eval rakudo 1277e1: OUTPUT«:(;; Mu $x)␤»
masak std: :(;;) 11:43
p6eval std 31405: OUTPUT«===SORRY!===␤Malformed parameter at /tmp/bs1NpCYdFo line 1:␤------> :(⏏;;)␤ expecting any of:␤ name␤ parameter␤ signature␤ statement end␤ statement list␤Parse failed␤FAILED 00:01 111m␤»
masak std: :($x ;;)
p6eval std 31405: OUTPUT«ok 00:01 109m␤»
masak std: :(;; $x)
p6eval std 31405: OUTPUT«===SORRY!===␤Malformed parameter at /tmp/nAPAJQLPjT line 1:␤------> :(⏏;; $x)␤ expecting any of:␤ name␤ parameter␤ signature␤ statement end␤ statement list␤Parse failed␤FAILED 00:01 108m␤»
masak submits rakudobug 11:44
.signature.perl sometimes returns unevaluable signatures
kthakore ??
11:44 knewt2 left
masak kthakore: ¿¿ 11:45
kthakore masak: are you haxing the NETz. OMG you are so leet!
masak kthakore: I'm only leet on Thursday mornings. today I'm simply hawt.
moritz_ std: sub f(;; Mu $x) { } 11:46
p6eval std 31405: OUTPUT«===SORRY!===␤Malformed parameter at /tmp/KZbMW7qeRJ line 1:␤------> sub f(⏏;; Mu $x) { }␤ expecting any of:␤ name␤ new name to be defined␤ parameter␤ routine_def␤ signature␤Parse failed␤FAILED 00:01 108m␤»
moritz_ masak: it's a stdbug
masak oh.
11:46 knewt2 joined
moritz_ masak: the ;; means "not included in MMD" 11:46
kthakore hah ok
moritz_ and last I looked it was in S06
kthakore masak: I will have more to show when I get rakudo finaly compiled
moritz_ kthakore: are you on windows? 11:47
kthakore moritz_: no linux
masak moritz_: you're right. for some reason I didn't think ;; was allowed in the beginning.
but it must be.
kthakore moritz_: it is super slow compile on grammar
masak TimToady: STDbug above.
kthakore src/Perl6/Grammar.pm
masak kthakore: how much RAM do you have?
kthakore that takes for ever to compile
masak: 2gb 11:48
masak should be enough.
moritz_ then it should be no problem
kthakore bah I will wait more
moritz_ kthakore: do you use a sufficiently recent parrot and rakudo?
kthakore it ctrl-z it last night
moritz_: trunk and trunk
moritz_ huh.
kthakore: do you compile parrot with --optimize?
kthakore oops no 11:49
moritz_ last time I checked the difference wasn't huge, about 20% 11:50
but it might have changed since then
kthakore moritz_: ok I will optimize and try aggain
gotta get to work
jnthn masak: The ;; at the start is fine
kthakore cya
jnthn masak: Though could be tweaked by marking the parameters as mmd-able.
But makes no difference for non-routines really. 11:51
But I won't object if you patch it.
masak jnthn: :)
moritz_ in case somebody does &multi.push(*.sort) or so
jnthn moritz_: eww
kthakore moritz_: correct? -> perl ./Configure.pl --optimize
jnthn moritz_: good point
moritz_ kthakore: in parrot, yes
jnthn Yeah, let's fix it.
kthakore ok
thanks
moritz_ kthakore: takes about 3 minutes to compile rakudo on an optimized parrot here
parallel make, with two processes 11:52
user 3m28.903s
so should still be <4min with a single core
takadonet morning all 11:54
11:55 colomon left
masak \o 12:00
eiro o/
12:01 synth joined 12:10 envi^home joined 12:20 redicaps left
mathw masak: Java has PAIN and SUFFERING 12:21
masak mathw: still loads better than C++, as I understand it. 12:22
mathw hahahahahahahaha
no
I refuse to accept any language which can't make user-defined types integrate neatly into the existing environment 12:23
masak that gets rid of everything except for Lisp, then. :)
and Smalltalk.
perhaps Forth gets to be in that exclusive club too. 12:24
moritz_ forth has user defined types?
masak not sure it has types at all. 12:25
but when you define something new, it blends in :P
mathw Forth just has words
C++ types *almost* integrate properly 12:26
C++1x improves that situation rather muchly
but Java just doesn't bother at all
masak oh, it's 1x now?
moritz_ masak: just like QBasic. The (empty) set of user-defined types blends in perfectly
mathw well it didn't come out before 2010
so yes, it's 1x now :)
current roadmap looks like end of 2011 for final publication by ISO
12:26 bphillips joined
mathw I'm not holding my breath 12:26
masak moritz_: would be quite fun to find the sources for QBasic, and extend it with classes. 12:27
moritz_ holding your breath for > 1 year would be harmful :-)
masak: I don't believe so :-)
masak CLASS Complex; HAS .X; HAS .Y; ENDCLASS 12:28
hm, bad attr naming...
moritz_ it's stunning how similar that looks to LOLCODE, at first sight :-) 12:29
and just because of the ALL CAPS and HAZ, erm HAS
masak LOLCODE also desperately needs classes.
mathw LOLCODE is rather inspired by the syntax of BASIC I think 12:30
masak: well then implement some :)
masak :)
might be a fun weekend hack some time.
moritz_ OH HAI I ARE TYPE Complex; I HAZ RE; I HAZ IM; CIAOU
mathw but you have to get the terminology right 12:31
arnsholt I'd drop TYPE, just "OH HAI I R Complex"
moritz_ probably
masak IM IN UR Complex 12:32
it could be an excellent opportunity to explain the "finer points" of OO.
moritz_ and finish with IM OUTTA HER
mathw HOW TO MAEK Complex: U GIVS ME re N im. 12:33
moritz_ did you mean HOW IS Complex MAKED? 12:34
:-)
mathw something like that 12:35
bbkr rakudo: say ++"1"; # should this be parsed as +(+"1") insetad of as prefix<++>: ?
p6eval rakudo 1277e1: OUTPUT«Cannot assign to readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 11:/tmp/csL1bwhZz5␤»
slavik I maked you a complex, but I eated it
moritz_ bbkr: nope. Parsing is independent of types
mathw slavik: isn't that an abstract class? :) 12:37
slavik not a clue
I wonder if that could be the java's equivalent of an OOM on allocation
or something
bbkr rakudo: my $i = 0; say ++$i; # then this one should return 1, isnt it?
p6eval rakudo 1277e1: OUTPUT«1␤»
moritz_ yes, and it does. 12:38
bbkr moritz_: thanks, it's clear now that double num context forcing has to be in brackets. 12:39
moritz_ what does double numeric context give you that single numeric context doesn't? :-) 12:40
12:40 masonkramer left, masonkramer_ joined
bbkr nothing, i'm just testing rakudo with weird usage :) 12:41
rakudo: say Q{}.WHAT; # this one is surprising...
p6eval rakudo 1277e1: OUTPUT«Str()␤»
moritz_ why?
bbkr rakudo: say X{}.WHAT; 12:42
p6eval rakudo 1277e1: OUTPUT«Could not find sub &X␤ in main program body at line 11:/tmp/Z9TJZ8oVTa␤»
moritz_ Q is an ordinary string quote
like qq and qw and qx etc.
(at least it's not surprising if you've read S02 :-)
bbkr indeed "In addition to q and qq, there is now the base form Q" :) thanks! 12:43
rakudo: say "Q{1}"; # something is messy with Q interpolation? One may expect "Q{1}" (not interpolated) or "1" (interpolated), this output is some hybrid of "Q" and interpolated block {}. 12:49
p6eval rakudo 1277e1: OUTPUT«Q1␤»
moritz_ that's expected 12:50
the Q is just part of the string
like in
rakudo: say "1 + 2 = { 1 + 2 }"
p6eval rakudo 1277e1: OUTPUT«1 + 2 = 3␤»
moritz_ would you expect that to only print 3?
mathw compare to
rakudo: say Q{1};
p6eval rakudo 1277e1: OUTPUT«1␤»
bbkr thanks. your explanation is instant as always and makes perfect sense :) 12:52
moritz_ :-) 12:54
12:55 cognominal left
slavik I don't get it ... why doesn't the 'Q' get printed? 12:55
takadonet wonders if moritz_ and masak are perl 6 bot from the future. Send back to help us complete Perl 6 sooner
12:56 cognominal joined, colomon joined
PerlJam greetings #perl6 12:56
colomon o/
greetings from YAPC::NA
PerlJam colomon: did you finally meet pmichaud? :)
moritz_ takadonet: I will never tell you
pmichaud PerlJam: he's sitting next to me
moritz_ takadonet: erm, I never told you
colomon :) 12:57
masak takadonet: if time travel existed, US Patent 1 would be the time machine.
moritz_ damn, time is so confusing when you have loops in there
slavik masak: agreed
PerlJam masak: If you invented a time machine, why would you *care* about US patents? :)
moritz_ because patent 1 would be such a cool thing
masak PerlJam: because of future and past competitors, duh :)
slavik my Perl prof in college had a theory, that if you invent a time machine, you technically don't have to do anything, because you would already have it since you would give it to yourself. 12:58
so the fact that I don't have a time machine, I have not invented it. :(
moritz_ it's a classical bootstrapping problem
masak slavik: there's an Animaniacs episode about that kind of thinking.
PerlJam masak: and because the US is the best of nations from now until the end of time? :)
dalek ok: 87323a0 | (Hongwen Qiu)++ | src/regexes.pod:
[regexes.pod] fix typo
12:59
masak PerlJam: speaking of that, how're we doing on the Decline and Fall of Western Civilization?
slavik animaniacs is an awesome cartoon, do they still run it?
PerlJam masak: we're half way there!
masak PerlJam: excellent.
kolibrie I'm giving a talk tomorrow about viv (and mentioning gimme5 and its history), and would like to focus in on cool Perl 5 things either in viv or Cursor.pm code, or cool things in the Perl 5 code it generates (such as STD.pmc)
So if anyone has any cool things they would like to bring to my attention, I would love to hear about them in the next 24 hours or so 13:00
PerlJam kolibrie: The coolest perl 5 thing is that it's running Perl 6 ;)
kolibrie yes, that is true (any why I thought of doing the talk in the first place)
slavik I wonder, is there a page that shows how much of spec tests various perl6 implementations pass? 13:01
mayb even a list of spec tests?
moritz_ slavik: I don't know such a page
slavik I think it would be useful ... 13:02
for me at least :P
moritz_ then create one
then use it
colomon Do any of the non-Rakudo implementations pass significant quantities of spectests?
moritz_ colomon: pugs did, and I guess till does
slavik and then there can be an rss feed ... so we'd be like "yay!" when a new spec test is passed
bbkr slavik: you can always run testsuite yourself and parse output.
moritz_ also elf wasn't too bad
colomon The spec is changing faster than those implementations are.
moritz_ right, neither pugs nor elf is updated anymore 13:03
which is a real pity
I think mildew supports lots of features, but offers little usability, and little test counts
slavik so rakudo is where the focus is?
rakudo say 2**64
rakudo: say 2**64 13:04
p6eval rakudo 1277e1: OUTPUT«1.84467440737096e+19␤»
slavik :(
colomon slavik: there are people working on other new implementations, but they are still pretty immature.
moritz_ the people? *SCNR* :-)
colomon moritz_: no comment. ;) 13:05
13:05 LionMadeOfLions left 13:06 LionMadeOfLions joined
PerlJam Perl 6 is just waiting for a critical mass of implementations before it bursts onto the scene and takes the programming world by storm 13:07
pugssvn r31406 | masak++ | [t/spec/S32-str/encode.t] two new tests
r31406 |
r31406 | Testing postcircumfix:<[ ]> on Buf. Skipped for now.
13:08 ejs left
pugssvn r31407 | masak++ | [t/spec/S32-str/encode.t] added another test 13:10
r31407 |
r31407 | Testing that Buf ~~ Positional.
mathw PerlJam: well those implementations also have to be in suitable states
kthakore PerlJam: well I am going to be trying parrotSDL from Perl6 soon :)
13:11 spinclad joined
kthakore PerlJam: is that part of the strom? 13:11
bbkr Rakudo is so far the best spec compatible, most stable and fastest of all P6 releases out there (and with cleanest code). So it has big chances to become "primary" P6 implementation.
PerlJam bbkr: fastest?
are you sure?
bbkr comparing to pugs? sure
masak bbkr: Yapsi is more stable than Rakudo. 13:12
bbkr how many spectests does Yapsi passes?
mathw masak: but Yapsi needs Rakudo to run...
masak bbkr: also, Yapsi is official; Rakudo isn't.
mathw: your point being...? :) 13:13
mathw And I thought there was no such thing as official
masak bbkr: none so far.
mathw it's Perl 6 if it passes the spectests
PerlJam mathw: didn't you see the announcement? It said "official". I saw it.
masak I'd imagine Yapsi will start passing spectests this autumn.
13:14 bluescreen joined, bluescreen is now known as Guest17144
aCiD2 why are there so many implementations of the spec? 13:15
PerlJam aCiD2: variety is the spice of life.
moritz_ aCiD2: because various people started various compilers
masak aCiD2: different aspects being explored at the same time.
aCiD2 it's also a nice way to slow down getting a perl6 that people can use out the door :)
mathw no, not really
PerlJam aCiD2: prove it
aCiD2 i guess, I can't see why you can't explore different aspects in the same codebase
moritz_ that's rather simple to answer 13:16
Perl 6 is a very complex language
masak aCiD2: you'll see it soon enough :)
moritz_ so every compiler starts out as a simplification
and most simplifications not easily generalized in all dimensions
mathw Another reason is that nobody was really sure how to implement Perl 6 in the best way. That question still hasn't been answered. 13:17
Another reason is that multiple implementations can be very useful.
PerlJam moritz_: so, pugs simplified on syntox, smop simplified on oop, and rakudo simplified on grammars (so to speak)
er, s/syntox/syntax/
slavik pugs for math based perl
pmichaud slide preview for today's talk: pmichaud.com/2010/pres/yapcna-rakudo/
slavik it would be awesome if different perl6 implementations could talk to each other 13:18
pmichaud comments/suggestions welcomed
moritz_ PerlJam: just the other way round. s/implified on/explored/g
slavik: how would that look like?
pmichaud especially things I forgot but should mention or mentioned but should have forgotten :)
PerlJam moritz_: yeah, I guess I was meaning "simplified from the the direction of" 13:19
pmichaud: I like that "R* is not" slide :)
13:19 Guest17144 left
pmichaud PerlJam: yes, I liked the way it came out also. 13:20
masak pmichaud++ # seen first 10 slides so far, looks really good
slavik moritz_: I am not sure ...
13:20 cls_bsd joined
slavik moritz_: maybe some java style messaging or something? 13:20
moritz_: that is where it would make sense
masak *lol* at "Where is the official Perl 6..." "No." 13:21
slavik moritz_: think of it as running module on other implementations
Su-Shee pmichaud: I buy the rakudo adventure edition!
slavik as in math.pm can be run on pugs and myprogram.p6 can be run on rakudo and make calls to math.pm running on pugs
bbkr 's recipe for good presentation is to use Steeve Jobs quotes ("amazing", "fascinating", "great"...) mixed with Java naming ("enterprise", "business solution"...) :P
slavik or something
mathw pmichaud: good slides, so backtracking in regexes is fairly easy is it? Good :D 13:23
pmichaud mathw: well, easy-ish for me, since I know how I intended the design to ultimately work
slavik what city is PDX?
pmichaud the main reason it doesn't exist has been lack of tuits
slavik: Portland, OR 13:24
mathw pmichaud: I just really want to be able to get Form to work nicely without having to rewrite it to not backtrack
PerlJam slide #42 pmichaud++
slavik I see
mathw which I know is enormously selfish of me, but... :)
moritz_ laziness++
pmichaud delegation++
Su-Shee PerlJam: I'm just laughing at "The one module you can't believe we don't have yet" :)) 13:25
PerlJam Su-Shee: yep :)
mathw I don't know what that module is
I can think of a few...
moritz_ pmichaud++ # awesome slides. I wish I could be there, and watch the responses from teh audience 13:26
Su-Shee pmichaud: maybe you could emphazise a little that you plainly don't need a "complete" distribution/release for many modules-to-be-written.
PerlJam pmichaud: you just *know* that even after all the care you've taken in slide #12, that the first question you're going to get at the end of the presentation is "So when will the official Perl 6 release be?"
(or some variant thereof)
pmichaud PerlJam: "No." 13:27
jnthn back from meetings :-)
moritz_ that's a good response :-)
masak pmichaud: I'm very happy about that presentation.
pmichaud I thought about saying "Mu" as the response, but "No." is more direct. :)
mathw I think you do just have to keep beating people over the head with it
13:27 gbacon joined
mathw o/ jnthn 13:27
Su-Shee pmichaud: I _just_ wanted to suggest Mu. :)
masak "No." is preferrable, I think. 13:28
even though "Mu." is more fitting in some senses.
pmichaud Su-Shee: I'm trying to figure out how/where I'll emphasize that incomplete distributions are often 'good enough'; thanks for the suggestion.
Su-Shee or we invent a koan appropriate. "it's not the release you're waiting for, it's the waiting which will release you" or something. ;)
moritz_ rakudo: say "2010-06-30" ~~ Mu
p6eval rakudo 1277e1: OUTPUT«1␤» 13:29
PerlJam heh
Su-Shee pmichaud: I've realized it while doing some DBI stuff.. essentially it's really just a little if else, push, an object here and there and suddenly, there's a "feature".
PerlJam Su-Shee: I think more of "stop waiting!" respsonse might be better.
colomon doesn't want to see the slides before the presentation. :) 13:30
masak "If someone told you Perl 6 was released already, would you start using it?" "Yes." "Perl 6 is released already."
PerlJam masak++
moritz_ Su-Shee: that's how development really works. It's the same for CGI scripts, modules and compilers
PerlJam btw, I looked at Math::Model for the first time last night. Quite cool.
moritz_ PerlJam: thanks
pmichaud ah, found it. 13:31
PerlJam And a perfect example of why you shouldn't wait
moritz_ the codebase still feels a bit clumsy in some spots
PerlJam clumsy but *useful*
moritz_ I thought I understood how it's supposed to work, modeled two examples, found out it was all wrong...
Su-Shee moritz_: my point is that I didn't even miss "more" stuff. that I can't do certain things on those non-native arrays isn't rakudo's fault. (I assume. ;)
jnthn pmichaud: "Object metamodel in Perl 6" 13:32
pmichaud: ENOTYET :-(
PerlJam "Hmm. I want to do this cool thing, but Perl 6 isn't 'official' yet. I think I'll wait." then you miss out on the cool thing. It passes you by
moritz_ re-wrote it, and changed my understanding of it twice
that kinda shows in the code base
pmichaud jnthn: "NQP" more accurate? or still not yet?
masak PerlJam: those people should totally check out Yapsi. 13:33
jnthn pmichaud: In that case, "partially"
pmichaud: We'll be mostly in NQP later on this year though.
Su-Shee PerlJam: well essentially I believe that people mix up "basic features of the language which are really essential to do this or that" and "having not a nice library environment yet".
pmichaud Su-Shee: can I quote you directly? 13:34
PerlJam Su-Shee: yeah, probably.
jnthn pmichaud: On critical items remaining, "Backtracking in regexes" ==> I think we have that partially? Just not fully?
masak jnthn: correct.
Su-Shee pmichaud: sure. (which one? :)
pmichaud oh, I'm missing "subrules" there.
colomon so.... is there a good reason I shouldn't use "use TrigCommon" (or something like that) to stick all the common stuff in the different trig tests in simple common .pm6 file?
jnthn pmichaud: as in, I think the slides maybe overstate that todo to make it sound like we have no backtracking
masak pmichaud: subrules and capturing parens.
PerlJam Su-Shee: the people who want a "nice library environment" aren't really early adopters though, so it's okay :)
pmichaud 13:26 <Su-Shee> pmichaud: maybe you could emphazise a little that you plainly don't need a "complete" distribution/release for many modules-to-be-written.
13:35 Guest17144 joined
mathw Well actually, writing modules is one of the things that needs to be done to make a "complete" distribution 13:35
jnthn pmichaud: Also, you forgot to include the release date for 6.0.0. ;-)
Su-Shee pmichaud: of course, go ahead.
jnthn <duck>
mathw So if you want such a thing, write some modules!
moritz_ colomon: no. Module usage is quite common in the test suite, if a bit clumsy to load
jnthn pmichaud++ # great slides
pmichaud: And good to have read before I prepare mine for Belgium. :-) 13:36
moritz_ colomon: put it in t/spec/packages, BEGIN{ @*INC.push: 't/spec/packages' }; use TrigCommon;
colomon moritz_++
Su-Shee mathw: I mean the difference between having the necessary basics to bind SSL and actually writing the bindings and having later something like SSL.pm The former is something rakudo would have to deliver, the latter isn't. 13:37
bbkr rakudo: class X is Cool {} # yay, compiles :)
p6eval rakudo 1277e1: ( no output )
mathw Su-Shee: yes 13:38
there are a lot of cool modules to write once NCI is vaguely stable
Su-Shee mathw: on that notion we two probably would just need GIR in zavolaj and hey, what else do you really need to bind Gtk?
mathw umm... nothing?
Su-Shee language-wise not really much I'd say... working classes, methods, an operator here and there.. callbacks.. 13:39
PerlJam I was thinking the other day that it would be neat to get Padre written in Perl 6. Getting Wx working would be a good first step.
colomon rakudo: my %a = a => 10, b => 32; say :%a.perl
p6eval rakudo 1277e1: OUTPUT«"a" => {"a" => 10, "b" => 32}␤» 13:40
masak PerlJam: because Padre is too fast currently? :P
Su-Shee *haehaehae* ;)
colomon not quite as nice as show, I guess....
PerlJam masak: Perl 6 needs a "killer app" or two. Why not an editor? 13:41
masak: beside, the human is still the bottleneck in editors.
masak PerlJam: absolutely. go for it.
Su-Shee PerlJam: because there's already thousands of them and the stuff you'd have to install just to get this specific editor running.. no way.
moritz_ PerlJam: the editor market is mostly saturated... you create killer apps by opening up a new market, not by trying to occupy an existing one 13:42
PerlJam Su-Shee: see ... at this stage of Perl 6 developement, you're supposed to be *en*couraging people to develop perl 6 apps, not *dis*couraging them ;)
Su-Shee unless you really really make it better.
PerlJam moritz_: you too! :)
moritz_ PerlJam: I do want to encourage you to write a killer app - I just don't think an editor will be it 13:43
Su-Shee PerlJam: if you really want "apps", you're running into the "environment" problem very fast. let's start with "useful modules" first. ;)
moritz_ unless you have some *really* great ideas you haven't shared yet
PerlJam moritz_: trust me, if I had any great ideas, you guys would all know about them :) 13:44
slavik I take it rakudo* will be a properly installable release?
moritz_ slavik: yes
slavik sweet, finally :P
Su-Shee \o/ 13:45
moritz_ uhm
13:45 ashleydev joined
moritz_ all the last rakudo releases were properly installable 13:45
slavik `make install` does not count
moritz_ why not?
slavik or rather maybe it does
pmichaud Su-Shee: slide 43 (updated)
PerlJam slavik: how do you think you'll install R*?
slavik when I ran make install, the libraries were referenced to my home dir which is where the source was
and proper PERL6LIB?
PerlJam slavik: note, there are .debs and .rpms and such of Rakudo compiler releases now. 13:46
slavik nice
PerlJam: any links?
PerlJam not off the top of my head as I don't use them. :)
moritz_ slavik: 'make install' copies Test.pir (and Test.pir) into a location where the installed rakudo will find them. If that's not the case, please file a rakudobug
s:2nd/pir/pm/
slavik this was a while ago though
Su-Shee pmichaud: :) github.com/mberends/fakedbi/blob/ma.../mysql.pm6 - that is just a loop, class, method, push (ok the actual stuff is the binding itself of mberends and jnthn of course..) 13:47
pmichaud (adding "use lib" to the "Items known to be missing..." slide
moritz_ use "lib" depends on use <list> in general 13:48
which is NYI
pmichaud right.
moritz_ which is why I haven't written lib.pm yet :-)
pmichaud we might have that by R*, but i'll put it down as missing (and because I know it's frequently asked here)
masak jnthn: I'm running up against an invisible obstacle when adding postcircumfix:<[ ]> to Buf. seen anything like this before? gist.github.com/448480 13:52
(the test that fails is one that uses .[] on a Buf object)
moritz_ masak: try it with a single scalar paramater first 13:53
masak will do.
moritz_ positonal should then handle the general case with *@indices
masak oh, it's that way around? I keep forgetting. 13:54
pmichaud some Perl 6 Evil from TheDamian:
$foo.perl # dumps the content of foo
:$foo.perl # dumps the content of foo -and- tells you its name
moritz_ is that the right precedence? 13:55
masak ah, that explains colomon's evaluation above.
moritz_ seems like
masak moritz_: yes, terms are the tightest. 13:56
method postfix comes second.
pmichaud :$foo is a colonpair (term), so yes, it's higher precedence
colomon masak: yes, I was checking to see if Damian's magic worked in Rakudo. :)
masak reason it looks wrongish is probably that we're used to ~ and + and ? binding a bit looser. :)
masak is very happy TheDamian is exploring Evil in Perl 6 13:57
pmichaud his next talk is "(Re)Developing in Perl 6" :)
colomon we're about to get a full dose of it.
pmichaud I'm curious to see if he deftly avoids rakudobugs or plows right into them for us all to see :)
13:57 aesop_ left
masak wishes he were there 13:58
Su-Shee
.oO( a really detailed perl 6 book will have about 1500 pages...)
13:59
masak: well you are presenting stuff like that at the yapc:eu, won't you? ;)
jnthn masak: *@indices 14:00
masak Su-Shee: I hope so. sent in two talks, but haven't heard back yet.
jnthn masak: ur doin it rong
masak jnthn: ok.
jnthn: what moritz_ said?
jnthn masak: postcircumfix:<[ ]> only ever receives one argument these days.
masak: If there's many args, it'll be a Parcel.
masak right. what moritz_++ said.
jnthn :-) 14:01
masak jnthn: oh!
colomon moritz_: that BEGIN block doesn't seem to have an effect? :\
jnthn masak: In theory, looking at role Positional { ... } in the core setting will be informative.
masak: In practice, I'm not sure how it looks ;-)
moritz_ colomon: uhm, it works in many tests that use Test::Util
colomon: unless I typoed somewhere, or you're in the wrong working directory 14:02
14:02 Zapelius left
bbkr what is the difference between foo(*@t) and foo(@t) ? 14:02
masak jnthn: I've glanced at it, if only because the error messages pointed there.
bbkr: know about argument flattening?
moritz_ colomon: to be clear, we expect the working dir to be the rakudo dir, so that the relative path to the test file starts with t/spec/
masak bbkr: the former accepts several arguemnts, the latter only one (array) argument.
Su-Shee I just parsed "flattering" .. I should go home early today.. 14:03
masak Su-Shee: a spoof of Perl 6 should definitely have "argument flattering". ;)
bbkr i know. but i can always use *@ version if i want all arguments, right? that makes "our multi sub item(@values)" in operators.pm obsolete since there is "our multi sub item(*@values)" fefinition also
14:03 aesop joined
jnthn bbkr: The first is likely tighter though 14:04
Su-Shee masak: it makes your argument more beautiful? ;)
jnthn "What a beautiful argument you are!"
Su-Shee masak: or just hides its ugliness? :)
masak Su-Shee: each and every argument is beautiful in its own special way.
Su-Shee: but the flattering... highlights it. :) 14:05
Su-Shee starts with Module::MakeUp then.. ;)
masak :P
colomon moritz_: syntax was slightly wrong
BEGIN { @*INC.push('t/spec/packages/') }; works
masak is_deeply 'abc'.encode()[1, 2], [98, 99], 'can slice-index a Buf'; 14:06
but it should be (98, 99)
so I changed it to that, and was surprised it worked.
shouldn't () auto-flatten in argument lists? 14:07
or is that Perl 5-think?
moritz_ masak: it's the operation that flattens (or not)
and signature biding does not
assignment to an array does 14:08
masak noted.
mental model updated.
proceeding.
14:08 aesop left, patspam joined 14:09 aesop joined
jnthn is happy to see Buf coming along 14:10
bbkr can this condition ever fail? [email@hidden.address] === @b.WHAT" ?
moritz_ yes
if @a and @b are typed arrays
jnthn Easily.
14:10 plobsing joined
moritz_ or @a and @b hold different container types 14:10
the @ just implies Positional
jnthn Or either of them got mixed into.
moritz_ funny thing is, if Match ~~ Positional in Rakudo, you could try 14:11
my @a is Match;
and see what happens :-)
mathw rakudo: role A {}; my @a; my @b does A; say @a.WHAT; say @b.WHAT; # maybe
p6eval rakudo 1277e1: OUTPUT«Array()␤()␤»
jnthn rakudo: my @a = 'abc' ~~ /(a).*(c)/; # guess this is fine
bbkr thanks for your patience. you can explain everything :)
mathw oh now that's not what I was expecting 14:12
p6eval rakudo 1277e1: ( no output )
jnthn rakudo: my @a = 'abc' ~~ /(a).*(c)/; for @a { .say }
p6eval rakudo 1277e1: OUTPUT«abc␤»
jnthn heh :-)
moritz_ jnthn: I guess that Match doesn't do .flat yet
jnthn I guess not.
rakudo: my @a = 'abc' ~~ /(a).*(c)/; say @a[0]; say @a[1];
p6eval rakudo 1277e1: OUTPUT«abc␤␤»
jnthn No, it doesn't. 14:13
moritz_ rakudo: 'abc' ~~ /(a).*(c)/; say $/.flat.perl
p6eval rakudo 1277e1: OUTPUT«(Match.new(␤ # WARNING: this is not working perl code␤ # and for debugging purposes only␤ from => 0,␤ orig => "abc",␤ to => 1,␤ positional => [␤,␤ ],␤), Match.new(␤ # WARNING: this is not working perl code␤ # and for debugging purposes only␤ from => 2,␤ orig => "abc",␤ to
..=> 3…
pmichaud Match just needs to do a good .list in order to do .flat
14:14 aesop left 14:15 aesop joined
Su-Shee aren't there any nice foto albums yet from the yapc? :) 14:17
cognominal Apparently I have a split personnality : pmichaud.com/2010/pres/yapcna-rakud...ide30.html 14:24
pmichaud, make that Stéphane "cognominal" Payrard. :) 14:25
14:25 christine left
moritz_ sometimes it's hard to keep track of the various nicks + real names 14:25
14:25 ejs joined
cognominal :) 14:25
masak cognominal: sorry about that. must've missed it when I proof-read the list. 14:26
moritz_ cognominal: if you submit a patch that adds your name + author to CREDITS, you decrease chances of that happening again 14:28
14:28 christine joined
cognominal my bad :) 14:29
good luck for your talks btw.
dalek kudo: 7b5b9d5 | moritz++ | docs/announce/2010.06:
un-split cognominal's personality
14:30
moritz_ that was just in the release announcement
14:31 Kodi joined
pugssvn r31408 | masak++ | [t/spec/S32-str/encode.t] corrected test 14:31
r31408 |
r31408 | The thing returned from an indexing shouldn't be an array, but a capture.
masak I now have Buf indexing working locally.
jnthn \o/ 14:32
moritz_ ship it!
masak :) going to push the commit to a github branch.
jnthn Now we can see what's in the Buf. ;-)
masak :)
Kodi Is it kosher to say "multi infix:<eqv> (MyClass $a, MyClass $b) { ... }" or "multi infix:<cmp> (MyClass $a, MyClass $b) { ... }" in order to customize how, e.g., the series operator works? cmp() and eqv() are specced as multis, but so far as I can see, their infix equivalents aren't. 14:33
jnthn Kodi: I think all infixes are multis. 14:34
moritz_ right
masak Kodi: 'their infix equivalents'? is there anything except the infix forms?
Kodi masak: Yeah, cmp() and eqv().
mathw makes sense for all infixes to be multis
they're not very generally useful if they aren't
jnthn masak: there's these spec'd eqv and cmp functions. Apart from their existence is spec'd, but I don't think their semantics are. ;-)
masak rakudo: say cmp(5, 42) 14:35
p6eval rakudo 1277e1: OUTPUT«Could not find sub &cmp␤ in main program body at line 11:/tmp/u87Xo8Ee6c␤»
masak I say remove them from the spec.
moritz_ +1
jnthn Their existence seems...unrequired.
+1
masak removes them
mathw +2
jnthn +42
mathw +42**42
masak++
Kodi Remember that it's not actually cmp(5, 42) but cmp(&infix:cmp, 5, 42);
For what that's worth. 14:36
moritz_ masak += pick(1 .. 42**42)
jnthn rakudo: say pick(1 .. 42**42)
mathw waits nervously
p6eval rakudo 1277e1: ( no output )
moritz_ masak += 1 but timeout()
jnthn ...I guess we didn't define .pick on Ranges to be efficient? ;-) 14:37
moritz_ right
Kodi jnthn: So is it that anything one declares as infix magically becomes multi, or that, by convention, all of Perl 6's builtin infix ops are multi?
jnthn Kodi: convention.
Kodi I see.
moritz_ Kodi: all infixes in the core languages come with a proto
jnthn Kodi: src/core/operators.pm is where they're defined that way.
moritz_ and a proto implies that all things with the same name are multis by default 14:38
jnthn Kodi: There's nothing to stop you declaring an only infix:<myop>($a, $b) { } though.
moritz_ ... except convention :-)
Kodi Right. Shouldn't this convention be in S03, though? Or is it hidden there?
14:38 colomon left
jnthn Yes, the convention-enforcing polar bears may nom you if you don't mark them multi. But that aside... 14:39
moritz_ jnthn: you don't live *that* far north, do you? :-) 14:40
pugssvn r31409 | masak++ | [S29, S32] removed eqv() and cmp() functions
r31409 |
r31409 | They don't confer any particular advantages over the operator forms.
r31409 | The support for their removal on #perl6 was overwhelming.
Kodi So long as I don't have to face the goto-hating raptors.
jnthn moritz_: No, but I visit masak occasionally. ;-) 14:41
masak right. the famous Uppsala polar bears.
jnthn masak: Yeah, they were terrifying but cute.
masak one gets used to them after a while. 14:42
I hardly notice them any more.
jnthn I don't think I could bear it every day.
masak :P
moritz_ ouch
masak (unbearable puns)++
14:43 plobsing left 14:46 yahooooo joined 14:47 Kodi left 15:01 thebird left 15:02 thebird joined
pmichaud TimToady++ says that Match is Cool :) 15:02
masak it feels Cool.
jnthn rakudo: say Match ~~ Cool 15:03
p6eval rakudo 7b5b9d: OUTPUT«1␤»
pmichaud hmmm, it's already cool.
jnthn Rakudo is cool with that too.
moritz_ Match *is* cool
pmichaud say (' xyz ' ~~ /.*/).trim
rakudo: say (' xyz ' ~~ /.*/).trim
p6eval rakudo 7b5b9d: OUTPUT«any(Match.new(␤ # WARNING: this is not working perl code␤ # and for debugging purposes only␤ from => 2,␤ orig => " xyz ",␤ to => 6,␤ positional => [␤,␤ ],␤))␤» 15:04
moritz_ wtf is calling .perl here?
pmichaud rakudo: say (' xyz ' ~~ /.*/).Str.trim
p6eval rakudo 7b5b9d: OUTPUT«xyz␤»
TimToady rakudo: $_ = " foo "; say /.*/.trim
phenny TimToady: 05:17Z <sorear> tell TimToady I finally understand what you were talking about re. allomorphism. It's a core concept in the CLR, although we call it "interfaces".
p6eval rakudo 7b5b9d: OUTPUT«_block48␤»
pmichaud rakudo: say (' xyz ' ~~ /.*/).WHAT 15:05
p6eval rakudo 7b5b9d: OUTPUT«Match()␤»
pmichaud rakudo: say (' xyz ' ~~ /.*/) 15:06
p6eval rakudo 7b5b9d: OUTPUT« xyz ␤»
pmichaud rakudo: say (' xyz ' ~~ /.*/).trim
p6eval rakudo 7b5b9d: OUTPUT«any(Match.new(␤ # WARNING: this is not working perl code␤ # and for debugging purposes only␤ from => 2,␤ orig => " xyz ",␤ to => 6,␤ positional => [␤,␤ ],␤))␤»
pmichaud something is wrong with .trim somewhere in the Match hierarchy.
(this is from code in Damian's talk, btw)
ohhhhhhhh 15:07
evil
if self ~~ /^\s*:(.*)$/ {
moritz_ Cool.trim calls a regex match self ~~ $some_regex
pmichaud right
it needs to stringify first
it can't assume that self is a str
jnthn pmichaud: I ran into a related issue the other day
pmichaud: Should Regex.ACCEPTS always stringify?
pmichaud: Before matching? 15:08
pmichaud: I almost did it but then it felt rong.
pmichaud jnthn: I'd prefer it not do that
the problem isn't with the ~~, it's that anything in Cool-str.pm needs to make sure to be stringifying self
jnthn pmichaud: OK. 15:09
pmichaud (at least in this case)
masak submits rakudobug
moritz_ moritz.faui2k3.org/tmp/weird-param.svg 15:10
that's what I get for simulating a mass hanging down from a spring, and elongated sideways + down
arnsholt moritz_: A Perl 6 spirograph? =)
moritz_ and with different spring force in x direction than in y direction 15:11
masak arnsholt: I was thinking the same thing! but it's not arc-y enough.
15:12 azert0x joined
moritz_ if you look at x(t) and y(t) it's rather boring 15:15
just two sines with slightly different frequencies and amplitudes
15:16 ejs left 15:20 Su-Shee left
masak chromatic tweets "Only Perl 5 can parse Perl 5, but every Perl 6 can parse Perl 6. Hooray for grammars." twitter.com/chromatic_x/status/16777930338 15:20
_sri kraih.com/perl6-amelia-sri.png # let me introduce you to amelia, camelias psychedelic more commercial oriented little sister :) 15:22
masak :)
moritz_ likes her
masak _sri++ # I can see the resemblance! 15:23
jnthn Söt. :-)
sbp font hurts my eyes 15:24
but I do like how the "e" looks like it's having a good old chuckle
that "e" has personality
masak :D
_sri lol 15:25
masak sbp: I won't ever be able to look at that "e" again without thinking that!
sbp hehe
jnthn Oh wow, I hadn't noticed that first time :-) 15:26
15:28 Ross joined
masak rakudo: my ($found) = grep 1, 1..1_000_000; say 'alive' 15:28
p6eval rakudo 7b5b9d: ( no output ) 15:29
masak :/
jnthn That's...surprising. 15:30
masak is it worth an RT ticket?
jnthn masak: It hangs at repl? 15:31
masak: I think it should be lazy.
If it's not being then yes, imo.
masak tries
jnthn (good to verify not just p6eval oddity)
masak yes, hangs at REPL.
masak submits rakudobug 15:32
15:32 am0c left, ejs joined
masak it even segfaulted :( 15:33
after a minute or so.
arnsholt OOM perhaps?
jnthn :-/
masak arnsholt: likely, yes. 15:34
moritz_ is list asignment eager in general?
arnsholt Smells like someone forgot to check the return value of a malloc()
15:34 ash_ joined
moritz_ rakudo: my ($a, $b) = (1..*).map({ $_ }); say $b 15:34
arnsholt (Might be LHF for a Parrot patch though)
TimToady can Term::Readkey be called via blizkost? 15:35
p6eval rakudo 7b5b9d: ( no output )
moritz_ arnsholt: finding the spot is likely not
arnsholt True
jnthn TimToady: sorear++ would probably knwo for sure, but afaik Blizkost + IO is a little shakey still.
15:36 macdaddy joined, patspam left
dalek ok: 00b8fc7 | (Hongwen Qiu)++ | src/grammars.pod:
[grammars.pod] fix typo
15:36
jnthn TimToady: (Parrot + Perl 5 IO layers both at work at once => fun :-))
TimToady biab & 15:37
15:38 ash__ left 15:39 ash_ left 15:41 Su-Shee joined 15:43 meppl joined
avar moritz_: Please just remove me from perl6/book. I'm not going to ever contribute to something that's cc-nc anyway. 15:43
moritz_ avar: if you wish. (we do plan to remove the nc restriction at some point, but I guess I can add you back when that happens, and you want it) 15:47
15:47 foodoo left, am0c joined 15:48 skids left
avar moritz_: Well the sooner the better, it has 21 contributors now says git, ex-post-facto license change is a pain. 15:50
masak avar: ooc, why don't you want to commit to something cc-nc? 15:52
avar Because I don't contribute to proprietary projects unless someone is paying me for it. That's all. 15:53
pmichaud can someone give me a one-line summary of proto/pls for my talk?
avar "A preliminary package manager for Perl 6 that just about works" >:) ? 15:54
pmichaud is it now officially "pls" and not "proto" ?
moritz_ pmichaud: 'pls' is the new, not-yet-working replacement for 'proto'
masak pmichaud: "proto is being phased out, and pls is in early development but showing real promise"
pmichaud perfect. 15:55
and 'pls' officially stands for ... ?
masak "pls" :)
diakopter lolplease
moritz_ pls install $stuff
Su-Shee polite library IforgottheS
masak "PLS Library System"
diakopter si vou plait
Su-Shee system. excactly.
jnthn pmichaud: I think the original suggester had it as the rather boring "Perl 6 Library System"
pmichaud I like "PLS library system" 15:56
jnthn pmichaud: But mostly for the acronym. ;-)
pmichaud: Same. :-)
avar masak: /w 6
oops
masak avar: I would, but I'm not on irssi :P
avar window six is all the rage! 15:57
masak only has 5 windows open :)
"Pwn Lol Sekkrit"
but I did like diakopter++'s "SiL vous Plait" 15:58
Su-Shee I'm still for "polite library system" ;) 15:59
or polite library servant ;)
16:03 ash_ joined
avar Is there any plan to integrate this or future perl6 library systems with CPAN? 16:04
jnthn masak: Heh. It's also ПожаЛуйСта
16:04 ejs left
masak jnthn: wow! 16:05
on twenty-second thought, pls really stands for "Proto-Like System".
moritz_ likes polymorphic abbreviations 16:06
masak avar: the support has to come from CPAN first. after that, it's no problem hooking something like pls into it.
diakopter pls jfdwim 16:08
avar masak: Who's developing pls? 16:09
masak avar: I'm the only one who's been writing code for it so far.
16:09 ashleydev left
masak avar: use.perl.org/~masak/journal/40403 16:09
jnthn pls increase busnumber 16:10
16:11 colomon joined
masak I think it'll be more accessible for other people as soon as I put together my proof-of-concept. 16:11
i.e. hook the core classes into a couple of classes which can actually install something a la proto.
avar masak: Have you talked to the CPAN people like Dan Golden about doing that? There were some plans being thrown around for having *6/ folders for Perl 6, which would be handled by PAUSE. And in the CPAN 2.0 META spec you can set perl >=6.0 in the prereq spec 16:12
Just that last bit + a dumb custom indexer that's not PAUSE would get Perl 6 on CPAN relatively quickly
masak avar: have not talked to anyone directly, but I've also heard about the 6/ folder.
I'm eager to see people explore that area of possibilities. 16:13
what we need is intrepid explorers.
avar I think you not talking might be a big part of the problem :)
Because what I hear from the other side is basically "sure we'd like to support Perl 6, but they haven't talked to us"
16:13 justatheory left
ash_ right now people are still focused on getting the core working 16:13
16:14 justatheory joined
moritz_ avar: I've tried to talk to the right people about it, and got rather discouraging responses (about one or two years ago) 16:14
ash_ its not that they don't want to get CPAN working, its just CPAN isn't that useful if "use" doesn't work (like it didn't a few months ago)
masak avar: I generally shy away from "Solving The Problem"-like activities. I'm more interested in "solving the problem" without the capitals. 16:15
moritz_ avar: it's kinda hard for an outsider to find whom to talk to, on what medium etc
PerlJam moritz_: irc.perl.org:#p5p <-- a good place to start.
avar #toolchain is a lot better, actually
masak avar: that said, if what you're saying is true, then maybe it's time to talk to someone.
yes, #toolchain is the place, I think.
masak heads over there 16:16
PerlJam avar: you prove mortiz's point ::)
er, :)
avar masak: But what I'm saying is that using the CPAN infrastructure is "solving the problem". Because using CPAN really is quite easy.
moritz_ avar: that said, once we have a working solution for not indexing p6 stuff for search.cpan.org, I'll try to integrate it with whatever module installer we have
masak avar: believe it or not, it has never been my intent to write a module installer.
avar on search.cpan.org or in the PAUSE index?
moritz_ both 16:17
16:17 sjn left
moritz_ search.cpan.org non-indexing can be achieved in the META.yml, I know 16:17
16:17 cono left
moritz_ but afaict that still blocks the namespace, no? 16:18
avar The right way to do it would just be : if ($module && $meta->{prereq}{perl} >= 6.0) { do_perl6_index } else { do_as_usual }
moritz_ and the module shows up in the 02packages.details.txt.gz and related lists
avar and make it start generating 02packages6.details.txt.gz etc. 16:19
moritz_ so, where's the repo that I should patch to do that?
avar github.com/andk/pause
Or just ask andk et al what they think, they might have better ideas. 16:20
moritz_ well, that's something to start from 16:21
thanks
avar np
colomon has someone done a test yet for .trim on a Match object?
16:22 [mark] left
moritz_ colomon: don't think so... but I have a local patch :-) 16:22
masak moritz_++
colomon :)
yeah, that one was definitely LHF
16:22 azawawi joined
azawawi hi 16:22
16:23 kfo_ joined
moritz_ colomon++ reminding me of TDD :-) 16:25
pugssvn r31410 | moritz++ | [t/spec] Match.trim
dalek kudo: ad2afb5 | moritz++ | src/core/Cool-str.pm:
stringify self in Cool.trim-{leading,trailing}
16:26
16:27 kfo left, kfo_ is now known as kfo
colomon \o/ 16:27
avar One thing that would make writing Perl 6 modules Really Easy would be to make Dist::Zilla plugin for it 16:29
i.e. one that set all the needed Perl 6 stuff like the right requires version and so on.
aCiD2 perl 6 newbie: what stuff do you have to setup? 16:30
avar you can set custom metadata with x_* CPAN META keys which could be interpreted by some custom indexer
masak avar: yes yes please please
avar :)
aCiD2 it's not just a case of running you script through perl6 not perl5?
masak aCiD2: rakudo.org/how-to-get-rakudo
aCiD2 i did that this morning :)
but I haven't had chance to play with it
masak aCiD2: oh, you mean "what new things do I have to learn?"?
16:31 am0c left
masak aCiD2: no, not many Perl 5 programs will run directly under perl6. 16:31
aCiD2 right, but I meant a brand new perl6 program
avar made it sound like I have to do special things just to get that to work
masak aCiD2: if you have Rakudo installed, you can just type 'perl6' and get started!
that should give you a primitive shell, in which you can try Perl 6 syntax. 16:32
aCiD2 thinks signals are getting crossed :)
masak having the synopses at arm's reach helps, too.
16:32 Ross^ joined
aCiD2 i.e. one that set all the needed Perl 6 stuff like the right requires version and so on. <--- I was refering to this 16:32
masak not sure what that means.
aCiD2 ah, nor was I :)
16:34 Ross left
masak aCiD2: generally, when I'm to run a Perl 6 script, I don't need to set up anything. 16:34
aCiD2: when I'm to run a Perl 6 module, I usually need to either set PERL6LIB, or install the module into ~/.perl6/lib 16:35
ash_ does PERL6LIB also check wherever rakudo was installed to?
masak ash_: you can find out -- just do `echo $PERL6LIB` 16:37
ash_ well mines not set, but i guess i mean does the default include path include $rakudo_prefix/lib or something or just ~/.perl6/lib 16:38
16:40 Trashlord left 16:41 azawawi left 16:42 rv2733 left 16:45 cdarroch joined, cdarroch left, cdarroch joined 16:46 ashleydev joined 16:51 colomon left 16:57 tylerni7 left 16:58 eternaleye left 16:59 colomon joined, kthakore left 17:02 dakkar left
masak ash_: one way to find out is with `perl6 -e 'use Foo'` -- the error message lists the places Rakudo looks for modules. 17:02
ash_ oh, nice
thanks masak++ and i could of just printed @*INC i just realized
masak rakudo: say @*INC.perl 17:03
p6eval rakudo ad2afb: OUTPUT«["lib", "/home/p6eval/.perl6/lib", "/home/p6eval//p2/lib/parrot/2.5.0-devel/languages/perl6/lib", "."]␤»
ash_ rakudo: say ~@*INC
p6eval rakudo ad2afb: OUTPUT«lib /home/p6eval/.perl6/lib /home/p6eval//p2/lib/parrot/2.5.0-devel/languages/perl6/lib .␤» 17:04
colomon pmichaud's rakudo * talk starting now.
17:04 davidfetter joined
masak rakudo: @*INC.=reverse; say @*INC.perl 17:04
p6eval rakudo ad2afb: OUTPUT«Cannot assign to readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 11:/tmp/jYjRQ3KTnc␤»
davidfetter hello
masak davidfetter: \o
ash_ rakudo: @*INC = 1, 2;
p6eval rakudo ad2afb: OUTPUT«Cannot assign to readonly value␤ in '&infix:<=>' at line 1␤ in main program body at line 11:/tmp/IDg7myCYoS␤»
masak pmichaud++ # good luck!
ash_ aww hmm, why is it read only? 17:05
davidfetter so with the upcoming release of rakudo to the world, i'm looking for sucke^Wvolunteers to get the last little tweaks on PL/Rakudo done
anybody here interested in postgresql?
17:07 cygx joined
masak ash_: yeah, that feels wrong, doesn't it? 17:07
rakudo: @*INC.push("OH HAI"); say @*INC.perl
p6eval rakudo ad2afb: OUTPUT«["lib", "/home/p6eval/.perl6/lib", "/home/p6eval//p2/lib/parrot/2.5.0-devel/languages/perl6/lib", ".", "OH HAI"]␤»
PerlJam davidfetter: aye. I'm interested (no experience with it however)
cygx see github.com/moritz/try.rakudo.org/ra...ter/DESIGN for how I would design try.rakudo.org
masak ash_: only the container is, though.
cygx feedback welcome
ash_ masak: ah, i guess that makes sense...
davidfetter PerlJam, lack of experience with that code base is not really a barrier. interest is pretty much the big one :)
PerlJam davidfetter: interest and time. I never seem to have enough of that second one. 17:08
:-)
masak ash_: not sure it does. but it makes it not-as-bad.
davidfetter hands PerlJam some tuits
PerlJam I'm taking a week long vacation the week of Jul 5. During that time I will have time to hack on things: perl6book, rakudo, whatever. 17:09
davidfetter there's a #plparrot here on freenode
+ ancillary stuff like a web site, mailing list, etc.
ash_ masak: well, is there a good reason to let someone do @*INC = ? you loose all of the default load paths if you do that
moritz_ ash_: is there a good reason not to allow it?
ash_ (how do you even make a container R only?) 17:10
moritz_ in general we allow people to shoot in their foot if that's what they wish
is there a #phasers meeting today? 17:11
ash_ rakudo: my @*INC = @*OUTER::INC; say @*INC 17:12
masak moritz_: I assume there is.
p6eval rakudo ad2afb: ( no output )
ash_ hmm
jnthn I can make a #phasers 17:13
ash_ the should the REPL die every time there is an uncaught error? 17:14
jnthn no 17:17
17:18 aCiD2 left
[Coke] the REPL should have a last ditch handler, methinks. 17:19
17:21 davidfetter left
jnthn [Coke]: I think it sometimes fails because it encounters an error when auto-printing/stringifying the result it gets. 17:22
And that isn't protected.
17:24 cdarroch left
masak do you have an example? 17:24
masak submits @*INC rakudobug 17:26
jnthn masak: Not to hand, just an observation a while ago that I didn't have chance to investigate further. And something of a hunch/guess. :-) 17:27
masak yep, got it. 17:28
> class A { method Str { die "OH HAI" } }; A.new
===SORRY!===
OH HAI
masak submits rakudobug
jnthn masak: Well done. :_) 17:29
masak bows 17:30
time for nom. see you at the #phasers meeting. o/ 17:33
17:33 masak left 17:34 eternaleye joined, cdarroch joined, cdarroch left, cdarroch joined 17:35 skids joined 17:39 supernovus joined 17:44 eternaleye left 17:46 supernovus left
cxreg has rakudo or parrot got any code coverage tools? 17:52
17:55 eternaleye joined 17:57 envi^home left 17:58 ash_ left 17:59 lucs left, ash_ joined 18:01 eternaleye left 18:03 lestrrat is now known as lest_away
colomon rakudo: say sin(-0.523598775603156.Rat) 18:06
p6eval rakudo ad2afb: OUTPUT«too many positional arguments: 3 passed, 1 expected␤ in 'prefix:<->' at line 3637:CORE.setting␤ in main program body at line 11:/tmp/UfE2n2xGTP␤»
colomon errrrr.... that was unexpected. 18:07
rakudo: say -0.523598775603156.Rat
p6eval rakudo ad2afb: OUTPUT«too many positional arguments: 3 passed, 1 expected␤ in 'prefix:<->' at line 3637:CORE.setting␤ in main program body at line 11:/tmp/YsSMrr9vK6␤»
colomon rakudo: say -0.523598775.Rat
p6eval rakudo ad2afb: OUTPUT«-0.523598775␤»
colomon arrrrrggggghhhhhh!
ash_ rakudo: say 1.5.Rat, 1.5.Rat.perl 18:09
p6eval rakudo ad2afb: OUTPUT«1.53/2␤»
ash_ (thats 1.5 and 3/2) 18:10
[Coke] jnthn: just upgrad to IO::Prompter. :)
ash_ rakudo: say -0.523598775.Rat.perl
p6eval rakudo ad2afb: OUTPUT«-20943951␤»
[Coke] cxreg: parrot provides a callgrind output.
which you might be able to use for that sort of thing.
colomon ash_: ????? 18:11
18:11 ziegenberg joined
ash_ i have no idea what happened there colomon 18:11
rakudo: say -0.12.Rat.Perl
p6eval rakudo ad2afb: OUTPUT«Method 'Perl' not found for invocant of class 'Rat'␤ in main program body at line 11:/tmp/sezFh34lWN␤»
ash_ rakudo: say -0.12.Rat.perl
p6eval rakudo ad2afb: OUTPUT«-3␤»
ash_ ...
18:11 ziegenberg left
ash_ thats odd 18:12
colomon more than odd, it's insane
ash_ rakudo: say 0.12.Rat.perl, ' and ', -0.12.Rat.perl
p6eval rakudo ad2afb: OUTPUT«3/25 and -3␤»
ash_ is... it the negative?
colomon it is 18:13
rakudo: say 0.12.Rat.perl, ' and ', (-0.12).Rat.perl 18:14
p6eval rakudo ad2afb: OUTPUT«3/25 and -3/25␤»
18:14 eternaleye joined
colomon ash_++ 18:14
betting this is a STD bug
ash_ is the precedence of - off?
18:14 tadzik joined
colomon ash_: I think the precedence of - doesn't make sense in this case. 18:15
ash_ true, since its a constant number
the negative should be part of the constant
pmichaud (whew) survived my talk :-) 18:17
18:17 patspam joined
ash_ how'd it go? 18:18
PerlJam pmichaud: they didn't throw stuff at you?
pmichaud I guess it went okay. Talks after lunch are always iffy. :)
PerlJam: nobody threw anything at me... at least not directly. I did get some questions. :) 18:19
PerlJam pmichaud: Did someone ask when the official Perl 6 will be released? ;)
colomon seemed to go fine to me.
pmichaud I needed a slide that also said "Rakudo" !eqv "Perl 6"
(will add that now)
18:19 eternaleye left 18:20 lucs joined
jnthn pmichaud: I'm sure you did better than just surviving. ;-) 18:22
colomon #phasers in 38 minutes?
jnthn colomon: Yes
ash_ is #phasers the same time as #ps? 18:23
jnthn tries to decide whether to have Greece - Argentina or Nigeria - South Korea on.
18:23 jaldhar left
pmichaud 18:19 <PerlJam> pmichaud: Did someone ask when the official Perl 6 will be released? ;) 18:25
cxreg [Coke]: cool. how about debugger stuff, anything in the works?
pmichaud PerlJam: No.
(nobody asked)
PerlJam YAPC++ smarter than your average crows. 18:26
er, crowd
[Coke] cxreg: there is a parrot_debugger. but pretend I didn't say that.
cxreg [+] @crows / @crows
[Coke]: lol, gotcha 18:27
i was thinking of asking jjore to get involved on that, since he's so into runtime debugging (Enbugger, etc)
18:28 kensanata joined
avar I hope some of the Perl 6 talks will be made available for us not at YAPC 18:39
PerlJam avar: we talk about Perl 6 all the time here, what more do you need? ;) 18:41
colomon PerlJam: in one word: Damian 18:42
pmichaud avar: my slides are online.
pmichaud.com/2010/pres/
I'm going to figure out how to get audio working on my notebook and turn my presentation(s) into vidcasts 18:43
PerlJam colomon: so ... get him on here! :)
colomon Patrick's NQP talk was also stuff that I hadn't quite manage to put together entirely from over a year hanging out here.
avar yah, but slides are only 1/10 of the thing :)
colomon PerlJam: I just assumed if he wasn't here, he had a good reason.
avar Anyway, I hope video gets online this time around. Somehow YAPC always gets recorded and somehow it never makes it online afterwards 18:44
colomon but his talk contained several very nice p6 ideas that I certainly wasn't familiar with.
PerlJam colomon: perhaps that's why he stays away.
pmichaud avar: yes, that's been my experience also. That's why I'm trying to find ways to ge the videos online myself, even if it's just slides+audio (times)
afk for a bit... snack. 18:45
avar pmichaud: yay
Still, hoping for the rest too..
PerlJam colomon: If he hung out here with us, his wacky-aweseome ideas would be diluted with all of our mediocre ones :)
colomon PerlJam: or the ideas breeding would go singular... 18:46
PerlJam colomon: Have you seen Damian's talk where he implements variables in Perl that travel backward through time? 18:48
(that's probably not the best description, but you get the gist of the awesomeness I think)
18:48 alc joined
colomon PerlJam: I haven't, no. 18:49
sorear kolibrie: It's pretty boring, except for the utter deviousness of LazyMap 18:50
18:52 TiMBuS left 18:53 patspam left 18:54 M_o_C joined
PerlJam colomon: I think it's this one technocation.org/node/571/play 18:54
colomon PerlJam: thanks! 18:55
18:55 bphillips left
avar heh, my super-minor patch landed me on pmichaud's slides: pmichaud.com/2010/pres/yapcna-rakud...ide30.html 18:56
18:56 alc left
avar (rewording a single error message) 18:56
18:57 masak joined
masak #phasers in 2? 18:58
sorear TimToady: So, uh, what've you been saying about me? D: 18:59
masak yay! both my talk submissions to YAPC::EU were accepted! \o/
18:59 colomon left
jnthn #phasers! 19:01
sorear pmichaud: Is Kiev 30 or 31? Your slides say 31 on p31 and 30 on p32 19:04
er, 31 on p30 19:05
masak it's #30. 19:06
19:09 thepler joined, alester joined 19:12 dju left 19:17 dju joined 19:18 dju left 19:19 dju joined 19:23 eternaleye joined 19:26 colomon joined 19:30 Mowah left
jnthn rakudo: sub s { try { return 1; CATCH { return 2 } } }; say s 19:31
p6eval rakudo ad2afb: OUTPUT«Null PMC access in type()␤ in main program body at line 11:/tmp/UtCcOH4qgy␤»
ash_ rakudo: sub s { try { return 1; } }; say s; 19:33
p6eval rakudo ad2afb: OUTPUT«Null PMC access in type()␤ in main program body at line 11:/tmp/lqZeTu1GCI␤»
ash_ rakudo: sub s { try { return 1; } }; say s().WHAT; 19:34
p6eval rakudo ad2afb: OUTPUT«Null PMC access in find_method('WHAT')␤ in main program body at line 11:/tmp/GwMtlRzb9w␤»
19:39 ash_ left 19:40 eternaleye left 19:46 snearch joined, gbacon left 19:47 gbacon joined 19:48 clintongormley left 19:50 eternaleye joined
moritz_ rakudo: say ('x' xx *).WHAT 19:51
p6eval rakudo ad2afb: OUTPUT«List()␤»
19:54 cygx left, colomon left 19:56 s1n left 19:57 cono joined 20:05 wolveria1 joined, wolveria1 left, Psyche^ joined 20:06 [Coke] left 20:09 Patterner left, Psyche^ is now known as Patterner, ejs joined
masak I can't express how great it is to work with pls. it's what proto should have been. :) 20:10
moritz_ misses a t/ folder in the pls branch 20:12
20:12 M_o_C left, colomon_ joined
moritz_ wait 20:12
I only read its log messages, not checked it out
better :-) 20:13
masak there's a t/ folder, I assure you :) 20:14
moritz_ yes, found it
perl6 t/subcommands/fetch.t
===SORRY!===
A method named 'state-of' already exists in class 'App;Pls;Core'. It may have been supplied by a role.
is that expected?
masak no. 20:15
masak tries
not getting that here :/
moritz_ oh
masak let's compare Rakudo builds.
moritz_ has App::Pls::ProjectsState $!projects handles <state-of>; 20:16
my rakudo has 'handles'
masak I *think* mine does, too.
20:17 cj left
masak rakudo: class A { method foo { say "OH HAI" } }; class B { has A $.a handles <foo> }; B.new.foo 20:17
p6eval rakudo ad2afb: OUTPUT«Method 'foo' not found for invocant of class ''␤ in <anon> at line 844:CORE.setting␤ in main program body at line 11:/tmp/M5czkghJoC␤»
masak should that work? 20:18
ah, maybe typed attrs aren't in place yet.
moritz_ maybe you should init $.a
masak rakudo: class A { method foo { say "OH HAI" } }; class B { has $.a handles <foo> }; B.new(:a(A)).foo
p6eval rakudo ad2afb: OUTPUT«OH HAI␤»
20:18 cj joined
masak right. my local Rakudo does that too. 20:18
in fact, I ran 'make install' this morning. 20:19
moritz_ rakudo: class A { method foo($X) { say "OH $x" } }; class B { has $.a handles <foo> }; B.new(:a(A)).foo('HAI')
p6eval rakudo ad2afb: OUTPUT«===SORRY!===␤Symbol '$x' not predeclared in foo (/tmp/HTtuCxEQAE:11)␤»
moritz_ rakudo: class A { method foo($x) { say "OH $x" } }; class B { has $.a handles <foo> }; B.new(:a(A)).foo('HAI')
p6eval rakudo ad2afb: OUTPUT«Too many positional parameters passed; got 2 but expected 2␤ in <anon> at line 843:CORE.setting␤ in main program body at line 11:/tmp/w6fyMZFrKC␤»
masak my perl6 executable is from 14:09 today...
masak submits rakudobug 20:20
moritz_ that's what I get in pls when I remove the explicit method
masak moritz_: but why do we get different results in the first place?
moritz_ no idea
my rakudo is pretty recent, also from today
masak what time? 20:21
moritz_ how do I find out? :/ 20:22
masak ls -l `which perl6`
moritz_ I'll just install HEAD
masak me too.
moritz_ same result
masak that was fast! 20:23
moritz_ it was built already
masak ok, give me a... couple of minutes.
I don't suppose Parrot versions make a difference here.
Updating 1277e18..ad2afb5 20:24
it just pulled in a few changes in src/core/Cool-str.pm
this shouldn't affect anything.
I haven't seen evidence yet to explain the different outcomes we're seeing.
moritz_ masak: do you have uncommitted changes?
or unpushed changes? 20:25
moritz_ is at pls sha1 d26710db0ca2230b5cbfaa5a1b1637d530794b92
masak certainly not.
of those I also have none.
masak checks
that's the one. 20:26
it's from over a week ago.
moritz_ it still lives in the proto repo, right?
masak aye, in the 'pls' branch. 20:27
moritz_ github.com/masak/proto/tree/pls
masak nod.
moritz_ latest commit: d267
masak same one as above.
moritz_ right
are you *sure* you've puhed the pls branch? 20:28
masak the commit you're talking about is at the top of my 'git log' -- with that SHA1.
moritz_ so we have the same, week-old pls version 20:29
masak oh!
masak rebuilds pls
I think this must be it.
yep, now it fails.
tricky!
Rakudo-- 20:30
masak--
moritz_++
thanks for reporting.
masak fixes
:(
moritz_ that's why I don't really like the default of installing .pir files
removing the 'handles' should work
masak sure; just checking that's what I want to do.
installing feels like a Very Good thing to do to code that doesn't exactly have a speed advantage to begin with. 20:31
moritz_ I know
and still you have to compare it to the developer time spent tracking these opaque bugs from outdated .pir files 20:32
masak I think I want to remove the method with the RAKUDO comment instead. trying that.
moritz_ then you'll hit the error I've demonstrated above
masak moritz_: maybe the Rakudo executable should compare its own timestamp against the .pir file as well.
moritz_: oh :( 20:33
adding another RAKUDO comment, then.
jnthn masak: I think you've just hit the old bug where type ojbect in attribute + handles somehow doesn't quite work out. 20:35
I found it in RT when doing handles recently, but didn't get to the bottom of it yet. 20:36
moritz_ I don't understand why handles with arguments doesn't work
jnthn moritz_: ?
moritz_ rakudo: class A { method foo($x) { say "OH $x" } }; class B { has $.a handles <foo> }; B.new(:a(A)).foo('HAI')
masak jnthn: but there's not a type object in the attribute...
p6eval rakudo ad2afb: OUTPUT«Too many positional parameters passed; got 2 but expected 2␤ in <anon> at line 843:CORE.setting␤ in main program body at line 11:/tmp/bIDEEbBUUX␤»
jnthn rakudo: class A { method foo($x) { say "OH $x" } }; class B { has $.a handles <foo> }; B.new(:a(A.new)).foo('HAI') 20:37
p6eval rakudo ad2afb: OUTPUT«Too many positional parameters passed; got 2 but expected 2␤ in <anon> at line 843:CORE.setting␤ in main program body at line 11:/tmp/RRti3FKKRF␤»
jnthn oh.
masak it's an instantiated object. 20:38
masak goes looking for the alleged dupe
jnthn rakudo: class A { method foo($x) { say "OH f**k" } }; class B { has $.a handles <foo> }; B.new(:a(A.new)).foo
p6eval rakudo ad2afb: OUTPUT«Not enough positional parameters passed; got 1 but expected 2␤ in 'A::foo' at line 11:/tmp/Yk3oKm9kX1␤ in <anon> at line 844:CORE.setting␤ in main program body at line 11:/tmp/Yk3oKm9kX1␤»
jnthn rakudo: class A { method foo() { say "OH f**k" } }; class B { has $.a handles <foo> }; B.new(:a(A.new)).foo
p6eval rakudo ad2afb: OUTPUT«OH f**k␤»
jnthn oh f**k indeed.
masak jnthn: found the one you meant. no, I'd say they are different.
pls fix :P
moritz_ jnthn: that's probably why the PseudoArray tests are fudged out
20:39 ash_ joined
jnthn moritz_: I'd thought that was something array or hashish. 20:39
But perhaps so.
moritz_ jnthn: maybe that too, but they are the first tests to use arguments 20:40
jnthn: I'll add another one that uses scalars and parameters
kolibrie sorear: yes, LazyMap is pretty cool/devious
jnthn moritz_: wow.
20:40 Mowah joined
kolibrie sorear: and by-the-way, thanks for all your work on viv in the past few months 20:41
20:41 ashleydev left, [Coke] joined
masak moritz_: fix pushed. all tests now pass here. 20:41
sorear kolibrie: So what kinds of things are you saying about my work? :D
20:42 ashleydev joined
kolibrie sorear: I have not put in anything specifically about you -- but I can if you give me things to say 20:42
jnthn rakudo: class A { method foo(|$c) { say $c.perl } }; A.foo 20:44
p6eval rakudo ad2afb: OUTPUT«\()␤»
jnthn rakudo: class A { method foo(|$c) { say $c.perl } }; A.foo(1)
p6eval rakudo ad2afb: OUTPUT«Too many positional parameters passed; got 2 but expected 2␤ in 'A::foo' at line 11:/tmp/TE5FBvA4r9␤ in main program body at line 11:/tmp/TE5FBvA4r9␤»
jnthn Golfed. 20:45
kolibrie sorear: can you display SVGs? If so, I'll post an image/flow diagram of viv I made
masak adds
kolibrie++
sorear kolibrie: can *I* display SVGs?
What do I have to do with it? 20:46
pugssvn r31411 | moritz++ | [t/spec] test for RT #75966, delegation with parameters
masak sorear: I think he meant, like, your browser or something. :)
sorear ah
then yes
kolibrie graystudios.org/talks/viv/viv_flow.svg 20:47
moritz_ masak: works here too (pls)
masak flies away, resolving other communication problems elsewhere
jnthn has mental images of sorear pouring over an XML file, scribbling away with a pen in a notebook 20:48
kolibrie jnthn: in all the correct colors and fonts, too 20:49
masak ...lots of pens...
jnthn ...the whole pot of pens.... 20:50
cxreg a veritable island of pens?
pugssvn r31412 | moritz++ | [t/spec] tests for RT #69362, signatures of WhateverCode objects
20:51 cdarroch left
masak moritz_: do I have your permission to make a copy of JSON::Tiny and put it in the proto/pls repo? 20:52
moritz_ masak: yes
masak thanks.
now might be a good time to switch away from faux YAML.
20:54 colomon_ left
pugssvn r31413 | moritz++ | [t/spec] test for RT #75266, indexing array attributes with non-Ints 20:55
moritz_ welcomes our new packaging overlord
masak moritz_: there are some pretty interesting failures in t/04-roundtrip.t 20:56
moritz_: though I think I recall you writing about them in some bug report or other.
not ok 2 - Rat
# got: [16/5]
# expected: [16/5]
what's up with that?
moritz_ masak: I know. Many of them are related to backslash escapes not working char classes (the string tests)
others to number types or array types - haven't figured it out yet 20:57
emitting JSON is a bit fragile - but parsing is rather robust
20:57 Mowah left
masak sounds good. 20:57
though I'll want to do both, so I should look out a bit too.
jnthn has one of his talks accepted for YAPC::EU :-)
20:58 ashleydev left
masak jnthn: \o/ 20:58
20:58 ejs left
jnthn Suppose I should book a flight there or something. 20:58
:-)
20:58 ashleydev joined
masak good thinking. 20:58
BinGOs I didn't think acceptance was until 1st July 20:59
moritz_ rakudo: use Test; plan 1; is_deeply [16/5], [16/5], 'rats'
p6eval rakudo ad2afb: OUTPUT«1..1␤not ok 1 - rats␤# got: [16/5]␤# expected: [16/5]␤# Looks like you failed 1 tests of 1␤»
moritz_ I'd say testing bug
jnthn BinGOs: Maybe that's the acceptance deadline. :-)
moritz_ rakudo: say 16/5 eqv 16/5
p6eval rakudo ad2afb: OUTPUT«0␤»
masak nod.
cono Hello Earth people! We would like to introduce to you our sci-fi stuff: Rakudo*! (some1 must start his talk at yapsi like that :)
jnthn fejl
cono it's not from our planet :) 21:00
21:00 slavik1 joined
jnthn volunteers whoever gives the Rakudo status talk to dress up as an alien 21:00
masak but why? 21:01
rakudo: say 16/5 eqv 16/5
might that be why?
cono :D
p6eval rakudo ad2afb: OUTPUT«0␤»
jnthn nervously checks what talk he submitted again
moritz_ masak: right
cono jnthn: you need to buy alien's dress :D
moritz_ rakudo: 16/5 ~~ Numeric
p6eval rakudo ad2afb: ( no output )
moritz_ rakudo: say 16/5 ~~ Numeric
p6eval rakudo ad2afb: OUTPUT«1␤» 21:02
moritz_ compiles a possible fix 21:03
masak \o/
21:03 slavik left
moritz_ $ ./perl6 -e 'say 16/5 eqv 16/5' 21:04
1
BinGOs jnthn: aha. checked my email both my talks accepted.
( granted one is a lightning talk ).
21:05 colomon joined
masak I should try to get a lightning talk in about Druid, as well. 21:05
ah well, let's let that be a reward if I get the other two talks done in time. (yeah right)
dalek kudo: 7b089e5 | moritz++ | src/core/operators.pm:
infix:<eqv> for numeric types (did not work with rats)
21:09
cono eqv - Numeric, cmp - Str ? 21:10
jnthn BinGOs: Nice 21:11
BinGOs: Didn't hear about one of mine yet, but it's a longer, tutorial style one.
cono rakudo: my @c = gather { for 1 .. Inf { take $_ ** 2 } }; @c.batch(5).perl.say
jnthn crosses his fingers that it's accepted too; it'd be fun to give.
p6eval rakudo ad2afb: ( no output )
cono rakudo: my $c = gather { for 1 .. Inf { take $_ ** 2 } }; $c.batch(5).perl.say
p6eval rakudo ad2afb: OUTPUT«(1, 4, 9, 16, 25)␤»
masak cono: no. == - Numeric, cmp - Str.
cono: eqv is for checking 'snapshot equivalence'.
21:12 gbacon left
cono masak: like object equivalence? 21:12
kolibrie sorear: I finally got to a slide where I had to mention you (about creating DEEP)
BinGOs jnthn: cool. 21:13
I've already booked hotel and flights.
moritz_ cono: eqv is general structural equivalence
cmp is the three-way comparison op 21:14
21:14 slavik joined
masak cono: no, the objects can be distinct but still give a True eqv comparison. 21:14
moritz_: oh right; I tend to get that one wrong.
Perl 5 interference. :/
moritz_ masak: the only remaining test failures in JSON are string escape (due to <[\x12]> being garbage), and one case where numbers types are not preserved
masak infix:<leg> is for Str.
moritz_ 4 vs 4/1 21:15
moritz_ -> bed
masak moritz_++
21:15 kensanata left
cono thanks for explanation :) 21:15
21:15 Limbic_Region joined
masak I'll be commenting out the protesting tests, marking them with a TODO comment. 21:15
buu Limbic_Region: Ok
21:15 slavik1 left
masak (in the proto repo, that is) 21:15
Limbic_Region heh
pmichaud fixes his slide. 21:16
cono pmichaud: to earth and aliens? :D
rakudo knows answer to life the universe and everything :D 21:17
sorear Are there any viable implementations of gather/take that don't involve continuations?
masak sorear: depends on what you consider to be a continuation, I think. 21:18
sorear: for example, I plan to make GGE have resumable subrules, by faking continuations enough.
those won't be actual continuations, they'll just behave indistinguishably from them.
sorear right 21:19
the problem with gather/take, in sprixelland, is that it forces CPS transformation of basically every function 21:20
because somebody could always do gather { &some-setting-fn := &take; yourfn; }
masak I'm not surprised.
sorear actually that would have to be := { take } because of lexoticness
masak I went down that road early in GGE development.
sorear (lexoticity?) 21:21
masak my CPS-fu wasn't strong enough :/
sorear is not entirely happy with trampolines
(and diakopter cautioned against relying on CLR tail calls) 21:22
21:22 Guest17144 left, Su-Shee left
sorear Is statement_prefix:<for> a wired in part of the syntax, or can it be rebound at rn time? 21:26
masak my hacking time for tonight has run out. I have the beginnings of a pls proof-of-concept here, but I'll need another similar hacking session tomorrow to have something to publish. the half-time result looks satisfactory, though. 21:28
'night, #perl6
21:29 masak left, kensanata joined 21:30 whiteknight joined 21:35 Guest17144 joined 21:36 Guest23195 left 21:37 patrickas joined 21:45 supernovus joined
sorear What happens as a result of class FakeNum { method ^does($tc) { $c === Num }; }; FakeNum.new + FakeNum.new ? 21:47
colomon $tc? 21:48
sorear type-constraint
it's bound in the signature of ^does
jnthn sorear: You lie in response to does I guess.
sorear: In terms of implementation, I hae that as putting the method into a role that gets mixed into the metaclass instance for the class FakeNum. 21:49
21:49 snearch left
jnthn Thus overriding the does method of the metaclass - but only for the one instance associated with FakeNum. 21:49
sorear jnthn: I'm actually asking about the last line, where the multi dispatcher calls &infix:<+>:(Num, Num) 21:51
with P6Opaque arguments of true-class FakeNum 21:52
jnthn Huh, I have to read the *whole* example.
;_)
sorear is implementing the lowest levels of a compiler and wants to know what his &infix:<+>:(Num,Num) should do when it gets wierd stuff that is nonetheless ~~Num
jnthn The typechecker does Num.ACCEPTS, but since Num is a class rather than a role it'll probably be more interested in isa than does.
sorear S12 states that Str $x means $x where { .^does(Str) } 21:53
jnthn Then it's wrong.
sorear but s/does/isa/ if you want, the essential points remain
jnthn where and nominal types mean different things in the context of multi-dispatch, so it's a bit mis-leading. 21:54
But the actual check the binder does is Str.ACCEPTS($x)
Though of course if we know full well that this would forward to .isa or .does we can inline it.
sorear class FakeNum { method ^isa($tc) { $c === Num }; }; FakeNum.new + FakeNum.new # what is &infix:<+>:(Num, Num) expected to do with arguments of unexpected representation?
jnthn sorear: Probably explode. 21:55
"oh noes you broke Liskov!"
21:56 supernovus left
jnthn sorear: I can't see it doing anything smart here though. 21:56
I mean, what can it do...
The worst bit is that the type checks hold up.
sorear Ok 21:57
jnthn So I guess it fails when we try and access an attribute or some such.
sorear As an implementor I love hearing "explode"
jnthn The users hate it. ;-)
sorear Makes things much easier
jnthn I suspect that our most basic forms of the multis that we eventually reach that actually do the addition may well want to be the lowercase (native) types. 21:58
I think the smop folks decided that native types are narrower than everything, iirc.
That may make a lot of sense.
sorear I asked TimToady yesterday exactly what native types were 21:59
He told me subset num of Num where { .defined && .HOW === Num.HOW && .REPR === Num.REPR } or something to that effect
Limbic_Region . o O ( and TimToady is well known for given exact answers ) 22:00
sorear i.e. num is simply the 2^whatever most normal values of Num
jnthn sorear: Interesting. 22:01
sorear: I mean, it's a description of what their possibilities are. :-)
I suspect that we can't quite use that definition literally though.
But the .REPR === Num.REPR answers a bunch of questions I had, I think.
TimToady subset uint8 of Int where 0..255; # is what I said
22:02 ash_ left
jnthn TimToady: For the valid range of values, perhaps so. 22:02
TimToady: But something is going to have to imply the "nativeness" too.
TimToady: Even if it's just something that the compiler magically knows what to do with.
TimToady well, the repr may not be extended 22:03
jnthn TimToady: e.g. I don't think the whole of native types is going to fall out by writing "subset uint8 of Int where 0..255;" in Rakudo. :-)
And so forth.
But it'd be lovely if it did. ;-)
TimToady you may add methods, but not change the format
jnthn TimToady: *nod*
TimToady: Though to call a method the thing has to be boxed?
TimToady: Or it's possible to call methods on unboxed things too?
TimToady: Or, ideally it has to be boxed but we can optimize the boxing away in some cases? 22:04
TimToady sure, but you have to have a typed "container"
jnthn TimToady: So "something" has to map native types to boxed types, iiuc.
TimToady my int $i'm-an-int = 42;
jnthn I'm curious what that "something" looks like.
pmichaud or, your container has to be able to hold a value of a native type
TimToady $i'm-an-int.method knows it's an int
or rather, an Int, from the method point of view 22:05
jnthn TimToady: Well, that's what I was trying to get at.
TimToady: There's some relationship between Int and int.
TimToady the container is the abstract variable, and you can't take a ref to it
(without boxing) 22:06
the point is that native types are storage constraints, not real base types
mberends good localtime 22:07
jnthn waves to mberends from a city a little way south of him
22:07 lest_away is now known as lestrrat
jnthn mberends: Long day? 22:08
diakopter real base types are no more?
mberends jnthn: very. successful too :) 22:09
could we expect something like $i'm-an-int.bits to tell us 32 or 64 at runtime?
TimToady might have to be VAR($i'm-an-int).bits 22:12
diakopter hm 22:13
jnthn mberends: Cool 22:14
araujo hi there guys, how it goes???
jnthn mberends: I has to get up for a flight in like 5 and a bit hours or so. :-/
mberends jnthn: not your usual schedule at all :( 22:15
jnthn mberends: No...had 9am meeting today too.
Ah well, no travel in July. I can schedule my days as I like then.
Meetings aside. ;-) 22:16
22:17 eternaleye left
mberends tomorrow my victi^Wstudents take exams and I'm largely free to hack 22:18
22:18 Guest17144 left
jnthn mberends: Yay! 22:18
sorear I don't understant VAR particularly well
jnthn mberends: Though too bad I'll be in the UK and won't be able to join you. 22:19
sorear I was under the impression that $foo *was* the container and it unboxed itself in scalar context
which was how infix:<=> worked
it doesn't assign a context on the LHS, so it got the container
22:20 EvanCarroll left
TimToady they are threatening us with food & 22:25
22:27 colomon left 22:29 tadzik left 22:35 patrickas left 22:42 alester left
sorear TimToady: hmm. If the Perl 6 parser is written in Perl 6, it has to run before main program CHECK time. Is there any loophole I can exploit to make it optimize anyway? 22:56
jnthn -> attempted sleep -> flight -> stupidly overpriced train journey that'll probably be late -> family stuff, probably be about tomorrow evening 22:57
23:01 Ross^ left
cognominal I am stuck with someone probably obvious to an exerciced eye : paste.lisp.org/display/111753 23:11
accessing an element of the array returns the array itself. This probably because I am using $_ as a lhs but I did not find a way out. 23:13
the number of the problematic line is 56 23:14
cognominal will golf his example 23:16
$_= ["0123", ["4567"], "809"]; say $_.perl; $_= $_[1]; say $_.perl; $_=$_[0]; say $_.perl; 23:23
I get ["0123", ["4567"], "809"] [["4567"]] [["4567"]]
I want ["0123", ["4567"], "809"] ["4567"] "4567"
I guess I found the way out. thx for the teddy bears. 23:26
...wrapping the result in @( ) before assigning it to $_ 23:27
cxreg that still leaves the final assignment as ["4567"] afaict 23:44
23:47 macdaddy left
cognominal cxreg, sorry, I must go to bed. I am to tired to think straight 23:49
23:50 azert0x left 23:54 stepnem left