»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:07
jeffreykegler joined
|
|||
jeffreykegler | Tweet re Larry & craiglist: twitter.com/jzawodn/status/390609563113631744 | 00:13 | |
00:14
araujo left,
araujo joined,
Psyche^ left
|
|||
jeffreykegler | I | 00:14 | |
I am assuming it's true, and if so, congrats | 00:15 | ||
00:18
Psyche^ joined
|
|||
BenGoldberg | So I've got a silly question... I realize of course that the "proper" perl6 idiom for returning a numerically 0 value whose boolean truth-y-ness is True, is "return 0 but True". However, it seems to me that it will probably be faster and more memory efficient to simply " | 00:22 | |
to simply "return '0e0';" | |||
grondilu | r: say so 0e0 | 00:23 | |
camelia | rakudo e22ac2: OUTPUT«False» | ||
00:23
berekuk left
|
|||
BenGoldberg | r: say so '0e0' | 00:23 | |
camelia | rakudo e22ac2: OUTPUT«True» | ||
grondilu | oh | 00:24 | |
BenGoldberg | Quotes matter | ||
grondilu | well, that's a neet trick. Maybe the optimizer could turn 0 but True into '0e0' | ||
00:24
nebuchadnezzar joined
|
|||
grondilu | though it would not do the Boolean role. | 00:25 | |
r: say '0e0' ~~ Bool | |||
camelia | rakudo e22ac2: OUTPUT«False» | ||
grondilu | r: say (0 but True) ~~ Bool | ||
camelia | rakudo e22ac2: OUTPUT«False» | ||
grondilu | r: say '0e0' ~~ True | 00:26 | |
camelia | rakudo e22ac2: OUTPUT«Potential difficulties: Smartmatch against True always matches; if you mean to test the topic for truthiness, use :so or *.so or ?* instead at /tmp/hGrSAs45BG:1 ------> say '0e0' ~~⏏ True0e0True» | ||
grondilu | r: say (0 but True) ~~ True | ||
camelia | rakudo e22ac2: OUTPUT«Potential difficulties: Smartmatch against True always matches; if you mean to test the topic for truthiness, use :so or *.so or ?* instead at /tmp/c7apyxHS64:1 ------> say (0 but True) ~~⏏ True0True» | ||
synopsebot | Link: perlcabal.org/syn/S64.html#line_1 | ||
grondilu | ah nevermind | 00:27 | |
BenGoldberg | Well, ideally, the optimizer would create a singleton 0 but True object, and all places which do "return 0 but True" would really do "return $zerobuttrue.clone" or some such. | ||
r: say True ~~ Bool | 00:28 | ||
camelia | rakudo e22ac2: OUTPUT«True» | ||
BenGoldberg | r: say False ~~ Bool | 00:29 | |
camelia | rakudo e22ac2: OUTPUT«True» | ||
BenGoldberg | r: say (-1 but False) | ||
camelia | rakudo e22ac2: OUTPUT«-1» | ||
BenGoldberg | r: say (-1 but False) ~~ Bool; | ||
camelia | rakudo e22ac2: OUTPUT«False» | ||
grondilu | r: my $one = "one" but 1; say $one + 2; | 00:35 | |
camelia | rakudo e22ac2: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏one' (indicated by ⏏) in method Numeric at src/gen/CORE.setting:11892 in sub infix:<+> at src/gen/CORE.setting:3884 in sub infix:<+> at src/gen/CORE.setting…» | ||
grondilu | n: my $one = "one" but 1; say $one + 2; | ||
camelia | niecza v24-98-g473bd20: OUTPUT«Unhandled exception: Cannot parse number: one at /home/p6eval/niecza/lib/CORE.setting line 1536 (die @ 5)  at /home/p6eval/niecza/lib/CORE.setting line 3745 (ANON @ 10)  at /home/p6eval/niecza/lib/CORE.setting line 3747 (NumSyntax.str2num @…» | ||
grondilu thought this would work | 00:36 | ||
diakopter | :} | ||
00:38
jeffreykegler left
|
|||
[Coke] | nqp: say(nqp::what(nqp::rand_n(100.2))) | 00:39 | |
camelia | nqp: OUTPUT«error:imcc:syntax error, unexpected NREG, expecting '(' ('$N5001') in file '(file unknown)' line 60382055» | ||
grondilu | r: say 1 but "one" | 00:40 | |
camelia | rakudo e22ac2: OUTPUT«one» | ||
grondilu | r: say 2 + (1 but "one") | ||
camelia | rakudo e22ac2: OUTPUT«3» | ||
grondilu | r: say 2 + ("one" but 1) | ||
[Coke] | nqp-jvm: say(nqp::what(nqp::rand_n(100.2))) | ||
camelia | rakudo e22ac2: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏one' (indicated by ⏏) in method Numeric at src/gen/CORE.setting:11892 in sub infix:<+> at src/gen/CORE.setting:3884 in sub infix:<+> at src/gen/CORE.setting…» | ||
nqp-jvm: OUTPUT«» | |||
[Coke] | nqp-jvm: say(nqp::rand_n(100.2)) | ||
camelia | nqp-jvm: OUTPUT«22.108048225152885» | ||
[Coke] | nqp-m: say(nqp::rand_i(123124)) | 00:41 | |
camelia | nqp-moarvm: OUTPUT«7502744162270190791» | ||
[Coke] | O_o | ||
is that a bug? | |||
nqp-m: say(nqp::rand_n(12.3124)) | 00:42 | ||
camelia | nqp-moarvm: OUTPUT«0.406725» | ||
[Coke] | nqp-m: say(nqp::rand_n(12.3124)) | ||
camelia | nqp-moarvm: OUTPUT«0.406725» | ||
[Coke] | nqp-m: say(nqp::rand_n(12.3124)) | ||
camelia | nqp-moarvm: OUTPUT«0.406725» | ||
[Coke] | O_o | ||
nqp-m: nqp::srand();say(nqp::rand_n(12.3124)) | |||
camelia | nqp-moarvm: OUTPUT«No registered operation handler for 'srand'compile_op» | ||
[Coke] | nqp-m: nqp::seed();say(nqp::rand_n(12.3124)) | ||
camelia | nqp-moarvm: OUTPUT«Arg count 0 doesn't equal required operand count 1 for op 'seed'compile_mastop» | ||
[Coke] | nqp-m: nqp::seed(124);say(nqp::rand_n(12.3124)) | ||
camelia | nqp-moarvm: OUTPUT«0.249771» | ||
[Coke] | nqp-m: nqp::seed(124);say(nqp::rand_n(12.3124)) | 00:43 | |
camelia | nqp-moarvm: OUTPUT«0.249771» | ||
[Coke] | nqp-m: nqp::seed(4);say(nqp::rand_n(12.3124)) | ||
camelia | nqp-moarvm: OUTPUT«0.161399» | ||
[Coke] forgets the low level bit. :P | |||
anyway, we have 3 different backends each with 3 different sets of rand*. | |||
Mouq | nqp-m: for (0,1,2,3,4,5) { say(nqp::rand_n(12.3124)) } | 00:47 | |
camelia | nqp-moarvm: OUTPUT«Rebuild in progress» | ||
Mouq | .oO( I need to make errors and program output output from camelia differently sometime, but that requires serious code refactoring) |
00:48 | |
nqp-m: for (0,1,2,3,4,5) { say(nqp::rand_n(12.3124)) } | 00:49 | ||
camelia | nqp-moarvm: OUTPUT«0.4067250.8782740.9474170.2077220.035780.900015» | ||
Mouq | nqp: say(nqp::rand_n(12.3124)) | 00:50 | |
camelia | nqp: OUTPUT«error:imcc:syntax error, unexpected NREG, expecting '(' ('$N5001') in file '(file unknown)' line 43759623» | ||
Mouq | ...huh? | 00:51 | |
TimToady | yes, I am now officially at craigslist as Artist in Residence, which is all true, except for the "residence" part, and maybe the "artist" part :) | 01:16 | |
01:17
dayangkun left
|
|||
TimToady | I guess I'm just "in", except that doesn't seem too true either... | 01:17 | |
01:19
dayangkun joined
01:20
pdurbin joined
|
|||
[Coke] | TimToady++ | 01:20 | |
I hope it's a great situation for you. | 01:21 | ||
TimToady | they have real good health insurance :) | 01:27 | |
and so far they seem like a great bunch of folks | |||
01:28
jnap left
|
|||
TimToady | the sort of folk who just like to quietly do good in the world :) | 01:29 | |
pdurbin | TimToady: the best kind. and nice that they mentioned perl6 right in the tweet. congrats! | 01:30 | |
TimToady | yes, they are intentionally supporting what I am already doing :D | 01:31 | |
pdurbin | a nice hack | ||
TimToady | and put it very plainly that I was not allowed to feel like I was mooching :) | 01:32 | |
pdurbin | TimToady: after all you've done... mooch a little :) | ||
TimToady | I do expect I can help them too, but for now I'm just hanging out on the internal channels too see if there's anything I can give advice on | 01:33 | |
also "we're hiring" :) | 01:34 | ||
pdurbin | :) | ||
TimToady | but they're also really excited by the potential of Perl 6 to help them down the road | 01:36 | |
diakopter | o_O | 01:38 | |
Mouq | Congratulations TimToady! | 01:39 | |
pdurbin | TimToady: anything in particular they're especially excited about? | 01:40 | |
TimToady | potential efficiency, concurrency, internationalization | 01:41 | |
pdurbin | gotcha | 01:42 | |
TimToady | as with most people in this line of work, they'd like to get more done with less electricity :) | ||
pdurbin | oh sure. green computing | 01:43 | |
japhb__ | Congrats TimToady! | ||
[Coke] checks out the job postings. | 01:44 | ||
pdurbin | I was listening to mostlyerlang.com/2013/10/07/019-eli...ose-valim/ today and twitter.com/joeerl was talking about elixir-lang.org , saying something to the effect that Elixir is the first language he knows of that's designed with so much input from so many people on the Internet... very different than when he designed Erlang in relative isolation. But of course, I was thinking, | 01:48 | |
"What about perl6.org/archive/rfc/ ?" | |||
01:56
colomon left
01:57
colomon joined
|
|||
colomon | TimToady++ | 02:01 | |
02:40
grondilu left
02:53
sniz joined
|
|||
Mouq | rnp: sub foo (**@slice) { say +@slice }; foo; foo(); | 02:55 | |
camelia | pugs: OUTPUT«***  Unexpected "*@" expecting formal parameter at /tmp/MZifywwrna line 1, column 11» | ||
..niecza v24-98-g473bd20: OUTPUT«===SORRY!===Slice parameters NYI at /tmp/q5sm00iBec line 1:------> sub foo (**@slice⏏) { say +@slice }; foo; foo();Unhandled exception: Check failed at /home/p6eval/niecza/boot/lib/CORE.setti…» | |||
..rakudo e22ac2: OUTPUT«00» | |||
02:57
jeffreykegler joined
|
|||
Mouq | r: sub foo (**@slice) { say +@slice }; foo; foo(); foo('a',('b','c')) | 02:57 | |
camelia | rakudo e22ac2: OUTPUT«002» | ||
03:03
mattp_ left
03:09
xinming left
03:11
xinming joined,
xenoterracide joined
03:15
jeffreykegler left
03:20
mattp_ joined
03:43
preflex left
03:45
Myk267 joined
03:46
preflex joined,
ChanServ sets mode: +v preflex,
xenoterracide left
03:48
mattp_ left
03:50
mattp_ joined
03:56
uvtc joined
|
|||
uvtc | Hi, #perl6. I've seen the term "fakecutable" (fake executable) in the logs here and in #moarvm. What is a fakecutable? | 03:57 | |
Also, congratulations on the work news, TimToady. Sounds like a nice company. | 03:58 | ||
Well, contratulations to them as well, actually. :) | 04:02 | ||
BenGoldberg | A fake executable is a script pretending to be an executable :) For example, a program named 'rakudo' which you can use to run perl6 programs, but which is actually an sh script instead of an executable binary program | 04:04 | |
04:07
xinming_ joined
04:08
jeffreykegler joined
|
|||
uvtc | Oh. Thanks, Ben. Yes. Like when you expect the program to be a binary, but it turns out to be a script which delegates to the binary --- or is a symlink to it. | 04:09 | |
04:10
xinming left
|
|||
uvtc | So, eventually, there should be a `perl6` fakecuteable which delegates to rakudo, or moar, or whichever Perl 6 impl you've selected/installed. Reminds me of the Debian alternatives system. | 04:12 | |
jeffreykegler | TimToady: a very classy and assertive move by craiglist. As I understand it, your ability to devote full-time to Perl 6 will be a change, right? | 04:13 | |
uvtc | r/installed/installed, I'm guessing/ | 04:15 | |
TimToady | well, getting paid for it will be :) | 04:16 | |
jeffreykegler | Again, congratulations on this much deserved piece of good fortune | 04:18 | |
uvtc | Oh, little appearance of Perl 6 in a reply to <news.ycombinator.com/item?id=6559177>. | 04:19 | |
04:22
sniz left
04:27
[Sno] left
04:37
PZt left
|
|||
diakopter | uvtc: actually we use fakecuteable to mean an executable compiled from generated C that is a wrapper to launch the VM with your sript precompiled as bytecode or something | 04:40 | |
uvtc | diakopter, Ah, that's a mouthful. :) Now I remember where I first heard that term. Back when Rakudo on Parrot was just coming on line, or, well, when a perl6 executable was finally becoming available. | 04:43 | |
diakopter, Thanks for the clarification. | 04:45 | ||
diakopter | uvtc: mouthful is my middle name | 04:46 | |
uvtc | :) | ||
04:48
BenGoldberg left
04:51
uvtc left
04:52
fgomez joined,
fgomez left
|
|||
lue | .oO(diamouthfulkopter?) |
04:58 | |
05:12
jeffreykegler left
05:13
dwarring joined,
genehack joined
|
|||
dwarring | r: say False but True | 05:13 | |
camelia | rakudo e22ac2: OUTPUT«True» | ||
dwarring | ;) | 05:14 | |
05:28
rindolf joined
|
|||
diakopter | r: say True but False | 05:36 | |
camelia | rakudo e22ac2: OUTPUT«False» | ||
diakopter | r: say False but False | ||
camelia | rakudo e22ac2: OUTPUT«False» | ||
diakopter | r: say False but False but False but False but False | 05:37 | |
camelia | rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/MpBa8Rm41kOperators 'but' and 'but' are non-associative and require parenthesisat /tmp/MpBa8Rm41k:1------> say False but False ⏏but False but False but False expecting…» | ||
lue | r: say False but "FILE_NOT_FOUND" | ||
camelia | rakudo e22ac2: OUTPUT«False» | ||
diakopter | r: say False but die | ||
camelia | rakudo e22ac2: OUTPUT« in block at /tmp/rx2k5yAdpK:1» | ||
diakopter | r: say False but ... | ||
camelia | rakudo e22ac2: OUTPUT«Stub code executedcurrent instr.: 'throw' pc 402455 (src/gen/CORE.setting.pir:169079) (src/gen/CORE.setting:10512)called from Sub 'sink' pc 438520 (src/gen/CORE.setting.pir:182308) (src/gen/CORE.setting:11902)called from Sub 'MAIN' pc 399 (src/gen/perl…» | ||
05:39
rindolf left
|
|||
diakopter | r: say False but but | 05:39 | |
camelia | rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/K0JB24qy5ZUndeclared routine: but used at line 1» | ||
05:39
rindolf joined
|
|||
dwarring | heh | 05:42 | |
JimmyZ | r: say False but Pi | ||
camelia | rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/e7AiPvaQ2tUndeclared name: Pi used at line 1» | ||
dwarring | r: say False but True but False | 05:43 | |
camelia | rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/uEl3fsPFoaOperators 'but' and 'but' are non-associative and require parenthesisat /tmp/uEl3fsPFoa:1------> say False but True ⏏but False expecting any of: po…» | ||
dwarring | nah | ||
r: say ((False but True) but False) but True | 05:44 | ||
camelia | rakudo e22ac2: OUTPUT«True» | ||
05:47
[Sno] joined
05:48
DarthGandalf left
05:49
rindolf left
06:05
Myk267 left
06:09
PZt joined
06:13
raiph joined
06:23
raiph left
|
|||
dwarring | r: say True does False but True | 06:29 | |
camelia | rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/8sNBfloiX8Operators 'does' and 'but' are non-associative and require parenthesisat /tmp/8sNBfloiX8:1------> say True does False ⏏but True expecting any of: p…» | ||
06:29
SamuraiJack_ joined
06:37
FROGGS joined
|
|||
masak | TimToady++ # craigslist | 06:59 | |
craigslist++ # TimToady | |||
JimmyZ | What does this mean? I can't follow it ... | 07:01 | |
07:06
dayangkun_ joined
|
|||
masak | JimmyZ: irclog.perlgeek.de/perl6/2013-10-17#i_7723695 | 07:08 | |
JimmyZ | Yeah, I saw it. But I still don't what it is | 07:10 | |
07:10
dayangkun left
|
|||
JimmyZ | don't know | 07:10 | |
masak | JimmyZ: craigslist? it's a very early c2c site. | ||
powered by Perl. | |||
JimmyZ | oh, I never heard about it | 07:12 | |
nwc10 | JimmyZ: news.perlfoundation.org/2012/01/cra...d-don.html | 07:18 | |
masak | craigslist++ | ||
nwc10 | that is pleasing news | ||
masak | ss/craigslist has become <(uquibuitous)> with/synonymous/ # :) | 07:19 | |
JimmyZ | craigslist++ | 07:20 | |
07:43
woolfy left,
salv0 left
|
|||
lizmat | craigslist++ indeed # TimToady | 07:44 | |
07:44
salv0 joined
|
|||
lizmat continues with decommute& | 07:44 | ||
07:44
lizmat left
07:48
darutoko joined
|
|||
masak .oO( $decommute.resume ) | 07:51 | ||
08:01
iSlug joined
08:05
berekuk joined
08:07
berekuk left
08:08
daxim joined
|
|||
mathw | I think I might know too many cool programming languages | 08:09 | |
FROGGS | mathw: write slangs for all of them and then you just can mix them properly :o) | 08:16 | |
08:17
sqirrel joined
08:26
dakkar joined
08:31
dmol joined
09:03
aindilis` joined
09:04
aindilis left
|
|||
moritz | so, today is rakudo release day, right? | 09:10 | |
++[Coke] | |||
09:14
darutoko left
09:16
hlin_ joined
09:17
hlin_ left,
hlin_ joined,
hlin_ left
|
|||
mathw | FROGGS: ultimately, that'd be really cool :) | 09:18 | |
09:18
darutoko joined
09:20
hypolin left
09:22
cognominal left
09:32
dansamo joined,
cognominal joined
|
|||
masak | ooh, release day. | 09:33 | |
now with more Moar! | |||
hm, at least for the NQP release. | |||
mathw | yes, Rakudo on Moar isn't there yet AIUI | 09:37 | |
very exciting though | |||
moritz | IMHO it would be nice to git-tag moar for the nqp release | 09:38 | |
FROGGS | doit | 09:39 | |
09:39
pernatiy left
|
|||
FROGGS | we are unable to checkout that version though | 09:39 | |
or does --gen-moar handle that? | |||
moritz | is there a --gen-moar? | 09:41 | |
FROGGS | I thought there is | 09:43 | |
(and I thought you added it fwiw) | |||
sad, there is no such option :/ | 09:44 | ||
moritz | FROGGS: no, I just added --install to moar's Configure.pl | 09:48 | |
FROGGS: I meant to do --gen-moar, but so far haven't got around to it | 09:49 | ||
FROGGS | well, I think we won't really need it until rakudo has landed on moar too | ||
09:49
cognominal left
09:55
fhelmberger joined
09:56
nwc10 left,
nwc10 joined
09:57
nwc10 left,
nwc10 joined
|
|||
dalek | p/unified-build: d9060a7 | moritz++ | / (3 files): create a ./nqp launcher |
09:58 | |
p/unified-build: 4bcb5a1 | moritz++ | tools/build/Makefile-Parrot.in: build NQP launcher by default; use it in test runs |
|||
moritz | and with that, the unified-build branch of nqp is testable again | ||
10:01
woosley left
|
|||
moritz | meh, nqp install is broken in that branch :/ | 10:05 | |
masak | \o/ /o\ | 10:06 | |
moritz | oh, probably just a stupid thinko on my part, and easy to fix | ||
moritz tries to be optimistic | |||
dalek | rlito: 1bbe89c | (Flavio S. Glock)++ | / (4 files): Perlito5 - perl6 - refactor_range_operator |
10:12 | |
rlito: f7a7e8f | (Flavio S. Glock)++ | / (3 files): Perlito5 - perl6 - refactor_range_operator - use .keys |
|||
10:17
iSlug left
10:31
avuserow left
|
|||
dalek | p/unified-build: 5dcc094 | moritz++ | tools/build/Makefile-Parrot.in: fix installation also split up "install" in "base-install" and "exec-install". The former installs the binary as nqp-p, the latter as nqp as well |
10:38 | |
moritz | ok, rakudo build on top of nqp/unified-build succeeded | 10:41 | |
now it just needs a .bat launcher on windows | 10:43 | ||
10:44
avuserow joined
10:47
pdurbin left
|
|||
dalek | Heuristic branch merge: pushed 102 commits to Perlito/replito by creaktive | 10:49 | |
11:05
berekuk joined
11:10
berekuk left
11:19
berekuk joined
11:32
grondilu joined
|
|||
[Coke] thanks moritz++ for reminding him about the release. | 11:56 | ||
[Coke] warns folks that it will be late in the day here before it happens. | 11:57 | ||
[Coke] has not scheduled his day well around the release. :) | |||
but I am happy to do it. | 11:58 | ||
[Coke] scurries away to dayjob. | |||
12:08
cognominal joined
12:09
cognominal left,
cognominal joined
12:18
berekuk left
|
|||
c1sung | d | 12:27 | |
12:28
ggoebel7 joined,
fglock joined
12:30
ggoebel6 left
|
|||
fglock | p56: 0..$#x, 0..$#$x, 0..$#{func()} | 12:31 | |
camelia | p5-to-p6 : OUTPUT«@x.keys(), $x.keys(), func().keys()» | ||
12:31
berekuk joined
12:36
SamuraiJack_ left,
SamuraiJack joined
12:39
colomon left
12:40
avuserow left
12:43
pernatiy joined
12:44
PacoAir joined
|
|||
TimToady | those parens are never necessary, btw | 12:45 | |
12:47
colomon joined
12:53
avuserow joined
|
|||
TimToady | fglock: because argumentless methods are indistinguishable from attribute accessors, to Perl 6, and accessors are treated more like nouns than like verbs, so the () is really kinda non-idiomatic | 12:55 | |
12:59
colomon left
13:00
colomon joined
|
|||
grondilu | p5eval: my @x = 1 .. 3; print join ' ', 0 .. $#x | 13:02 | |
p5eval | grondilu: 0 1 21 | ||
grondilu | p5eval: my @x = 1 .. 3; join ' ', 0 .. $#x | ||
p5eval | grondilu: 0 1 2 | ||
grondilu | r: my @x = 1 .. 3; print @x.keys | ||
camelia | rakudo e22ac2: OUTPUT«012» | ||
grondilu thought $#x was the number of elements | 13:03 | ||
FROGGS | no, highest index | 13:05 | |
scalar @x is the element count | |||
grondilu | yeah, makes sense | ||
masak | I once read a blog post where someone had found some Perl teaching material that pointed out that $#x returns @x-1 and then went on to say "this is a bug in Perl and will be fixed in the next version" o.O | 13:06 | |
13:07
dwarring left
|
|||
grondilu | p56: 1..$#x | 13:08 | |
camelia | p5-to-p6 : OUTPUT«1 .. @x.end» | ||
grondilu | p56: 0..* # just curious | 13:09 | |
camelia | p5-to-p6 : OUTPUT«missing value after operator '..' at perlito5.pl line 1385.» | ||
grondilu | oops, wrong sense | ||
p65: # testing | 13:10 | ||
masak | p56: my $x = "HAI"; "OH ${x}" | 13:11 | |
camelia | p5-to-p6 : OUTPUT«my $x = 'HAI';'OH ' ~ $x» | ||
masak | nice. | ||
Util | r: my ($x, $y, $dx, $dy) = 15, 25, 1, 10; ($x, $y) = ($x + $dx, $y + $dy); say [$x, $y]; | ||
camelia | rakudo e22ac2: OUTPUT«16 35» | ||
Util | r: my ($x, $y, $dx, $dy) = 15, 25, 1, 10; ($x, $y) Z+= ($dx, $dy); say [$x, $y]; | ||
camelia | rakudo e22ac2: OUTPUT«15 25» | ||
Util | Is this just due to op+= being NYI? | 13:12 | |
masak | r: my ($x, $y, $dx, $dy) = 15, 25, 1, 10; ($x, $y) Z[+=] ($dx, $dy); say [$x, $y]; | ||
camelia | rakudo e22ac2: OUTPUT«15 25» | ||
masak | r: my ($x, $y, $dx, $dy) = 15, 25, 1, 10; ($x, $y) [Z+]= ($dx, $dy); say [$x, $y]; | ||
camelia | rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/Z6OMDgPnr0Preceding context expects a term, but found infix = insteadat /tmp/Z6OMDgPnr0:1------> dx, $dy) = 15, 25, 1, 10; ($x, $y) [Z+]=⏏ ($dx, $dy); say [$x, $y];» | ||
masak | Util: no, I don't know what's going on there. | 13:13 | |
Util: looks like a bug to me. | |||
Util | masak: thanks! | 13:16 | |
masak | (it also looks a little familiar, so it might be submut already) | 13:17 | |
Util | masak: I will check before submitting the bug. It looks familiar to me, too. | 13:19 | |
moritz | it's something to do with the Z metaop losing the container somewhere, iirc | 13:20 | |
or producing a new container | |||
FROGGS | masak: you are a git pro: how can I step back one single commit? like checking out one commit before the one I am on? | ||
moritz | git checkout HEAD^ | 13:21 | |
or if you want to revert your branch to it, git reset --hard HEAD^ # loses the newest commit, and potentially uncommitted changes | |||
masak | what moritz said. | ||
I have the latter alternative aliased as 'git undo' here :) | |||
moritz | in #git I would have answered with !revert, which lists that and a few other options | 13:22 | |
(like git revert) | |||
FROGGS | ahh, cool | ||
moritz: thanks! | |||
masak | also, the 'loses' is a truth with modification: when you have 'git reflog', nothing is really lost for a month or so. | ||
moritz | right, only the uncommitted changes are actually lost | ||
timotimo | except unstaged changes | ||
masak | right. | 13:23 | |
timotimo | the uncommitted changes are not lost, if they are staged. but they are really hard to find :P | ||
masak | if you 'reset --hard', don't come to me afterwards and whine about uncommitted changes :P | ||
timotimo: troo | |||
timotimo: but then we are definitely not in the porcelain anymore, Dorothy. | |||
masak .oO( timototo ) | 13:24 | ||
moritz | timotimo: so how does one recover formerly-staged diffs? | ||
timotimo | if you remember the contents, you can grep your object storage :P | ||
masak | moritz: they will be a tree object somewhere in the object db. | ||
timotimo | i don't think there will actually be a tree | 13:25 | |
masak | there will. | ||
the staging area is a tree. | |||
timotimo | since the staged changes are usually just in the index file, no? | ||
masak | hm. | ||
timotimo | oh, that also goes into the object db? | ||
masak | suddenly I'm not sure. | ||
grondilu | p5eval: my $foo = "bar"; sub f { "foo" }; "${f()}";' | ||
p5eval | grondilu: ERROR: Can't find string terminator "'" anywhere before EOF at (eval 7) line 1. | ||
moritz | p5eval: my $foo = "bar"; sub f { "foo" }; "${\f()}";' | 13:26 | |
grondilu | p5eval: my $foo = "bar"; sub f { "foo" }; "${f()}"; | ||
p5eval | moritz: ERROR: Can't find string terminator "'" anywhere before EOF at (eval 7) line 1. | ||
grondilu: No output | |||
timotimo | masak: i'll set up a little experiment and tell you the result | ||
moritz | p5eval: my $foo = "bar"; sub f { "foo" }; "${\f()}"; | ||
p5eval | moritz: foo | ||
masak | timotimo: ah, it's not a tree until something does 'git-write-tree' on the staging area... | ||
timotimo: (which generally happens during commit) | |||
grondilu | p56: my $foo = "bar"; sub f { "foo" }; "${\f()}"; | ||
camelia | p5-to-p6 : OUTPUT«my $foo = 'bar';our sub f (*@_) { 'foo'}$(\f())» | ||
FROGGS | what discussion have I started /o\ | 13:27 | |
grondilu | r: my $foo = 'bar'; sub f { "foo" }; $(\f()) | ||
camelia | ( no output ) | ||
masak | p56: my $x = 2; { my $x = $x } | ||
camelia | p5-to-p6 : OUTPUT«my $x = 2;{ my $x = $x}» | ||
grondilu | r: my $foo = 'bar'; sub f { "foo" }; say $(\f()) | ||
masak | ^^^ wrong | ||
camelia | rakudo e22ac2: OUTPUT«foo» | ||
moritz | r: my $foo = 'bar';our sub f (*@_) { 'foo' }; say $(\f()) | ||
camelia | rakudo e22ac2: OUTPUT«foo» | ||
moritz | FROGGS: a fun discussion | 13:28 | |
timotimo | oh, git stores all objects non-plain? what do they do to the contents? | ||
grondilu forgot how to do indirections in P5 :/ | |||
FROGGS | ahh, good *phew* | ||
timotimo | i thought a blob object was just the word "blob", a length and then the content or something? | ||
moritz | timotimo: gzip, iirc | 13:29 | |
timotimo | ah, i should be able to zgrep, right? | ||
zgrep doesn't do -r?! :-( | |||
moritz | thread.gmane.org/gmane.comp.version...git/236238 if you are interested in some pack object details :-) | ||
masak | timotimo: they are all gzipped, yes. | ||
timotimo | no, not pack files please :P | 13:30 | |
masak | right, pack files are the next step. | ||
things are zipped already in the .git/objects stage. | |||
13:30
jnap joined
|
|||
timotimo | moritz: there's a german talk with a recording somewhere, that uses a tool that displays the whole object db as a graph next to a console and then does some operations completely without porcelain *or* plumbing, just writing the files directly | 13:30 | |
masak | hard-core. | 13:31 | |
timotimo | surprisingly unhard actually :) | ||
masak | timotimo: if you want to see something nice, check out e83c516 of git.git | 13:32 | |
timotimo: a *very* small git. | |||
(it's the first git commit) | |||
timotimo | the first git commit of git itself? cool :) | ||
masak | yep. | ||
~1300 lines of C code. | 13:33 | ||
moritz | and linus only committed it once he was able to commit it with git, of course :-) | ||
13:34
skids joined
13:35
sorear left,
kaare_ joined
|
|||
masak | of course. | 13:35 | |
but those were purely plumbing commands. | |||
13:35
lowpor03 joined
|
|||
FROGGS | moritz: the main-usage-with-j4-bug seems to be introduced by github.com/rakudo/rakudo/commit/9e...237cc4b943 | 13:36 | |
moritz: but reverting it doesnt make it go away :o( | |||
moritz | FROGGS: doesn't seem likely to me that that's actually the problem | 13:37 | |
FROGGS | but the commit before works... which is github.com/rakudo/rakudo/commit/cd...4bb66a6857 | 13:38 | |
jnthn | timotimo: If you want to see the contents of a blob, git cat-file -p beefcafe | 13:39 | |
moritz | FROGGS: IMHO it's more likely that that's a glitch in the bisect | ||
FROGGS | moritz: that is why I re-ran these manually | 13:40 | |
timotimo | jnthn: i want to grep all my objects to see if one of them has staged-but-not-committed trees | ||
jnthn | git fsck --lost-found # may find them | ||
FROGGS | ohh damn | 13:41 | |
moritz: false alarm, my windows vm got killed, so the last pass might be a false positive | |||
jnthn | Then look at the ones in .git/lost-found/other | 13:42 | |
they aren't gzip'd under there iirc so you can grep 'em more easily | |||
13:43
lowpro30_ joined
|
|||
jnthn | You may also be able to use git grep, if you can find a way to feed it all the trees... | 13:43 | |
masak | ooh, .git/lost-found | ||
jnthn | ...oh, but you said you didn't have a tree... | 13:44 | |
bbiab | |||
grondilu | p56: our $foo = "bar"; ${"foo"} | 13:46 | |
camelia | p5-to-p6 : OUTPUT«our $foo = 'bar';$('foo')» | ||
grondilu | p5eval: our $foo = "bar"; ${"foo"} | ||
p5eval | grondilu: bar | ||
fglock | TimToady: re non-idiomatic - thanks, fixing | ||
grondilu | r: our $foo = "bar"; say $('foo') | ||
13:46
lowpor03 left
|
|||
camelia | rakudo e22ac2: OUTPUT«foo» | 13:46 | |
masak | grondilu: $() just itemizes a thing. | 13:47 | |
r: my $foo = 'bar'; say $::"foo" | |||
camelia | rakudo e22ac2: OUTPUT«===SORRY!===ResizablePMCArray: index out of bounds!» | ||
masak | o.O | ||
r: my $foo = 'bar'; say ::'$foo' | 13:48 | ||
FROGGS | r: our $foo = "bar"; say $::('foo') | ||
camelia | rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/E_9tOhWPDDTwo terms in a rowat /tmp/E_9tOhWPDD:1------> my $foo = 'bar'; say ::⏏'$foo' expecting any of: postfix infix stopper infix or m…» | ||
rakudo e22ac2: OUTPUT«bar» | |||
FROGGS | r: our $foo = "bar"; say ::('$foo') | ||
camelia | rakudo e22ac2: OUTPUT«bar» | ||
masak submits rakudobug | |||
TimToady | under strict refs, p56 can assume it's getting a hard ref to ${}, but under no strict it can't really know whether it's getting a string or a ref | 13:51 | |
so we probably need to throw a disambiguating call in there that hardens a soft ref | 13:52 | ||
13:53
lowpro30__ joined
|
|||
diakopter | o_O | 13:55 | |
TimToady | diakopter: that's why we changed it in p6 :) | ||
symbolic deref is always a different syntax in P6 from normal deref | 13:56 | ||
13:57
lowpro30_ left
|
|||
hoelzro | [Coke]++ # docs | 13:57 | |
diakopter | o_O at awakeness | ||
TimToady | oh, had to take Tertia et al. to the airport | 13:58 | |
diakopter | masak: did you see the rj: constant a = a in the backlog | ||
13:58
sorear joined
|
|||
diakopter | sorear: howdy :) | 13:59 | |
13:59
lowpro30_ joined
|
|||
colomon | sorear! \o/ | 13:59 | |
FROGGS | hi sorear! | ||
diakopter | rj: constant a = a | ||
camelia | rakudo-jvm e22ac2: OUTPUT«===SORRY!===java.lang.NullPointerException» | ||
TimToady | so what's gonna be the abbrev for the js backend? s? e? | 14:00 | |
masak | diakopter: does... does that go in the RT perl6 queue? guess it does. | 14:01 | |
masak submits rakudobug | |||
FROGGS | TimToady: not that we have no chars (graphemes?) left some day for new backends O.o | 14:02 | |
14:03
lowpro30__ left
|
|||
masak | TimToady: abbreviation for the JS backend: 'rq' | 14:03 | |
TimToady ponders what the abbrev for the APL backend will be | |||
why q? | |||
masak | TimToady: 'Q' is the traditional one-char abbreviation for JavaScript. | ||
cf 'QUnit'. | |||
'JUnit' was taken by Java. | |||
hoelzro | has anyone writen a unit testing framework named Punitive? | 14:04 | |
14:04
bluescreen10 joined
|
|||
hoelzro | if not, I claim it for Perl 6. | 14:04 | |
diakopter | hoelzro: how about Compensatory | 14:05 | |
masak | sorear! \o/ | ||
sorear: I'm trying to grok sheaves and the Yoneda lemma. my brain hurts. | |||
hoelzro | diakopter: I don't get it =/ | 14:06 | |
diakopter | en.wikipedia.org/wiki/Punitive_damages | ||
hoelzro | ah =P | 14:07 | |
moritz | if I create an nqp.bat, do I invoke it as ./nqp or as ./nqp.bat (on windows)? | 14:09 | |
masak | so, compensatory damages is for the sake of the plaintiff, and punitive damages are to deter the defendant from relapsing? | ||
moritz: either. | |||
TimToady | well, or to deter anyone else from trying the same thing... | ||
masak | right. | ||
moritz | masak: takk | ||
diakopter | erm | 14:10 | |
neither | |||
masak | moritz: and the idiomatic is backslash (\) not forward slash (/) | ||
moritz: but I believe forward slash works too. | |||
moritz: also, I think that (effectively) '.' is in $PATH on Windows. | |||
diakopter | ./ doesn't work | ||
masak | ok. | ||
so it's 'nqp' or 'nqp.bat' | 14:11 | ||
moritz | :( | ||
TimToady | is that punitive or compensatory? | ||
diakopter | OTOH | 14:12 | |
"./e.bat" does work :D | 14:13 | ||
moritz | \o/ | ||
diakopter: does ./e work too? | |||
masak | waitwait | ||
diakopter: if "./e.bat" *does* work, what was it that *didn't* work? | 14:14 | ||
TimToady bats his eyelashes | |||
diakopter | C:\Users\mwilson\bin>"./e.bat" foo | ||
C:\Users\mwilson\bin>./e foo | |||
'.' is not recognized as an internal or external command, | |||
operable program or batch file. | |||
(there is an e.bat in that dir) | 14:15 | ||
it does the same thing as jnthn's e.bat -- @"c:\Program Files (x86)\Notepad++\Notepad++.exe" "%1" "%2" "%3" "%4" "%5" "%6" "%7" | 14:16 | ||
TimToady | Twinkle, twinkle, little bat! How I wonder what you're at! | ||
moritz | is that leading @ important? | ||
diakopter | suppresses echo | ||
FROGGS | array context | ||
:P | 14:17 | ||
masak | oh, the quotes were part of the command. I see. | 14:18 | |
FROGGS | diakopter: does "./e.bat" will look up the file in . only or in PATH too? | ||
diakopter | i'll try it | 14:19 | |
TimToady | Up above the world so high / Like a tea tray in the sky! | 14:20 | |
diakopter | FROGGS: nope | ||
. only | |||
FROGGS | cool | ||
diakopter tries with .. | |||
yeah, .. does the right thing | 14:21 | ||
14:24
spider-mario joined
|
|||
dalek | p/unified-build: 1c31dff | moritz++ | / (3 files): try to generate nqp.bat launcher for windows |
14:28 | |
moritz | anyone want to test that commit on windows? | ||
I have windows now, but haven't set up the toolchain so far | |||
14:32
bluescreen10 left,
bluescreen10 joined
|
|||
masak | today's autopun spotting: twitter.com/peterseibel/status/390...2129013761 | 14:35 | |
jnthn | diakopter: Why on earth do you have "%1" "%2" ... instead of %* ?: | ||
masak | jnthn: maybe he just really likes to have arguments :P | 14:36 | |
jnthn | :P | ||
diakopter | because %* strips original quotes | 14:38 | |
which le-breaks | 14:39 | ||
jnthn | oh...I never hit that problem :) | ||
masak | :) | ||
jnthn | also, why the hell... :) | ||
That's horrible semantics! | |||
diakopter | well, I thought it did... I'll verify. | ||
jnthn | Well, maye I didn't oen files with spalweces in the name | ||
gah | |||
masak .oO( when they said "worse is better", they didn't put nearly enough emphasis on the "worse" part... ) | 14:40 | ||
jnthn | Well, maybe I didn't open files with spaces in the name | ||
diakopter | .oO( beware the spalweces.. ) |
||
jnthn: yep, %* does not preserve the quotes | 14:41 | ||
masak | "spalweces" sounds like a lazy contraction of "space whale feces", by professionals who have seen far too much of the latter. | ||
diakopter: what about if you put the %* in quotes? "%*" ? | 14:42 | ||
jnthn | What a crappy profession :P | ||
masak | jnthn: it's a tough job, but someone's gotta do it. | ||
diakopter | it's only a problem when the space whales are the size of galaxy superclusters | ||
masak: *cry* | |||
14:43
lowpro30__ joined
|
|||
diakopter | erm. | 14:44 | |
actually it does preserve the quotes on %* | |||
but... | |||
ergh. | 14:45 | ||
14:45
lowpro30_ left
|
|||
diakopter | sigh. | 14:46 | |
apparently somewhere along the way, I acquired that superstition, spuriously | |||
or I just can't remember the exact case to reproduce | 14:47 | ||
14:49
bluescreen10 left
14:51
colomon left,
berekuk left
|
|||
dalek | rlito: 18da02f | (Flavio S. Glock)++ | / (2 files): Perlito5 - perl6 - pretty-print - omit parenthesis when calling func/method without args |
14:51 | |
14:52
colomon joined
|
|||
TimToady | fglock: also, I'd probably just translate ${x} to {$x} when interpolating | 14:57 | |
14:57
c1sung left
14:58
berekuk joined
|
|||
fglock | TimToady: ack | 14:59 | |
14:59
raiph joined
15:00
lowpro30_ joined
|
|||
fglock | I think now I've got some nice infrastructure for the refactoring | 15:00 | |
15:01
berekuk left
|
|||
fglock | with splitted steps for perl5 -> ast -> refactor -> pretty print | 15:01 | |
this is getting interesting | |||
masak | fglock++ | 15:04 | |
fglock | yes, and I also need to translate chr(10) back to "\n" | ||
masak | fglock: this is highly interesting to watch! | ||
TimToady | translation is always a fascinating subject, where "fascinating" is a euphamism for "terrifyingly open-ended" | ||
fglock | or better, print "\n" to say(...) | ||
15:04
lowpro30__ left
|
|||
TimToady | *euphemism | 15:05 | |
or print "foo\n" to say "foo" | 15:06 | ||
fglock | yes - that is easy because the "\n" is already stripped off as a special char | ||
15:07
araujo left
15:08
araujo joined,
c1sung joined
15:09
c1sung left,
c1sung joined,
c1sung left,
c1sung joined,
c1sung left
|
|||
TimToady | okay, so with the ast approach you could actually turn $x . "stuff" into "{$x}stuff" even if they didn't use ${x} in the first place | 15:09 | |
15:10
c1sung joined
|
|||
TimToady | unless one prejudices the pretty printer to use the same kind of operator, asssuming such info is even passed through the ast | 15:11 | |
15:11
c1sung left
|
|||
TimToady | certainly one must pass comments through, even though those would not typically be kept in a normal ast | 15:11 | |
15:11
c1sung joined
|
|||
TimToady | translating comments is another one of those open-ended topics :) | 15:12 | |
fglock | yes, actually the AST is the same for "${a}x" and $a . 'x' | ||
still thinking about comments | |||
TimToady | p56: 42; # Life, the Universe, and Everything | ||
camelia | p5-to-p6 : OUTPUT«42» | ||
TimToady | yeah, those have to come though, generally | 15:13 | |
15:13
pmurias joined,
c1sung left
|
|||
TimToady | but sometimes they're amusingly wrong | 15:13 | |
pmurias | fglock: you plan to use perlito for p5 -> p5 refactoring? | ||
TimToady | especially ones that say # workaround Perl 5 bug | ||
fglock | specially multi-line comments in a column besides the code | ||
pmurias: yes, that is something I'm playing with - to make a non-strict script strict by decalring the variables automatically | 15:14 | ||
TimToady | yes, alignment is nice, but not as critical as getting the info through | ||
fglock | or extract subroutines using vim | ||
15:14
benabik joined
|
|||
fglock | *declaring | 15:14 | |
pmurias: this is something I could use at work :) | 15:15 | ||
TimToady | it's okay to guess as long as you mark the guesses with something that is easy to search for | ||
with maybe a suggestion for how to make it guess the other way next time | 15:16 | ||
fglock | I think I can implement the comment stripper as a side effect of <ws> | ||
like heredocs | |||
pmurias | reformating of the code seems to be an issue for the pretty print approach | ||
unless all the code is formated with perltidy to start with ;) | |||
fglock | because it loses formatting, yes | 15:17 | |
TimToady typically just attaches the ws as an attribute of whatever the last token was | |||
fglock | it is a kind of perltidy, just dumber (or smarter, depends how you look) | ||
but refactoring makes preserving attributes more tricky | 15:18 | ||
pmurias | you could try attaching the orginal source to pieces of ast | 15:19 | |
fglock | maybe attaching comments to the top node of the statement, with (x,y) info | ||
15:19
c1sung joined
|
|||
TimToady | pmurias: you still have to decide what to do when you one set of nodes to a different set | 15:19 | |
*map | |||
15:19
FROGGS left
|
|||
fglock | pmuris: you have cases like m#xyz# #comment | 15:19 | |
*pmurias | 15:20 | ||
TimToady | especially when there's a many-to-one or one-to-many mapping | ||
fglock | it is an interesting problem :) | ||
pmurias | TimToady: you mean when transforming the ast? | ||
15:24
iSlug joined
|
|||
fglock | another thing I'm considering, is to delay BEGIN block execution and just translate the BEGIN block to perl6 | 15:25 | |
15:25
[Sno] left
|
|||
fglock | this will break some code, but I think it is what you would do if you would translate by hand | 15:26 | |
TimToady | pmurias: yes | ||
fglock | executing BEGIN and serializing to perl6 would give funny looking results | 15:27 | |
TimToady | there might be some recognizable patterns of intent that could be handled by hand | 15:29 | |
er, s/by hand/specially/ | 15:30 | ||
but I agree that translating the BEGIN is probably the better default | |||
fglock | decommuting & | 15:33 | |
15:34
fglock left
|
|||
sahadev | congrats, TimToady. | 15:45 | |
is there an option to Str.lines that does not chomp the lines before returning? similar to open(..., chomp => False) | 15:47 | ||
masak | sahadev: hmmm... .lines is synonymous with .comb(/N+/) | 15:48 | |
TimToady | dunno, oughta be | ||
masak | sahadev: so it feels a little unintuitive to extend it that way. | 15:49 | |
sahadev: why not just re-add the line breaks with >>~>> "\n" ? | |||
TimToady | not all linebreaks are "\n" | ||
15:49
berekuk joined
|
|||
masak | does it matter in this case? | 15:49 | |
TimToady thinks that .comb is the farthest thing from the user's mind when they're using .lines | 15:50 | ||
so I'm fine with a :!chomp option | |||
benabik | .split(/<?[\n]>/) ? | ||
masak | anyway, I would pull a pull request with a :!chomp option. | ||
TimToady | but the fact you have to put ! there maybe indicates the default is wrong | 15:51 | |
diakopter | or a coincidence of naming | 15:52 | |
TimToady | so maybe :nl to include the newlines, or some such | 15:53 | |
masak | +1 | ||
16:00
jeffreykegler joined
|
|||
TimToady | :newlines would be clearer, since :nl might be taken to specify what you want for newline | 16:00 | |
:raw seems a bit too generic | 16:01 | ||
:seps is a problem if they think of them as terminators rather than separators :) | |||
awks use of RS notwithstanding... | |||
sahadev | :lineseps? | 16:02 | |
TimToady | same problem as :seps :) | ||
of course, unicode talks about LINE and PARAGRAPH SEPARATORs so maybe it's not so bad | 16:03 | ||
16:05
pmurias left
|
|||
masak | :keepnl | 16:05 | |
16:05
lowpro30__ joined
16:06
spider-mario left
|
|||
[Coke] | :raw would mean bytes. | 16:07 | |
sahadev | I like :keepnl. the intent is clearest there. | 16:08 | |
TimToady | +1 | ||
16:08
spider-mario joined
|
|||
TimToady | though just :keep couldn't mean much else | 16:09 | |
16:09
lowpro30_ left
|
|||
PerlJam | :nl could be dual purpose ... :nl -- each line has whatever newlines were in the input. :nl($stuff) -- each line has its newline replaced with $stuff :-) | 16:10 | |
TimToady | that seems like a solution in search of a problem | 16:11 | |
timotimo | so with :nl(True) you can replace each newline with True? :) | 16:12 | |
masak .oO( :keepnl -- reverse the effects of global warming and rising sea levels! ) | 16:13 | ||
TimToady snorts | 16:14 | ||
PerlJam | does that mean it will eventially plunge us into another ice age? | ||
TimToady | alternatively, forget that option entirely, and force people to specify delimiter of <?after \n> if that's what they mean | ||
TimToady was hoping to have beachfront property soon, since currently we're about 15m above sea level | 16:16 | ||
pity about the Googleplex downhill from me though... | |||
masak | if there's one organization I could actually see surviving being totally submerged under water, it is Google. | 16:18 | |
TimToady | weather Mountain View --> water temp 18℃ with current from the N at 1.3 knots | 16:20 | |
diakopter | waves chompy | ||
sahadev | TimToady: how does one specify a delimiter option to .lines? I don't see a supported parameter in the spec. | 16:21 | |
.split could be used, I guess | |||
TimToady | sahadev: that is what we've been discussing all along | ||
16:22
prevost joined
|
|||
TimToady | the problem with using split is that strings aren't naturally very lazy | 16:22 | |
16:22
xenoterracide joined
|
|||
TimToady | unless they're cats, which are naturally lazy | 16:23 | |
but all the cats are feral so far | |||
TimToady had better go buy some kitty litter before our cat decides to go feral... | 16:24 | ||
sahadev | TimToady: I might have misread, but when you said "... forget that option entirely, and force people to specify delimiter of <?after \n> ...", weren't you talking about .lines? | ||
TimToady | .lines(:delim(/<?after \n>/)) or some such | ||
presumably whatever open uses for the same kind of option | 16:25 | ||
PerlJam | open uses :nl :) | ||
16:25
autark joined
|
|||
TimToady | then :nl :) | 16:25 | |
otoh it feels like something that should be optimized relative to the normal chomp mode, and that's a pretty complicated option to recognize as doing something simpler | 16:26 | ||
PerlJam | It's weird that open has :chomp which subsequently affects get and lines | 16:27 | |
sahadev | open uses :chomp too, which is a Bool, whereas :nl is not. | ||
TimToady | open's :chomp is what we're talking about deprecating | ||
it's the wrong default | 16:28 | ||
but there's no obvious antonym to "chomp" | |||
TimToady --> kitty litter store | 16:29 | ||
diakopter | you don't need another litter of kittens | ||
nobody needs more kittens | |||
16:30
iSlug left
|
|||
mathw | I have strange kitty litter | 16:32 | |
to aid in the collection of a urine sample so the vet can find out what's wrong with my cat | |||
the cat, of course, doesn't believe it's litter and refuses to use it | |||
16:33
rindolf joined
16:34
DarthGandalf joined
16:37
fhelmberger left
|
|||
dalek | p/unified-build: f55635a | moritz++ | tools/build/Makefile-JVM.in: [JVM] move some generated files to gen/jvm/ |
16:42 | |
16:51
pernatiy left
16:52
raiph left,
raiph joined
16:53
jeffreykegler left
|
|||
[Coke] | TimToady: I was just talking with ROODE who recalled chop/chomp/chip/chimp. small world. | 16:58 | |
16:59
[Sno] joined
17:04
dakkar left
17:06
havenwood joined
17:09
ssutch left
17:12
FROGGS joined
17:16
spider-mario left,
spider-mario joined
17:22
xenoterracide left
|
|||
TimToady | [Coke]: it was never entirely clear what "chimp" would mean... | 17:28 | |
daxim | p3rl.org/Text::Chomped | 17:32 | |
17:35
berekuk left
17:50
ssutch joined
17:54
kshannon left
17:55
jnap left
17:59
FROGGS left
18:04
daxim left
18:05
FROGGS joined,
raiph left,
raiph joined
18:06
raiph left,
jnap joined,
raiph joined
|
|||
timotimo | there is no method to split a filename into extension and rest? | 18:07 | |
FROGGS | timotimo: I believe the IO::Spec basename was stripped because it was not specced and not needed (in rakudo) | 18:08 | |
timotimo | is there a non-mutating version of ~~ s/.../.../? | 18:09 | |
18:09
SamuraiJack left,
SamuraiJack joined
|
|||
timotimo tries to make something with perl6 and figures out he's completely untrained | 18:09 | ||
18:10
aindilis` left
|
|||
FROGGS | hmmm, I thought it was in File::Spec module, but it is not :/ | 18:10 | |
timotimo | i figured out i can just as well just use m/.../ for this task | 18:11 | |
FROGGS | yeah, you probably know best what a file extension is to you and what not :o) | ||
timotimo | :) | ||
FROGGS | (thinking about dot-files and files with several dots...) | 18:12 | |
timotimo | i'm surprised .path.mkdir is not a thing | ||
god damnit, dir() is slow | 18:13 | ||
takes like 5 seconds to list my .. hold on | |||
100 things in my home directory | |||
(on parrot) | |||
FROGGS | r: say IO::Path.^methods | ||
camelia | rakudo e22ac2: OUTPUT«SPEC dir BUILD path parts basename directory volume Bridge Int succ pred IO open is-absolute is-relative absolute relative cleanup resolve parent child copy chmod contents d e f s l r w x z modified accessed changed new Str gist perl Numeric» | ||
FROGGS | basename, see ^^ | ||
r: say "test.txt".IO.path.basename | 18:14 | ||
camelia | rakudo e22ac2: OUTPUT«test.txt» | ||
FROGGS | r: say "C:\\test.txt".IO.path.basename | ||
camelia | rakudo e22ac2: OUTPUT«C:\test.txt» | ||
FROGGS | hmmm | ||
r: say "/tmp/test.txt".IO.path.basename | |||
camelia | rakudo e22ac2: OUTPUT«test.txt» | ||
FROGGS | r: say "/tmp/test.txt".IO.path.parts | 18:15 | |
camelia | rakudo e22ac2: OUTPUT«("volume" => "", "directory" => "/tmp", "basename" => "test.txt").hash» | ||
FROGGS | no extension :/ | ||
18:15
Quom joined
|
|||
timotimo | hehe | 18:16 | |
i've tried all those parts | |||
18:18
havenwood left
|
|||
Quom | r: say 'is there a non-mutating version of ~~ s/.../.../?'.subst(/(is) (there)/, {"$1.tc $0.lc"}) | 18:20 | |
camelia | rakudo e22ac2: OUTPUT«is there a non-mutating version of ~~ s/.../.../?» | ||
18:20
berekuk joined
|
|||
Quom | Hm | 18:20 | |
r: say 'is there a non-mutating version of ~~ s/.../.../?'.subst(/(is)\s(there)/, {"$1.tc $0.lc"}) | |||
camelia | rakudo e22ac2: OUTPUT«there.tc is.lc a non-mutating version of ~~ s/.../.../?» | ||
Quom | Close enough :) | 18:21 | |
r: my $a = 'abcd'; $a.subst(/b/,'2'); say $a | |||
camelia | rakudo e22ac2: OUTPUT«abcd» | 18:22 | |
18:22
ssutch left
|
|||
TimToady | maybe an strace would point out any excessive syscalls | 18:26 | |
18:26
rindolf left
|
|||
TimToady | (for dir) | 18:28 | |
18:29
bluescreen10 joined
18:30
ajr joined
|
|||
diakopter | heh, the opendir op isn't yet mapped in moar | 18:30 | |
18:30
ajr is now known as Guest94521
18:31
Guest94521 is now known as ajr_
18:32
isBEKaml joined,
isBEKaml left
18:34
hexcoder joined
18:37
Rotwang joined
18:42
SamuraiJack left
18:44
dalek left
18:45
dalek joined,
ChanServ sets mode: +v dalek
|
|||
hexcoder | std: my $spot is Scalar | 18:45 | |
camelia | std a0bcfb1: OUTPUT«ok 00:01 121m» | ||
hexcoder | r: my $spot is Scalar | 18:46 | |
camelia | rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/92PjGHviDlVariable trait 'is TypeObject' not yet implemented. Sorry. at /tmp/92PjGHviDl:1------> my $spot is Scalar⏏<EOL> expecting any of: scoped declarator…» | ||
hexcoder | n: my $spot is Scalar | ||
camelia | niecza v24-98-g473bd20: OUTPUT«===SORRY!===Trait name not available on variables at /tmp/ohxUKVKKjj line 1 (EOF):------> my $spot is Scalar⏏<EOL>Potential difficulties: $spot is declared but not used at /tmp/ohxUKVKKjj line 1…» | ||
hexcoder | funny, with my rakudo * at home, I get "Null PMC access in get_string()" | 18:47 | |
timotimo | well, strace for dir() gives me a *whole* bunch of brk calls ;) | 18:48 | |
18:48
araujo left,
btyler joined
18:49
araujo joined
18:52
darutoko left
|
|||
timotimo | it does the getdents twice and then just spents a lot of time doing whatever it is it's doing | 18:53 | |
18:55
Quom left
|
|||
TimToady | probably not the syscalls then | 19:02 | |
brk is fairly cheap when it's just extending an already allocated memory page | |||
maybe it's one of those "allocate 100_000 things just in case" things :/ | 19:03 | ||
or maybe it's calling a parser just to see if the name is . or .. | 19:04 | ||
or maybe it's using junctions | |||
jnthn back | 19:07 | ||
19:09
frettled left
19:14
frettled joined
19:19
jeffreykegler joined
|
|||
TimToady | huh, it is using a junction: sub dir(Cool $path = '.', Mu :$test = none('.', '..')) { | 19:22 | |
timotimo: maybe try timing it with dir('..', True) or some such | 19:23 | ||
er, :test(True) I guess | |||
I guess :test means that already | 19:24 | ||
that would tell you how much is junction overhead | |||
jnthn | That's one of the optimizer-can't-easily-unroll cases of junctions too | 19:25 | |
yoleaux | 19:22Z <FROGGS> jnthn: can you please review these changes? github.com/MoarVM/MoarVM/compare/d...a?expand=1 | ||
19:23Z <FROGGS> jnthn: I think all are okay except github.com/MoarVM/MoarVM/commit/22...8ea547e6ac | |||
jnthn | git log -p master..doughera | 19:27 | |
uh, dammit | |||
FROGGS | :o) | ||
19:28
Rotwang left
|
|||
TimToady | or try a micro-optimization: test => { .ord != 46 or not /^ '.' ** 1..2 $/ } | 19:31 | |
timotimo | well, the difference between :test and no :test is about 0.5 seconds out of 7 seconds | 19:33 | |
er, 7.5 seconds | |||
TimToady | okay, so probably not the whole answer | ||
19:34
autark left
|
|||
TimToady | since "dir is now lazy" according to the changelog, I'm suspecting it's the 100_000 thing | 19:34 | |
19:34
autark joined
|
|||
sqirrel | m.youtube.com/watch?v=sTHXIzHPyqE&a...ata_player | 19:35 | |
flashmob cologne germany | |||
may the force be with you | |||
FROGGS | :o) | ||
timotimo | oh, the "i want a 1 million entries list, kthx?"? | 19:36 | |
thing? | |||
TimToady | irclog.perlgeek.de/perl6/2013-10-04#i_7672040 is the middle of the discussion | 19:38 | |
timotimo | ah, yes. i'd've gone with 1000 as well instead of 100_000 | 19:39 | |
19:40
raiph left,
dansamo left
|
|||
TimToady | you might try changing that in src/core/ListIter.pm and see if it makes a timing difference in this case | 19:40 | |
TimToady will also again point out that Perl 5 starts at, like 4 | 19:41 | ||
timotimo | i'm currently not free to do such things, sorry | ||
TimToady | oh well | ||
it might just be general VM slothfulness too | 19:42 | ||
19:43
Rotwang joined,
jeffreykegler left
19:44
hexcoder left
|
|||
lue | hello world o/ | 19:44 | |
jnthn | FROGGS: 22f810 is just one of those "argh, compilers" things. It's not the prettiest fix, but we'd better just cope | 19:48 | |
Um, as in, there's not a pretty fix :) | 19:49 | ||
19:49
kshannon joined
|
|||
FROGGS | ahh, sad | 19:50 | |
I was hoping for a "yeah, but" :o) | |||
jnthn | Well, we could pick a better name is all | 19:51 | |
FROGGS | yeah :/ | ||
jnthn | But let's take the patch and we deal with that later. | ||
Better that we build. | |||
FROGGS | I tested it on linux so far and it passes... | ||
I have not a working solaris atm | 19:52 | ||
jnthn: you tested it on windows? just to be sure? | |||
I can do that too... | |||
jnthn | I can do, but I'm generally quite trusting of doughera++ patches :) | 19:53 | |
FROGGS | k | ||
will merge now | |||
jnthn | Building it here just in case | ||
eeks, doesn't build | 19:54 | ||
FROGGS | O.o | ||
jnthn | src\io\dirops.c(203) : error C2039: 'dir_name' : is not a member of 'MVMOSHandleBody' | ||
oh, it's stuff in #define for WIN32 | 19:55 | ||
FROGGS | yeah, now we need to spot all cases | 19:57 | |
jnthn: I an fix it too if you got other stuff to do | 19:58 | ||
jnthn | Just got a fix build here | ||
pash it | 19:59 | ||
FROGGS .oO( aaahhh, sssss, pash it, pash it good ) | 20:01 | ||
okay, that was not much to fix | |||
jnthn | :) | 20:02 | |
20:03
dalek left
|
|||
FROGGS | okay, it is in master now | 20:03 | |
20:03
dalek joined,
ChanServ sets mode: +v dalek
|
|||
jnthn | yay :) | 20:04 | |
20:05
prevost left
|
|||
FROGGS | I wasted the last two days biseting the main-usage.t fails I get when running 4 jobs + my windows vm | 20:05 | |
bisecting* | |||
jnthn | :S | 20:06 | |
Did you get it down to anything? | |||
FROGGS | looks like I an only reproduce it when beeing at work O.o | ||
because I had failing commits that pass here on my couch >.< | |||
at work it looked like as if something around july 3rd did it | 20:07 | ||
20:08
sqirrel left
20:09
pecastro left
|
|||
timotimo | r: class Testclass { has num $.a; }; my Testclass $a .= new(:a(10)); | 20:16 | |
camelia | rakudo e22ac2: OUTPUT«Cannot modify an immutable value in block at src/gen/CORE.setting:838 in method BUILDALL at src/gen/CORE.setting:821 in method bless at src/gen/CORE.setting:810 in method new at src/gen/CORE.setting:795 in method new at src/gen/CORE.setting…» | ||
timotimo | :o | ||
r: class Testclass { has Num $.a; }; my Testclass $a .= new(:a(10)); | 20:17 | ||
camelia | rakudo e22ac2: OUTPUT«Type check failed in assignment to '$!a'; expected 'Num' but got 'Int' in block at src/gen/CORE.setting:838 in method BUILDALL at src/gen/CORE.setting:821 in method bless at src/gen/CORE.setting:810 in method new at src/gen/CORE.setting:795 …» | ||
timotimo | r: class Testclass { has Num $.a; }; my Testclass $a .= new(:a(10.0)); | ||
camelia | rakudo e22ac2: OUTPUT«Type check failed in assignment to '$!a'; expected 'Num' but got 'Rat' in block at src/gen/CORE.setting:838 in method BUILDALL at src/gen/CORE.setting:821 in method bless at src/gen/CORE.setting:810 in method new at src/gen/CORE.setting:795 …» | ||
timotimo | right ... | ||
to get a num you have to work hard :P | |||
jnthn | 10e0 | ||
timotimo | can we get a use Num; or something btw? | 20:18 | |
r: { my \Rat := Num; say 10.5.WHAT }; say 10.5.WHAT; | |||
camelia | rakudo e22ac2: OUTPUT«===SORRY!===No compile-time value for Rat» | ||
jnthn | Should be do-able as a slang maybe... | ||
timotimo | r: { my \Rat ::= Num; say 10.5.WHAT }; say 10.5.WHAT; | ||
camelia | rakudo e22ac2: OUTPUT«===SORRY!===No compile-time value for Rat» | ||
timotimo | r: { constant \Rat := Num; say 10.5.WHAT }; say 10.5.WHAT; | ||
camelia | rakudo e22ac2: OUTPUT«===SORRY!===Default constructor for 'Num' only takes named arguments» | ||
jnthn | I think it expects whatever you supply the toake the same things a Rat constructor does | 20:19 | |
timotimo | so ... *theoretically* this could work, except it tries to Rat.new(:nom(20), :denom(11)) | ||
jnthn | yeah | ||
r: { constant \Rat := Num but role { method new(:$nom, :$denom) { $nom.Num / $denom.Num } }; say 10.5.WHAT }; say 10.5.WHAT; | 20:20 | ||
camelia | rakudo e22ac2: OUTPUT«===SORRY!===Too many positional parameters passed; got 3 but expected 1» | ||
timotimo | and it will do craptons of overhead because at first it tries to pull the number out to create a proper rat, *then* it calculates that back to make it a num :P | ||
hehe | |||
jnthn | r: { constant \Rat := Num but role { method new($nom, $denom) { $nom.Num / $denom.Num } }; say 10.5.WHAT }; say 10.5.WHAT; | 20:21 | |
20:21
spider-mario left
|
|||
camelia | rakudo e22ac2: OUTPUT«(Num)(Rat)» | 20:21 | |
jnthn | There you go :) | ||
timotimo | cool beans :) | ||
jnthn | yeah but it's compile time still :) | ||
timotimo | it's always nice that rakudo allows us to do stuff like that | ||
yes, / and friends will still create rats if it can | |||
20:21
LWA joined
|
|||
nwc10 | hangon, is that another of those insanely complex things that actually just works? | 20:23 | |
timotimo | yeah | ||
the compiler always does find_symbol('Rat') and friends when it builds constants etc | 20:24 | ||
and that looks in the lexical scope | |||
jnthn | Ye,s if you stick that in a mdoule and export it then you have a pragma for "default 4.2 style constants to be Num not Rat" | ||
timotimo | so ... native num attributes in perl6 classes not supported with default BUILD? | 20:26 | |
coercive types are going to be interesting. | |||
jnthn | Yeah | 20:27 | |
It's part of the whole natives stuff that needs doing | |||
20:27
kaare_ left
|
|||
timotimo has no idea what that entails | 20:30 | ||
same for coercive types | |||
i'm also not sure if i'm going to finish the nodal stuff, i think i'll need some guidance for that some time | |||
jnthn | .oO( How many full time jobs worth of work do I have on Perl 6? :) ) |
20:39 | |
20:40
benabik left
|
|||
nwc10 | jnthn: "a sufficiency" | 20:43 | |
20:46
benabik joined
|
|||
timotimo | so ... a coercive type has a different type for typechecks and then does a coercion ... so is that using .Typename method calls? | 20:46 | |
20:50
berekuk left,
dwarring joined
|
|||
timotimo | or how is it supposed to work? | 20:50 | |
for the simplest things like Str(Cool), it's easy, because then i can just say "oh, you mean to call .Str on any Cool that comes in" | 20:51 | ||
and i suppose for custom types that can only sometimes work? | |||
20:53
ssutch joined,
berekuk joined
20:54
ssutch left
|
|||
jnthn | So far, my feeling is we need an nqp::istype variant that works in coercive contexts | 20:56 | |
And will accept a different result out | |||
timotimo | oh, so we want to pipe the value through nqp::istype and istype itself does the coercion? | 20:57 | |
what if we only want to check for match and not actually coerce? | |||
jnthn | No, we need another op... | ||
nqp::istype will still be checky | |||
I think that's how we want it. | |||
timotimo | and other things, like is $foo ~~ CoerciveType mutating for $foo? i don't think it should, actually. | ||
20:58
ssutch joined
|
|||
timotimo | i agree, istype should not be magical like that | 20:58 | |
jnthn | Well, that's where we'll need some spec work :) | ||
We need to be careful at a level most people don't think of | |||
Which is that coercion may involve a method call but certain things imply various type checks won't do that at present. | |||
oh, that may not be true... | |||
timotimo | in my opinion, coercive types make sense mostly (perhaps only) in assigny situations like attributes, assignments and argument passing | 20:59 | |
that's the least implementor-torturing version i can think of, which may not be what we want to end up using | 21:00 | ||
jnthn | yeah, we need to define where they make sense and what there sematnics are in other places (possibly, error) | ||
21:02
dayangkun_ left
|
|||
timotimo | how much is missing actually to make has num $.foo work? | 21:06 | |
21:06
skids left
|
|||
jnthn | That is probably fixable with BUILDPLAN tweaks | 21:07 | |
timotimo | oh, nice! | ||
jnthn | Like, add some extra instruction codes | 21:08 | |
timotimo | that sounds doable! | ||
jnthn | Yeah, it's like an ale-level task | 21:09 | |
timotimo | i don't know what that's supposed to mean :| | ||
21:10
zjmarlow joined
|
|||
jnthn | Well, a really easy, boring task is like, lager-level. But a really complicated one needs a stout or a barley wine. An ale is like, in the middle. :) | 21:11 | |
.oO( We all rate tasks by what kind of beer we'd want in order to take it on, right? :P ) |
|||
timotimo | heh. | ||
21:13
sahadev left
21:15
xenoterracide joined
21:17
dayangkun_ joined
|
|||
timotimo | BUILD_LEAST_DERIVED is the only place where i have to work with buildallplan? | 21:21 | |
huh. i'm not actually sure why the buildplan is split into parrot and nonparrot | 21:22 | ||
the only difference my eye can see is the use of atpos or atpos_s | 21:24 | ||
oh, there's actually two copies, one for BUILDALL and one for BUILD_LEAST_DERIVED and the difference is probably just one line or something :P | 21:27 | ||
but it's sufficiently hot code to require duplication for the tinyest difference | |||
oh, it says why it needs to be different on parrot | 21:28 | ||
21:28
berekuk_ joined
|
|||
timotimo | i'm kind of sad we can't just go ahead and do actual code generation | 21:29 | |
for the buildplan i mean | |||
this still has things like strings for attributes instead of an integer slot for hash-less access | 21:30 | ||
21:30
berekuk left
|
|||
jnthn | timotimo: Yeah, some hint_for love wouldn't go amiss :) | 21:35 | |
timotimo | though the last time i timed that stuff it didn't seem to make a difference | 21:36 | |
i'd still like to try it some time, though | |||
r: class Foo { has num $.a; }; say Foo.^attributes[0].^methods | 21:37 | ||
camelia | rakudo e22ac2: OUTPUT«<anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> <anon> compose apply_handles get_value set_value container has-accessor readonly package Str gist» | ||
timotimo | r: class Foo { has num $.a; }; say Foo.^attributes[0].container.^methods | ||
camelia | rakudo e22ac2: OUTPUT«No such method 'methods' for invocant of type 'Perl6::Metamodel::NativeHOW' in block at /tmp/3XpypOrDnl:1» | ||
timotimo | is that the proper way to figure out that it's a native attribute? | ||
r: class Foo { has num $.a; }; say nqp::objprimspec(Foo.^attributes[0].container); | 21:39 | ||
camelia | rakudo e22ac2: OUTPUT«2» | ||
timotimo | r: class Foo { has int $.a; }; say nqp::objprimspec(Foo.^attributes[0].container); | ||
camelia | rakudo e22ac2: OUTPUT«1» | ||
timotimo | r: class Foo { has str $.a; }; say nqp::objprimspec(Foo.^attributes[0].container); | ||
camelia | rakudo e22ac2: OUTPUT«3» | ||
jnthn | .type on the attribute meta-obj I think | ||
timotimo | r: class Foo { has Str $.a; }; say nqp::objprimspec(Foo.^attributes[0].container); | ||
camelia | rakudo e22ac2: OUTPUT«0» | ||
timotimo | r: class Foo { has Str $.a; }; sayFoo.^attributes[0].^type; | ||
camelia | rakudo e22ac2: OUTPUT«===SORRY!=== Error while compiling /tmp/gweer1mTTDUndeclared routine: sayFoo used at line 1» | ||
timotimo | r: class Foo { has Str $.a; }; say Foo.^attributes[0].^type; | ||
camelia | rakudo e22ac2: OUTPUT«No such method 'type' for invocant of type 'Perl6::Metamodel::ClassHOW' in block at /tmp/Md10j0UM0S:1» | ||
timotimo | r: class Foo { has Str $.a; }; say Foo.^attributes[0].HOW.type(Foo.^attributes[0]); | 21:40 | |
camelia | rakudo e22ac2: OUTPUT«No such method 'type' for invocant of type 'Perl6::Metamodel::ClassHOW' in block at /tmp/kG47F8Kqv6:1» | ||
timotimo | oh wait, that's not right | ||
r: class Foo { has Str $.a; }; say Foo.^attributes[0].type; | |||
camelia | rakudo e22ac2: OUTPUT«(Str)» | ||
timotimo | r: class Foo { has str $.a; }; say Foo.^attributes[0].type; | ||
camelia | rakudo e22ac2: OUTPUT«(str)» | ||
timotimo | that seems right, thanks! | ||
r: class Foo { has str $.a; }; say nqp::objprimspec(Foo.^attributes[0].type); | |||
camelia | rakudo e22ac2: OUTPUT«3» | ||
timotimo | r: class Foo { has str $.a; }; my $f = Foo.new; nqp::setattr($f, '$.a', 'foo'); | 21:46 | |
camelia | rakudo e22ac2: OUTPUT«===SORRY!===Error while compiling block (source text: "class Foo { has str $.a; }; my $f = Foo.new; nqp::setattr($f, '$.a', 'foo');"): Error while compiling op call: Error while compiling block : Error while compiling op setattr: No registered operation han…» | ||
jnthn | bindattr | ||
timotimo | right, thanks | ||
r: class Foo { has str $.a; }; my $f = Foo.new; nqp::bindattr($f, '$!a', 'foo'); | 21:47 | ||
camelia | rakudo e22ac2: OUTPUT«===SORRY!===Error while compiling block (source text: "class Foo { has str $.a; }; my $f = Foo.new; nqp::bindattr($f, '$!a', 'foo');"): Error while compiling op call: Error while compiling block : Error while compiling op bindattr: Operation 'bindattr' requ…» | ||
timotimo | r: class Foo { has str $.a; }; my $f = Foo.new; nqp::bindattr($f, '$!a', Foo, 'foo'); | ||
camelia | rakudo e22ac2: OUTPUT«use of uninitialized value of type Foo in string context in block at /tmp/7PMHxusCcT:1Can not bind attribute '' declared in class 'Str' with this object in block at /tmp/7PMHxusCcT:1» | ||
timotimo | wrong way around | ||
and it probably should be bindattr_str and friends, right? | |||
jnthn | For native,s yeah | ||
And you need to nqp::decont($f) there | 21:48 | ||
But self is already donce't | |||
*decont'd | |||
timotimo | ah, good. | ||
jnthn | bwaha...I was going to do ablaut on decont, wrote it, and realized how rude it was | ||
21:48
lowpro30__ left
|
|||
timotimo | de ... cunt? :) | 21:50 | |
diakopter | :/ | ||
21:51
bluescreen10 left
|
|||
jnthn | *sigh* | 21:51 | |
21:55
Rotwang left,
colomon left
|
|||
timotimo | i now have a bit of code that i can now try to compile | 21:56 | |
21:56
colomon joined
21:58
berekuk joined
21:59
ssutch left,
berekuk_ left
|
|||
timotimo | whaaaat, Could not find Perl6::BOOTSTRAP in any of: | 22:02 | |
22:03
berekuk_ joined
|
|||
timotimo | Method 'create_BUILDPLAN' not found for invocant of class 'Perl6::Metamodel::ClassHOW' huh | 22:03 | |
i accidentally locerwased the B ni buildplan | |||
.... wow i can NOT type if i have a delay of >0.5s in my ssh | 22:06 | ||
22:07
berekuk left
|
|||
timotimo | it may even be the same thing as hearing your own voice a second or so delayed playing back at you will cause you to not be able to continue speaking | 22:07 | |
rakudo.jvm stage parse takes 200 secodns on my poor weak old laptop :| | 22:09 | ||
jnthn | sleep & | 22:13 | |
timotimo | d'oh, imprecise line numbers in backtraces on the jvm strikes again! | 22:15 | |
huh. This representation can not unbox to a native int - don't really know where i'm trying to interpret something as int :| | 22:18 | ||
22:20
benabik left
|
|||
timotimo | oh, haha | 22:20 | |
[Coke] | timotimo: you want "timotimo" or your real name in the release announcement? | 22:21 | |
Mouq: Ditto? | |||
22:21
mujo joined
22:22
lizmat joined
|
|||
timotimo | i'd like the real name please :) | 22:23 | |
TimToady | integers are reals too! | 22:24 | |
Mouq | [Coke]: Real sounds good | 22:25 | |
TimToady | r: say Int ~~ Real | ||
camelia | rakudo e22ac2: OUTPUT«True» | ||
Mouq | r: say Int ~~ Numeric | 22:26 | |
camelia | rakudo e22ac2: OUTPUT«True» | ||
Mouq | r: say Int ~~ Num | ||
camelia | rakudo e22ac2: OUTPUT«False» | ||
22:27
berekuk joined,
berekuk_ left
|
|||
dalek | p: a7c5369 | dwarring++ | examples/rubyish/ (7 files): implemented rubyish lambda, etc - nqp::makeclosure++ |
22:27 | |
22:27
FROGGS left
|
|||
[Coke] | grondilu: same question to you. | 22:28 | |
22:28
BenGoldberg joined,
FROGGS joined
|
|||
dwarring feels the need to give ops karma nqp::makeclosure++ | 22:28 | ||
timotimo | i don't know why, but my use of bindattr_* seems to be wrong | 22:30 | |
now i have a good reason to check out cokes op docs! :) | |||
oh crap what did i do o_O | 22:31 | ||
i think i just accidentally created a "nom" branch of nqp on github >_> | |||
diakopter | erm | ||
but it already had one? | |||
timotimo | no | ||
22:32
tipdbmp left
|
|||
timotimo | nqp has master | 22:32 | |
22:32
tipdbmp joined
|
|||
timotimo | i think i'm using bindattr right. now i don't know what's going wrong | 22:32 | |
[Coke] | ah. I'm pretty sure grondilu is also duped. | 22:33 | |
timotimo | also, i'm getting cannot unbox to native int if i have a num attribute, so it's not the value that's going into the bindattr_ call | ||
grondilu | [Coke]: what question? | 22:34 | |
[Coke] | .u æ | 22:35 | |
yoleaux | U+00E6 LATIN SMALL LETTER AE [Ll] (æ) | ||
[Coke] | grondilu: what's your name? | ||
grondilu | oh about name. My real name, please. Lucien Grondin | ||
grondilu will be glad to figure in this | |||
22:36
woolfy joined
|
|||
[Coke] | You're in as L. | 22:37 | |
assuming that came from github. | |||
timotimo | ah, cool, now i'm getting a null pointer exception! | 22:40 | |
i must have made it better than before! >_ | |||
can objprimspec ever return null? | 22:41 | ||
[Coke] | I'd say check the docs, but I know who's working on those... | ||
timotimo | :) | 22:43 | |
objprimspec isn't doc'd yet | |||
[Coke]: do you want to add "1 = int, 2 = num, 3 = str" to the "primitive type" text for primspec ops? | 22:44 | ||
[Coke] | timotimo: can you add it as long as you're in there? | 22:45 | |
timotimo | oh, i do have a commit bit in nqp | ||
22:45
colomon left
|
|||
dalek | p: 152d483 | timo++ | docs/ops.markdown: explain what the primitive types for *primspec are. |
22:46 | |
22:46
ssutch joined
|
|||
dwarring | nqp: my $n; my $s := sub (){say(++$n)}; $s(); $s() # closure | 22:46 | |
camelia | nqp: OUTPUT«12» | ||
22:47
colomon joined
|
|||
timotimo | nqp-j: say(nqp::objprimspec(NQPMu)) | 22:47 | |
nqp-jvm: say(nqp::objprimspec(NQPMu)) | |||
camelia | nqp-jvm: OUTPUT«0» | 22:48 | |
timotimo | how do i get a NPE :o | ||
dalek | kudo/nom: b991e0b | coke++ | docs/announce/2013.0 (4 files): announcements aren't executable |
||
kudo/nom: 6364da9 | coke++ | docs/release_guide.pod: Document release schedule with no deps |
|||
kudo/nom: 7f8de0c | coke++ | docs/announce/2013.10.md: add release announcement for 2013.10 |
|||
kudo/nom: b9d7c10 | coke++ | docs/release_guide.pod: relocate &name release |
|||
kudo/nom: bd315da | coke++ | docs/release_guide.pod: need moar modules |
|||
22:51
SmokeMachine left
|
|||
dwarring | nqp: sub make_incr(){my $n; sub (){say(++$n)} }; my $s:= make_incr(); $s(); $s() | 22:52 | |
camelia | nqp: OUTPUT«12» | ||
lizmat | [Coke]: I think the method postcircumfix:[] and {} changes to sub should be mentioned in the short list as well, no? | ||
dalek | p: c774afd | coke++ | VERSION: bump VERSION to 2013.10 |
||
[Coke] | lizmat: you did those, aye? Can you add a line for me? | 22:53 | |
lizmat | will do | ||
[Coke] | lizmat++ ! | ||
my plan is to try to get the nqp release done before I head out for a bit, then do the rakudo release when I return. plenty of time for volk to edit the announcement and the changelog. ;) | |||
dalek | kudo/nom: 1f77c4c | (Elizabeth Mattijsen)++ | docs/announce/2013.10.md: Mention postcirumfix [] and {} changes from method to sub |
22:57 | |
zjmarlow | will circular module loading ever be nonfatal? | 22:58 | |
22:58
mujo left
23:04
lizmat left
23:05
woolfy left
|
|||
timotimo | a friend just sent me a link to a shop on amazon that sells ducks ... to solve my programming problems %) | 23:05 | |
23:08
lizmat joined
|
|||
[Coke] | lizmat++ | 23:11 | |
dalek | p: b8b44d8 | dwarring++ | docs/ops.markdown: some doco for nqp::makeclosure |
||
[Coke] heads out, will return much later. | |||
23:20
woolfy joined
|
|||
Mouq | rn: my $a .= ++; say $a | 23:20 | |
camelia | rakudo 1f77c4: OUTPUT«No such method '&postfix:<++>' for invocant of type 'Any' in method dispatch:<.=> at src/gen/CORE.setting:1127 in block at /tmp/1JVYQuHK8Z:1» | ||
..niecza v24-98-g473bd20: OUTPUT«0» | |||
Mouq | Which of course means my $a = $a = $a + 1, but I'd still think it should work :p | 23:22 | |
lue | r: my $a; $a++; say $a; | 23:26 | |
camelia | rakudo 1f77c4: OUTPUT«1» | ||
lue | r: my $a++; say $a; | ||
camelia | rakudo 1f77c4: OUTPUT«===SORRY!=== Error while compiling /tmp/2w3w9SdWkLPreceding context expects a term, but found infix + insteadat /tmp/2w3w9SdWkL:1------> my $a++⏏; say $a;» | ||
lue | r: my $a; $a .= ++; say $a; | ||
camelia | rakudo 1f77c4: OUTPUT«No such method '&postfix:<++>' for invocant of type 'Any' in method dispatch:<.=> at src/gen/CORE.setting:1127 in block at /tmp/AlIwmnBhTl:1» | ||
Mouq doesn't actually know how dispatch:<.=> works… fires up vim | 23:28 | ||
dwarring ....arrgh it's takeclosure | 23:34 | ||
dalek | p: 062b576 | dwarring++ | docs/ops.markdown: doco oops nqp::makeclosure => nqp::takeclosure |
23:36 | |
dwarring glasses or bigger font | 23:37 | ||
timotimo | huh. on parrot it doesn't explode ... | 23:47 | |
grondilu | [Coke]: did you get my privmesg? | 23:58 | |
grondilu notices that [Coke] is afk | |||
what the syntax for tell already? | 23:59 | ||
timotimo | r: class Foo { has num $.a }; my Foo $f .= new(:a(0e0)); # now works locally, but the code won't build on jvm :( | ||
camelia | rakudo 1f77c4: OUTPUT«Cannot modify an immutable value in block at src/gen/CORE.setting:838 in method BUILDALL at src/gen/CORE.setting:821 in method bless at src/gen/CORE.setting:810 in method new at src/gen/CORE.setting:795 in method new at src/gen/CORE.setting…» |