| Time |
S |
Nick |
Message |
| 00:00 |
|
cognominal |
ulimit |
| 00:00 |
|
sorear |
ulimit -v |
| 00:00 |
|
sorear |
ulimit -m limits PHYSICAL memory use, and thus causes swapping to start sooner |
| 00:00 |
|
cognominal |
documented in the bash man page |
| 00:00 |
|
sorear |
do not mix up these two options |
| 00:01 |
|
sorear |
$ help ulimit |
| 00:03 |
|
cognominal |
apparently I need to do ulimit -S |
| 00:05 |
|
|
rv2733 joined #perl6 |
| 00:08 |
|
sundar |
The Rakudo 'repl' doesn't print the values of evaluated expressions automatically.. is this to be changed, or is this the intention? |
| 00:08 |
|
masak |
sundar: this is to be changed. |
| 00:08 |
|
jnthn |
'tis even on the ROADMAP. :-) |
| 00:09 |
|
jnthn |
sundar: It's one of a couple of REPL improvements that we really need. |
| 00:11 |
|
masak |
Moose 1.0! \o/ http://stevan-little.blogspot.[…]-is-released.html |
| 00:11 |
|
sundar |
ah ok.. I didn't really understand it since it's in the present tense: "REPL actually prints". :) |
| 00:12 |
|
jnthn |
sundar: It's things we want to be able to say are true some day. ;-) |
| 00:12 |
|
|
rv2733 left #perl6 |
| 00:13 |
|
sundar |
yeah, it sure will look good when it goes to the completed items list.. ;) |
| 00:15 |
|
sorear |
Moose 100 |
| 00:18 |
|
cognominal |
masak++ # now I compile under 10 minutes while doing other things |
| 00:18 |
|
masak |
moritz_++ # for the original tip :) |
| 00:20 |
|
* jnthn |
compiles his attempted fixes for the instance.t issues |
| 00:25 |
|
jnthn |
http://incise.org/hash-table-benchmarks.html # may be interesting for those hacking Perl 6 compilers. |
| 00:25 |
|
* colomon |
is building unobe's latest, while he prepares to escort the Chinese princess back to China. |
| 00:27 |
|
cognominal |
masak, is you perl 6 web application still maintained? |
| 00:27 |
|
masak |
cognominal: which one? |
| 00:27 |
|
cognominal |
Lightweight Perl 6 framework for web applications. Work-name is Web.pm. |
| 00:27 |
|
cognominal |
I meant web server |
| 00:28 |
|
masak |
we were just discussing that over email. |
| 00:28 |
|
masak |
we've done 19 grant weeks out of 20. |
| 00:28 |
|
masak |
it would be nice to wrap up the grant. |
| 00:28 |
|
masak |
but I feel we've lost touch with our grant manager and the TPF. |
| 00:29 |
|
masak |
(mostly because of long stretches of inactivity) |
| 00:29 |
|
jnthn |
masak: fwiw, on my own grants I've talked with TPF at the start and at the end. ;-) |
| 00:29 |
|
cognominal |
masak: I got perl6 Configure |
| 00:29 |
|
cognominal |
Null PMC access in find_method('get_parrotclass') |
| 00:29 |
|
cognominal |
current instr.: 'perl6;ClassHOW;onload' pc -1 ((unknown file):-1) |
| 00:29 |
|
cognominal |
Segmentation fault |
| 00:29 |
|
masak |
jnthn: that's a partial relief :) |
| 00:29 |
|
cognominal |
when trying to configure it. |
| 00:29 |
|
jnthn |
cognominal: make install not run? |
| 00:29 |
|
masak |
cognominal: I don't think anyone's tried to build Web.pm on the new master. |
| 00:29 |
|
masak |
yet. |
| 00:29 |
|
jnthn |
And trying to use Perl 6 outside of build directory? |
| 00:30 |
|
jnthn |
If so, run make install. :-) |
| 00:33 |
|
cognominal |
thx, jnthn |
| 00:34 |
|
cognominal |
now I probably need to tell it where to find modules... |
| 00:34 |
|
cognominal |
perl6 Configure |
| 00:34 |
|
cognominal |
Unable to find module 'Configure'. |
| 00:34 |
|
jnthn |
perl6 -e 'say @*INC.perl' will tell you that. |
| 00:35 |
|
masak |
export PERL6LIB=`pwd`/lib |
| 00:36 |
|
cognominal |
now, I guess I hit a real problem |
| 00:36 |
|
cognominal |
perl6 Configure |
| 00:36 |
|
cognominal |
You can not add a regex to a module; use a class, role or grammar |
| 00:36 |
|
masak |
right. |
| 00:36 |
|
masak |
that's just wrong. |
| 00:36 |
|
masak |
and known. |
| 00:36 |
|
jnthn |
Did we get a spec resolution on that? |
| 00:36 |
|
cognominal |
I suppose the recent work on module has invalidated some stuff |
| 00:37 |
|
masak |
well, TimToady said that we're definitely allowing regexes outside of grammars. |
| 00:37 |
|
masak |
that's good enough for me. |
| 00:37 |
|
jnthn |
masak: It was also stated that you'd have to write my regex or our regex. |
| 00:37 |
|
jnthn |
iirc. |
| 00:37 |
|
masak |
hm; possibly. |
| 00:37 |
|
jnthn |
The question is, do we warn and throw away all method declarations on a module that are has-scoped? |
| 00:37 |
|
masak |
it's getting to be high time to try to get the app cheese to build on the new Rakudo master. |
| 00:38 |
|
colomon |
app cheese?! |
| 00:38 |
|
jnthn |
Sounds crackers. |
| 00:38 |
|
cognominal |
the proof of takudo is in eating the apps :) |
| 00:39 |
|
cognominal |
*rakudo |
| 00:39 |
|
masak |
colomon: 'cheese' is just a term meaning 'totality' here :) |
| 00:40 |
|
colomon |
ah. strange usage, good idea. :) |
| 00:40 |
|
masak |
colomon: http://use.perl.org/~masak/journal/39583 |
| 00:41 |
|
masak |
hm, that URL doesn't actually *explain* the usage... :P |
| 00:41 |
|
masak |
it started when I accidentally a cheese slide on the last NPW... |
| 00:41 |
|
|
hercynium joined #perl6 |
| 00:42 |
|
jnthn |
It wasn't the whole cheese, though. |
| 00:43 |
|
masak |
colomon: a couple dozen slides into this presentation, there's a cheese: http://masak.org/carl/npw2009-november/talk.pdf |
| 00:43 |
|
|
yinyin joined #perl6 |
| 00:44 |
|
cognominal |
masak, is Web inspired from Sinatra like Perl 5 Dancer? |
| 00:44 |
|
cognominal |
I see a method Astaire so I wonder |
| 00:44 |
|
masak |
cognominal: the part of it called Astaire is. |
| 00:45 |
|
cognominal |
ok |
| 00:45 |
|
masak |
cognominal: the core of Web.pm is inspired by Ruby's Rack. |
| 00:45 |
|
jnthn |
instance.t annoyance fixed. |
| 00:45 |
|
masak |
s/inspired by/a faithful clone of/ |
| 00:46 |
|
dalek |
rakudo: e8b8da3 | jonathan++ | src/Perl6/ (3 files): |
| 00:46 |
|
dalek |
rakudo: Correct handling of attributes during the compile so we don't lose ordering, thus dealing with the intermittent instance.t fejls. |
| 00:46 |
|
dalek |
rakudo: review: http://github.com/rakudo/rakud[…]8ddd8c7db9cf6e195 |
| 00:46 |
|
|
fda314925 joined #perl6 |
| 00:46 |
|
cognominal |
There is so much Web framework around that I have trouble to remember the specificities. |
| 00:47 |
|
masak |
tell me about it. :) |
| 00:48 |
|
cognominal |
I think there is a wikipedia page but not really up to date |
| 00:48 |
|
cognominal |
http://en.wikipedia.org/wiki/C[…]cation_frameworks |
| 00:49 |
|
cognominal |
I remember having added to it weblift (a scala framework) a few months ago |
| 00:49 |
|
|
drakej joined #perl6 |
| 00:49 |
|
holli_ |
rakudo: grammar G { method TOP { die "!" } }; my $p; try { $p = G.parse("x"); }; say $p |
| 00:50 |
|
p6eval |
rakudo db0f85: OUTPUT«Any()» |
| 00:50 |
|
holli_ |
rakudo: grammar G { method TOP { { die "!" } } }; my $p; try { $p = G.parse("x"); }; say $p |
| 00:50 |
|
p6eval |
rakudo db0f85: OUTPUT«Any()» |
| 00:50 |
|
holli_ |
rakudo: grammar G { method TOP { { x } } }; my $p; try { $p = G.parse("x"); }; say $p |
| 00:50 |
|
p6eval |
rakudo db0f85: OUTPUT«Any()» |
| 00:50 |
|
masak |
cognominal: I keep wanting to check out weblift. |
| 00:51 |
|
colomon |
masak: running all the projects' tests! woo-hoo! go cheese! |
| 00:51 |
|
snarkyboojum |
I wrote some simple stuff in Lift - loved it's templating framework |
| 00:51 |
|
masak |
colomon: yeah. we're getting there. :) |
| 00:52 |
|
colomon |
\o/ |
| 00:59 |
|
snarkyboojum |
found debugging Lift issues problematic at the time (this was about 2 years ago tho :)) |
| 00:59 |
|
* snarkyboojum |
stops talking off topic ;) |
| 01:00 |
|
masak |
snarkyboojum: hi! |
| 01:04 |
|
snarkyboojum |
masak: hello! |
| 01:05 |
|
snarkyboojum |
I'm about to run off, so will bug you later on about Tardis :) |
| 01:05 |
|
masak |
:) |
| 01:05 |
|
|
frzntoz joined #perl6 |
| 01:05 |
|
masak |
I'm not sure how long I'll be staying. it's way past my bedtime. |
| 01:06 |
|
snarkyboojum |
in that case, an early goodnight from me :) |
| 01:06 |
|
snarkyboojum |
afk & |
| 01:06 |
|
masak |
:) |
| 01:07 |
|
* jnthn |
should sleep soonish too |
| 01:10 |
|
|
nihiliad joined #perl6 |
| 01:20 |
|
|
wolf2k_ubuntu joined #perl6 |
| 01:20 |
|
jnthn |
Sleep time, night all o/ |
| 01:20 |
|
masak |
'night, jnthn! |
| 01:24 |
|
|
wolf2k_ubuntu joined #perl6 |
| 01:26 |
|
dalek |
rakudo: 26ba8bf | (Solomon Foster)++ | (3 files): |
| 01:26 |
|
dalek |
rakudo: Merge branch 'master' of git://github.com/unobe/rakudo |
| 01:26 |
|
dalek |
rakudo: review: http://github.com/rakudo/rakud[…]30d2607dd3e30c2b0 |
| 01:26 |
|
dalek |
rakudo: 208fcab | (Solomon Foster)++ | src/Perl6/ (3 files): |
| 01:26 |
|
dalek |
rakudo: Merge branch 'master' of git github.com:rakudo/rakudo |
| 01:26 |
|
dalek |
rakudo: review: http://github.com/rakudo/rakud[…]87625bd267b80e5d3 |
| 01:29 |
|
|
Psyche^ joined #perl6 |
| 01:33 |
|
cognominal |
squerl |
| 01:44 |
|
|
ash_ joined #perl6 |
| 01:46 |
|
|
frzntoz left #perl6 |
| 01:47 |
|
|
justatheory joined #perl6 |
| 01:55 |
|
|
wolf2k_ubuntu joined #perl6 |
| 02:18 |
|
|
xinming joined #perl6 |
| 02:18 |
|
|
am0c joined #perl6 |
| 02:28 |
|
* am0c |
hugs p6eval |
| 02:30 |
|
colomon |
rakudo: my @a = 1..10; my @b = 'a'..'f'; zip(@a, @b) |
| 02:30 |
|
p6eval |
rakudo db0f85: OUTPUT«Could not find non-existent sub &zipcurrent instr.: '_block14' pc 29 (EVAL_1:0)» |
| 02:32 |
|
colomon |
rakudo: multi zip(**@list) { @list[0] Z @list[1] }; my @a = 1..10; my @b = 'a'..'f'; say zip(@a;@b) |
| 02:32 |
|
p6eval |
rakudo db0f85: OUTPUT«Malformed parameter at line 11, near "**@list) {"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» |
| 02:33 |
|
colomon |
drat |
| 02:43 |
|
|
Alias joined #perl6 |
| 02:50 |
|
pugssvn |
r30203 | colomon++ | [t/spec] Fudge for Rakudo. |
| 02:56 |
|
|
simonm joined #perl6 |
| 03:08 |
|
|
dalek joined #perl6 |
| 03:27 |
|
dalek |
rakudo: f7d3461 | (Solomon Foster)++ | src/core/Any-list.pm: |
| 03:27 |
|
dalek |
rakudo: Quick implementation of Any.pairs. |
| 03:27 |
|
dalek |
rakudo: review: http://github.com/rakudo/rakud[…]f31947571da118df1 |
| 03:27 |
|
dalek |
rakudo: 1882918 | (Solomon Foster)++ | t/spectest.data: |
| 03:27 |
|
dalek |
rakudo: Turn on S32-array/pairs.t. |
| 03:27 |
|
dalek |
rakudo: review: http://github.com/rakudo/rakud[…]41f25296c83af7e03 |
| 03:35 |
|
colomon |
rakudo: say split("", "forty-two") |
| 03:35 |
|
p6eval |
rakudo db0f85: OUTPUT«forty-two» |
| 03:38 |
|
colomon |
rakudo: say "forty-two".split(""); |
| 03:38 |
|
p6eval |
rakudo db0f85: OUTPUT«forty-two» |
| 03:38 |
|
colomon |
rakudo: say split("", "forty-two").perl |
| 03:38 |
|
p6eval |
rakudo db0f85: OUTPUT«GatherIterator.new()» |
| 03:38 |
|
colomon |
rakudo: say split("", "forty-two").eager.perl |
| 03:38 |
|
p6eval |
rakudo db0f85: OUTPUT«("f", "o", "r", "t", "y", "-", "t", "w", "o")» |
| 03:49 |
|
am0c |
say "forty-two".split('').perl.say |
| 03:49 |
|
am0c |
rakudo: "forty-two".split('').perl.say |
| 03:49 |
|
p6eval |
rakudo db0f85: OUTPUT«GatherIterator.new()» |
| 03:49 |
|
am0c |
ah? |
| 03:50 |
|
am0c |
rakudo: "forty-two".split('').eager.perl.say |
| 03:50 |
|
p6eval |
rakudo db0f85: OUTPUT«("f", "o", "r", "t", "y", "-", "t", "w", "o")» |
| 03:50 |
|
am0c |
oic.. |
| 03:50 |
|
snarkyboojum |
rakudo: my @a = "forty-two".split(''); @a.perl.say |
| 03:51 |
|
p6eval |
rakudo db0f85: OUTPUT«["f", "o", "r", "t", "y", "-", "t", "w", "o"]» |
| 03:51 |
|
sorear |
@ isn't lazy... yet |
| 03:53 |
|
|
_jaldhar joined #perl6 |
| 03:55 |
|
am0c |
sorear: just an @ after assignment is lazy later at default? |
| 03:55 |
|
am0c |
s/@/simple @/; # i mean |
| 03:56 |
|
colomon |
rakudo: say "".split('').eager.perl |
| 03:56 |
|
p6eval |
rakudo db0f85: OUTPUT«("", )» |
| 03:56 |
|
snarkyboojum |
alpha: my @a = 1..Inf; |
| 03:56 |
|
snarkyboojum |
heh |
| 03:56 |
|
p6eval |
alpha 30e0ed: ( no output ) |
| 03:57 |
|
am0c |
alpha? |
| 03:57 |
|
am0c |
p6eval: help |
| 03:57 |
|
p6eval |
am0c: Usage: <(mildew-js|pugs|nqp|mildew|std|rakudo|perlito|alpha|sprixel|elf|highlight): $perl6_program> |
| 03:57 |
|
am0c |
p6eval: help alpha |
| 03:57 |
|
p6eval |
am0c: Usage: <(mildew-js|pugs|nqp|mildew|std|rakudo|perlito|alpha|sprixel|elf|highlight): $perl6_program> |
| 03:57 |
|
snarkyboojum |
am0c: alpha branch of rakudo pre ng |
| 03:58 |
|
snarkyboojum |
alpha: "forty-two".split('').batch(*).say |
| 03:58 |
|
p6eval |
alpha 30e0ed: OUTPUT«Method 'batch' not found for invocant of class 'List'in Main (file src/gen_setting.pm, line 324)» |
| 03:59 |
|
snarkyboojum |
rakudo: "forty-two".split('').batch(*).say |
| 03:59 |
|
p6eval |
rakudo db0f85: OUTPUT«Method 'Int' not found for invocant of class 'Block'current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)» |
| 03:59 |
|
snarkyboojum |
does Whatever work there? :) |
| 03:59 |
|
snarkyboojum |
rakudo: "forty-two".split('').batch(9).say |
| 03:59 |
|
p6eval |
rakudo db0f85: OUTPUT«forty-two» |
| 04:00 |
|
snarkyboojum |
am0c: http://github.com/rakudo/rakudo/tree/alpha |
| 04:01 |
|
am0c |
I see! |
| 04:01 |
|
snarkyboojum |
pre nq.. lol. I meant pre nqp-rx |
| 04:03 |
|
snarkyboojum |
mildew-js: say "hi" |
| 04:03 |
|
p6eval |
mildew-js: OUTPUT«Can't open perl script "mildew": No such file or directory» |
| 04:04 |
|
snarkyboojum |
mildew: say "hi" |
| 04:04 |
|
p6eval |
mildew: OUTPUT«Can't open perl script "mildew": No such file or directory» |
| 04:04 |
|
snarkyboojum |
elf: say "well hello" |
| 04:04 |
|
p6eval |
elf 30203: OUTPUT«well hello» |
| 04:06 |
|
snarkyboojum |
rakudo: my $x = * * 2; say <1 2 3>.map: $x |
| 04:06 |
|
p6eval |
rakudo db0f85: OUTPUT«Method 'Num' not found for invocant of class 'Block'current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)» |
| 04:06 |
|
snarkyboojum |
alpha: my $x = * * 2; say <1 2 3>.map: $x |
| 04:06 |
|
p6eval |
alpha 30e0ed: OUTPUT«246» |
| 04:08 |
|
snarkyboojum |
rakudo: my $x = * * 2; say $x(5) |
| 04:08 |
|
p6eval |
rakudo db0f85: OUTPUT«Method 'Num' not found for invocant of class 'Block'current instr.: 'perl6;Mu;' pc -1 ((unknown file):-1)» |
| 04:09 |
|
snarkyboojum |
rakudo: say <1 2 3>.map: -> $x { $x.succ } |
| 04:09 |
|
p6eval |
rakudo db0f85: OUTPUT«234» |
| 04:09 |
|
snarkyboojum |
rakudo: say <1 2 3>.map: *.succ |
| 04:09 |
|
p6eval |
rakudo db0f85: OUTPUT«invoke() not implemented in class 'String'current instr.: 'perl6;Code;signature' pc 13156 (src/builtins/Str.pir:115)» |
| 04:09 |
|
snarkyboojum |
alpha: say <1 2 3>.map: *.succ |
| 04:09 |
|
p6eval |
alpha 30e0ed: OUTPUT«234» |
| 04:10 |
|
pugssvn |
r30204 | colomon++ | [t/spec] Redo split.t to use .join(',') for testing rather than is_deeply, as the latter does not really work with iterators. |
| 04:10 |
|
ash_ |
rakudo: map { say $_ * 2 }, <1 2 3> # rakudo is a bit to lazy sometimes |
| 04:10 |
|
p6eval |
rakudo db0f85: ( no output ) |
| 04:11 |
|
colomon |
BTW, if someone is looking for something to do, I think split.t could easily use twice as many tests as it has now... |
| 04:13 |
|
ash_ |
i can try to take a look at it later |
| 04:13 |
|
dalek |
rakudo: b2f995a | (Solomon Foster)++ | t/spectest.data: |
| 04:13 |
|
dalek |
rakudo: Turn on split.t. |
| 04:13 |
|
dalek |
rakudo: review: http://github.com/rakudo/rakud[…]aeee5ca1ec1919a9d |
| 04:15 |
|
|
holli joined #perl6 |
| 04:17 |
|
|
meppel joined #perl6 |
| 04:21 |
|
snarkyboojum |
buubot: karma colomon |
| 04:21 |
|
buubot |
snarkyboojum: colomon has karma of 378 |
| 04:21 |
|
snarkyboojum |
buubot: karma audreyt |
| 04:21 |
|
buubot |
snarkyboojum: audreyt has karma of 8 |
| 04:22 |
|
snarkyboojum |
interesting :) |
| 04:22 |
|
sorear |
buubot is a new player |
| 04:22 |
|
buubot |
sorear: Couldn't match input. |
| 04:22 |
|
colomon |
audreyt does't really do much around here anymore. but certainly deserves higher karma tan me.... |
| 04:22 |
|
colomon |
*than |
| 04:23 |
|
sorear |
back in the heydey of #perl6 karma was managed by lambdabot |
| 04:23 |
|
sorear |
or the heydey of pugs, anyway |
| 04:23 |
|
snarkyboojum |
aye |
| 04:23 |
|
colomon |
I thought the karma has been reset several times just in the last year.... |
| 04:23 |
|
sorear |
also I've got ~500 lambdabot karma from my time in #haskell that didn't carry over :( |
| 04:29 |
|
|
molaf joined #perl6 |
| 04:31 |
|
|
snarkyboojum joined #perl6 |
| 04:40 |
|
|
Trashlord joined #perl6 |
| 04:51 |
|
|
holli joined #perl6 |
| 06:20 |
|
|
xinming joined #perl6 |
| 06:26 |
|
|
Sarten-X joined #perl6 |
| 06:38 |
|
* holli |
is pondering about new operators: <?p6?> and <? code ?> |
| 06:39 |
|
holli |
like ib php. it would turn perl6 instantly into the worlds most powerful templating language. |
| 06:39 |
|
holli |
s/in/php/ |
| 06:39 |
|
holli |
bah, s/ib/in/ |
| 06:47 |
|
|
chromatic joined #perl6 |
| 07:04 |
|
|
rekhajos joined #perl6 |
| 07:25 |
|
holli |
rakudo: sub MAIN { say "M" } |
| 07:25 |
|
p6eval |
rakudo db0f85: ( no output ) |
| 07:30 |
|
|
yahooooo joined #perl6 |
| 07:35 |
|
|
payload joined #perl6 |
| 07:38 |
|
pugssvn |
r30205 | lwall++ | [specs] Make it clear that pairs are *not* related to subscripts, but the |
| 07:38 |
|
pugssvn |
r30205 | corresponding fatarrow semantics in particular, name extenders are just |
| 07:38 |
|
pugssvn |
r30205 | strings or list of strings, properly indicated by :<> or :() in most cases |
| 07:38 |
|
pugssvn |
r30205 | (this includes all operator names). Forbid name extension using :{}, and |
| 07:38 |
|
pugssvn |
r30205 | since names may no longer be extended with :{}, we can free up that notation |
| 07:38 |
|
pugssvn |
r30205 | for supplying a closure as a first argument to a method without an intervening |
| 07:38 |
|
pugssvn |
r30205 | space. (We can't also get rid of the colon, or it's a hash subscript.) |
| 07:41 |
|
pugssvn |
r30206 | lwall++ | [STD] Properly object to unrecognized internal regex modifiers such as :has. |
| 07:41 |
|
pugssvn |
r30206 | Parse to the new specs regarding name extensions, and allow colon method arguments |
| 07:41 |
|
pugssvn |
r30206 | to omit the space if the next char is a left curly, which is what people seem to |
| 07:41 |
|
pugssvn |
r30206 | expect anyway. |
| 07:45 |
|
|
mberends joined #perl6 |
| 07:51 |
|
pugssvn |
r30207 | lwall++ | [t/spec] patch up occurrences of infix:{...} etc. to align with current spec |
| 07:52 |
|
sjohnson |
@karma |
| 07:52 |
|
mberends |
holli: for templating you've also already got $s = "text { code } text"; |
| 07:53 |
|
TimToady |
Perl 6 is already the world's most powerful templating language. :) |
| 07:54 |
|
mberends |
:) |
| 07:54 |
|
TimToady |
and where it isn't, it will be trivial to tweak it till it is. |
| 07:55 |
|
TimToady |
well, trivial for the user, anyway...the implementation of all that is not so trivial, from STD's perspective... |
| 08:02 |
|
|
hanekomu_ joined #perl6 |
| 08:03 |
|
|
riffraff joined #perl6 |
| 08:12 |
|
|
Su-Shee joined #perl6 |
| 08:16 |
|
|
iblechbot joined #perl6 |
| 08:30 |
|
pugssvn |
r30208 | lwall++ | [STD] more deletion of no-longer-needed xacts |
| 08:39 |
|
|
dalek joined #perl6 |
| 09:08 |
|
|
dakkar joined #perl6 |
| 09:16 |
|
jnthn |
morning |
| 09:18 |
|
sorear |
hello |
| 09:18 |
|
sorear |
blizkost is fighting me |
| 09:20 |
|
jnthn |
Fight back! Fight back! |
| 09:20 |
|
jnthn |
Yes, I fighted me too. :-) |
| 09:21 |
|
sorear |
today's insanity is the macro war between perl.h and parrot.h |
| 09:22 |
|
sorear |
also, I'd like to give thanks to whoever put rm *.c *.h in the clean rule for build/src/pmc/Makefile.in |
| 09:29 |
|
jnthn |
sorear: Just a standard thing. |
| 09:29 |
|
jnthn |
(from the language template) |
| 09:29 |
|
jnthn |
I don't find it particularly surprising. |
| 09:30 |
|
jnthn |
I'm guessing you put .c and .h files in there that weren't the PMC's ones though. :-/ |
| 09:30 |
|
sorear |
yep! |
| 09:30 |
|
jnthn |
:-) |
| 09:30 |
|
sorear |
luckily I'm in the habit of commiting *before* testing |
| 09:30 |
|
jnthn |
Phew. |
| 09:31 |
|
jnthn |
Perhaps it's nice to pop them in some other folder. Less risk, and after all, they aren't pmcs, they're other stuff. :-) |
| 09:34 |
|
|
clintongormley joined #perl6 |
| 09:38 |
|
|
cotto joined #perl6 |
| 09:53 |
|
moritz_ |
rakudo: say [1,2,3,4] |
| 09:53 |
|
p6eval |
rakudo db0f85: OUTPUT«1 2 3 4» |
| 09:53 |
|
moritz_ |
rakudo: say [[1,2],[3,4]] |
| 09:53 |
|
p6eval |
rakudo db0f85: OUTPUT«1 2 3 4» |
| 09:55 |
|
moritz_ |
rakudo: use Test; is_deeply [1,2,3,4], [[1,2],[3,4]] |
| 09:55 |
|
p6eval |
rakudo db0f85: OUTPUT«not ok 1 - # got: [1, 2, 3, 4]# expected: [[1, 2], [3, 4]]» |
| 09:57 |
|
moritz_ |
rakudo++ |
| 09:59 |
|
|
payload joined #perl6 |
| 10:08 |
|
|
gfx joined #perl6 |
| 10:17 |
|
|
ktne joined #perl6 |
| 10:19 |
|
|
eternaleye joined #perl6 |
| 10:48 |
|
|
xinming_ joined #perl6 |
| 10:58 |
|
|
pmurias joined #perl6 |
| 11:08 |
|
|
raygis joined #perl6 |
| 11:17 |
|
|
fda314925 joined #perl6 |
| 11:24 |
|
|
sundar joined #perl6 |
| 11:29 |
|
|
colomon joined #perl6 |
| 11:41 |
|
|
meppl joined #perl6 |
| 11:42 |
|
|
synth joined #perl6 |
| 11:48 |
|
|
envi^home joined #perl6 |
| 12:10 |
|
|
sundar joined #perl6 |
| 12:22 |
|
|
masak joined #perl6 |
| 12:22 |
|
masak |
oh hai, #perl6 |
| 12:22 |
|
|
mj41 joined #perl6 |
| 12:23 |
|
mberends |
oh hai masak |
| 12:23 |
|
* masak |
picked the wrong hours to sleep tonight |
| 12:27 |
|
|
sundar joined #perl6 |
| 12:28 |
|
|
[synth] joined #perl6 |
| 12:30 |
|
|
envi^home joined #perl6 |
| 12:30 |
|
jnthn |
masak: Just awake? :-) |
| 12:31 |
|
masak |
jnthn: been up a few hours. :) |
| 12:31 |
|
masak |
but still. kinda late. |
| 12:34 |
|
mberends |
jnthn: for separate compilation of core/*.pm, is it good or bad to consider inserting the generated traits.pir into the front of every other modules that mentions traits? |
| 12:35 |
|
jnthn |
masak: Ah. Spent my morning on visa crap. But aside from giving some stuff to a courier who'll show up later, I think I'm done now. |
| 12:35 |
|
jnthn |
masak: The visa form has got...a lot worse...since last time I did it. :-/ |
| 12:35 |
|
jnthn |
mberends: Yes that would be very bad. |
| 12:35 |
|
masak |
jnthn: ok. I'd better start digging in that matter, then. |
| 12:35 |
|
jnthn |
masak: Well. |
| 12:36 |
|
jnthn |
masak: But you're not British, so your form is probably simpler. |
| 12:36 |
|
masak |
:) |
| 12:36 |
|
jnthn |
I'm not joking. The form I filled out is the special one for the UK, the US and Georgia. |
| 12:38 |
|
cognominal |
I am afraid that with our president that France will become an aligned country and pick that sort of sillinyess |
| 12:39 |
|
|
ignacio_ joined #perl6 |
| 12:40 |
|
* moritz_ |
hopes that France does not leave the Schengen treaty |
| 12:41 |
|
jnthn |
That would suck. |
| 12:42 |
|
|
justatheory joined #perl6 |
| 12:42 |
|
masak |
A hole the size of France in the middle of the Schengen zone? no kidding! |
| 12:44 |
|
takadonet |
morning all |
| 12:45 |
|
|
ruoso joined #perl6 |
| 12:48 |
|
jnthn |
masak: Well, slightly to the left of... ;-) |
| 12:49 |
|
|
ignacio__ joined #perl6 |
| 12:53 |
|
|
snarkyboojum joined #perl6 |
| 12:53 |
|
sundar |
Hi... I installed libreadline6-dev, did a "perl Configure.pl", "make clean && make && sudo make install" in the parrot directory. Still, running "perl6" does not give me readline support.. What am I missing? |
| 12:54 |
|
|
riffraff joined #perl6 |
| 12:55 |
|
sundar |
I have parrot checked out as ~/svn_parrot/, and rakudo in ~/svn_parrot/runtime/parrot/languages/rakudo/. I ran the above commands from ~/svn_parrot/. |
| 12:55 |
|
masak |
sundar: need to rebuild Parrot after installing readline. |
| 12:55 |
|
moritz_ |
sundar: I have libreadline5-dev (5.2-3.1), works here |
| 12:55 |
|
masak |
sundar: specifically, make sure the Parrot configure phase finds it. |
| 12:56 |
|
sundar |
yes, it said "auto::readline - Does your platform support readline.................yes." |
| 12:56 |
|
moritz_ |
sundar: and di you reconfigure rakudo after you re-installed parrot? |
| 12:58 |
|
|
takadonet joined #perl6 |
| 12:58 |
|
sundar |
ouch.. I rebuilt Parrot, but did not rebuild rakudo itself.. :) I somehow assumed make-ing parrot will do it for me.. I'm rebuilding rakudo now. |
| 12:58 |
|
moritz_ |
sundar: and it did, 2 years ago |
| 12:58 |
|
moritz_ |
but since then rakudo and parrot have come considerably detangled |
| 13:00 |
|
sundar |
yeah, I understand, it's better to not have unnecessary couplings. Though, is it possible to add an option to parrot's Configure.pl to rebuild all the languages under languages/ directory too? |
| 13:02 |
|
sundar |
we should have a consistent build mechanism for the languages though, for that to work.. and for specifying options to individual language configurations, we could have a CONFIGURE_OPTIONS file under the language directory.. |
| 13:03 |
|
masak |
sundar: ooh, you keep Rakudo under languages/ ? |
| 13:03 |
|
masak |
sundar: I'm one of the few who still do :) |
| 13:03 |
|
masak |
(not that it matters much. I build Parrot and Rakudo separately) |
| 13:04 |
|
sundar |
:) yes.. it somehow feels cleaner to me. |
| 13:05 |
|
sundar |
masak: from what I just understood, we _have_ to build them separately now, isn't it? |
| 13:05 |
|
masak |
sundar: well, there's the option of letting Rakudo pull in Parrot. |
| 13:06 |
|
masak |
most people seem to take that route nowadays. |
| 13:06 |
|
masak |
I don't because I want to have the latest Parrot. |
| 13:06 |
|
masak |
not the one Rakudo is set to pull in. |
| 13:09 |
|
sundar |
ah ok.. I too don't, though mostly due to philosophical reasons (refer 'cleaner' above :) ).. But this does have the risk that Rakudo might some days not build against the latest parrot, isn't it? |
| 13:10 |
|
moritz_ |
masak: I keep parrot under rakudo, and still use the latest one |
| 13:10 |
|
masak |
oh, ok. |
| 13:10 |
|
moritz_ |
but I agree, it doesn't feel so good, because if you have 20 languages, you don't want a parrot tree for each of them |
| 13:11 |
|
sundar |
moritz_: oh, I thought even in that setup you could have additional languages under a languages/ directory.. Isn't that possible? |
| 13:11 |
|
moritz_ |
sundar: it would, yes |
| 13:11 |
|
moritz_ |
sundar: but then I have rakudo/parrot/languages/cardinal |
| 13:12 |
|
moritz_ |
but why should cardinal be in a rakudo sub directory? |
| 13:12 |
|
moritz_ |
then I'd actually prefer symlinks |
| 13:12 |
|
|
payload joined #perl6 |
| 13:12 |
|
moritz_ |
let each language has its parrot/ dir, which is actually a link to one single parrot tree |
| 13:14 |
|
sundar |
moritz_: hmmm yeah, that's better. though, we'd have problems when rakudo and some other language want different versions of Parrot.. |
| 13:16 |
|
masak |
if map and grep use gather internally, will it be impossible to have a 'take' behave correctly inside the block of a map or a grep? |
| 13:18 |
|
moritz_ |
masak: yes |
| 13:19 |
|
moritz_ |
rakudo: say <a b c>.map({take 2; $_ }).eager |
| 13:19 |
|
p6eval |
rakudo db0f85: OUTPUT«take without gathertake without gathertake without gatherabc» |
| 13:19 |
|
moritz_ |
rakudo: say <a b c>.grep({take 2; $_ }).eager |
| 13:19 |
|
p6eval |
rakudo db0f85: OUTPUT«2a2b2c» |
| 13:21 |
|
jnthn |
Note that map doesn't use gather/take. |
| 13:21 |
|
moritz_ |
yes, just noticed |
| 13:21 |
|
moritz_ |
but it's still lazy? |
| 13:21 |
|
jnthn |
Yes |
| 13:21 |
|
jnthn |
But has its own kind of iterator (MapIterator) |
| 13:21 |
|
jnthn |
You could do it in terms of gather/take too. |
| 13:22 |
|
masak |
that's just the thing. |
| 13:22 |
|
masak |
the Spec doesn't spec how to implement map and grep. |
| 13:22 |
|
jnthn |
Good. |
| 13:22 |
|
jnthn |
It shouldn't. |
| 13:22 |
|
masak |
which means, by extension, that it shouldn't interfere with an outer gather. |
| 13:22 |
|
jnthn |
is gather/take lexotic? |
| 13:22 |
|
masak |
so I'd consider the current behaviour of grep a bug. |
| 13:22 |
|
masak |
it's dynamic, I think. |
| 13:22 |
|
moritz_ |
jnthn: I think it's purely dynamic |
| 13:23 |
|
masak |
I don't fully grok lexotic yet. I think 'return' is lexotic. |
| 13:23 |
|
moritz_ |
return = dynamic, but the end points are still tied to a lexical scope |
| 13:24 |
|
jnthn |
lexotic iirc is like, look lexically first |
| 13:24 |
|
jnthn |
then dynamically if nothing found |
| 13:25 |
|
masak |
huh. |
| 13:28 |
|
|
am0c joined #perl6 |
| 13:32 |
|
|
envi^home joined #perl6 |
| 13:42 |
|
|
ash_ joined #perl6 |
| 13:43 |
|
sundar |
a basic question.. I tried a small change to src/core/operators.pm, did "make && sudo make install" in the rakudo directory, but could not see its effect when I run perl6. what am I doing wrong? |
| 13:44 |
|
moritz_ |
sundar: what did you change? |
| 13:44 |
|
moritz_ |
usually you should see the changes |
| 13:45 |
|
moritz_ |
except when it's in a multi candidate you don't call |
| 13:46 |
|
sundar |
ah it _is_ a multi sub, but I don't see any other candidates in this file. the change was in infix:<Z> |
| 13:49 |
|
moritz_ |
rakudo: say 2 Z 3 |
| 13:49 |
|
p6eval |
rakudo db0f85: OUTPUT«No applicable candidates found to dispatch to for 'infix:<Z>'. Available candidates are::(Iterable $a-iterable, Iterable $b-iterable)current instr.: '_block14' pc 29 (EVAL_1:0)» |
| 13:49 |
|
moritz_ |
there seems to be only one candidate, yes |
| 13:49 |
|
moritz_ |
masak: have you seen this? :-) |
| 13:49 |
|
sundar |
the diff is at http://codepad.org/wpyDibhD (I couldn't get paste.lisp to work).. basically I changed "take $a; take $b;" to "take [$a, $b, "OH HAI"];" :) |
| 13:49 |
|
jnthn |
Probably needs one more candidate. |
| 13:50 |
|
jnthn |
multi infix:<Z>($a, $b) { &infix:<Z>($a.list, $b.list) } |
| 13:50 |
|
moritz_ |
sundar: that should make a difference... don't know why it doesn't |
| 13:50 |
|
jnthn |
That's what we've done for hypers etc. |
| 13:50 |
|
moritz_ |
sundar: just a wild guess.. do you have multiple perl6 binaries installed, and calling the wrong one? |
| 13:51 |
|
moritz_ |
sundar: try ./perl6 -e 'say 1, 2 Z 3, 4' |
| 13:51 |
|
masak |
moritz_: nope, hadn't seen that one. |
| 13:52 |
|
* masak |
submits rakudobug |
| 13:53 |
|
sundar |
moritz_: that gives 1324 only. |
| 13:55 |
|
jnthn |
rakudo: say 1, 2 Z 3, 4 |
| 13:55 |
|
p6eval |
rakudo db0f85: OUTPUT«1324» |
| 13:55 |
|
jnthn |
That's correct. |
| 13:55 |
|
sundar |
moritz_: ah I don't have multiple perl6 binaries, but there is something fishy.. the modification timestamp of my perl6 binary is old.. |
| 13:55 |
|
jnthn |
oh, wait, you'd added something...sorry |
| 13:55 |
|
* jnthn |
only half watching. |
| 13:55 |
|
sundar |
should I for some reason reconfigure before doing make and make install? |
| 13:56 |
|
moritz_ |
nope |
| 13:56 |
|
moritz_ |
but you should be aware where rakudo installs its perl6 binary |
| 13:56 |
|
moritz_ |
and that is just where the parrot binary is with which rakudo was configured |
| 13:57 |
|
|
Trashlord joined #perl6 |
| 13:57 |
|
sundar |
which perl6 says /usr/local/bin/perl6, and my most recent make install has a "/usr/bin/perl -MExtUtils::Command -e cp perl6 /usr/local/bin" line.. |
| 13:59 |
|
sundar |
but from a stat on the file it appears only the status was changed in this run.. the modification time is from an old run (probably one run after a git pull).. |
| 14:08 |
|
|
pugssvn joined #perl6 |
| 14:09 |
|
sundar |
I tried a make clean && make && make install too, which didn't help either.. any clues? |
| 14:20 |
|
|
pugssvn joined #perl6 |
| 14:27 |
|
mathw |
sundar: have you tried make realclean, then reconfigure and make from scratch? |
| 14:28 |
|
sundar |
mathw: hmmm I tried reconfigure and make, now running "make realclean && perl Configure.pl && make && make install".. that is what you're suggesting, correct? |
| 14:29 |
|
ash_ |
hmmm, yesterday someone said it took them like 2 hours to make rakudo on their mac, i just did a "time make" on mine, real8m58.554s |
| 14:29 |
|
ash_ |
user5m7.448s |
| 14:29 |
|
ash_ |
sys2m20.594s, i am wondering if there was another issue... maybe? |
| 14:30 |
|
mathw |
ash_: there may have been |
| 14:30 |
|
mathw |
sundar: make realclean cleans more things, so it might help. |
| 14:31 |
|
jnthn |
Those build times are on the high side. :-/ |
| 14:32 |
|
jnthn |
ash_: Was it for Parrot too, or jsut Rakudo? |
| 14:32 |
|
ash_ |
just rakudo |
| 14:32 |
|
|
nihiliad joined #perl6 |
| 14:32 |
|
jnthn |
Ugh. |
| 14:33 |
|
ash_ |
i didn't time the whole thing, just make on rakudo, i guess i could time build for parrot too |
| 14:36 |
|
sundar |
ugh.. even realclean didn't help it.. it gives the same old output and even the perl6 binary hasn't been changed.. |
| 14:38 |
|
ash_ |
jnthn: build of parrot: real4m15.767s |
| 14:44 |
|
masak |
rakudo: Misspelled::Typename |
| 14:44 |
|
p6eval |
rakudo db0f85: OUTPUT«Null PMC access in invoke()current instr.: '_block14' pc 29 (EVAL_1:0)» |
| 14:44 |
|
masak |
:( |
| 14:47 |
|
|
dalek joined #perl6 |
| 14:52 |
|
sundar |
does anyone have any idea why make install is not modifying my 'perl6' file? or how can I track down what the issue is? have any of you faced such issues? |
| 14:53 |
|
masak |
sundar: is it failing to copy the file? maybe it doesn't have the privileges? |
| 14:54 |
|
sundar |
I ran it with sudo, and it didn't complain of any failure either.. |
| 14:54 |
|
sundar |
but the timestamp is an old one, doesn't change after I change something and do a make install. |
| 14:54 |
|
|
synth joined #perl6 |
| 14:54 |
|
|
[synth] joined #perl6 |
| 14:54 |
|
|
ash_ joined #perl6 |
| 14:55 |
|
sundar |
to be clear, the _modify_ timestamp is an old one.. the _change_ timestamp gets changed every time I run make install.. |
| 14:55 |
|
masak |
I've never heard of anyone with this problem before. |
| 14:57 |
|
ash_ |
i did a make realclean and re-ran make, it timed as: real 10m30.311s |
| 14:58 |
|
|
dalek joined #perl6 |
| 14:59 |
|
sundar |
could some kind soul here try the changes I did and see if make install changes the perl6 binary for them? I changed "take $a; take $b;" to "take [$a, $b, "OH HAI"]" in infix:<Z> in operators.pm (diff: http://codepad.org/wpyDibhD) |
| 15:00 |
|
* masak |
tries |
| 15:14 |
|
sundar |
FTR, I now tried changing the definitions of say() in IO.pm to print "OH HAI" as well, but make install didn't care about this either... |
| 15:15 |
|
jnthn |
sundar: Maybe try locating and removing all perl6 executables, or rename them, or something. Then do make install and you'll get a feel for where it's actually installing things to. |
| 15:17 |
|
sundar |
jnthn: ah, that somehow did the trick - I renamed /usr/local/bin/perl6, ran make install, and voila, the perl6 now has the modifications I did! thanks.. |
| 15:18 |
|
sundar |
but previously too, it was using this location only - every time I ran make install, the _Change_ timestamp of the file would change. Why make install didn't change the actual content too is puzzling to me.. |
| 15:23 |
|
|
nihiliad joined #perl6 |
| 15:25 |
|
pugssvn |
r30209 | lwall++ | [times.t] fix parsefail I installed last night |
| 15:30 |
|
TimToady |
std: /:x(6) \d/ # currently disallowed, tempted to keep it that way |
| 15:30 |
|
p6eval |
std 30208: OUTPUT«===[0mSORRY!===[0mUnrecognized regex modifier :x at /tmp/r01WLKdXQR line 1:------> /:x⏏(6) \d/ # currently disallowed, temptedFAILED 00:01 107m» |
| 15:31 |
|
masak |
as long as it's clear which adverbs can be used both outside and inside a regex, and which ones can only be used outside. |
| 15:32 |
|
masak |
> say 1,2,3 Z 4,5,6 |
| 15:32 |
|
masak |
1 4 OH HAI2 5 OH HAI3 6 OH HAI |
| 15:32 |
|
masak |
|
| 15:32 |
|
masak |
sundar: worksforme. |
| 15:32 |
|
TimToady |
what's clear is that :x(6) will not be clear on the inside |
| 15:32 |
|
masak |
I agree, I think. |
| 15:32 |
|
sundar |
masak: hmmm.. it worked for me too after I renamed the preexisting perl6 binary.. did you have a perl6 binary at the place previously? |
| 15:33 |
|
masak |
TimToady: it feels more like talking *about* the regex, as opposed to, say, :i |
| 15:33 |
|
masak |
sundar: yes. |
| 15:33 |
|
TimToady |
:i is not redundant on the inside |
| 15:33 |
|
masak |
TimToady: I did not imply it was :) |
| 15:33 |
|
|
SmokeMachine joined #perl6 |
| 15:33 |
|
TimToady |
whereas :x duplicates ** with unclear semantics |
| 15:34 |
|
masak |
nod. |
| 15:34 |
|
TimToady |
the :x outside implies a .*? |
| 15:34 |
|
TimToady |
does it do the same inside? |
| 15:35 |
|
masak |
maybe the litmus test is whether the adverb makes sense inside a smaller scope of the regex. :i does. |
| 15:35 |
|
masak |
:x doesn't much. |
| 15:35 |
|
* hugme |
hugs masak, good vi(m) user! |
| 15:35 |
|
masak |
hugme: false positive :P |
| 15:36 |
|
TimToady |
one can argue that :x(6) means [.*? ...] ** 6 or some such |
| 15:36 |
|
|
alester joined #perl6 |
| 15:37 |
|
masak |
/ foo [ :x(3) bar ] baz / |
| 15:37 |
|
jnthn |
Mmm...a line of bars. |
| 15:37 |
|
masak |
I think the .*? is very non-Least-Surprise |
| 15:37 |
|
TimToady |
but that's what :x does on the outside!! |
| 15:38 |
|
TimToady |
s:x(3)/foo/bar/ should change the first three foos it finds |
| 15:38 |
|
masak |
yeah. |
| 15:38 |
|
TimToady |
if you meant the other you'd say s/'foo' ** 3/bar/ |
| 15:38 |
|
masak |
just registering my instinctive dislike of using it on the inside :) |
| 15:38 |
|
TimToady |
or some such |
| 15:39 |
|
TimToady |
yes, well, it's currently in t/spec :( |
| 15:39 |
|
masak |
:( |
| 15:39 |
|
TimToady |
and maybe even implemented |
| 15:39 |
|
masak |
not in PGE, at least. |
| 15:40 |
|
jnthn |
rakudo: /:x(3) a/ |
| 15:40 |
|
p6eval |
rakudo db0f85: OUTPUT«Confused at line 11, near "/:x(3) a/"current instr.: 'perl6;HLL;Grammar;panic' pc 500 (ext/nqp-rx/src/stage0/HLL-s0.pir:328)» |
| 15:40 |
|
TimToady |
maybe it's fudged for rakudo |
| 15:41 |
|
TimToady |
yeah, NYI |
| 15:43 |
|
masak |
in my humble view, it should be forbidden inside regexes, on the grounds that it produces no new semantics, and is quite confusing when used in deeper scopes. |
| 15:44 |
|
pugssvn |
r30210 | lwall++ | [rx.t] remove internal :x and :nth as confusing and redundant |
| 15:45 |
|
masak |
\o/ |
| 15:45 |
|
jnthn |
oh yay, now that test will take a little less time to compile. ;-) |
| 15:45 |
|
|
molaf joined #perl6 |
| 15:45 |
|
TimToady |
yeah, that's one of the longer ones... |
| 15:45 |
|
jnthn |
(Agree with the decision too.) |
| 15:47 |
|
|
the_llama joined #perl6 |
| 15:47 |
|
* masak |
is reminded of http://rt.perl.org/rt3/Ticket/[…]lay.html?id=61130 and how personal expectations can clash with more basic semantics |
| 15:49 |
|
|
the_llama left #perl6 |
| 15:58 |
|
|
synth joined #perl6 |
| 15:58 |
|
TimToady |
hmm, I don't read :nth(1,2,3,4,5) :x(3) the same way pm does |
| 15:59 |
|
|
TiMBuS joined #perl6 |
| 15:59 |
|
TimToady |
to me, :nth defines one iteration of :x |
| 16:00 |
|
TimToady |
though I can see it the other way too |
| 16:01 |
|
TimToady |
and I can even see an argument for doing it either way depending on order of :x and :nth |
| 16:01 |
|
TimToady |
this will take more thought |
| 16:01 |
|
masak |
:) |
| 16:02 |
|
TimToady |
it's like whether you count the elements before or after the grep... |
| 16:02 |
|
TimToady |
and whether you count parcels as 1 or many |
| 16:03 |
|
ash_ |
TimToady: do you still think roles with method ^foo { } like methods should be included when you do a does on an object? |
| 16:03 |
|
masak |
in subst, when the adverbs are provided as named args, they don't have an inherent order... |
| 16:04 |
|
|
sundar left #perl6 |
| 16:05 |
|
TimToady |
ash_: what is the problem with it? at worst it seems like it requires a unique metaobject for the class, but surely a metaclass can instantiate new metaobjects when it needs to |
| 16:06 |
|
TimToady |
masak: nod |
| 16:07 |
|
ash_ |
well, what happens if you say do role Foo { method ^compose { ... } }; does that use the Foo specific compose when its mixed in or does it add it to the class? or should that be disallowed? |
| 16:08 |
|
TimToady |
if we have to, we can even derive a new metaclass with the new method mixed in, I suppose |
| 16:08 |
|
TimToady |
or we can conservatively disallow it for 6.0.0 |
| 16:09 |
|
TimToady |
esp if we don't really understand its semantics yet |
| 16:09 |
|
TimToady |
I'm fine with either way |
| 16:10 |
|
TimToady |
of course, if an implementation makes assumptions that it will never be possible, it might have another think coming down the road. :) |
| 16:11 |
|
TimToady |
but it seems a bit strange to assume mixin semantics in your classes without mixin semantics in your metaclasses |
| 16:11 |
|
TimToady |
maybe there are optimization issues though |
| 16:12 |
|
TimToady |
or MONKEY_PATCHING issues, though a personal metaclass mixin seems like it's pretty non-actiony-at-a-distance |
| 16:12 |
|
TimToady |
and maybe metaroles are actually important down the line |
| 16:13 |
|
TimToady |
kinda like a role can specify an "is" for the class |
| 16:14 |
|
TimToady |
this is more like a .HOW mixin |
| 16:14 |
|
TimToady |
(or composition) |
| 16:15 |
|
ash_ |
i was trying to, in alpha a while back, see if i could make a role based persistence mechanism, so you can just apply it to objects, or classes, or properties and save them, i ended up overloading does's multi dispatch for does had my role as a parameter to keep track of the types that were being persisted, which seemed odd to me, since i kinda feel like thats something the role should be responsible for |
| 16:15 |
|
ash_ |
s/for/for when/ |
| 16:17 |
|
TimToady |
yeah, that seems like a workaround; open to suggestions |
| 16:17 |
|
TimToady |
other than turning Perl 6 into Haskell. :) |
| 16:18 |
|
TimToady |
would executable hooks in the role be appropriate when composition/mixin side effects are needful? |
| 16:18 |
|
ash_ |
ruby solves the problem kinda by having 2 ways of mixing into a class, one into the instance and one into the meta class, so then if you had any ^methods you could assume they belong to the role and would not be added |
| 16:19 |
|
ash_ |
exectuable hooks would be helpful too |
| 16:19 |
|
ash_ |
thats really all i wanted |
| 16:19 |
|
TimToady |
well, p6 tends to assume that anything ambiguous in a role is to be considered generic, and done within the class |
| 16:20 |
|
ash_ |
executable hooks would of solved my problem, i just think it might be interesting (maybe in a bad way though) if people could override compose for instance |
| 16:20 |
|
TimToady |
making and exception for ^methods seems odd that way |
| 16:20 |
|
TimToady |
*an |
| 16:21 |
|
ash_ |
but that might not be something to encourage, since overriding compose could have consequences someone might not understand |
| 16:21 |
|
TimToady |
well, I'm all in favor of rope, as long as it's hidden from normal view, and comes with a warning label when it's too easy to abuse |
| 16:21 |
|
ash_ |
(like me, for instance) |
| 16:22 |
|
TimToady |
well, the MONKEY_PATCHING approach is extensible, it's just a lexically scope compiler variable, really |
| 16:22 |
|
TimToady |
well, lexical to the program, dynamic to the parser... |
| 16:22 |
|
ash_ |
i also ended up doing: multi sub trait_mod:<does>(AttributeDeclarand $a, Endure::Property, $type) is export at one point |
| 16:23 |
|
ash_ |
so you could say: class Foo { has Str $name does Endure::Property; } and it would know that $name is a string that can be saved if you call .save on the Foo object |
| 16:23 |
|
TimToady |
well, overriding ops on different types if Officially Fine, but of course can be easily abused to fix it in the wrong place. |
| 16:24 |
|
TimToady |
s/if/is/ |
| 16:24 |
|
ash_ |
yeah, that felt like i as doing something wrong, since i had to do some funny stuff with AttributeDeclarand to get the type, like: $a.container.VAR does Endure::property; |
| 16:25 |
|
|
Psyche^ joined #perl6 |
| 16:25 |
|
TimToady |
well, I don't have time to review the whole thing right now, but it sounds like you have your head screwed on straight :) |
| 16:25 |
|
TimToady |
(got a $job meeting today) |
| 16:25 |
|
ash_ |
i kinda stopped working on that till rakudo got a bit further, maybe by rakudo* i can finish it :P |
| 16:25 |
|
ash_ |
no worries |
| 16:25 |
|
TimToady |
thanks for thinking about these things |
| 16:26 |
|
TimToady |
every now and then I wish I were omniscient, but then I'd be responsible :) |
| 16:27 |
|
ash_ |
i think my thing was i felt like i was jumping through hoops to accomplish something, and thats when I started to wonder if i was "Doing it wrong" or if maybe i was the only one trying to do what i was doing |
| 16:32 |
|
Su-Shee |
how do I say in english "simple, tidy, neat, tiny" (code) if I mean it in an elegant, zen-like way and not in the "simpleton, stupid, redneck" way? is there a nice adjective? |
| 16:32 |
|
araujo |
ash_, hacking rakudo? |
| 16:33 |
|
ash_ |
TimToady: ultimately, the end user of my library could do things like: http://gist.github.com/345078 |
| 16:33 |
|
ash_ |
i was thinking the has_many and belongs_to would need to be macro's or something, but thats my initial thoughts |
| 16:33 |
|
masak |
ash_: for what it's worth, all Perl 6 programming is "jumping through hoops" at this point, if you ask me. |
| 16:34 |
|
ash_ |
araujo: not specifically on rakudo, more just thinking about perl6 in general |
| 16:34 |
|
masak |
ash_: put differently, if you're not willing to put temporary workarounds in your code, you're not likely to get very far. |
| 16:34 |
|
araujo |
ash_, I see |
| 16:35 |
|
|
rgrau_ joined #perl6 |
| 16:36 |
|
ash_ |
masak: i think my biggest issue was i was worried i was doing it wrong |
| 16:36 |
|
ash_ |
just because i can do silly pointer arithmetic in C doesn't mean i should if i don't need to |
| 16:36 |
|
masak |
ah. I see. |
| 16:37 |
|
masak |
well, a mixture of experimenting and reading other people's code oughta help against the fear for doing things wrong. |
| 16:37 |
|
masak |
it's never possible to prove that one is doing things right :P |
| 16:38 |
|
jnthn |
ash_: The issue is partly timing too. |
| 16:38 |
|
jnthn |
(On ^foo things from roles) |
| 16:39 |
|
|
pyrimidine joined #perl6 |
| 16:39 |
|
ash_ |
when i was overriding how does applies to AttributeDeclarand and my role I made i kinda was like "i hope i am not breaking the class by doing this..." |
| 16:39 |
|
TimToady |
Su-Shee: concise or succinct maybe |
| 16:40 |
|
jnthn |
ash_: In general, I think overriding declarative parts of the meta-model on a per-class basis (or with the details coming from a role) is shakey ground. |
| 16:41 |
|
Su-Shee |
TimToady: thank you. |
| 16:41 |
|
ash_ |
Su-Shee: being from texax and living in alabama, i must say putting us rednecks in with simpletons and stupid folk is hurtful, you forgot narrow minded and "slow" |
| 16:41 |
|
TimToady |
well, better to override .HOW *before* the object is created rather than after :) |
| 16:41 |
|
jnthn |
TimToady: Well, yes. :-) |
| 16:41 |
|
TimToady |
so maybe it's allowed in composition and not in mixin? I dunno... |
| 16:41 |
|
ash_ |
s/texax/texas/ |
| 16:42 |
|
jnthn |
TimToady: For those things, just declaring a custom metaclass up front is probably better. |
| 16:42 |
|
jnthn |
TimToady: Well, composition is still weird. |
| 16:42 |
|
Su-Shee |
ash_: well I didn't know how to describe it properly :) |
| 16:42 |
|
jnthn |
TimToady: If you compose, say, ^add_method from a role |
| 16:42 |
|
jnthn |
It's too late in a sense. Most of the methods already got added. |
| 16:42 |
|
ash_ |
Su-Shee: you gotta speak slowly and loudly, it makes foreigners understand you better, proven fact |
| 16:42 |
|
jnthn |
Since the role composer needs to know what's already to ahdn in the class. |
| 16:43 |
|
TimToady |
well, if we disallow weird, we probably disallow cool as well... |
| 16:43 |
|
|
cosimo joined #perl6 |
| 16:43 |
|
TimToady |
but certainly there are places we can put a few "Here Be Dragons" signs |
| 16:43 |
|
ash_ |
jnthn: so your saying i need to make a custom RoleHOW for my role then? |
| 16:44 |
|
jnthn |
TimToady: I'm not saying disallow it. I'm just saying people will get bitten by the semantics. OTOH, if you're fiddling with adjusting the metaobject while it's being used to define a class, you probably deserve the bites. :-) |
| 16:44 |
|
jnthn |
ash_: IIUC, what you're after is more to know "this role just got composed into this class". |
| 16:45 |
|
TimToady |
we could take the approach of lacing the cigarettes with strychnine, of course... :) |
| 16:45 |
|
jnthn |
ash_: I suspect for that we do want to define a more callback-ish mechanism / hook of some kind / phaser or something. |
| 16:46 |
|
TimToady |
role hooks are probably useful for registration purposes |
| 16:46 |
|
jnthn |
TimToady: Yeah, I'm very open to having some functionality along those lines. |
| 16:46 |
|
jnthn |
It's come up before too. |
| 16:46 |
|
TimToady |
you two feel free to propose something there |
| 16:46 |
|
ash_ |
TimToady, jnthn yeah that would be enough to know what I need to know |
| 16:47 |
|
ash_ |
knowing when does was called, and knowing when an object was inherited i think cover most of the cases i can think of |
| 16:47 |
|
|
cdarroch joined #perl6 |
| 16:47 |
|
|
cdarroch joined #perl6 |
| 16:47 |
|
TimToady |
seems to me that most of the action at a distance can be caught by the fact that metaclasses are also theoretically encapuslated and private |
| 16:47 |
|
TimToady |
*su |
| 16:48 |
|
jnthn |
ash_: Maybe a starting point could be to try and come up with some patch for metamodel.pod to specify how it could look. |
| 16:49 |
|
jnthn |
ash_: I'm not quite sure how it should look right now, tbh, but my brain is a tad mushy today. |
| 16:50 |
|
TimToady |
shower & |
| 16:51 |
|
ash_ |
jnthn: do you know where the AUTO stuff is? in the spec or tests? |
| 16:52 |
|
masak |
S10, S13... |
| 16:55 |
|
ash_ |
i am just thinking about something that is method like but not a method, the AUTO* methods (AUTOSCALARDEF for instance) that way there is a clear distinction between the callback and the normal methods |
| 17:02 |
|
masak |
I feel insufficiently versed in that part of Perl 5 to be able to give an informed anwer. |
| 17:03 |
|
|
gabiruh joined #perl6 |
| 17:03 |
|
ash_ |
std: class Foo { AUTOSCALARDEF { 1 + 2 } }; |
| 17:03 |
|
p6eval |
std 30210: OUTPUT«Undeclared name: 'AUTOSCALARDEF' used at line 1ok 00:01 106m» |
| 17:04 |
|
ash_ |
thats odd |
| 17:04 |
|
ash_ |
it says 'ok' but apparently generated a warning? |
| 17:04 |
|
jnthn |
Warnings are not unok. |
| 17:04 |
|
jnthn |
:-) |
| 17:05 |
|
|
the joined #perl6 |
| 17:06 |
|
masak |
ash_: it treats 'AUTOSCALARDEF' as a bareword function call, and allows for the fact that it's missing its definition somehow. |
| 17:06 |
|
masak |
std: eval 'sub foo() {}'; foo |
| 17:06 |
|
ash_ |
just thinking along those lines, you could do: role Foo { COMPOSED($obj) { say "Foo got composed into $obj" } } |
| 17:06 |
|
p6eval |
std 30210: OUTPUT«Undeclared routine: 'foo' used at line 1ok 00:01 105m» |
| 17:06 |
|
|
the_llama joined #perl6 |
| 17:07 |
|
the_llama |
k |
| 17:08 |
|
ash_ |
you could probably use that with a class too, IMO, for when they are inherited |
| 17:10 |
|
jnthn |
I think we shoudl distinguish them. |
| 17:10 |
|
jnthn |
Since you can pun a role into a class |
| 17:12 |
|
ash_ |
okay, thats fine, one other question, if you call self from within the COMPOSED what should it refer to? |
| 17:12 |
|
jnthn |
Well, hmm |
| 17:13 |
|
jnthn |
Good question. |
| 17:13 |
|
ash_ |
or does it have a self? |
| 17:13 |
|
jnthn |
I think it's more phaser-ish than method-ish. |
| 17:14 |
|
ash_ |
also, if you chain them, say class A { INHERITED($subclass) { } }; class B is A; class C is B; did that get called on C is B? |
| 17:15 |
|
ash_ |
chain isn't the right word, but i think you see what i mean |
| 17:15 |
|
dalek |
rakudo: 4a5a252 | moritz++ | src/core/operators.pm: |
| 17:15 |
|
dalek |
rakudo: fix infix:<Z> to work with non-lists, as suggested by jnthn++. Fixes RT #73836 |
| 17:15 |
|
dalek |
rakudo: review: http://github.com/rakudo/rakud[…]5b92c31fe1f84a3ae |
| 17:15 |
|
jnthn |
Yeah...is it transitive or not. |
| 17:15 |
|
jnthn |
Hmm. |
| 17:15 |
|
jnthn |
Neither answer is obvious to me right off on that one. |
| 17:16 |
|
jnthn |
Would have to ponder it some more. |
| 17:16 |
|
ash_ |
class A { INHERITED($subclass) { } }; class B is A { INHERITED($subclass) { nextsame; } }; class C is B; ? |
| 17:16 |
|
jnthn |
If it's not methodish, I'm not sure if nextsame makes sense. |
| 17:16 |
|
ash_ |
ya |
| 17:17 |
|
ash_ |
you could approach it kinda like how BUILD works i suppose |
| 17:18 |
|
jnthn |
Hmm, possible. |
| 17:18 |
|
jnthn |
*possibly. |
| 17:18 |
|
jnthn |
More sub-ish. |
| 17:18 |
|
jnthn |
Could work. |
| 17:19 |
|
ash_ |
would be kinda nice if there was 1 overarching mechanism that COMPOSED and INHERITED worked from |
| 17:20 |
|
jnthn |
There's some other complicating factors with COMPOSED too. |
| 17:20 |
|
jnthn |
e.g. do we only care about it when we actually get down into a class |
| 17:20 |
|
jnthn |
or when composed into other roles too |
| 17:22 |
|
|
abra joined #perl6 |
| 17:23 |
|
jnthn |
(I'd argue for the class approach...other one is too confusing, particularly as we produce throw-away roles during the composition process) |
| 17:28 |
|
|
sundar joined #perl6 |
| 17:29 |
|
ash_ |
is that the case of role A {}; role B does A {} |
| 17:29 |
|
|
dual joined #perl6 |
| 17:29 |
|
jnthn |
No throw-away there |
| 17:30 |
|
masak |
nom & |
| 17:30 |
|
jnthn |
given roles R1 and R2, class Foo does R1 does R2 { } creates one temporary role that does R1 and R2, and then mixes that into the classes. |
| 17:30 |
|
jnthn |
That is, the flattening semantics are handled amongst roles. |
| 17:31 |
|
ash_ |
ah, got ya |
| 17:31 |
|
jnthn |
See various things in src/metamodel/ - these bits are largely written in NQP. :-) |
| 17:32 |
|
|
Chillance joined #perl6 |
| 17:35 |
|
ash_ |
well, following the pattern of least surprise, i'd expect class A does R1 does R2 { } to call back R1's composed one time, and R2's composed one time |
| 17:36 |
|
jnthn |
ash_: Right. |
| 17:36 |
|
ash_ |
in both cases i'd expect the $obj being composed against to be class A |
| 17:36 |
|
jnthn |
And you'd probably expect to be provided with A. |
| 17:36 |
|
jnthn |
Seems we have similar expectations. :-) |
| 17:38 |
|
TimToady |
why have an argument to those two hooks? why not just bind the object temporarily to self or $_? |
| 17:38 |
|
TimToady |
I tend to prefer my hooks with bare names... |
| 17:38 |
|
jnthn |
That would also work. |
| 17:38 |
|
jnthn |
And makes them hookier I guess. |
| 17:38 |
|
jnthn |
In a consistency sense. |
| 17:38 |
|
TimToady |
like the current exception comes into CATCH, for instance |
| 17:39 |
|
jnthn |
aye, there's precedent |
| 17:39 |
|
jnthn |
Good call. |
| 17:39 |
|
TimToady |
but in this case, if there's only one obvious object in question, could easily be 'self' |
| 17:39 |
|
TimToady |
depending on whether it's better for it to be an object or a topic |
| 17:39 |
|
ash_ |
yeah, makes sense, i had them separate for explicit access to each side of the does though |
| 17:40 |
|
TimToady |
and if there are two objects involved, one can be self and the other topic |
| 17:40 |
|
jnthn |
Yeah, but since it's in the thing that wants to be notified, it knows what it is. |
| 17:40 |
|
TimToady |
waht I thought |
| 17:40 |
|
TimToady |
and there's always OUTER:: |
| 17:40 |
|
jnthn |
Well, $?CLASS and $?ROLE too. |
| 17:40 |
|
ash_ |
role Foo { COMPOSED($obj) { } }; class A does Foo { }, i thought self in COMPOSEd would be Foo and object would be A |
| 17:40 |
|
TimToady |
yeah |
| 17:40 |
|
ash_ |
that was my logic when i wrote that anyway |
| 17:40 |
|
TimToady |
so it's really just a choice between self or $_ |
| 17:41 |
|
|
payload joined #perl6 |
| 17:41 |
|
jnthn |
role Foo { COMPOSED { .say } }; class A does Foo { }; # says A |
| 17:41 |
|
jnthn |
well, A() |
| 17:41 |
|
jnthn |
Guess you get the proto-object. |
| 17:41 |
|
|
niros joined #perl6 |
| 17:41 |
|
TimToady |
or $.say, if we went the self route |
| 17:41 |
|
jnthn |
Yeah |
| 17:41 |
|
jnthn |
I'm more inclined to go the $_ route for consistency with CATCH |
| 17:41 |
|
TimToady |
since effectively it's running in the context of the new object |
| 17:42 |
|
jnthn |
Then you can when on it. |
| 17:42 |
|
TimToady |
troo |
| 17:42 |
|
TimToady |
not earthshaking either way, but I'd be happy with $_ |
| 17:42 |
|
TimToady |
esp since it doesn't *look* like a method |
| 17:42 |
|
pmichaud |
good afternoon, #perl6 |
| 17:43 |
|
TimToady |
o/! |
| 17:43 |
|
ash_ |
makes sense |
| 17:43 |
|
jnthn |
\o/ is's pmichaud! |
| 17:43 |
|
ash_ |
greetings |
| 17:43 |
|
TimToady |
I have to go to $job in about 5 |
| 17:43 |
|
takadonet |
$job=undef |
| 17:44 |
|
takadonet |
You don't have to go anymore :) |
| 17:44 |
|
jnthn |
undef is not a Perl 6 concept. :-) |
| 17:44 |
|
ash_ |
sub undef { Mu } |
| 17:44 |
|
jnthn |
lol |
| 17:44 |
|
takadonet |
$job=Mu ? |
| 17:44 |
|
jnthn |
Somebody *will* write a module that does that... |
| 17:44 |
|
ash_ |
lol, it wouldn't suprise me |
| 17:45 |
|
TimToady |
hmm, COMPOSED { .defined } tells you are doing an object mixin, I think |
| 17:45 |
|
jnthn |
...ooh. |
| 17:45 |
|
jnthn |
It probably does, yeah. |
| 17:45 |
|
jnthn |
Or could be made to. |
| 17:46 |
|
TimToady |
COMPOSED:U and COMPOSED:D :) |
| 17:47 |
|
TimToady |
pmichaud: notice recent spec change, :foo<a b> now officially means foo => ('a','b'), not {} or [] |
| 17:48 |
|
pmichaud |
TimToady: noted, thanks. |
| 17:48 |
|
pmichaud |
makes sense from a language perspective |
| 17:48 |
|
TimToady |
so we can now again do the sort:{} trick |
| 17:48 |
|
TimToady |
because name extensions don't take :{ anymore |
| 17:48 |
|
TimToady |
since everyone keeps writing those anyway... |
| 17:48 |
|
pmichaud |
works for me, since <a b> is ('a', 'b') anyway |
| 17:49 |
|
TimToady |
only surprise is that :{} starts the argument list, so a following , continues it |
| 17:49 |
|
TimToady |
some tests assumed it would terminate as an adverb inside 'is' |
| 17:49 |
|
pmichaud |
and keeps the meme that :foo<<<something>>> acts more like a circumfix than a postcircumfix |
| 17:50 |
|
TimToady |
yes |
| 17:50 |
|
TimToady |
seems more regular, except for the new sort:{ exception that doesn't require space before { |
| 17:50 |
|
TimToady |
tried to work it as an adverb, but then postfixes are too late |
| 17:51 |
|
pmichaud |
yes. |
| 17:51 |
|
TimToady |
so .sort:{}.grep would not work |
| 17:51 |
|
pmichaud |
I'm so out-of-sync with recent changes, I fear I might never catch up. :-/ |
| 17:51 |
|
TimToady |
(or other way around, probably) |
| 17:51 |
|
TimToady |
we'll write a book for you :) |
| 17:52 |
|
ash_ |
std: sort:{ $^a > $^b }, <4 3 2> |
| 17:52 |
|
p6eval |
std 30210: OUTPUT«ok 00:01 108m» |
| 17:52 |
|
ash_ |
so like that? |
| 17:52 |
|
TimToady |
no |
| 17:52 |
|
TimToady |
not on functions |
| 17:52 |
|
TimToady |
in fact, I'm not entirely sure how that parsed... |
| 17:53 |
|
ash_ |
lol, oops, i think i am misunderstanding the change your referring to |
| 17:53 |
|
TimToady |
only .sort, not sort |
| 17:54 |
|
ash_ |
std: <4 3 2>.sort:{ $^a > $^b } # that then? |
| 17:54 |
|
p6eval |
std 30210: OUTPUT«ok 00:01 107m» |
| 17:54 |
|
TimToady |
in fact, I think it parsed it as (sort :{}), 4,3,2 |
| 17:55 |
|
TimToady |
yes, that |
| 17:55 |
|
TimToady |
gotta commute & |
| 17:55 |
|
jnthn |
o/ |
| 17:56 |
|
ash_ |
lunch & |
| 18:01 |
|
|
sekon joined #perl6 |
| 18:02 |
|
sekon |
hello |
| 18:05 |
|
sekon |
is there a list of "low hanging fruit" as such |
| 18:06 |
|
jnthn |
sekon: hi! :-) |
| 18:06 |
|
sekon |
so that an inexperienced programmer can be of some use |
| 18:06 |
|
jnthn |
sekon: Depends what you want to work on. :-) |
| 18:06 |
|
jnthn |
sekon: But yes, there are ways to track down such things. |
| 18:08 |
|
sekon |
jnthn: Hi thanks for the response .. is there a current list of bugs that need to be taken care of I am an inexperienced developer looking to make a meaningful contribution to open source code |
| 18:09 |
|
sekon |
jnthn: I have no priorities as such and just want to help |
| 18:09 |
|
jnthn |
sekon: Well, there's more than one pile of source code to hack on. :-) If it's Rakudo you want to work with, check out the RT queue. http://rt.perl.org/ There's a search interface and we do tag some things as LHF. |
| 18:09 |
|
sekon |
jnthn: thanks and have a great day |
| 18:11 |
|
jnthn |
sekon: Thanks, you too. And do drop by here plenty too. There's lots happening, it's not always this quiet. :-) |
| 18:11 |
|
jnthn |
sekon: There's also plenty of opportunities for working on modules and contributing to the test suite, both of which are also extremely valuable. |
| 18:17 |
|
|
revdiablo joined #perl6 |
| 18:19 |
|
|
lichtkind joined #perl6 |
| 18:19 |
|
* jnthn |
-> shops, bbiab |
| 18:25 |
|
|
PacoLinux joined #perl6 |
| 18:28 |
|
|
chromatic joined #perl6 |
| 18:28 |
|
|
pmurias joined #perl6 |
| 18:28 |
|
|
hanekomu_ joined #perl6 |
| 18:49 |
|
|
ash_ joined #perl6 |
| 19:08 |
|
|
cj joined #perl6 |
| 19:08 |
|
cj |
woot. I got the DLR into ubuntu. now all we need to do is build a perl6 interpreter on top of it ;) |
| 19:09 |
|
sekon |
cj: Soorry DLR?? |
| 19:09 |
|
TimToady |
the CLR, only D |
| 19:10 |
|
jnthn |
:-) |
| 19:10 |
|
jnthn |
Dynamic Langauges Runtime |
| 19:10 |
|
jnthn |
cj: Cool. :-) |
| 19:12 |
|
pmurias |
cj: shouldn't we build a perl6 compiler targeting it instead of an interpreter on top of it? |
| 19:14 |
|
|
ShaneC joined #perl6 |
| 19:17 |
|
ash_ |
is there another perl 6 project targeting the DLR? |
| 19:19 |
|
pmichaud |
I think we plan to target DLR with Rakudo and NQP at some point |
| 19:23 |
|
jnthn |
After Rakudo *. :-) |
| 19:26 |
|
|
pyrimidine joined #perl6 |
| 19:28 |
|
TimToady |
ash_: yes, sprixel |
| 19:28 |
|
|
hanekomu_ joined #perl6 |
| 19:29 |
|
ash_ |
is the DLR cross platform? |
| 19:29 |
|
|
Coke joined #perl6 |
| 19:30 |
|
Coke |
hio. which syn for "how to break out of a while loop" ? |
| 19:30 |
|
ash_ |
or does it run on like mono? |
| 19:30 |
|
pmichaud |
Coke: 'last' |
| 19:30 |
|
Coke |
I'm looking at http://perlcabal.org/syn/S04.html, but while doesn't say, and neither does Control Exception. |
| 19:30 |
|
pmichaud |
while $cond { last if $other_cond; } |
| 19:30 |
|
|
sekon left #perl6 |
| 19:31 |
|
Coke |
pmichaud: yes, but where is it documented. This isn't the first time I've had to come to #perl6 to find out and I wish to avoid bothering you nice people. =-) |
| 19:31 |
|
pmichaud |
Coke: I suspect it falls into the "same as Perl 5" category. |
| 19:31 |
|
Coke |
pmichaud: that would explain it. danke. |
| 19:32 |
|
TimToady |
Coke: S04:334 |
| 19:33 |
|
TimToady |
grep is your friend |
| 19:34 |
|
ash_ |
grep is nice, but i like ack, plus its written in perl |
| 19:34 |
|
Coke |
TimToady: that's what I get for reading the nicely formatted one at http://perlcabal.org/syn/S04.html =-) |
| 19:34 |
|
Coke |
TimToady++ |
| 19:34 |
|
chromatic |
Speaking of pmichaud, what's necessary to get the status graphs updated again? Is that something anyone could do? |
| 19:34 |
|
Coke |
pmichaud++ |
| 19:34 |
|
TimToady |
most browsers can search too :) |
| 19:34 |
|
pmichaud |
I need to write up the steps and publish the script. |
| 19:34 |
|
pmichaud |
(for the status graphs) |
| 19:35 |
|
Coke |
TimToady: <grumble> |
| 19:36 |
|
Coke |
hurm. this doesn't seem to ever break out, in NQP: |
| 19:36 |
|
Coke |
while pir::length__is($string) { |
| 19:36 |
|
Coke |
last |
| 19:36 |
|
Coke |
} |
| 19:37 |
|
Coke |
(nqp-rx, I mean) |
| 19:39 |
|
Coke |
even while 1 { last } doesn't break out. |
| 19:40 |
|
ash_ |
hmmm, nqp-rx doesn't define a 'last' op i don't think |
| 19:41 |
|
Coke |
I would expect an error instead of a silent ignore, then. odd. |
| 19:42 |
|
ash_ |
i don't see last in the nqp grammar anyway... |
| 19:45 |
|
Coke |
danke, ash_ |
| 19:47 |
|
ash_ |
Coke: my $a := pir::length__is($string); |
| 19:47 |
|
ash_ |
while $a { |
| 19:47 |
|
ash_ |
say($a); |
| 19:47 |
|
ash_ |
$a--; |
| 19:47 |
|
ash_ |
} might do what you want |
| 19:48 |
|
pmichaud |
I think NQP doesn't implement 'last' yet, although it certainly can do so. |
| 19:49 |
|
ash_ |
pmichaud: looks like someone added a few things to nqp for a project, http://www.gitorious.com/kakap[…]Syntax.nqp#line19 has an addition for some of that |
| 19:49 |
|
pmichaud |
ash_: yes, that's Austin Hasting's work |
| 19:50 |
|
pmichaud |
(probably with others as well) |
| 19:50 |
|
Tene |
I might be able to get to that tonight. |
| 19:50 |
|
pmichaud |
he's implemented next() as a function; I've been thinking it might be worthwhile to have it act like a keyword, similar to how 'return' and 'make' are currently handled in NQP |
| 19:50 |
|
Tene |
yes |
| 19:50 |
|
Tene |
exactly |
| 19:51 |
|
pmichaud |
although I wasn't going to implement any ability to pass an argument to next/last/redo in nqp, at least not yet. |
| 19:52 |
|
Tene |
the argument would be the block that you're targeting, yes? I certainly wouldn't expect that in NQP. |
| 19:52 |
|
pmichaud |
I think the argument can also be the value to be used for the current iteration of the loop |
| 19:52 |
|
pmichaud |
i.e., |
| 19:52 |
|
Tene |
... ouch |
| 19:53 |
|
pmichaud |
my @a = (for 1..5 { next $_ * 2; } ); # @a becomes 2, 4, 6, 8, 10 |
| 19:53 |
|
pmichaud |
but I'm not entirely certain of that. |
| 19:53 |
|
pmichaud |
my memory of the spec is a bit hazy these days |
| 19:55 |
|
ash_ |
pmichaud: can ranges take a variable on either side in nqp? like 1..$a ? |
| 19:57 |
|
* jnthn |
didn't know NQP did ranges... |
| 19:57 |
|
Coke |
pmichaud: thought you'd appreciate this: time to run t/cmd_llength.t in partcl: 1.4s; in partcl-nqp: 0.87s |
| 19:57 |
|
Coke |
(of course, partcl-nqp isn't able to do as much yet, but that seems encouraging) |
| 20:02 |
|
|
SEcki joined #perl6 |
| 20:04 |
|
pmichaud |
NQP doesn't do ranges, no. |
| 20:04 |
|
pmichaud |
I was more pointing out what Perl 6's "next" function could do, that NQP's likely will not. |
| 20:05 |
|
pmichaud |
NQP can't do ranges because Parrot doesn't supply a Range type :-) |
| 20:05 |
|
ash_ |
ah, that would make sense |
| 20:05 |
|
pmichaud |
(well, it *could* go ahead and treat 1..5 as meaning (1,2,3,4,5) but that seems like it'd be asking for trouble in other areas) |
| 20:06 |
|
pmichaud |
anyway, I suspect ranges are one of the areas where NQP tends to emphasize the NQ :-) |
| 20:06 |
|
ash_ |
yeah, make sense |
| 20:07 |
|
ash_ |
in my nq-nqp i am thinking of adding a delete $a; since i don't have GC |
| 20:09 |
|
|
payload joined #perl6 |
| 20:09 |
|
|
molaf joined #perl6 |
| 20:12 |
|
|
dalek joined #perl6 |
| 20:13 |
|
|
Guest85367 joined #perl6 |
| 20:23 |
|
|
M_o_C joined #perl6 |
| 20:41 |
|
mathw |
Evening |
| 20:41 |
|
jnthn |
mathw: o/ |
| 20:42 |
|
mathw |
o/ jnthn |
| 20:42 |
|
mathw |
how're things |
| 20:42 |
|
jnthn |
Not so bad |
| 20:42 |
|
jnthn |
Spent too much of this week dealing with visa stuff. But it's done now...hopefully. :-) |
| 20:42 |
|
mathw |
yay |
| 20:42 |
|
jnthn |
And you? Cold shaken off? |
| 20:42 |
|
mathw |
well I've got myself to a point where I consider myself well |
| 20:42 |
|
mathw |
and have been to aikido today |
| 20:43 |
|
mathw |
...twice |
| 20:43 |
|
jnthn |
Yes, I saw the photo. :-) |
| 20:43 |
|
mathw |
so happy me |
| 20:43 |
|
jnthn |
\o/ |
| 20:43 |
|
mathw |
thus you know that I got my 6th kyu :D |
| 20:43 |
|
colomon |
\o/ |
| 20:43 |
|
jnthn |
Yes. Congrats! :-) |
| 20:43 |
|
* mathw |
would dance, but is too exhausted |
| 20:43 |
|
mathw |
two classes in a day is hard |
| 20:43 |
|
mathw |
I have no idea how I'm going to survive summer school |
| 20:43 |
|
mathw |
that's about eight hours a day for four days |
| 20:43 |
|
jnthn |
Whoa! |
| 20:43 |
|
mathw |
FOUR DAYS! |
| 20:44 |
|
mathw |
but there will be three 7th dans teaching |
| 20:44 |
|
mathw |
so it's really quite unmissable |
| 20:44 |
|
mathw |
especially since it happens in Nottingham |
| 20:44 |
|
mathw |
(because we're the head dojo. hah!) |
| 20:45 |
|
jnthn |
:-) |
| 20:45 |
|
|
Helios joined #perl6 |
| 20:45 |
|
mathw |
it'll be quite the experience |
| 20:45 |
|
mathw |
if only for the chance to see sensei phil do his 4th dan test |
| 21:10 |
|
mathw |
ow |
| 21:11 |
|
|
pyrimidine left #perl6 |
| 21:11 |
|
jnthn |
mathw: Was that at aikido pains, cat induced, or Rakudo build memory consumption? :-) |
| 21:11 |
|
mathw |
aikido pains |
| 21:11 |
|
mathw |
my forearms are not happy |
| 21:12 |
|
mathw |
the cat seems to be scared of me tonight, which is a bit odd |
| 21:12 |
|
mathw |
he's usually all over me |
| 21:12 |
|
|
ignacio_ joined #perl6 |
| 21:13 |
|
mathw |
particularly after I've been out |
| 21:13 |
|
mathw |
ah, here he comes |
| 21:26 |
|
colomon |
moritz_: Is there a reason you didn't use the same patch for infix:<X> as you did for infix:<Z>? |
| 21:27 |
|
moritz_ |
colomon: none than human imperfection |
| 21:27 |
|
colomon |
:) |
| 21:31 |
|
moritz_ |
s/than/but/ |
| 21:32 |
|
* moritz_ |
-> bed |
| 21:32 |
|
colomon |
night! |
| 21:32 |
|
jnthn |
sleep well o/ |
| 21:32 |
|
|
ignacio_ joined #perl6 |
| 21:44 |
|
|
mberends joined #perl6 |
| 22:15 |
|
|
sundar left #perl6 |
| 22:21 |
|
|
sorear joined #perl6 |
| 22:26 |
|
|
riffraff joined #perl6 |
| 22:30 |
|
|
ignacio_ joined #perl6 |
| 22:41 |
|
pmurias |
mathw: how does a dan test look like? |
| 22:48 |
|
sorear |
jnthn: My problem right now is - how to expose references to Parrot? |
| 22:49 |
|
sorear |
jnthn: best idea at present is - at return, reference chains are unwound, and a P5{not scalar} is returned; non-scalars are reffed on passing |
| 22:51 |
|
pmurias |
sorear: what does reference chain unwounding mean? |
| 22:51 |
|
pmurias |
\\\1 is turned into 1? |
| 22:51 |
|
sorear |
jnthn: this seems to have the highest Just Work factor, but it prevents some interesting things |
| 22:51 |
|
sorear |
pmurias: yes |
| 22:51 |
|
pmurias |
why do you want to do that? |
| 22:52 |
|
sorear |
jnthn: another idea is to just handle refs as scalars, and axe P5Sub et al. Big disadvantage: since a scalar doesn't implement Callable &c, you can't treat random P5 returns as P6 sigil variables |
| 22:53 |
|
sorear |
pmurias: because there is no Parrot API for handling references, nor any P6 syntax, so it's not possible to simply expose them as a data type |
| 22:53 |
|
sorear |
unless we just expose them as objects, which would be insane |
| 22:53 |
|
jnthn |
sorear: Hmm. In the Perl 6 sense, I guess things generally behave like references. |
| 22:53 |
|
pmurias |
aren't captures the reference replacement |
| 22:53 |
|
pmurias |
? |
| 22:53 |
|
sorear |
CGI.new.DEREFERENCE.header |
| 22:54 |
|
jnthn |
That is, $x = @foo; $x[1] # just works |
| 22:54 |
|
sorear |
jnthn: this is sort-of where I'm going with #1 - no explicit refs on the P6 side |
| 22:55 |
|
jnthn |
I agree they shouldn't be explicit, I think. At lesat not at the first level |
| 22:56 |
|
pmurias |
jnthn: it's equivalent to $x = \@foo; $x->[1] in perl5 |
| 22:56 |
|
jnthn |
Deeper than that though...don't know that it makes sense to totally unwind them. |
| 22:56 |
|
jnthn |
pmurias: Right. In Perl 6 the dereference is kinda "implicit" though. |
| 22:57 |
|
pmurias |
jnthn: the referencing is |
| 22:57 |
|
|
Alias_ joined #perl6 |
| 22:57 |
|
pmurias |
jnthn: the deferencing syntax is just shorter |
| 22:57 |
|
pmurias |
because of sigil invariance |
| 22:58 |
|
pmurias |
sorear: i think you shouldn't convert data types |
| 22:58 |
|
jnthn |
Well, true, in a sense. |
| 22:58 |
|
jnthn |
pmurias: Not sure what you mean by "convert data types"... |
| 22:59 |
|
|
betterworld joined #perl6 |
| 22:59 |
|
jnthn |
sorear: I don't think you can unpack the whole chain - if anything it makes the round-tripping not really work out. |
| 22:59 |
|
sorear |
the problem with first level is that it breaks round-tripping for scalar refs |
| 22:59 |
|
|
supernovus joined #perl6 |
| 23:00 |
|
pmurias |
if you unpack refs how are we supposed to write that into them? |
| 23:00 |
|
sorear |
pmurias: Data type conversion is a necessary evil. 80% of the hard technical decisions in Blizkost have involved drawing and re-drawing the line between "necessary" and "evil" |
| 23:01 |
|
pmurias |
why is it necessary? |
| 23:01 |
|
pmurias |
parrot limitations? |
| 23:01 |
|
jnthn |
sorear: I'd imagine more that there'd just be a wrapper PMC around the SV and when you tried to do some kind of indexed access. |
| 23:01 |
|
sorear |
perl5 limitations |
| 23:01 |
|
sorear |
jnthn: that was my Second Idea |
| 23:01 |
|
sorear |
the problem with /that/ is that SVs are mutable |
| 23:01 |
|
jnthn |
erm, and it de-referenced when you tried to... |
| 23:02 |
|
jnthn |
How does that bite us? |
| 23:02 |
|
sorear |
my @foo = thing_from_perl5; #( Perl5 does something in some other code which causes the SV to no longer be a ref) |
| 23:02 |
|
sorear |
now @foo points to a scalar, not a Positional |
| 23:02 |
|
sorear |
oops boom |
| 23:02 |
|
pmurias |
sorear: what perl5 limitations? |
| 23:03 |
|
sorear |
pmurias: it's not written on top of parrot |
| 23:03 |
|
jnthn |
So long as it's oops boom in the "throws an Exception" sense rather than the "omg segfault" sense... |
| 23:03 |
|
sorear |
so I can't just pass PMCs to it |
| 23:03 |
|
jnthn |
...I think that's probably OK. |
| 23:03 |
|
sorear |
I have to munge them into SVs, which are similar but not quie the same |
| 23:03 |
|
sorear |
and do reverse munging later |
| 23:03 |
|
pmurias |
sorear: i didn't encounter anything substantial when working on smop/p5 interop |
| 23:04 |
|
pmurias |
sorear: why can't you wrap SV* into a SV PMC |
| 23:04 |
|
jnthn |
I think that's more likely to work out right than taking out all the chains. |
| 23:04 |
|
sorear |
pmurias: because a SV PMC would have a variable list of roles |
| 23:05 |
|
jnthn |
sorear: That's fine. |
| 23:05 |
|
jnthn |
sorear: Override does vtable. :-) |
| 23:05 |
|
jnthn |
sorear: It can say it does whichever roles it likes. :-) |
| 23:06 |
|
sorear |
oooh |
| 23:06 |
|
supernovus |
I wish I knew C (and wasn't afraid of perl5 guts)... |
| 23:07 |
|
sorear |
smop lives? |
| 23:08 |
|
pmurias |
i sometimes hack on mildew (which targets smop and js) |
| 23:09 |
|
pmurias |
sorear: it's not very active, but it's not yet dead |
| 23:13 |
|
supernovus |
I'm afraid my work on Temporal.pm has been rather sparce lately, don't know if it'll be ready for Rakudo * (I still wonder if it shouldn't be an external lib anyway...) |
| 23:15 |
|
sorear |
What does it do? |
| 23:16 |
|
supernovus |
sorear: was that at me or pmurias? |
| 23:16 |
|
sorear |
You |
| 23:18 |
|
supernovus |
Temporal is provides functionality similar to the DateTime and TimeDate distos for perl5. Basically, simple date and time operations. |
| 23:20 |
|
supernovus |
it is currently listed as a part of the perl 6 setting/core. I think it may be a bit much for a "core" library. |
| 23:23 |
|
|
ruoso joined #perl6 |
| 23:24 |
|
pmurias |
ruoso: hi |
| 23:24 |
|
supernovus |
my work is based on the provisional Temporal.pm from the alpha branch as well as masak's Temporal Flux project. |
| 23:25 |
|
|
masak joined #perl6 |
| 23:25 |
|
masak |
ahoy, #perl6! |
| 23:25 |
|
supernovus |
speaking of masak! hi! |
| 23:26 |
|
masak |
the insomnia trend continues! |
| 23:26 |
|
mberends |
it must be catching! |
| 23:26 |
|
masak |
:) |
| 23:26 |
|
masak |
I'm only staying for a short Temporal period, though. |
| 23:27 |
|
masak |
I need to apply some corrective temporal twists to my sleep habits. |
| 23:27 |
|
jnthn |
lolitsmasak! |
| 23:27 |
|
supernovus |
gah, more Temporal references! |
| 23:28 |
|
supernovus |
typing on the pre keyboard is "fun" when on irc... |
| 23:29 |
|
sjohnson |
yo masak |
| 23:29 |
|
sjohnson |
hey jnthn |
| 23:29 |
|
masak |
sjohnson: \o |
| 23:29 |
|
sjohnson |
question for you (i may have already asked this, forgive me) |
| 23:29 |
|
masak |
yayitsjnthn! |
| 23:29 |
|
sjohnson |
jnthn: i was reading your page a while ago and wanted to let you know about http://sourceforge.net/projects/unxutils/ if you didn't know about it already |
| 23:29 |
|
sjohnson |
makes win32 life a lot more pleasant |
| 23:30 |
|
masak |
speaking of the young-girl demographic (or children in general): there's a 3D storytelling programming language called Alice. http://www.alice.org/index.php[…]ice/what_is_alice |
| 23:32 |
|
masak |
jnthn: in PIR, when a sub's declared to be a :method, can it still be called with any old invocant? |
| 23:32 |
|
supernovus |
masak: looks neat, may have to play with Alice later. |
| 23:32 |
|
jnthn |
masak: yes |
| 23:32 |
|
masak |
jnthn: yuck! :) |
| 23:32 |
|
jnthn |
masak: Why? |
| 23:32 |
|
jnthn |
:-) |
| 23:32 |
|
masak |
jnthn: I don't know. instinctive reaction. |
| 23:33 |
|
masak |
it's like it's a method of *all* classes at the same time. |
| 23:33 |
|
masak |
(it also explains a couple of RT tickets I've submitted) |
| 23:33 |
|
jnthn |
masak: :method is just an instruction to install it in the methods table and to handle the self register |
| 23:33 |
|
masak |
nodnod |
| 23:33 |
|
masak |
it's slowly sinking in. |
| 23:33 |
|
jnthn |
masak: Parrot doesn't handle type checking and stuff. We build that ourselves. :-) |
| 23:34 |
|
masak |
alpha: regex foo { x a* y }; say foo 'xaaaay'; say foo 'hsfl' |
| 23:34 |
|
jnthn |
(Or fail to at the moment, I guess...) |
| 23:34 |
|
p6eval |
alpha 30e0ed: OUTPUT«xaaaay» |
| 23:34 |
|
masak |
jnthn: the sub 'foo' that's installed there is a method. |
| 23:34 |
|
masak |
jnthn: it gets called with self being the string passed in. |
| 23:34 |
|
jnthn |
Yeah |
| 23:34 |
|
masak |
jnthn: I need to... do something like that in GGE. |
| 23:35 |
|
jnthn |
In master things get even more fun in that sense in that Perl 6 methods don't actually compile down to a :method in Parrot. |
| 23:35 |
|
masak |
I'm still thinking of what that something is. :) |
| 23:35 |
|
masak |
jnthn: so Rakudo master reinvents methods on the Perl 6 layer? |
| 23:35 |
|
jnthn |
sjohnson: Yes, I know about that one. |
| 23:36 |
|
jnthn |
masak: It was actually easier that way. |
| 23:41 |
|
supernovus |
well, phone is dying, time to say farewell. |
| 23:41 |
|
jnthn |
o/ |
| 23:42 |
|
supernovus |
ttyl! |
| 23:42 |
|
|
supernovus left #perl6 |
| 23:43 |
|
Tene |
Yet another place where I worry about language interop. |
| 23:43 |
|
masak |
yayitstene! |
| 23:44 |
|
Tene |
yayitsme! |
| 23:44 |
|
Tene |
where?!?! |
| 23:44 |
|
masak |
:) |
| 23:45 |
|
Tene |
Yeah, rakudo worries me about failur eof language interop in several ways. I haven't been available enough to actually do anything about it to be able to complain, though. |
| 23:45 |
|
masak |
please complain in more detail. |
| 23:49 |
|
Tene |
"I've seen a few things that make me vaguely uneasy about possible language interop concerns, if nobody else fixes them." |
| 23:49 |
|
* Tene |
waves his hands around aimlessly. |
| 23:50 |
|
sorear |
Tene: Interop problems in rakudo? |
| 23:52 |
|
masak |
Tene: I don't have language interop concerns, because I don't do language interop. instead, I reinvent the wheel in Perl 6, and then drive around with teeth clattering. :P |
| 23:52 |
|
Tene |
sorear: rakudo methods aren't actual parrot :methods, jnthn says. What are the implications of that on trying to call methods on rakudo objects from other parrot languages, or calling methods on other-language objects from rakudo? When I define postcircumfix:<[ ]> method on a class, how is that related to the *_pmc_keyed_int vtables? etc. |
| 23:52 |
|
jnthn |
Tene: The methods one isn't a problem. |
| 23:53 |
|
|
hercynium joined #perl6 |
| 23:53 |
|
jnthn |
Tene: All dispatch - from Rakudo or to Rakudo things - goes through find_method and invoke. |
| 23:53 |
|
jnthn |
Tene: The postcircumfix:<[ ]> one is more of an issue though. |
| 23:54 |
|
Tene |
also postcircumfix:<{ }> |
| 23:55 |
|
jnthn |
Yup. |
| 23:55 |
|
Tene |
there are also issues with .Bool and :get_bool, .Str and :get_str, etc. |
| 23:55 |
|
Tene |
several others. |
| 23:55 |
|
jnthn |
Yes. |
| 23:55 |
|
Tene |
there are issues with inheriting vtables overrides, though, so that's awkward to fix. |
| 23:55 |
|
Tene |
I think. |
| 23:56 |
|
jnthn |
Yeah. :-/ |
| 23:56 |
|
Tene |
Anyway, these aren't inherently unfixable, just need attention eventually. |
| 23:58 |
|
* Tene |
afk driving home |
| 23:58 |
|
sorear |
jnthn: does this mean that blizkost values won't be usable as hashes &c? |
| 23:59 |
|
Tene |
sorear: Yes, I expect it does. |
| 23:59 |
|
jnthn |
sorear: We already have something in place that falls back to get_pmc_keyed vtables. |
| 23:59 |
|
jnthn |
In the case that the thingy lacks a postcircumfix:<{ }> method. |
| 23:59 |
|
jnthn |
Whether it works well or not, otoh... |
| 23:59 |
|
jnthn |
But fixable if not. |