»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend! Set by sorear on 4 February 2011. |
|||
dalek | ecza: 84360d1 | sorear++ | lib/ (3 files): No more "ModuleWithTypeObject", everything gets a type now |
00:07 | |
kudo/nom: 7c0bd49 | jnthn++ | src/ (2 files): Some infrastructure for booleanization, and a very very cheating Bool, pending figuring out how to write EnumHOW. |
|||
kudo/nom: 4d39aa6 | jnthn++ | src/CORE.setting/operators.pm: First few relational ops. |
|||
kudo/nom: 4ac71a8 | jnthn++ | src/Perl6/Actions.pm: Get if/unless/while and maybe some others working again. |
|||
00:07
noganex_ joined
|
|||
sorear | jnthn: Is knowhow a mandatory part of Perl 6, or just reserved syntactic space for implementations that need it? | 00:09 | |
jnthn | sorear: I've been pondering that. It made it into std as a result of smop, I think. | 00:10 | |
sorear: I'm not sure that it's a great name. | |||
00:11
noganex left
|
|||
jnthn | And it's not really defined anywhere in the spec. | 00:11 | |
dalek | kudo/nom: 63185a7 | jnthn++ | src/CORE.setting/operators.pm: Few more relational ops. |
00:17 | |
00:26
jfried left
00:40
cooper|ipad left
00:44
lumi left
00:45
lumi joined
|
|||
sorear | TimToady: What does enum <variable> <a b c> mean? Why does STD accept a variable instead of a longname here? | 00:51 | |
TimToady | an enum is just a constant mapping, and we allow other constants to go into names with or without a sigil | 00:55 | |
00:56
lue joined
|
|||
sorear | ah | 00:56 | |
makes sense | |||
after 'enum $foo < a b c >', can $foo('a') be accessed directly? | |||
I presume not | 00:57 | ||
TimToady | $foo<a> maybe | ||
sorear | S12:1983 talks about how, after enum A < b c >, A responds to postcircumfix:<( )> while b and c don't | 00:59 | |
Is this a fossil from back when type objects had their own types? (Enum vs. A) | |||
TimToady: | 01:02 | ||
dalek | kudo/nom: aa75145 | jnthn++ | src/binder/multidispatch.c: Fix a multi-dispatch bug. |
01:04 | |
kudo/nom: dbbe49f | jnthn++ | src/Perl6/Metamodel/ClassHOW.pm: Publish type check cache. |
|||
01:04
icwiener_ joined
|
|||
TimToady | could be; enums have historically been overengineered in several directions, so we should aim for the simplest thing that gets people from point A to point B | 01:06 | |
01:07
icwiener left
|
|||
TimToady | main thing is that they still have to introduce the individual symbols when that's desired | 01:08 | |
01:17
cdarroch left
01:22
lumi left
01:23
lumi joined
01:26
jferrero left
01:52
donri left
01:53
whiteknight left
|
|||
dalek | kudo/nom: 63ff94c | jnthn++ | src/binder/container.c: Couple of write barriers. |
02:11 | |
kudo/nom: 539761b | jnthn++ | src/binder/bind.c: A little binder cleanup and optimization. |
|||
kudo/nom: 02d3637 | jnthn++ | src/Perl6/Actions.pm: Little optimization for compiling primitive multis. |
|||
kudo/nom: aaf51d0 | jnthn++ | NOMMAP.markdown: Update nommap. |
|||
02:12
woosley joined
|
|||
jnthn | Let's try sleep again... & | 02:13 | |
02:15
Chillance left
02:21
lumi left,
lumi joined
02:26
mtk left
02:37
mtk joined
02:48
nymacro joined
03:05
hudnix left
03:10
lumi left
03:11
lumi joined
03:23
Su-Shee_ joined
03:26
Su-Shee left
03:29
envi joined
03:48
thou joined
03:52
lumi left
03:54
lumi joined
03:55
lue left
04:38
wamba joined
|
|||
sorear wonders how much sense taint mode makes in Perl6 | 04:44 | ||
05:02
lumi left
05:25
mberends joined
05:28
molaf joined
06:00
am0c joined
06:12
daniel-s joined
06:18
daniel-s left
06:24
[Sec] left
06:25
daniel-s joined
06:29
kaare__ joined
|
|||
sorear | bah. horrible unproductive day. ->sleep | 06:35 | |
daniel-s | good night | 06:38 | |
06:39
mberends left
06:42
mberends joined
06:58
kaare__ left
07:00
wamba left
07:12
tadam joined
07:17
benabik left
07:19
awoodland joined
07:40
hanekomu joined
07:42
Tedd1 joined
07:43
envi left
07:48
jjore left
07:49
mj41 joined
07:51
jjore joined
07:53
tadam left
07:56
cooper|ipad joined
07:57
thou left
08:06
envi joined
08:08
Su-Shee_ is now known as Su-Shee
08:09
mj41 left
08:10
cooper|ipad left
08:24
pernatiy_ joined
08:25
pernatiy left
08:27
masak joined
|
|||
masak | morning, #perl6. | 08:28 | |
tadzik | morning masak | ||
masak | g'ah! I forgot to edublog yesterday! :/ | ||
mberends | morning, masak | ||
masak makes up for it now | |||
08:28
araujo left
08:30
lateau joined
08:34
lateau left
|
|||
mberends | masak: I'm looking forward to your edublog teaching Perl 6 to my wife and son :) | 08:34 | |
masak | mberends: cool. | 08:35 | |
mberends: I really wish the "environment" for toying around with BASIC code and the like that existed when I was a kid hadn't gone away. | |||
mberends | aye | 08:36 | |
I'm also try to re-kindle that with Arduino. Also, this morning Click on BBC World featured www.raspberrypi.org/ | 08:37 | ||
08:38
tadam joined
|
|||
moritz would love a p6 repl with easy graphic output | 08:43 | ||
08:43
tadam left
|
|||
tadzik | did I hear kindle? :) | 08:45 | |
mberends | hi tadzik, no you didn't :) | ||
tadzik | :> | ||
I find the device quite tempting | 08:46 | ||
08:46
zby_home_ left,
envi_|2 joined
|
|||
mberends | people do hack 'em, but only in minor ways apparently | 08:46 | |
08:46
Mowah joined
08:50
envi left
|
|||
masak | I recently showed my twin cousins how to write simple stuff in QBasic. even getting QBasic to run is *far* too tricky nowadays. | 08:55 | |
tadzik | I think amazon is close to releasing an SDK for it | ||
masak | (I have a 64-bit Windows installation, so I needed DOSBox to get it to run. DOSBox uses the concept of "mounting directories onto disk drive letters" to get going.) | 08:56 | |
blog post! strangelyconsistent.org/blog/june-3...statements | 08:57 | ||
mberends | yay! | ||
moritz | *else say that it's just right. | 08:59 | |
looks like a markup glitch | 09:00 | ||
masak | aye; saw that after publishing. it's already in the pipeline. :) | ||
thanks. | |||
oh! I forgot to mention the braces. I should do that briefly, too. | |||
Su-Shee | .oO(smalltalk... :) |
09:01 | |
masak | what about smalltalk? | 09:02 | |
Su-Shee | repl with gui and easy to learn/teach and so on. | ||
masak | ah, yes. | 09:03 | |
Squeak seems nice in many ways. | |||
as does the Lively kernel. | |||
Su-Shee | masak: grown-ups use "Pharo" mostly. (and I don't mean it in a sarcastic way) | ||
masak | oh, ok. haven't heard about Pharo. | 09:04 | |
I do have a CD here with software from Cincom that I got at a set of Smalltalk lectures once. | |||
Su-Shee | I have to say I'm absolutely amazed by Smalltalks.. the smoothsness, the level of integration, image-based, the very well written docs, the educational aspect.. | 09:05 | |
it really merges OO, gui, programming into one smooth flow of use. amazing stuff. | 09:07 | ||
masak | I've always been impressed by that class navigator thing. | 09:09 | |
Su-Shee | masak: imagine writing code, the gui and the documentation being on the same level of usability. | 09:10 | |
it's really basically "hack as you go, oh wait, I want a button here just now..." | |||
masak | :) | ||
Su-Shee | no, I really mean it. This is a whole new level of hacking away and being productive.. | 09:11 | |
masak | shame there's that monad-like echo chamber effect going on where a lot of nice things go into Smalltalk, but they never come out again. :/ | ||
Su-Shee | the community interested in smalltalk is too small, usally it's only people who went for the OO aspect of Ruby or come from the GUI world (like me) - and that's only a few people... | 09:12 | |
most developers go for functional languages... | |||
a friend of mine really did take smalltalk and tought 8-10 year old girls with it.. it's amazing what children can hack if you give them the right environment... | 09:13 | ||
masak | aye. | 09:15 | |
and it must be great to *be* a kid with the right environmant, too. | 09:16 | ||
Su-Shee | well set aside that my personal future doesn't lie in moving a green turtle on the screen (the hello world of smalltalk) it's amazing to have an environment which is optimized for all technical consequences moving a green turtle implies.. | 09:17 | |
like "move this object, change its attributes on the fly, connect events to it" and so on... | 09:18 | ||
moritz | speaking of such environments, polycode.org/ is just high on reddit | 09:20 | |
Su-Shee | ah. *click* :) | ||
masak | looks like a very nice project. | 09:26 | |
shopping & | 09:29 | ||
09:35
nymacro left
09:36
daniel-s left,
cglr joined
09:38
MayDaniel joined
09:40
awoodland left
09:52
jfried joined
09:56
cglr left
10:05
MayDaniel left
10:15
mtk left
10:20
daniel-s joined,
woosley left,
daniel-s left,
daniel-s joined
10:23
buubot_backup left,
hanekomu_ joined,
whiteknight joined
10:25
mtk joined
10:27
hanekomu left
10:34
hanekomu_ left,
hanekomu joined
|
|||
jnthn | o/, #perl6 | 10:43 | |
tadzik | hello jnthn | 10:49 | |
jnthn | hi tadzik :) | 10:50 | |
jnthn got decent sleep, when he finally managed to lose conciousness. :) | |||
Plan: coffee. bacon. hack. | |||
10:51
noam joined
|
|||
tadzik | nice | 10:51 | |
nom needs like 4 seconds to calculate the sum from 1 to 100000. I think it was like 40 for Rakudo, but I may be wrong | 10:52 | ||
jnthn | tadzik: What code are you using for that, ooc? | 10:54 | |
tadzik | jnthn: some stupid "speedtest.nqp" thing from my ~/src/perl/perl6, will paste somewhere | 10:55 | |
wklej.org/id/540720/ | 10:56 | ||
mberends | o/ jnthn. Almost on topic, I am trying to get my biggishint lib in shape to be a zavolaj example | ||
jnthn | tadzik: ah, using binding. OK :) | 10:57 | |
tadzik | binding is supposed to be slow? | ||
jnthn | No, binding is quite fast now. | ||
However, LOADS of other stuff is still far from optimized. | 10:58 | ||
As in, I've got a long list of reasons why that code takes as long as it does to run. | |||
tadzik | 8 seconds with assignment | ||
I've examined the pir, and it's full of nqp_something_something_serialization_something | 10:59 | ||
jnthn | Yes :) | 11:00 | |
11:01
zermatts joined
|
|||
jnthn | Well, generally you'll find one huge-ish deserialization sub | 11:01 | |
But then the body will also do a load of that | |||
tadzik | yeah | ||
jnthn | It's the 10000 | ||
We don't create it every time now | |||
We make it once then look it up | |||
11:01
JimmyZ joined
|
|||
tadzik | 10000 times? :) | 11:02 | |
I see the point. Also, the 1, no? | |||
jnthn | tadzik: Yes, which isn't really ideal in a sense, but is still WAY faster than what master does (which is make 10000 instances of Int). | ||
Right, same for the 1. | |||
tadzik | also, isn't ++ an LHF? | 11:03 | |
jnthn | Probably. | ||
tadzik | s/an/a/ I think | ||
jnthn | oh | ||
Not sure that "is rw" works properly yet but maybe enough | |||
tadzik | after modifying operators.pm make says Nothing to be done for `all'. | 11:06 | |
11:06
araujo joined
|
|||
jnthn | huh. | 11:06 | |
:/ | |||
tadzik: Can you check the makefile? | 11:07 | ||
tadzik | I can, but my Makefile-fu is weak | ||
11:09
cognominal joined
|
|||
tadzik | I do like commits like this one | 11:20 | |
dalek | kudo/nom: 79f3713 | jnthn++ | src/ (2 files): Realized in the shower that for an onlystar block entering a multi-dispatcher, we don't need a new callframe, we can just use the perfectly good one that we already have. Did it. 30% speed win on operator calling heavy benchmark. |
||
moritz | \o/ | 11:21 | |
tadzik imagines jnthn having a commit-terminal inside the shower cabin | |||
a perfect hack, you never know when it will come to your mind | 11:22 | ||
moritz | that's what memory is for :-) | ||
www.reddit.com/r/programming/commen...ets_right/ | 11:27 | ||
11:27
hanekomu left
11:37
buubot_backup joined
|
|||
jnthn checks the nommap and gets hacking | 11:41 | ||
11:42
donri joined
11:44
pmurias joined
11:55
noam left
11:56
kaare__ joined
11:59
pmurias left
12:02
Reaganomicon joined
|
|||
dalek | kudo/nom: 22b5c71 | jnthn++ | src/Perl6/Actions.pm: Defer building of signature objects a little longer, so we get more time to twiddle the parameter descriptors. Will allow us to keep the actions a bit neater. |
12:18 | |
kudo/nom: d38d813 | jnthn++ | src/Perl6/ (2 files): Clean up implicit invocant handling; gets us more STDish again. |
|||
kudo/nom: 1f9cb7c | jnthn++ | src/Perl6/Actions.pm: Set default parameter type (Mu or Any, depending on context). |
|||
kudo/nom: e01c3de | jnthn++ | src/CORE.setting/operators.pm: Remove now-unrequired type annotations. |
|||
12:25
tadam joined
12:41
kaare__ left
|
|||
moritz | fwiw rakudo/nom loops on t/00-parrot/01-literals.t | 12:55 | |
jnthn | moritz: Oddness. | 12:57 | |
moritz: Though, I didn't even look at the tests yet. | |||
moritz | t/00-parrot/04-op-cmp.t passes | 13:01 | |
13:02
am0c left
|
|||
jnthn | oh, nice :) | 13:03 | |
moritz: Any chance you can golf down what it is in literals.t that makes it loop? | 13:06 | ||
moritz: It's a weird failure mode. | |||
dalek | kudo/nom: f0f9487 | jnthn++ | src/Perl6/SymbolTable.pm: Restore named parameters. |
13:10 | |
kudo/nom: 6beb173 | jnthn++ | src/Perl6/Actions.pm: Get positional and named (though not slurpy) placeholder parameters working again. |
|||
tadzik | so Test.pm compiles? | 13:13 | |
13:14
yinyin joined
|
|||
jnthn | tadzik: doubt it | 13:14 | |
tadzik | I must start keeping 2 copies of Rakudo, so I can gsochack and have fun with nom at the same time | ||
jnthn | tadzik: And if it does I doubt that it works... | 13:15 | |
tadzik | it doesn't parse, that's funny | ||
Semicolon form of module definition not allowed in subscope; | 13:16 | ||
please use block form at line 8, | |||
jnthn | oh. | ||
13:16
tadam left
|
|||
jnthn | tadzik: You may be able to hunt that down. | 13:16 | |
tadzik: I copied the hanlding of that stuff from STD, I think. But maybe I screwed up...or didn't test it enough. :) | |||
tadzik | hmm | ||
std; module Test; our $a = 'b'; | 13:17 | ||
std: module Test; our $a = 'b'; | |||
p6eval | std 4b1b100: OUTPUT«ok 00:01 115m» | ||
jnthn | nom: module Test; our $a = 'b'; | ||
oh wait :) | |||
tadzik: Don't think I put "our" back yet, fwiw. | 13:18 | ||
tadzik | hmm | ||
no, "my" doesn't help there | 13:19 | ||
jnthn | tadzik: I suspect it's something in package_def | 13:20 | |
$*begin_compunit handling or some such. | |||
tadzik | our scoped variables not yet implemented at line 8, near " = 0;\no" | 13:22 | |
better :) | |||
and proto and dispatch auto-generation for multis not yet implemented at line 55 | 13:23 | ||
so I guess the module issue is fixed | |||
or it's broken in a different way | |||
13:23
MayDaniel_ joined
|
|||
tadzik | looks like it was an STD copy-pasto or copy-thinko | 13:23 | |
and the warning still works when it should, commiting | 13:25 | ||
std: { module asd; } | |||
p6eval | std 4b1b100: OUTPUT«===SORRY!===Semicolon form of module definition not allowed in subscope; please use block form at /tmp/hwt_zMISGB line 1:------> { module asd⏏; } expecting any of: name traitParse failedFAILED 00:01 112m» | ||
tadzik | that's it | ||
jnthn | tadzik++ | 13:27 | |
tadzik | jnthn++ for proper motivation :) | ||
also, running nom from outside the build directory is broken | 13:28 | ||
jnthn | tadzik: master requires make install for that, no? | ||
tadzik | jnthn: yes, but that doesn't help nom | ||
jnthn | tadzik: Sure, the make install target hasn't been updated at all :) | ||
tadzik | :P | 13:29 | |
I'll try to peek on that | |||
jnthn | tadzik: Feel free to work on it. perl6.exe, CORE.setting.pbc and everything in blib/Perl6/ needs installing. | ||
tadzik | where should the pbcs land? | ||
jnthn | Oh, and the dynops/dynpmcs, but that shoudln't change | ||
Hmm, good quesiton | |||
Where Parrot will find them ;-) | |||
I guess in its library directory | 13:30 | ||
tadzik | as where perl6.pbc does? | ||
jnthn | yeah, CORE.setting.pbc would go where perl6.pbc does, then make a Perl6 subdirectory within that location for the stuff inside blib/Perl6/ | ||
dalek | kudo/nom: 5af4643 | tadzik++ | src/Perl6/Grammar.pm: Fix semicolon form of module definition conforming to STD |
||
tadzik | bleh, make rebuild everything on every Makefile update | 13:32 | |
jnthn trying to track down why switching trait_mod:<is> to multi-dispatch causes issues | 13:35 | ||
13:39
whiteknight left
13:41
tadam joined
|
|||
jnthn | oh duh, I think I did something silly | 13:41 | |
colomon | oh noez! | ||
jnthn silly? | 13:42 | ||
sorear | good * #perl6 | ||
colomon | \o | ||
sorear | maybe I'll get something useful done today | ||
13:43
woosley joined
13:44
tadam left
|
|||
JimmyZ | \o | 13:47 | |
tadzik | o/ | ||
I feel wrong about having PERL6_PBC and PERL6_PBCS in one Makefile | |||
13:48
jfried left
13:49
colomon left
|
|||
jnthn | tadzik: maybe the second one wants to be PERL6_BLIBS | 13:52 | |
tadzik | "load_bytecode" couldn't find file 'blib/Perl6/ModuleLoader.pbc' -- looking for pbcs in blib/ seems wrongish | ||
mebbe | |||
13:53
_twitch joined
|
|||
sorear | tadzik: why? | 13:53 | |
tadzik | sorear: everything wants Perl6/Foo.pbc, only ModuleLoader wants to be in blib | 13:54 | |
when we install it, it doesn't really want to be in /parrot/blabla/library/blib/Perl6/ contrary to everything else I suppose | |||
sorear | jnthn: I'm having trouble figuring out how nom's SubsetHOW works. | 13:55 | |
jnthn | sorear: ? | 13:56 | |
sorear: It's just an empty class ATM | |||
sorear | Oh, it *doesn't* work? | 13:57 | |
jnthn | sorear: Right :) | ||
sorear: Just a "fill this in" stub :) | |||
sorear | ha...okay | ||
can you answer a few questions on what will go in there? | |||
obviously the most important part of subset is type_check | 13:58 | ||
13:58
colomon joined
|
|||
jnthn | sorear: IIRC I need to twiddle with the type check stuff a bit more generally. | 13:58 | |
sorear | er, other way around | ||
yeah | |||
tadzik | jnthn: any opinion on the hardcoded blib issue? | 13:59 | |
sorear | I'm left wondering about stuff like 'my SubsetType $s; $s.perl.say' | ||
and 'SubsetType.^isa(BaseType)' | |||
jnthn | sorear: I'll probably look at it within the next week. | ||
sorear | ok. I'll do enums instead today | 14:00 | |
o/ colomon | |||
jnthn | tssk, my traits bug gets weirder and weirder... | 14:01 | |
oh wait...duh. | |||
tadzik | heh, now it works after make install and doesn't without installing :> | 14:03 | |
sorear | colomon: do you have the source for the mandelbrot code you tested on niecza? I wanna check it for more LHF :) | 14:05 | |
14:05
yinyin left
|
|||
daniel-s | hi | 14:09 | |
is there a cleaner way of doing this?: | |||
$file_out.say("{@company[$i]},{@link[$i]}"); | |||
it's in a for loop that goes from 0 to the lenth of the arrays (both same) | 14:10 | ||
jnthn | Don't need the {...} | 14:11 | |
@company[$i] will interpolate by itself | |||
dalek | p: 5baa62c | jonathan++ | src/6model/sixmodelobject.c: Fail in a more helpful way when important stuff is missing in meta-objects. |
14:12 | |
daniel-s | yep, worked, thanks | 14:13 | |
so an array that is indexed will interpolate, but not one without an index | 14:14 | ||
moritz | correct | ||
sorear | daniel-s: are @company and @link always the same length? | 14:17 | |
daniel-s | yes | 14:18 | |
if they weren't I would have checked first, or checked as they were being filled, but it worked fine for what I needed | |||
sorear | consider for @company Z @link -> $company, $link { $file_out.say("$company,$link") } | 14:19 | |
moritz | for @company Z @link -> $c, $l { say "$c, $l" } | ||
14:19
hudnix joined
|
|||
daniel-s | what does the Z do? | 14:19 | |
moritz | rakudo: say <a b c> Z 1, 2, 3; | ||
p6eval | rakudo 048573: OUTPUT«a1b2c3» | ||
daniel-s | i see | 14:20 | |
14:20
ymasory left
|
|||
JimmyZ | rakudo: say <a b c> Z, 1, 2, 3; | 14:24 | |
p6eval | rakudo 048573: OUTPUT«a1b2c3» | ||
sorear | I still think $ORS = '' is the wrong default. | 14:25 | |
er | |||
$OFS | 14:26 | ||
moritz | jnthn: it's the 0_0_1_4 in 01-literals.t that makes nom loop | 14:27 | |
news.perlfoundation.org/2011/06/201...t-pmt.html | 14:30 | ||
is Marc Fisher here? | |||
tadzik | I want to see the "Documentation for a module" part :> | 14:32 | |
unless that'd be just extracting the pod, though that's non-trivial too | 14:33 | ||
moritz thinks the proposal is rather half-baked | 14:34 | ||
jnthn | std: 0_0_1_4 | ||
p6eval | std 4b1b100: OUTPUT«ok 00:01 111m» | ||
jnthn | rakudo: say 0_0_1_4 | ||
p6eval | rakudo 048573: OUTPUT«14» | ||
jnthn | moritz: Thanks, will investigate in a bit. | 14:35 | |
sorear | Fisher mentions perlesque in a blog post from 2010 | 14:38 | |
maybe diakopter knows em | |||
14:39
Ali_h joined
14:41
isBEKaml joined
14:42
JimmyZ_ joined
|
|||
dalek | kudo/nom: 999dba4 | jnthn++ | src/binder/ (3 files): Few small multi-dispatch fixes/tweaks. |
14:43 | |
kudo/nom: c14145b | jnthn++ | src/Perl6/Metamodel/NativeHOW.pm: NativeHOW.type_check. |
|||
kudo/nom: a49224b | jnthn++ | src/CORE.setting/traits.pm: Oops, left in debugging code. |
|||
kudo/nom: 6942b63 | jnthn++ | src/CORE.setting/traits.pm: Switch trait_mod:<is> to use multi-dispatch, so we'll be able to add more traits. |
|||
kudo/nom: dfeb5b9 | jnthn++ | NOMMAP.markdown: Remove done items from nommap. |
|||
14:45
JimmyZ left,
JimmyZ_ is now known as JimmyZ
|
|||
moritz left a comment on the tpf blog, but it's held for moderator approval | 14:46 | ||
14:46
bluescreen10 joined
|
|||
tadzik | jnthn: I added the install targets, but the remote executing still fails on blib/Perl6/ModuleLoader.pbc. If I remove blib/ from SymbolTable.pm (the only place where it exists), then the local executing gets broken | 14:47 | |
wklej.org/id/540866/ -- the patch | |||
sorear | I wonder if [email@hidden.address] redirects anywhere useful | 14:48 | |
tadzik | perl6: [email@hidden.address] | ||
p6eval | pugs, rakudo 048573: OUTPUT«zysvfure@pcnn.bet» | ||
..niecza v6-56-g84360d1: OUTPUT«Unhandled exception: Unable to resolve method trans in class Str at /tmp/0mMxYHqSQH line 1 (MAIN mainline @ 1)  at /home/p6eval/niecza/lib/CORE.setting line 1565 (CORE C715_ANON @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 1566 (CORE module-CORE @ 53)  | |||
..at /home/p6eval… | |||
sorear | why do I even bother | ||
tadzik-- | 14:49 | ||
moritz | the IRC logs do their best to obsucre the email address | 14:50 | |
tadzik: you might need the blib/ in the install location too - at least for ModuleLoader.pbc | 14:51 | ||
jnthn | I don't mind putting blib in the install location for now, fwiw. | ||
tadzik | moritz: then it breaks in that other way I described | 14:59 | |
moritz | tadzik: I didn't see a description of that other way, sorry | 15:01 | |
tadzik | oh, right | ||
that crashes in a different way then | |||
or maybe I mixed it up | 15:02 | ||
moritz | did you try to put everything under blib/, or just the module loader? | ||
tadzik | just the module loader | ||
Null PMC access in find_method('load_setting') when I cp it there | 15:06 | ||
15:08
isBEKaml left
15:11
benabik joined
15:16
pjcj left
|
|||
jnthn | std: sub foo(\$foo) { } | 15:17 | |
p6eval | std 4b1b100: OUTPUT«Potential difficulties: $foo is declared but not used at /tmp/rOAp5VQd1v line 1:------> sub foo(\⏏$foo) { }ok 00:01 114m» | ||
jnthn | std: sub foo(\$foo) { $foo } | ||
p6eval | std 4b1b100: OUTPUT«ok 00:01 115m» | ||
jnthn | std: sub foo(\:$foo) { $foo } | ||
p6eval | std 4b1b100: OUTPUT«===SORRY!===Malformed parameter at /tmp/g2hRzGj0le line 1:------> sub foo(⏏\:$foo) { $foo } expecting any of: name new name to be defined parameter routine_def signatureParse failedFAILED 00:01 113m» | ||
jnthn | std: sub foo(:\$foo) { $foo } | ||
15:17
JimmyZ_ joined
|
|||
p6eval | std 4b1b100: OUTPUT«===SORRY!===Malformed parameter at /tmp/IjDmC5DLDR line 1:------> sub foo(:⏏\$foo) { $foo } expecting any of: formal parameter named_paramParse failedFAILED 00:01 113m» | 15:17 | |
jnthn | hmm...how to parcel a named :) | ||
15:20
JimmyZ left
15:21
JimmyZ_ is now known as JimmyZ
|
|||
JimmyZ | std: sub foo( \ :$foo) { $foo } | 15:33 | |
p6eval | std 4b1b100: OUTPUT«ok 00:01 115m» | ||
JimmyZ | std: sub foo( : \$foo) { $foo } | ||
p6eval | std 4b1b100: OUTPUT«ok 00:01 115m» | ||
15:44
daniel-s left
15:46
ymasory joined,
birdwindupbird joined
|
|||
JimmyZ sleeps | 15:46 | ||
15:46
JimmyZ left
15:50
woosley left
15:51
lue joined
|
|||
lue | hello o/ Just came to give you a blag post: rdstar.wordpress.com/2011/06/04/lu...line-soon/ | 15:52 | |
dalek | kudo/nom: 9120d6c | jnthn++ | src/CORE.setting/Mu.pm: Stub new/CREATE/bless. |
15:55 | |
kudo/nom: a790134 | jnthn++ | src/CORE.setting/Mu.pm: Mu.Bool, Mu.defined. |
|||
kudo/nom: 8c632b6 | jnthn++ | src/Perl6/Metamodel/AttributeContainer.pm: Interface for the actions to get at attributes that are allowed to be accessed in the current class body. |
|||
16:00
thou joined
16:06
wamba joined
16:07
ilogger2 joined,
ChanServ sets mode: +v ilogger2
16:23
kaare__ joined
|
|||
moritz | github.com/zhuomingliang/rakudo/co...543743e08f | 16:30 | |
16:31
cooper|ipad joined
|
|||
moritz | I don't understand that - why is the ? necessary? I mean there aren't multiple occurrences of parrot_config in the path, and if yes, we'd want to substitute the last, right? | 16:31 | |
dalek | kudo/nom: f9e5f02 | jnthn++ | / (3 files): Start fleshing out Attribute a bit more. |
16:32 | |
kudo/nom: b748b55 | jnthn++ | src/Perl6/Actions.pm: Fix up attribute access, including compile-time detection of missing/tyop'd attributes. |
|||
kudo/nom: 6a20ac9 | jnthn++ | src/Perl6/Actions.pm: Attribute binding. |
|||
p: 401cd85 | jonathan++ | src/ops/nqp.ops: Missing decontainerize. Unbreaks some type checks in rakudo/nom. |
16:42 | ||
jnthn | moritz: Doens't immediately make much sense to me either. | 16:43 | |
D'oh, that attribute binding patch didn't really work at all... | 16:46 | ||
17:02
thou joined
17:04
thou left
17:05
hanekomu joined
|
|||
sorear | Does binding attributes make sense? | 17:06 | |
jnthn | sure | 17:07 | |
Actually I got the binding bit right and screwed up the type check in the first attempt. | |||
sorear | $!foo only, right? | ||
jnthn | Yes | ||
$.foo := ... won't work. | |||
nom is *very* strict about what can appear on the LHS of a bind. | 17:08 | ||
sorear | Does $.foo := ... make any sense whatsoever? | ||
jnthn | Compile time error in nom. | ||
dalek | kudo/nom: 5634c40 | jnthn++ | src/Perl6/ (2 files): Attribute binding that actually seems to work. |
||
sorear | I feel... vindicated. | ||
some months ago I was trying to argue that the LHS of binds should be restricted to a small number of semantic forms | 17:09 | ||
jnthn | If you're going to make binding cheap and have a chance at an efficeint container model, I think it has to be that way. | ||
TimToady has always thought that binding should be very primitive | 17:10 | ||
17:11
tadam joined
|
|||
TimToady | (which doesn't stop TimToady from wanting contradictory things, of course...) | 17:11 | |
jnthn | sorear: Note that $!foo works because (unlike is sometimes speculated) $!foo is *always* a directl reference to an attribute storage slot. Not a magically inlined private accessor method for that storage slot. | ||
(And yes, I know I S12 may be wrong there.) | 17:12 | ||
sorear | no, S12 agrees with you | ||
jnthn | ah, good :) | ||
TimToady | the existence of a private accessor does not contradict | ||
sorear | the magically inlined private accessor thing is something I made up | 17:13 | |
jnthn | TimToady: The existence of one doesn't; $!foo within the class body meaning "that accessor" does, though. | ||
sorear | it simplified some things | ||
TimToady | I think it's generated on demand, is more like what it should be | ||
jnthn | I figure the use case is for trusted classes that want to get at the attributes? | 17:14 | |
TimToady | yes, and we trust ourselves too :) | ||
jnthn | OK | ||
I'll have a shot at trusts at some point. | |||
TimToady | but really, the syntax is just a funny way of calling a function | ||
sorear | jnthn: that, and to get rid of the distinction between $!foo and $!foo() | ||
in the niecza model they are exactly the same | 17:15 | ||
jnthn | sorear: I don't think that's correct, fwiw. | ||
TimToady | it's a false(ish) analogy to $.foo and $.foo() | ||
a consistency we don't really need | 17:16 | ||
sorear | what, TimToady arguing against strange consistency? *faints* | ||
jnthn | > class Foo is Mu { has $!x; method m { $!x := -> { say 42 }; $!x() } }; Foo.new.m | 17:17 | |
TimToady | it would be less compelling if we didn't have twigils | ||
jnthn | 42 | ||
TimToady | or if we hadn't chosen closely related twigils | ||
sorear | what happens on has $!foo; say @!foo ? | 17:18 | |
TimToady | it's more like the consistency of people who line up constructs vertically that aren't really related | 17:19 | |
jnthn | > class Foo { has $!x; method m { @!x } } | ||
Attribute @!x not declared in class Foo at line | |||
TimToady | that looks like the right answer to me | 17:20 | |
jnthn | (that's nom...) | ||
sorear | ooh, comple time error, nifty | ||
jnthn | ooh, it did say line 1 too | ||
I pasto'd :) | |||
Yes, master doesn't complain until runtime. | |||
17:22
thou joined,
thou left
|
|||
jnthn | Time for a break and some dinner. | 17:23 | |
17:23
thou_ joined
|
|||
colomon | sorear: github.com/colomon/mandelbrot/blob...t-color.pl | 17:27 | |
17:36
pschon joined
|
|||
sorear | thanks | 17:37 | |
259 lines and it ran without modification? nice | 17:38 | ||
17:41
Moukeddar joined
|
|||
TimToady | according to justrakudoit.wordpress.com/2011/05/...rakudo-it/ he made a couple of trivial mods | 17:42 | |
17:42
pschon left
|
|||
colomon | first made trivial mods to the script, then made trivial mods to Niecza so the script would run without them. :) | 17:45 | |
17:46
Trashlord joined
|
|||
colomon | In particular, adding .re and .im and fixing Complex.abs. | 17:46 | |
to be fair, most of the lines are color data. :) | 17:47 | ||
17:58
PhatEddy joined
|
|||
PhatEddy | rakudo: class ting{has $.tang; submethod BUILD($wallah){ $.tang = $wallah +2 } }; my $x = ting.new(5); say $x.tang | 17:59 | |
p6eval | rakudo 048573: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in 'ting::BUILD' at line 22:/tmp/U004LXPrz4 in main program body at line 22:/tmp/U004LXPrz4» | ||
PhatEddy | There is an rt that looks a bit similar here: rt.perl.org/rt3/Public/Bug/Display.html?id=73688 | 18:00 | |
Bug? new or attach to similar rt? | |||
TimToady | the default new does not take positional parameters | 18:02 | |
pmichaud | good afternoon, #perl6 | 18:03 | |
colomon | PhatEddy: what TimToady is trying to say, the code is wrong. :) | ||
TimToady | suppose you have a complicated object with various parents | ||
each BUILD has to know whether the parameter is for it or not | |||
they can't all claim the first parameter | |||
so you have to use named arguments | |||
s:g/parameter/argument/ | 18:04 | ||
PhatEddy | I understand the point about the code being wrong and am reading through the explanation ... Thx | ||
mberends | hi pmichaud | ||
TimToady | the error message is definitely LTA | ||
dalek | p: 13eb661 | pmichaud++ | / (3 files): Refactor --gen-parrot and Configure.pl a bit more, move git repo The --gen-parrot argument to Configure.pl now accepts an optional value to be used for 'git checkout'; thus "--gen-parrot=master" will build Parrot from its 'master' branch instead of the one given by tools/build/PARROT_REVISION. Any valid argument to "git checkout" can be given to "--gen-parrot". Minimum revision checks (according to --min-parrot-revision or tools/build/PARROT_REVISION) are still performed. |
||
p: df3bf99 | pmichaud++ | src/ops/nqp.ops: Merge branch 'master' of github.com:perl6/nqp |
|||
TimToady wonders if we could install a default multi method new ($bogus, *@bogus) { die "This error message is not LTA." } | 18:05 | ||
18:06
george_z0rwell joined
|
|||
pmichaud | since nom's new won't be written in PIR and will use Rakudo's normal binder, I'd expect the error message to improve | 18:06 | |
instead of Parrot's LTA "got 1 but expected 2" | 18:07 | ||
jnthn | s/will/is/ :P | ||
(OK, it's only a stub...I don't have hash yet. :P) | |||
pmichaud | nom: say 1 # do we have 'nom' yet? | ||
nom: say 1 # do we have 'nom' yet? | |||
jnthn | pmichaud: Not yet. | ||
pmichaud | ENONOM | ||
I think that means it's time for me to get lunch. :) | 18:08 | ||
TimToady | rakudo: use MONKEY_TYPING; class Mu { multi method new ($bogus, *@bogus) { die "Your code is RWONG!" } }; say Cool.new(1,2,3) | ||
p6eval | rakudo 048573: OUTPUT«===SORRY!===Illegal redeclaration of symbol 'Mu'» | ||
jnthn | TimToady: augment :) | ||
TimToady | rakudo: use MONKEY_TYPING; augment class Mu { multi method new ($bogus, *@bogus) { die "Your code is RWONG!" } }; say Cool.new(1,2,3) | ||
p6eval | rakudo 048573: OUTPUT«===SORRY!===A method named 'new' already exists in class 'Mu'. It may have been supplied by a role.» | ||
jnthn | TimToady: And existing one isn't multi. | ||
TimToady | who designed this stupid language?!? | ||
pmichaud | ...it's been designed? | 18:09 | |
jnthn | I'm not sure the spec says that the default one should be multi or not. :) | ||
I suspect it may be worthwhile making it so. | |||
pmichaud | multi new +1 | ||
TimToady | rakudo: use MONKEY_TYPING; augment class Any { multi method new ($bogus, *@bogus) { die "Your code is RWONG!" } }; say Cool.new(1,2,3) | ||
p6eval | rakudo 048573: OUTPUT«Cool()<0x436d160>» | ||
TimToady | heh | 18:10 | |
someone's cheating somewhere... | |||
18:10
Moukeddar left
|
|||
jnthn | heh, wtf. | 18:10 | |
TimToady | niecza: use MONKEY_TYPING; augment class Mu { multi method new ($bogus, *@bogus) { die "Your code is RWONG!" } }; say Cool.new(1,2,3) | 18:12 | |
p6eval | niecza v6-56-g84360d1: OUTPUT«Potential difficulties: @bogus is declared but not used at /tmp/14YggAAKaR line 1:------> t class Mu { multi method new ($bogus, *⏏@bogus) { die "Your code is RWONG!" } }; $bogus is declared but not used at /tmp/14YggAAKaR line 1:------> | ||
..G; augment cla… | |||
TimToady | niecza: use MONKEY_TYPING; augment class Mu { multi method new ($bogus, *@bogus) { die "Your code is RWONG!"; $bogus; @bogus } }; say Cool.new(1,2,3) | 18:13 | |
p6eval | niecza v6-56-g84360d1: OUTPUT«Unhandled exception: No matching candidates to dispatch for new at line 0 (new @ 0)  at /home/p6eval/niecza/lib/CORE.setting line 1556 (CORE module-CORE @ 50)  at /home/p6eval/niecza/lib/CORE.setting line 1566 (CORE mainline @ 1)  at line 0 (boot-MAIN @ 1)  | ||
..at line 0 (… | |||
pmichaud | TimToady: just to verify -- does List.new(...) in a Parcel flatten or not-flatten? e.g., (1, 2, List.new(...), 3) | ||
i.e., does .new always return a (non-flattening) item? | |||
18:13
cognominal_ joined
|
|||
TimToady | funny, on my local niecza it tell me my code is RWONG | 18:13 | |
is this niecza out of date? | 18:14 | ||
pmichaud | (rakudo master treats .new as flattening, I think) | 18:15 | |
TimToady | pmichaud: I'd think it'd return a sub-Parcel that defers the flattening decision | ||
such that a lol would Seq-ize it | |||
pmichaud | I meant if the parcel is subsequently flattened | 18:16 | |
my @a = (1, 2, List.new(...), 3) | |||
TimToady | sure, if it's a subparcel, it flattens | ||
pmichaud | okay | ||
same with | |||
TimToady | same as my @a = (1, 2, ('a', 'b', 'c'), 4, 5) | ||
pmichaud | my @a = (1, 2, Range.new(:min(3), :max(5)), 6) | ||
? | |||
that ends up with six elements, not four? | |||
TimToady | yes, ranges are supposed to flatten in list context, but not in lol context | 18:17 | |
s/list/flat/ | |||
pmichaud | okay | 18:18 | |
good to know -- will keep it that way then. | |||
thanks | |||
PhatEddy | I vaguely understand from the discussion that my code is wrong because of issues related to multiple inheritance but a better error message is desirable and expected soon from nom. | 18:20 | |
TimToady | yes, except it's also a problem with single inheritance | ||
you still have multiple BUILDs in that case | 18:21 | ||
and it does look practical to give a better message someday | |||
pmichaud | (someday soon, even) | ||
afk, fetching lunch | 18:22 | ||
TimToady | rakudo: say grep 1..3, 0..5; | 18:23 | |
p6eval | rakudo 048573: OUTPUT«123» | ||
TimToady | that's correct | ||
18:23
tadam left
|
|||
TimToady | pmichaud: ^^ | 18:23 | |
pmichaud | that doesn't seem related to my question, but okay :-) | 18:24 | |
TimToady | 1..3 and 0..5 both behave like parcels | 18:25 | |
the 0..5 flattens, but the 1..3 doesn't | |||
pmichaud | right, but that's an argument list | ||
TimToady | because of the context binding to grep | ||
0..5 is in list context | |||
pmichaud | and infix:<..> could have different flattening semantics than Range.new | 18:26 | |
(from what you just said it doesn't... but it could've gone the other way :) | |||
TimToady | I don't see much reason to make them different | ||
sorear | sub () is rw { 5 } # is this an error? | ||
jnthn | imo yes | ||
pmichaud | 'is rw' usually checks for rw-ness | ||
sorear | does sub () is parcel make sense? :_ | 18:27 | |
:) | |||
TimToady | the normal result of any function/method is a Parcel-ish thing, so I tend to go with Parcel semantics when possible | ||
pmichaud | wfm | ||
TimToady | sorear: I dunno, but it makes my head hurt more... | 18:28 | |
pmichaud | on a similar note, then | ||
if someone defines their own .new method: | |||
class XYZ { method new($x) { my $obj = self.bless(...); $obj } } | 18:29 | ||
then XYZ.new would end up being non-flattening in a Parcel (because it was returned as a scalar) | |||
what will be the best way to avoid that? | |||
sorear | well sometimes there are code objects that want to only sometimes return a rw value | ||
18:30
Chillance joined
|
|||
sorear | pmichaud: niecza has an unitem() primitive for cases like that | 18:30 | |
pmichaud | sorear: this looks like it might end up being a FAQ | ||
TimToady | new($x --> Parcel) maybe | ||
sorear | Range.new($x,$y) is defined approximately like unitem(self.bless(*, :$min, :$max)) | ||
TimToady | maybe not | ||
jnthn | pmichaud: Explicitly return it in a Parcel | 18:31 | |
pmichaud | jnthn: that doesn't eliminate flattening | ||
jnthn | TimToady: That's more a check than a coercion | ||
pmichaud | the flattening is due to the '$' | ||
18:31
tomaw joined
|
|||
TimToady | huh? | 18:31 | |
pmichaud | er, non-flattening is due to the '$' | ||
jnthn | TimToady: --> is sugar for "returns" or "of"? | ||
TimToady | return |$obj; # :P | ||
pmichaud | sorry, I mis-phrased all of that | ||
sorear | whether the value is returned in a Parcel or not has no effect on any of this | 18:32 | |
TimToady | right | ||
pmichaud | it's the $ that causes the return value to be non-flattening | ||
sorear | my $a1 = [1,2,3]; my @x = $a1,; # $a1 is wrapped in a Parcel, nothing happens | ||
pmichaud | putting it in a parcel just means it's a parcel with a non-flattening item | ||
jnthn | ah, yes | 18:33 | |
sorear | niecza: my $a1 = [1,2,3]; say $a1.perl; say (@$a1).perl; say unitem($a1).perl | ||
p6eval | niecza v6-56-g84360d1: OUTPUT«[1, 2, 3][1, 2, 3].list[1, 2, 3].list» | ||
TimToady | nothing sets the "flatten me" flag, on some level or other | ||
the @ flag, as it were | |||
pmichaud | I don't mind saying that method new() should return $obj.list or @($obj) or somesuch | ||
sorear | pmichaud: the trouble is that .list causes Range to become List | 18:34 | |
TimToady | @$obj | ||
why? | |||
shouldn't .flat do that? | |||
sorear | which is why I have unitem | ||
TimToady | .list is not .flat | ||
pmichaud | Range is not a List | ||
so .list is the normally way to make it into one | 18:35 | ||
*normal | |||
regardless of flattening/non-flattening | |||
TimToady wonders whether he should wonder whether the Tylenol is poisoned... :) | 18:36 | ||
pmichaud | sorear: I tend to think of the default new as doing "return self".... which could already be a non-item. | 18:37 | |
so doing .list wouldn't be necessary on Range | |||
TimToady wonders whether Range does Parcel makes any sense... | 18:39 | ||
sorear | pmichaud: that's because in your world, all objects default to non-item, but the flag is only respected for subclasses of Iterable | ||
18:39
Khisanth joined
|
|||
sorear | in my world, the flag is respected for everything, so objects are items by default | 18:40 | |
TimToady | can you give some examples of where it makes a difference? | ||
sorear | my @x = Range.bless(*, :min(1), :max(10)) | ||
in niecza, @x.perl = [1..10] | 18:41 | ||
pmichaud | btw, in nom we're eliminating the flags altogether. | ||
sorear | in rakudo, @x.perl = [1,2,3,4,5,6,7,8,9,10] | ||
pmichaud | it's generally a compile-time thingy | ||
sorear | pmichaud: that doesn't even make sense | ||
pmichaud | istr that TimToady++ has said in the past that he felt that flattening ought to be compile-time based on the sigil | 18:42 | |
sorear | how will you tell the difference between sub foo() { [1,2,3] } ans sub foo() { my @ = 1, 2, 3 } ? | ||
then [0,foo,4] | |||
pmichaud | because [1,2,3] returns an Array that is wrapped in a Scalar | 18:43 | |
and Scalar's don't flatten. | |||
the second just returns an Array | |||
jnthn | I guess it's not so much "no flag" as "the flag is just a type" | ||
pmichaud | "the flag is a Scalar container" | ||
jnthn | Right. | ||
pmichaud | so TimToady's earlier suggestion of return |$obj (or something like it) might be sufficient. | 18:45 | |
jnthn | (Actually, Scalar is a type that something knows is a scalar container, and the mechanism is there for other types to be too...so the whole container stuff will be useful to other HLLs) | ||
18:45
tomaw left
|
|||
pmichaud | btw, my @x = Range.bless(*, :min(1), :max(10)) should end up with @x being eagerly evaluated, iirc | 18:46 | |
because array assignment is "mostly eager" | 18:47 | ||
sorear | do you draw a cutoff anywhere? | ||
pmichaud | not as long as the list is known finite | 18:48 | |
TimToady | niecza: say grep 1..3, 0..5; | ||
p6eval | niecza v6-56-g84360d1: OUTPUT«123» | ||
sorear | what do you think of for 1e0..1e10 { .say } ? | ||
TimToady | niecza: say grep 1..3, Range.bless(*, :min(1), :max(10)); | 18:49 | |
p6eval | niecza v6-56-g84360d1: OUTPUT«Unhandled exception: Unable to resolve method bless in class Range at /tmp/rYVdmW4Xoo line 1 (MAIN mainline @ 3)  at /home/p6eval/niecza/lib/CORE.setting line 1565 (CORE C715_ANON @ 2)  at /home/p6eval/niecza/lib/CORE.setting line 1566 (CORE module-CORE @ 53)  | ||
..at /home/p6ev… | |||
18:49
cooper|ipad left
|
|||
pmichaud | sorear: I'm pretty sure that's lazy. | 18:49 | |
sorear | bless(*, ...) is currently spelled CREATE(...) | ||
pmichaud | (because 'for' is lazy) | 18:50 | |
TimToady | niecza: say grep 1..3, Range.CREATE(:min(1), :max(10)); | ||
p6eval | niecza v6-56-g84360d1: OUTPUT«» | ||
TimToady | rakudo: for 1e0..1e10 { .say } | 18:51 | |
p6eval | rakudo 048573: | ||
..OUTPUT«(timeout)6789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | |||
TimToady | looks lazy to me | ||
rakudo: for eager 1e0..1e10 { .say } | |||
p6eval | rakudo 048573: OUTPUT«(timeout)» | 18:52 | |
TimToady | looks eager to me :) | ||
rakudo: for "aaaaaa" .. "zzzzzz" { .say } | 18:53 | ||
p6eval | rakudo 048573: | ||
..OUTPUT«(timeout)aaabaaaaacaaaaadaaaaaeaaaaafaaaaagaaaaahaaaaaiaaaaajaaaaakaaaaalaaaaamaaaaanaaaaaoaaaaapaaaaaqaaaaaraaaaasaaaaataaaaauaaaaavaaaaawaaaaaxaaaaayaaaaazaaaabaaaaabbaaaabcaaaabdaaaabeaaaabfaaaabgaaaabhaaaabiaaaabjaaaabkaaaablaaaabmaaaabnaa… | |||
TimToady | sure would be nice if that (timeout) didn't overwrite the beginning... | 18:54 | |
pmichaud | yeah, that seems kinda weird. :-) | ||
sorear | niecza's general policy is to process lists eagerly until it hits an iterator, then go lazy | ||
I think this is what you call "mostly eager" | |||
pmichaud | no | ||
a simple iterator isn't sufficient. | |||
18:55
thou_ left
|
|||
TimToady | we mark our iterators as finite/infinite | 18:55 | |
s/we/rakudofolk/ :) | |||
pmichaud | well, even in Perl 6. | ||
the problem the infinite/finite is intended to avoid is action-at-a-distance due to laziness | |||
18:56
cooper|ipad joined
|
|||
pmichaud | with my @a = (1, 2, 3, @b, 4) | 18:56 | |
we can't stop evaluating as soon as we hit b's iterator, because the next line might be | |||
@b[100] = 'oops' | |||
TimToady | it forces eager to behave a bit more like what a P5 person would expect | ||
pmichaud | and we want @a to have the value of @b *before* that assignment was made | ||
s/@b/@b[100]/ | 18:57 | ||
sorear | rakudofolk have a lot of influence on perl 6 | ||
TimToady | fershure | ||
pmichaud | only because we've asked a lot of hard questions already | ||
it's not that we said "this is how the language should be" -- it's that we said "how is this supposed to work?" and these are the answers we got back. | |||
sorear | so once I have not-completely-eager list assignment, it'll need to keep going until it sees a cursor marked as "infinite" | 18:58 | |
does "stop at any iterator" work for "mostly lazy" level? | 18:59 | ||
s/iterator/cursor/ | |||
pmichaud | I think that mostly lazy is allowed to work ahead or not as it desires | ||
TimToady | even if the rest of S07 is bogus, the definitions at the front are pretty accurate | 19:01 | |
sorear | Have you figured out ,* yet? | ||
pmichaud | ,* is a compile-time marker that marks a parcel as being "infinite" or "whateverish" | ||
TimToady | the latest is that it's just a marker, and no Whatever appears on the end | ||
pmichaud | (I haven't quite decided what the better term for it is) | ||
TimToady | and maybe ,() is the opposite marker | ||
and we decided it was easy enough to do the 'repeat last element' some other way | 19:02 | ||
pmichaud | .repfinal works for me, btw. | ||
TimToady | @stuff.repfinal(3) for insta... yeah | ||
sorear | what does marking a parcel infinite do? | ||
pmichaud | causes its iterator to report "infinite" | 19:03 | |
masak | rehi, #perl6! | ||
pmichaud | which means that eager evaluation of that parcel becomes lazy | ||
TimToady | hire, #masak | ||
pmichaud | (mostly eager evaluation, that is) | ||
jnthn | hire masak! | ||
no, wait, don't... :) | |||
masak | :) | 19:04 | |
pmichaud | this enables things like &infix:<...> to be able to signal "I'm returning an infinite sequence because my RHS is *" | ||
internally, when &infix:<...> knows that its RHS is *, it can return a parcel of (gather { ... } ,*) | |||
which means that the result is conceptually infinite | 19:05 | ||
TimToady | or however we mark it internally | ||
19:05
tomaw joined
|
|||
pmichaud | ("however we mark it internally" == the ,* after the gather is resolved at &infix:<...>'s compile time :-) | 19:06 | |
TimToady | I'm pretty comfortable with the boundary between mostly lazy and mostly eager; the boundary with strictly eager is probably sink context; I'm less sure how the boundary with strictly lazy works | ||
since some recursive definitions need something approaching strict laziness | |||
there's handwaving verbiage in "Mostly Lazy" about that, but I'm not sure how we detect circular definition without deadlock... | 19:07 | ||
but several rosettacode examples could use better recursive definitions of lazy constant arrays | 19:09 | ||
pmichaud | TimToady: would ,* resolve some of those, ooc? | ||
TimToady | I don't want to go as far as Haskell in requiring strict laziness | ||
I don't think ,* does anything to help the strict lazy end | 19:10 | ||
pmichaud | for example: my @a = (1, 2, @b, 3, *) | ||
would tend to make evaluation lazy | |||
TimToady | it does let us issue an immediate "out of memory" error on ;1..*; | ||
pmichaud | because the parcel is signalling "infinite" | ||
TimToady | yes, that would lazify it, and then we could blow up the rocket if they run off the end :) | 19:11 | |
except, of course, that it's allowed to work ahead, so you can't guarantee that @b isn't immediately evaluated | 19:12 | ||
pmichaud | troo | 19:13 | |
TimToady | my @a = (1, 2, lazy @b, 3) has the same issue | ||
my @a = (1, 2, very-lazy @b, 3) | 19:14 | ||
and very-eager :) | |||
19:15
cooper|ipad left
|
|||
TimToady | or make very a meta-op on the next thing :) | 19:15 | |
masak | uber-lazy | ||
pmichaud | LAZY | ||
EAGER | |||
TimToady | my @a = (1, 2, (very lazy @b), 3) | ||
sorear | I thought it was supposed to be a pragmatic module | ||
TimToady | well, it's our spec, we can rewrite it :) | 19:16 | |
sorear | I suppose infinitized iterators have to distribute their infiniteness to any iterators they generate on reify? | ||
TimToady | well, maybe the last one | ||
pmichaud | yeah, I'm not sure that follows. | 19:17 | |
TimToady | I suppose it depends on what kind of sub-iterator you're generating... | ||
pmichaud | ,* simply means "act like an infinite list", it doesn't actually make the list infinite. :-) | ||
sorear | my @x = (gather { ... }, *); @x.shift; my @y = @x; | ||
after the shift, the original ParcelIterator is gone | 19:18 | ||
@x contains only a GatherIterator | |||
pmichaud | @x isn't infinite. | ||
nor does it need to be marked at asuch. | |||
*as such | |||
TimToady doesn't follow | 19:19 | ||
pmichaud | I don't quite follow the example either | ||
sorear | my @x = (gather { take 1 while 1 }, *); @x.shift; my @y = @x; | ||
better? | |||
pmichaud | likely run out of resources on the my @y = @x; | ||
as it tries to mostly eager evaluate @x | 19:20 | ||
TimToady | unless it's marked infinite | ||
which is what sorear++ is asking | |||
pmichaud | right | ||
I'm not sure we should have that level of transitivity | |||
TimToady wonders whether ,* should be a real sentinal | |||
*nel | 19:21 | ||
pmichaud | somewhat like Nil? | ||
maybe an infinite Nil? | |||
19:21
pjcj joined
|
|||
sorear | INFINITE NOTHING | 19:22 | |
pmichaud | (i.e., () but with an infinite flag set) | ||
TimToady | which is why I was proposing () for the Other | ||
sorear | what would that do? | 19:23 | |
TimToady | mark it as finite, but it wouldn't work if ,* is also Really | ||
pmichaud | I think "force a Parcel to act finite, regardless of its contents" | ||
TimToady | There | ||
@foo, *, () is a problem | 19:24 | ||
or however one writes it | |||
pmichaud | oh, that looks like something else entirely to me | ||
I was thinking that ,* was "infinite" only at the end | |||
in the middle, it's just a Whatever. | |||
TimToady | which smells | ||
pmichaud | agreed | ||
which is the smell I've detected with ,* somewhat from the beginning :-) | 19:25 | ||
TimToady | was thinking if it's a real sentinel, then (1,@foo,3) could have @foo return ,* and it would still work | ||
for most purposes, we could replace ,* with ...* | 19:26 | ||
pmichaud | oooh | ||
well, not exactly | 19:27 | ||
sorear | I don't get it. What's the practical difference between @foo and @foo,() ? | ||
pmichaud | (1,3,5,*) is definitely different from (1,3,5 ... *) | ||
TimToady | troo | ||
pmichaud | heh | 19:28 | |
TimToady | sorear: it'd only be different if @foo looked infinite | ||
pmichaud | which leaves | ||
1,3,5, () ... * | |||
or | |||
19:28
pjcj left
|
|||
pmichaud | 1,3,5, () xx * | 19:28 | |
sorear | TimToady: I want to know _how_ it would be different ... | 19:29 | |
19:29
wamba joined
|
|||
TimToady | (un)fortunately, my lunch has just arrived...* | 19:29 | |
pmichaud | () xx * might be very workable | ||
TimToady | ** almost means that | 19:30 | |
nom & | |||
pmichaud | sorear: a lot of this comes down to "how do we signal infinite lists in subscripts" (which is what started this) | ||
so, @a[1,2,3,foo()] might autotrim if foo() was detectably infinite | 19:31 | ||
a final ,() could mean "ignore the infiniteness of earlier items in the parcel" | |||
thus @a[1,2,3,foo(),()] prevents autotrimming, even if foo() signals infiniteness | |||
or something like that. | 19:32 | ||
sorear | What if earlier items in the parcel aren't infinite, but will produce infinite items when reified? | ||
pmichaud | I agree, I don't quite see the full use case for ,() yet. | ||
sorear | e.g. (1, infinitelist, 2) | ||
pmichaud | it's "detectably infinite" that we're looking for, generally | ||
not "ends up being infinite" | |||
we really have three states -- "known finite", "known infinite", and "not known to be either" | 19:33 | ||
various operations may choose different cutoffs based on whether something is known to be finite or known to be infinite | 19:34 | ||
if we "discover" infiniteness in the process of reifying, that's yet another case (that the operation can decide how it wants to handle) | 19:35 | ||
19:35
MayDaniel_ joined
|
|||
PhatEddy | perl6: class A {has $.a is rw}; class B is A {has $.a is rw}; my $x = B.new; $x.a = 12 | 19:36 | |
p6eval | pugs, rakudo 048573, niecza v6-56-g84360d1: ( no output ) | ||
PhatEddy | rakudo: class A {has $.a is rw}; class B is A {has $.a is rw}; my $x = B.new; $x.a = 12 | ||
p6eval | rakudo 048573: ( no output ) | ||
masak | ...and that's correct! | ||
19:36
MayDaniel_ left
|
|||
PhatEddy | Which class a attribute did I update? | 19:37 | |
19:37
pjcj joined
|
|||
tadzik | PhatEddy: none. You updated an attribute of an object, not a class | 19:37 | |
and the object was of class B | |||
(I suppose) | |||
jnthn | It was a method dispatch, so yes, B. | 19:38 | |
pmichaud | you updated the one in class B | ||
afk, walk | |||
19:43
pjcj left
19:47
Moukeddar_ joined
|
|||
sorear | PhatEddy: in rakudo master and niecza, dunno about pugs, you updated both simultaneously | 19:50 | |
AFAIK only nom implements the "attributes are identified by class x name" thing yet | |||
PhatEddy | still playing with it ... thx | 19:51 | |
TimToady | eh? no, those should be two separate $!a locations | ||
and $.a is always virtual | |||
jnthn | TimToady: It's certainly that way in nom. | ||
TimToady | so only looks at the outer | ||
you'd have to get fancy to set them all | 19:52 | ||
sorear | TimToady: bug in rakudo master and niecza | ||
TimToady | rakudo: class A {has $.a is rw; method report { say $!a.perl }}; class B is A {has $.a is rw; }; my $x = B.new; $x.a = 12; $x.report | 19:53 | |
p6eval | rakudo 048573: OUTPUT«12» | ||
TimToady | yes, that's rwrong | ||
pugs: class A {has $.a is rw; method report { say $!a.perl }}; class B is A {has $.a is rw; }; my $x = B.new; $x.a = 12; $x.report | 19:54 | ||
p6eval | pugs: OUTPUT«\12» | ||
TimToady | that's also bogus | ||
moritz thinks that's good material for a test case | 19:55 | ||
TimToady | it's like, the whole *point* of $!a to be a separate location in each class that uses it | ||
when we say "private" we mean "private" | 19:56 | ||
sorear | TimToady: it will work after the nom merge! | ||
jnthn | It works in nom already :P | ||
Well, apart from lack of accessor generation... :) | |||
19:56
Vlavv_ joined
|
|||
TimToady speculatively wipes the sweatdrop from his brow | 19:56 | ||
jnthn | nqp gets it right also now ;) | ||
TimToady | nqp: class A {has $.a is rw; method report { say $!a.perl }}; class B is A {has $.a is rw; }; my $x = B.new; $x.a = 12; $x.report | 19:57 | |
p6eval | nqp: OUTPUT«Unable to parse blockoid, couldn't find final '}' at line 1current instr.: 'nqp;Regex;Cursor;FAILGOAL' pc 3863 (src/Regex/Cursor.pir:239)» | ||
sorear | despite my prior claims to the contrary | ||
moritz | TimToady: I don't think nqp has automatic accessors | ||
sorear | nqp: class A { has $!a; method report() { say($!a) } }; class B is A { has $!a; method set() { $!a := 12 } }; my $x := B.new; $x.set; $x.report; | 19:58 | |
p6eval | nqp: OUTPUT«» | ||
sorear | nqp also does not have list ops or assignment | ||
19:58
tadam joined
|
|||
TimToady | bbl # Aron's potential in-laws just showed up to meet the clan... | 20:00 | |
20:00
tadam left
|
|||
PhatEddy | Hmmm ... just a thought as to how I got the wrong idea about using build in the first place. The explanation in S12 under Construction and Initialization is very helpful but the example here perlcabal.org/syn/S12.html#Submethods seems confusing. No? | 20:01 | |
20:02
kjeldahl joined
|
|||
tadzik | what do you want to do? | 20:05 | |
20:05
ggoebel joined
|
|||
tadzik | I find myself using BUILD as Moose BUILD method, so giving it callsame; at the very beginning | 20:05 | |
20:06
jfried joined
|
|||
PhatEddy | I was trying to just get the URI module to have a constructor that takes a simple uri string parameter which I now understand I can do by overriding new - fine. | 20:07 | |
tadzik: did you look at the link - is it possible that it gives confusing implications about what build does? | 20:08 | ||
tadzik | PhatEddy: I think I read it, and I'm quite confused how BUILD works and why it works that way. I think it's meant to control the attribute initialization | ||
PhatEddy | thx | 20:09 | |
tadzik | personally, I use it as "I want to do something as soon as the object is created and everything is initialized" | ||
rakudo: class A { submethod BUILD { say "whoosh!" } }; A.new | 20:10 | ||
p6eval | rakudo 048573: OUTPUT«whoosh!» | ||
20:10
Moukeddar_ left
|
|||
pmichaud | I think "BUILD" (in Perl 6) is more along the lines of "this is how I want this class' attributes to be initialized." | 20:11 | |
20:11
wsppan joined
|
|||
sorear | What does an anonymous subset do? | 20:12 | |
20:12
wsppan left
20:14
whiteknight joined
|
|||
TimToady | the object is specifically *not* completely initialized when BUILD is called | 20:14 | |
and maybe not initialized after either | 20:15 | ||
since there could be subclasses that haven't run their BUILD yet | |||
sorear: returns an anonymous type object | |||
which you could presumably use on the right of a smartmatch | 20:17 | ||
tadzik: the object is only guaranteed initialized at the end of BUILDALL | 20:18 | ||
I think I mentioned this before... | 20:19 | ||
tadzik | yeah, I think so | ||
20:19
MayDaniel_ joined
|
|||
tadzik | which may prove the thing is quite confusing | 20:19 | |
sorear | Anonymous enums are specced to return an EnumMap rather than a type object. Does this extend to named enums? | 20:20 | |
What about the 'enum $foo <a b c>' syntax, is $foo bound to the EnumMap or the type object? | |||
PhatEddy | perl6: class A {has $!a is rw; submethod BUILD ($!a) {}}; my $x = A.new(12); | ||
p6eval | niecza v6-56-g84360d1: OUTPUT«===SORRY!===Unhandled parameter twigil ! at /tmp/Nk1fctALne line 1:------> s A {has $!a is rw; submethod BUILD ($!a⏏) {}}; my $x = A.new(12);Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setting line | ||
..469 (CORE di… | |||
..rakudo 048573: OUTPUT«Not enough positional parameters passed; got 1 but expected 2 in 'A::BUILD' at line 22:/tmp/haXGyGRcNl in main program body at line 22:/tmp/haXGyGRcNl» | |||
..pugs: OUTPUT«*** Must only use named arguments to new() constructor Be sure to use bareword keys. at /tmp/u1qKqiIkd6 line 1, column 55-69» | |||
PhatEddy | that's from another example in S12 | 20:21 | |
I think ... | |||
Did I misunderstand the example just above here: perlcabal.org/syn/S12.html#Mutating_methods | 20:23 | ||
masak | PhatEddy: I think BUILD parameters are supposed to be named. | 20:24 | |
TimToady | it will always be called with named args, not positional | ||
PhatEddy | I start to understand that but am wondering whether I understood the examples in the Synopsis | ||
TimToady | if anything translates positional to named, it'll be the new | 20:25 | |
PhatEddy | Are the synopsis examples off or do I not understand them, if I may so ask? | ||
TimToady | otoh it's relying on binding named args to positional params, which jnthn and masak indicated they'd like to get rid of | 20:26 | |
those examples are fine, but they're expecting to be called with named arguments | |||
20:26
MayDaniel_ left,
dorlamm joined
|
|||
TimToady | the positions of parameters in BUILD and the positions of args in (a position) new have nothing to do with each other | 20:27 | |
since .bless always takes named args, not positional | |||
and has to distribute them to multiple BUILDs | |||
dalek | p: 16638bd | pmichaud++ | Configure.pl: Fix typo in min-parrot-revision handling. |
||
TimToady | (via BUILDALL, which is also named-only) | ||
sorear: I don't have a strong opinion; we need to look at use cases for full type objects vs EnumMap objects | 20:28 | ||
20:28
Eevee joined
|
|||
dalek | ok: 76b1e78 | duff++ | src/regexes.pod: minor wording fix (daniel stojanov)++ |
20:28 | |
TimToady | I'm inclined to lean toward EnumMap, since it's defined | 20:29 | |
esp if a smartmatch will dwim | |||
sorear | would an anonymous enum still produce a new type? | ||
dalek | ok: c284546 | duff++ | src/regexes.pod: Merge pull request #55 from daniel-s/master typo in regexes.pod |
||
masak tries to find the blog post that chronicles the switch to the current style of enum declaration | |||
sorear | my $em = enum < a b c >; $em<a>.WHAT.say | 20:30 | |
o/ masak | |||
masak | \o | ||
strangelyconsistent.org/blog/i-can-haz-constant | |||
sorear | oh, you didn't just join | ||
masak | the use case then was 'has enum $.meth <foo bar>' | ||
TimToady | along with 'has constant $.pi = 3;' | 20:31 | |
masak | aye. | ||
the important thing with it being that the public accessor shares the enum between the class and its decendents. | |||
descendants* | 20:32 | ||
and I guess sharing the EnumMap would be enough for that. | 20:33 | ||
if we wanted to share the type, we'd have made a type declaration instead. | |||
20:34
kaare__ left
|
|||
TimToady | sorear: if you deref $em<a> you're typically just going to get an integer, I'd think | 20:34 | |
$em<a>:pair might return the Enum | |||
dalek | p: e8a1c1f | jonathan++ | src/6model/reprs/P6opaque. (2 files): Extend P6opaque so it knows how to vivify containers. Should perform rather better doing things this way than Rakudo does with master; no extra lookup cost to objects that don't need the feature (like in NQP). |
||
TimToady | and both of these are independent of the decision to install a as a subtype of the whole EnumMap | 20:35 | |
sorear | TimToady: well, with enum Foo <a b c>; Foo.enums<a>.WHAT eq 'Foo()' | ||
TimToady | as a separate symbol | ||
dalek | kudo/nom: bda8f95 | jnthn++ | src/Perl6/ (2 files): Get attributes working more. Assignment now works as well as binding. Does type checks. |
20:36 | |
TimToady | .<a> might return something different than bare a does | 20:37 | |
a means 'subset a of Foo where 0' or some such when used as a type | |||
but just 0 when used as a number | 20:38 | ||
sorear | I thought a was just a constant | ||
0 can be used as a type | |||
TimToady | as a subset type | ||
sorear | multi foo(0) { ... } | ||
so why couldn't a non-literal constant? | |||
TimToady | turns into foo(Int where 0) or some such | ||
sorear | not Any where 0? | 20:39 | |
TimToady | enums usually decide to be Int or Str | ||
jnthn | sorear: Certainly Int where 0 | ||
sorear: Otherwise multi sorting gets hosed. | |||
TimToady | someone probably needs to put together a matrix of ways to refer to an enum against what it means in various contexts... | 20:40 | |
pmichaud | someone++ | ||
seen someone | 20:41 | ||
aloha | Sorry, I haven't seen someone. | ||
pmichaud | alas. | ||
TimToady | I have copious free negative time... | ||
masak | sounds like something Merlin would have... | 20:44 | |
20:45
george_z0rwell left,
wamba left
20:47
wamba joined
|
|||
sorear | rakudo: subset Foo; | 20:48 | |
p6eval | rakudo 048573: ( no output ) | ||
sorear | rakudo: subset Foo; my Foo $x; say $x.perl; $x = $x | ||
p6eval | rakudo 048573: OUTPUT«Any» | ||
sorear | is it being interpreted as subset Foo of Any where True #OK ? | ||
is this correct? | 20:49 | ||
20:49
wamba left
|
|||
TimToady | probably | 20:50 | |
TimToady thinks about monkey patching subset types... | |||
20:52
Vlavv_ left
20:53
pjcj joined
21:00
kjeldahl left
21:01
dorlamm left
21:02
tomaw_ joined
|
|||
dalek | ast: 00f8c3c | moritz++ | S12-attributes/inheritance.t: attribute tests for virtual accessors vs. private storage |
21:04 | |
masak | \o/ moritz++ | ||
21:05
tomaw left
|
|||
masak | I imagine there's a corresponding RT ticket for that test. | 21:05 | |
jnthn | Yes. It's one of the oldest ones. | 21:06 | |
21:06
tomaw_ is now known as tomaw
|
|||
masak | I think this one is related: rt.perl.org/rt3/Ticket/Display.html?id=61500 | 21:08 | |
21:09
Vlavv joined
21:27
Psyche^ joined,
Psyche^ is now known as Patterner
21:29
Vlavv left
|
|||
masak | blog post! strangelyconsistent.org/blog/june-4-loops | 21:31 | |
21:42
Vlavv joined
|
|||
masak | tomorrow we'll write our first game. :) | 21:43 | |
(I practiced writing it out today just to check that all the prerequisites are in place.) :) | |||
21:46
Psyche^ joined
21:49
Patterner left,
Psyche^ is now known as Patterner
|
|||
dalek | kudo/nom: f0144c1 | jnthn++ | src/CORE.setting/operators.pm: Avoid a bunch of container creation for the primitive ops. |
21:58 | |
22:09
MayDaniel joined
22:11
pochi joined
|
|||
masak | 'night, #perl6. | 22:29 | |
22:30
jfried left
22:35
jfried joined
22:37
noganex joined
22:40
hanekomu left
22:59
jfried left
23:16
MayDaniel left
|
|||
sorear | \o/ I just figured out what anon constant means | 23:22 | |
TimToady | it means almost the exact same thing as BEGIN :) | 23:28 | |
23:32
rhr joined
|
|||
sorear | Where might I see an object of type 'Code'? | 23:37 | |
niecza: say constant $x = 2 + 2 | 23:38 | ||
p6eval | niecza v6-56-g84360d1: OUTPUT«4» | ||
sorear | std: constant Foo::Bar = 3 | 23:39 | |
p6eval | std 4b1b100: OUTPUT«===SORRY!===Malformed constant at /tmp/NxsEuspAa2 line 1:------> constant Foo:⏏:Bar = 3 expecting any of: coloncircumfix signatureParse failedFAILED 00:01 111m» | ||
sorear | std: constant $Foo::Bar = 3 | ||
p6eval | std 4b1b100: OUTPUT«ok 00:01 114m» | ||
sorear is annoyed by the proliferation of slightly different code fragments in niecza for converting $*SCOPE + longname/variable/identifier/etc into a resolved name | 23:41 | ||
23:53
daniel-s joined
23:56
Trashlord left
|