»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend! Set by moritz on 22 December 2015. |
|||
00:00
sufrostico joined
00:05
wamba left
00:07
awwaiid left,
Sgeo_ joined
00:08
sufrostico left,
awwaiid joined
00:09
lucasb left
00:10
sufrostico joined
00:18
cpage_ joined
00:19
firefish5000 joined
00:31
awwaiid left
00:32
awwaiid joined
00:33
bjz joined
|
|||
seatek | Should stuff like $*HOME and $*TMPDIR work cross-platform to Windows too? | 00:47 | |
skids | Those two should, I think. | 00:48 | |
p3rln00b | Yup | ||
skids | Though I don't know what $*HOME ends up being when nobody is logged in. | 00:49 | |
seatek | k. thanks. not that I care really. just curious | ||
wonder if they use something like c:\Users\<userid> for $*HOME | |||
skids | I think $HOME in cmd may even be a thing. Memory is fuzzy. | 00:50 | |
p3rln00b | I get "C:\Users\p3rln00b".IO for it | ||
00:50
MasterDuke joined
|
|||
p3rln00b | "C:\Users\p3rln00b\AppData\Local\Temp".IO for $*TMPDIR | 00:51 | |
seatek | interesting stuff. | ||
oh my gosh | |||
geekosaur | cmd should be using things like %HOME% but that'd be odd, the windows version is something longer | 00:54 | |
00:54
awwaiid left,
cyphase left
|
|||
p3rln00b | %UserProfile% | 00:55 | |
00:55
awwaiid joined
|
|||
seatek | i've tried using stuff like cygwin before in windows. it always feels like i'm in this tiny little plastic oasis, with giant walls surrounding me that may come crashing down at any moment to squash me | 00:58 | |
00:59
cyphase joined
|
|||
skids | Yeah, until you fire up find and actually find stuff windows search cannot. | 00:59 | |
00:59
cyphase left
01:00
cyphase joined
|
|||
seatek | i was hoping for dd there one time, i remember. but i couldn't find it anywhere. strange that cygwin wouldn't have such a useful thing | 01:01 | |
maybe they do now | |||
firefish5000 | I don't think they were able to properly implement dd in cygwin, I need it often since windows cannot recognize my flash drives when I image them with isos | 01:02 | |
MasterDuke | try dc3dd | 01:03 | |
seatek | MasterDuke, interesting | 01:05 | |
MasterDuke | i haven't used it in recent Windows, but it worked fine on XP years ago | 01:06 | |
seatek | i wonder if there will ever be any ide's that can handle perl6 stuff. seems possible with formal class and sub and method structures, and the fact that variables always looks like variables. well, mostly. | 01:10 | |
01:14
awwaiid left
01:15
awwaiid joined
|
|||
geekosaur | I am vaguely recalling that vista and later removed access to the device level stuff that was being used? | 01:17 | |
seatek | oh my gosh, there's tab completion in the interactive perl6 interpreter | ||
geekosaur | like, restricted to SYSTEM only as an anti-virus/worm measure or something like that | 01:18 | |
(not even LSA) | |||
unless I have confused those, LSA is the administrator account and SYSTEM is the user that the privileged parts of Windows run as? | 01:19 | ||
seatek | i sure don't know. I went from OS/2 Warp to Linux -- Windows for games, and to know what other people are dealing with | 01:20 | |
firefish5000 | I wish I could get the Readline module to work on my gentoo system. It failes the copy-keymap test for me. Anyone know if it works with libreadline-6.3? | 01:24 | |
seatek | firefish5000, i could try to emerge readline 6.3 on my gentoo box and give it a whirl | 01:31 | |
firefish5000 | if it works for you, I would like to know what version of readline your currently using. lets not try breaking another system | ||
seatek | you're wanting Term::Readline? | 01:33 | |
you're wanting Term::ReadLine? | |||
firefish5000 | I was aiming for Readline, for perl6 cli | 01:34 | |
seatek | ah.. ha baba ;) not sure if i put perl6 on here... checking | ||
oo i did | 01:35 | ||
installing readline | |||
all tests passed. your computer is broken | 01:36 | ||
firefish5000 | lol, thanks for going through the trouble to test it. | ||
skids tries to build the habit of leaving trailing commas on all lists for future editability. | |||
Not used to the language not barfing over that and adding nil elements. | |||
firefish5000 | what version of sys-libs/readline and rakudo are you using? | 01:37 | |
01:37
awwaiid left
|
|||
skids | .o(Once I've built the habit, then I'll no doubt have to unbuild it when I do something else.) | 01:37 | |
seatek | firefish5000, I'm using readline libs 6.3p8-r2 from the Gentoo sources | ||
firefish5000 | hmm, well, that confirms it. my computer is broken! Time to through it out, lol | 01:38 | |
seatek | :) | ||
01:38
awwaiid joined
01:41
_slade_ joined
|
|||
seatek | firefish5000, oh sorry -- moar 2016.09.1.gdebb.859 | 01:42 | |
01:46
rudolfochrist left
01:47
ilbot3 joined
01:52
Xliff joined
02:01
awwaiid left
02:02
awwaiid joined
02:22
sufrostico left
02:25
Actualeyes joined
02:32
awwaiid left,
pierre_ joined
02:33
awwaiid joined
02:43
pierre_ left
02:52
noganex_ joined
02:55
noganex left
02:56
awwaiid left,
Actualeyes left
02:57
bjz left,
awwaiid joined
03:10
AlexDaniel left
03:16
yqt left
03:23
bjz joined
03:27
awwaiid left,
awwaiid joined
03:31
pierre_ joined
03:32
xxdxdd left
03:45
bjz left
03:46
bjz joined
03:50
woolfy left,
awwaiid left,
woolfy joined
03:51
awwaiid joined
04:13
awwaiid left
04:15
awwaiid joined
04:22
cpage_ left
04:30
Actualeyes joined,
BenGoldberg left
04:31
khw left
04:34
_slade_ left
04:35
awwaiid left,
awwaiid joined
04:40
hobbs joined,
hobbs left,
hobbs joined,
awwaiid left
04:41
awwaiid joined
04:43
Guest94342 is now known as ponbiki
04:44
skids left
04:49
Cabanossi left
04:52
Actualeyes left
04:53
Cabanossi joined
04:54
pierre_ left
04:59
awwaiid left,
awwaiid joined
05:02
pierre_ joined
05:03
Actualeyes joined
05:04
bjz left,
bjz joined
05:12
Actualeyes left
05:15
pierre_ left
05:16
fudje joined
05:18
_slade_ joined
05:22
awwaiid left
05:23
awwaiid joined
05:34
pierre_ joined
05:38
Actualeyes joined
|
|||
fudje | m: role A[$B] { method C { $B } }; say A['D'].C; | 05:43 | |
camelia | rakudo-moar 2285d3: OUTPUT«D» | ||
fudje | m: #|{ I am some pod } role A[$B] { method C { $B } }; say A['D'].C; | ||
camelia | rakudo-moar 2285d3: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Could not instantiate role 'A':Too few positionals passed; expected 2 arguments but got 1at <tmp>:1» | ||
fudje | :'( | ||
05:45
awwaiid left
05:46
awwaiid joined
05:50
cpage_ joined
06:06
fudje left
06:09
awwaiid left,
awwaiid joined
06:25
Actualeyes left
06:27
awwaiid left
06:28
awwaiid joined
06:43
mr-foobar joined
|
|||
grondilu | I'm not sure #| can be used on-line | 06:47 | |
06:49
Actualeyes joined
06:50
awwaiid left
06:52
awwaiid joined
06:58
darutoko joined
06:59
rgrinberg left
07:02
FROGGS joined
|
|||
ShimmerFairy | grondilu: the problem is with roles and multi-line declarator blocks in general: rt.perl.org/Public/Bug/Display.html?id=128810 | 07:05 | |
07:24
seatek left
07:25
awwaiid left,
awwaiid joined
07:31
RabidGravy joined
07:37
domidumont joined
07:41
domidumont left
07:42
domidumont joined
07:48
awwaiid left
07:49
bjz left
07:50
awwaiid joined
07:56
vimal2012 joined,
vimal2012 left,
vimal2012 joined
07:59
vimal2012 left
08:01
eliasr joined
08:02
nadim joined
08:05
bjz joined
08:08
itaipu joined
08:11
awwaiid left,
domidumont left
08:13
awwaiid joined
08:16
rurban joined,
rurban left
08:19
pierre_ left
08:26
bjz left,
bjz joined
08:36
awwaiid left,
bjz left,
bjz_ joined
08:37
awwaiid joined
08:42
awwaiid left,
mohae_ joined
08:43
psch_ is now known as psch
08:44
_slade_ left
08:45
wamba joined
08:46
mohae left
08:49
itaipu left
08:57
d^_^b joined,
d^_^b left,
d^_^b joined
08:58
pecastro_ joined
|
|||
FROGGS | o/ | 09:03 | |
09:07
camelia left
09:08
camelia joined
09:09
ChanServ sets mode: +v camelia
09:10
domidumont joined
09:12
domidumont left
09:13
vimal2012 joined,
vimal2012 left
09:14
rindolf joined,
vimal2012 joined
09:17
andrzejku_ joined
|
|||
andrzejku_ | hello my friends :) | 09:17 | |
09:18
canopus left,
vimal2012 left
09:24
vimal2012 joined
09:25
vimal2012 left
09:27
canopus joined
09:35
pecastro_ left
09:37
pierre_ joined
09:38
rudolfochrist joined
09:44
domidumont joined,
ggoebel left
09:57
ggoebel joined
10:02
breinbaas left
10:03
breinbaas joined
10:05
rudolfochrist left
10:06
TimToady left,
setty1 left
10:07
TimToady joined
10:17
rindolf left,
ocbtec joined
10:24
TimToady left
10:26
TimToady joined
10:36
canopus left
10:39
canopus joined
10:43
rindolf joined
10:46
pierre_ left
10:54
Actualeyes left
10:56
ocbtec left,
TEttinger left
11:02
labster left
11:03
awwaiid joined
11:09
Actualeyes joined
11:12
firefish5000 left
11:22
rindolf left
11:26
Ulti_ is now known as Ulti
11:27
awwaiid left
11:28
awwaiid joined
11:35
pierre_ joined
11:37
pierre_ left,
pierre_ joined
11:48
telex joined
|
|||
RabidGravy | boo | 11:49 | |
12:00
sftp left
12:02
sftp joined
|
|||
FROGGS | /o\ | 12:07 | |
12:08
setty1 joined
12:14
awwaiid left
|
|||
dalek | c: a7716fc | (Zoffix Znet)++ | README.md: Clarify deps installation instructions Per discussion[^1], revert previous commit[^2] and clarify how to get rakudobrew going The Right Way™ by updating the shim with `rehash` command. [1] github.com/perl6/doc/commit/1b3cf9...t-19334016 [2] github.com/perl6/doc/commit/1b3cf9...596674a93a |
12:20 | |
12:38
lucasb joined
12:39
BenGoldberg joined
|
|||
lucasb | #129830 | 12:57 | |
RT #129830 | |||
:| | |||
so, it seems any parameterized role has problems with gist? | 12:58 | ||
m: Positional.gist | |||
camelia | ( no output ) | ||
lucasb | m: Positional[Int].gist | ||
camelia | rakudo-moar 2285d3: OUTPUT«Cannot unbox a type object (NQPMu) to a str. in block <unit> at <tmp> line 1» | ||
lucasb | same thing for Associative[T], Rational[T, U] | ||
m: role R[::T] {}; say R.gist | 12:59 | ||
camelia | rakudo-moar 2285d3: OUTPUT«(R)» | ||
lucasb | m: role R[::T] {}; say R[Int].gist | ||
camelia | rakudo-moar 2285d3: OUTPUT«Cannot unbox a type object (NQPMu) to a str. in block <unit> at <tmp> line 1» | ||
psch | m: role R[::T] {}; say R[Int].new.gist | 13:01 | |
camelia | rakudo-moar 2285d3: OUTPUT«R[Int].new» | ||
psch | m: put Int.gist | ||
camelia | rakudo-moar 2285d3: OUTPUT«(Int)» | ||
psch | m: role R[::T] {}; say R[Int].^mro | ||
camelia | rakudo-moar 2285d3: OUTPUT«No such method 'mro' for invocant of type 'Perl6::Metamodel::CurriedRoleHOW' in block <unit> at <tmp> line 1» | ||
psch | m: role R[::T] {}; say R[Int].new.^mro | ||
camelia | rakudo-moar 2285d3: OUTPUT«((R[Int]) (Any) (Mu))» | ||
psch | m: role R { }; put R.gist | 13:02 | |
camelia | rakudo-moar 2285d3: OUTPUT«(R)» | ||
gfldex | m: role R[::T] {}; R[Int].gist; CATCH{ default { say .backtrace.full } } | ||
camelia | rakudo-moar 2285d3: OUTPUT« in block at gen/moar/m-CORE.setting line 17361 in method join at gen/moar/m-CORE.setting line 17356 in sub infix:<~> at gen/moar/m-CORE.setting line 13936 in method gist at gen/moar/m-CORE.setting line 1393 in block <unit> at <tmp> line …» | ||
psch | m: role R[::T] {}; say R[Int].^name | 13:05 | |
camelia | rakudo-moar 2285d3: OUTPUT«R[Int]» | ||
psch | m: role R[::T] {}; say R[Int].^shortname | 13:06 | |
camelia | rakudo-moar 2285d3: OUTPUT«No such method 'gist' for invocant of type 'NQPMu' in block <unit> at <tmp> line 1» | ||
psch | there | ||
so shortname in CurriedRoleHOW has a problem | |||
lucasb: ^^^ in case you wanna look what's wrong there | |||
lucasb | shortname comes from role Perl6::Metamodel::Naming | 13:07 | |
is that the case that it is not getting set for curried roles? | |||
oh, nevermind | |||
I don't have the skills to navigate the Perl6::Metamodel:: namespace :) | 13:09 | ||
psch | don't give up! :) | ||
lucasb | nqp-m: class C { has $!name; method name() { $!name } }; C.new.name.gist | 13:17 | |
camelia | nqp-moarvm: OUTPUT«Cannot find method 'gist' on object of type NQPMu at <tmp>:1 (<ephemeral file>:<mainline>) from gen/moar/stage2/NQPHLL.nqp:1428 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/NQPHLL.moarvm:eval) from gen/moar/stage2/NQPHLL.nqp:1631 (/home/camelia/rakud…» | ||
lucasb | idk what my snippet eval is supposed to mean, but... yeah. my guess is that no code is setting the shortname of curried roles :) | 13:18 | |
13:19
awwaiid joined
|
|||
psch | lucasb: "curried role type objects", actually :) | 13:27 | |
lucasb: when it's punned it works | |||
m: role R[::T] { }; put R[Int].new.gist | |||
camelia | rakudo-moar 2285d3: OUTPUT«R[Int].new» | ||
lucasb | indeed, correct | 13:28 | |
psch | lucasb: please RT that if it's not yet | ||
lucasb | it already is #129830 | ||
psch | ah okay | 13:29 | |
13:30
kaare_ left
13:34
perlawhirl joined
13:43
awwaiid left
13:44
awwaiid joined
13:49
rindolf joined
14:04
wamba left
14:06
awwaiid left
14:07
awwaiid joined
14:14
AlexDaniel joined
14:29
awwaiid left
14:33
awwaiid joined
14:34
skids joined
14:36
yqt joined
14:43
awwaiid left
14:45
awwaiid joined
14:46
ocbtec joined
14:51
rgrinberg joined,
darutoko- joined
14:54
darutoko left
14:55
rindolf left
14:58
domidumont left,
domidumont joined
14:59
rindolf joined
15:01
khw joined
15:05
nadim left
15:08
bazzaar joined
|
|||
bazzaar | o/ perl6 | 15:09 | |
m: my @c = <a b c>; my @n = <1 2 3>; for @c Z @n -> $cv, $nv { say $cv ~ ":" ~ $nv }; | 15:10 | ||
camelia | rakudo-moar 2285d3: OUTPUT«a 1:b 2Too few positionals passed; expected 2 arguments but got 1 in block <unit> at <tmp> line 1» | ||
15:11
awwaiid left
15:12
awwaiid joined,
bioduds joined
|
|||
bazzaar | not sure why that code fails, I thought I passed 2 args with the Z operator, to the block | 15:12 | |
m: my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n) -> $cv, $nv { say $cv ~ ":" ~ $nv }; | 15:13 | ||
camelia | rakudo-moar 2285d3: OUTPUT«a 1:b 2Too few positionals passed; expected 2 arguments but got 1 in block <unit> at <tmp> line 1» | ||
AlexDaniel | m: sub infix:<> ($a, $b) is equiv(&infix:<*>) { $a [*] $b }; my \a = 5; my \b = 10; say ab + 42 | 15:14 | |
camelia | rakudo-moar 2285d3: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Undeclared routines: ab used at line 1 sa used at line 1. Did you mean 'so'? y used at line 1 (in Perl 6 please use tr instead)» | ||
AlexDaniel | m: sub infix:<> ($a, $b) is equiv(&infix:<*>) { $a [*] $b }; my \a = 5; my \b = 10; say ab + 42 | ||
camelia | rakudo-moar 2285d3: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Undeclared routines: sa used at line 1. Did you mean 'so'? y used at line 1 (in Perl 6 please use tr instead)» | ||
AlexDaniel | m: sub infix:<> ($a, $b) is equiv(&infix:<*>) { $a [*] $b }; my \a = 5; my \b = 10; say ab + 42 | ||
camelia | rakudo-moar 2285d3: OUTPUT«92» | ||
15:16
seatek joined
|
|||
gfldex | m: my @c = <a b c>; my @n = <1 2 3>; for @c Z @n -> [$cv, $nv] { say $cv ~ ":" ~ $nv }; | 15:18 | |
camelia | rakudo-moar 2285d3: OUTPUT«a:1b:2c:3» | ||
gfldex | m: sub infix:<|Z>(\a, \b){ (a Z b).flat }; my @c = <a b c>; my @n = <1 2 3>; for @c |Z @n -> $cv, $nv { say $cv ~ ":" ~ $nv }; | 15:20 | |
camelia | rakudo-moar 2285d3: OUTPUT«a:1b:2c:3» | ||
bazzaar | gfldex: aaah, the penny has dropped, thank you very much | ||
bioduds | hey all, cheers! | ||
AlexDaniel | gfldex: is there any difference between using [] and () in this case? | 15:21 | |
m: my @c = <a b c>; my @n = <1 2 3>; for @c Z @n -> ($cv, $nv) { say $cv ~ ":" ~ $nv }; | |||
camelia | rakudo-moar 2285d3: OUTPUT«a:1b:2c:3» | ||
gfldex | don't think so | ||
it's a little easier to read in my eyes | |||
bazzaar | I found the example on Perl6 maven, after searching for documentation on how to iterate over multiple arrays in parallel. | 15:25 | |
AlexDaniel | committable6: pre-glr my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n) -> $cv, $nv { say $cv ~ ":" ~ $nv }; | 15:26 | |
committable6 | AlexDaniel, ¦«pre-glr»: a 1:b 2Too few positionals passed; expected 2 arguments but got 1 in block <unit> at /tmp/Qn8aGvF3HJ:1 «exit code = 1» | ||
bazzaar | presumably the syntax has been tightened up since that post. | ||
AlexDaniel | uh, this result does not make any sense | 15:27 | |
what's going on there? | 15:28 | ||
why was it “a 1:b 2” ? | |||
aah | |||
committable6: pre-glr my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n) -> $cv { say $cv }; | |||
committable6 | AlexDaniel, ¦«pre-glr»: a 1b 2c 3 | ||
AlexDaniel | committable6: pre-glr my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n) -> $cv { say $cv.perl }; | ||
committable6 | AlexDaniel, ¦«pre-glr»: $("a", "1")$("b", "2")$("c", "3") | ||
perlawhirl | like this | ||
m: my @c = <a b c>; my @n = <1 2 3>; for @c Z @n -> ($cv, $nv) { say $cv ~ ":" ~ $nv }; | 15:29 | ||
camelia | rakudo-moar 2285d3: OUTPUT«a:1b:2c:3» | ||
AlexDaniel | committable6: pre-glr my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n) { say .[0] ~ ‘:’ ~ .[1] }; | ||
committable6 | AlexDaniel, ¦«pre-glr»: a:1b:2c:3 | ||
AlexDaniel | yeah, that's it! | ||
DrForr | RabidGravy: I took the repo down only because I just got tired of the approach I was taking. It'll be back up n a few hours. | ||
15:30
awwaiid left
15:31
awwaiid joined
|
|||
bazzaar | I'm using perl6 to parse a horribly formatted text file, I am now back on track after your help, thank you. Perl6 is brilliant, so intuitive. | 15:33 | |
AlexDaniel | bazzaar: if interested, you can take a look at this: perl6advent.wordpress.com/2015/12/...-refactor/ | ||
bazzaar | AlexDaniel: thanks for the help, and for the link, I will check it out. | 15:34 | |
15:34
kaare_ joined
|
|||
AlexDaniel | bazzaar: well, it's not something you should care about today :) still a good read if you want to see how we got here | 15:35 | |
dalek | c: 0765d1d | gfldex++ | doc/Language/operators.pod6: better description and example for Z |
15:36 | |
c: 34c6f3c | gfldex++ | doc/Language/operators.pod6: meta-Z is no the same thing as Z, link there |
|||
gfldex | bazzaar++ # for asking the right question | 15:37 | |
15:37
pierre_ left
|
|||
perlawhirl | bazaar: the main thing to remember in this particular case is that zip (or Z) creates a list of lists, so you need to destructure that list in the signature of the loop | 15:39 | |
ie, you just needed to relocate your brackets downstream :D | 15:40 | ||
from: for (@c Z @n) -> $cv, $nv { ... } | |||
to : for @c Z @n -> ($cv, $nv) { ... } | |||
gfldex | m: my @c = <a b c>; my @n = <1 2 3>; for (@c Z @n).kv -> $cv, $nv { say $cv ~ ":" ~ $nv }; | 15:41 | |
camelia | rakudo-moar 2285d3: OUTPUT«0:a 11:b 22:c 3» | ||
perlawhirl | kv is different in that it actually creates 2 loop items | ||
zip creates a list... so it needs to be destructured in a sig... or subscripted in the loop (ie $_[0] and $_[1]) | 15:42 | ||
15:43
bjz_ left
15:44
eliasr left
|
|||
bazzaar | perlawirl: thanks for the explanation of what the bracket syntax of the signature is doing | 15:44 | |
AlexDaniel | m: my @c = <a b c>; my @n = <1 2 3>; .say for @c Z[&(* ~ *)] @n | 15:45 | |
camelia | rakudo-moar 2285d3: OUTPUT«a1b2c3» | ||
AlexDaniel | hehe | ||
m: my @c = <a b c>; my @n = <1 2 3>; .say for @c Z[&(* ~ ‘:’ ~ *)] @n | |||
camelia | rakudo-moar 2285d3: OUTPUT«a:1b:2c:3» | ||
AlexDaniel | m: my @c = <a b c>; my @n = <1 2 3>; .say for @c Z[&(-> $a, $b { “$a:$b” } )] @n | 15:46 | |
camelia | rakudo-moar 2285d3: OUTPUT«a:1b:2c:3» | ||
bazzaar | AlexDaniel: so you've eliminated the block, right ... I like it | 15:48 | |
MasterDuke | m: my @c = <a b c>; my @n = <1 2 3>; .say for @c Z[&("{*}:{*}")] @n | 15:49 | |
camelia | rakudo-moar 2285d3: OUTPUT«No such method 'CALL-ME' for invocant of type 'Str' in block <unit> at <tmp> line 1» | ||
perlawhirl | I just figured you were trying to wrap your head around the Z opertor. if your really do just want to colon-separate them... | ||
m: my @c = <a b c>; my @n = <1 2 3>; say (@c Z @n).map: *.join(':') | |||
camelia | rakudo-moar 2285d3: OUTPUT«(a:1 b:2 c:3)» | ||
perlawhirl | or this would work too: (@c Z @n)».join(':') | 15:50 | |
bazzaar | TIMTOWTDI ... brilliant | 15:51 | |
AlexDaniel | MasterDuke: :P you can't put * inside stuff like that | 15:53 | |
committable6: 2015.12 my @c = <a b c>; my @n = <1 2 3>; .say for @c Z[&(* ~ ‘:’ ~ *)] @n | 15:54 | ||
committable6 | AlexDaniel, ¦«2015.12»: a:1b:2c:3 | ||
AlexDaniel | ok | ||
15:54
awwaiid left
15:56
awwaiid joined
|
|||
MasterDuke | yeah, i sometimes forget they're more than just placeholders | 15:56 | |
bazzaar | perlawhirl: actually one of the input arrays to the Zip op (in my file) is an AofA, so I'm just steadily working down through the data levels | ||
perlawhirl | AlexDaniel: re our conversation earlier on »... yes it does seem it's more deepmap than map... but i think the huffman coding is sound. my take on » is that it's aimed at huffmanising quick method calls, rather than complex functions | 15:58 | |
ie, if you just wanna uppercase a list of names, ».uc is shorter than .map: &uc | |||
but the deepmap like properties come into play in unexpectedly helpful ways | 15:59 | ||
15:59
skids left
|
|||
perlawhirl | m: say <john paul geoge ringo>.classify(*.comb[0])».uc | 15:59 | |
camelia | rakudo-moar 2285d3: OUTPUT«{g => [GEOGE], j => [JOHN], p => [PAUL], r => [RINGO]}» | ||
perlawhirl | uc acts on the items i was classifying, not on the Hash that .classify created | ||
16:00
kenh83 joined,
Khisanth joined
|
|||
AlexDaniel | I'm not sure I get it. Like maybe, but I'm just thinking… if .deepmap is more useful than .map (which » existence seems to imply?), then why is it called .deepmap and not .dp or something… | 16:01 | |
.dm I mean | |||
perlawhirl | well » (and by extension, .deepmap) acts like .map in a lot of circumstances. it's huffmanizing a lot of common things you would normally need map for... as well as some things you would need deepmap for | 16:03 | |
AlexDaniel | hmm | ||
perlawhirl | i think ».&{ ... } is a bad use-case for » | 16:04 | |
16:04
bioduds left
|
|||
gfldex | i'm getting careful with » to because I can't test autothreading that isn't there yet | 16:05 | |
perlawhirl | i think it's better suited for method calls. if you need anything more complex, a map ( or deepmap, as the case might be ) is a better option | ||
gfldex: agree, though i think i recall jnthn saying ».foo should eventually implement something (probably) identical to .hyper.map( *.fo )o | 16:06 | ||
erm , i mean.. .hyper.map( *.foo ) | |||
but even .hyper is a little wonky... or has that beed fixed recently | 16:07 | ||
*been | |||
gfldex | threading in general is buggy, including segfaults, but we got a golf of (at last one) of those bugs now | 16:08 | |
AlexDaniel | gfldex: I think that we've got a good grip on it with MasterDuke | 16:12 | |
once #129781 is resolved we will report the next issue… and we will repeat that until bisectable fucking works ;) | |||
right now I think the biggest problem is that there are not many people willing to work on such bugs | 16:13 | ||
lucasb | gfldex: you just inserted an example about Z in the docs, but you forgot the parentheses, right? | 16:14 | |
AlexDaniel | like you know, it's nice to have jnthn but it would be better to have 5 jnthns | ||
lucasb | for <a b c> Z <1 2 3> -> $l, $r { say "$l:$r" } | ||
for <a b c> Z <1 2 3> -> ($l, $r) { say "$l:$r" } | |||
gfldex | i did | 16:15 | |
lucasb | well, parentheses or brackets, whichever style is prefered | ||
AlexDaniel | perlawhirl: I am not sure if I understand your idea of “X is a bad use-case for »”. If you want it to be parallelized if possible, then you use », if you don't – you use map/deepmap | 16:16 | |
whether it is ».&{} or a plain method call is irrelevant, isn't it? | |||
dalek | c: 2e00e39 | (Tom Browder)++ | doc/Language/modules.pod6: clarify point description is still a little muddy |
||
c: 6a52de1 | gfldex++ | doc/Language/operators.pod6: fix example |
|||
lucasb | gfldex++ thanks | 16:17 | |
16:17
awwaiid left
|
|||
perlawhirl | probably a bad turn of phrase on my part... not really a bad use case, per se | 16:18 | |
16:19
awwaiid joined
|
|||
perlawhirl | until » is parallelised in at least 1 implementation of perl6 it's kind of a moot point | 16:20 | |
timotimo | we used to have the execution order of >> be scrambled | ||
it got taken out, probably due to performance concerns? | 16:21 | ||
lucasb | what does it mean that Z metaoperator is not the same thing as Z infix? | ||
gfldex | it did a ».pick on the whole list | ||
timotimo | well, Z infix is Z, | ||
lucasb | yes, that's my understanding as well | 16:22 | |
timotimo | you can't use Z, on an operator | ||
AlexDaniel | m: 42 xx (2 ** 62) | ||
camelia | rakudo-moar 2285d3: OUTPUT«(signal SEGV)WARNINGS for <tmp>:Useless use of constant integer 42 in sink context (line 1)» | ||
timotimo | where did you read that? | ||
perlawhirl | lucasb: im confused... maybe they meant Z infix and metaop is not the same as zip() | ||
AlexDaniel | ok, this one is still there | ||
dalek | c: 0219118 | (Tom Browder)++ | doc/Language/modules.pod6: use title case for consistency grammar fix |
||
16:23
decent_ is now known as decent
|
|||
gfldex | i wanted to link from meta-Z to Z, because meta-Z didn't really say what was going on | 16:23 | |
and they don't behave the same way. Flattening is a little different. | 16:24 | ||
lucasb | hmm, I'm not sure :) | ||
say (zip <a b c>, <1 2 3>).perl | |||
say (<a b c> Z, <1 2 3>).perl | 16:25 | ||
say (<a b c> Z <1 2 3>).perl | |||
all 3 returns the same thing | |||
gfldex | m: dd (<1 2 3> Z~ <a b c>); | ||
camelia | rakudo-moar 2285d3: OUTPUT«("1a", "2b", "3c").Seq» | ||
gfldex | the result is flat already | ||
perlawhirl | lucasb: zip( @AoA ) will not transpose the @AoA... but [Z] @AoA will | ||
lucasb | say ([Z] <a b c>, <1 2 3>).perl | 16:26 | |
all 4 returns the same thing :D | |||
perlawhirl: I may not have understood what you said | 16:27 | ||
timotimo | AlexDaniel: oh, that must be an overflow when multiplying the slot size with the number of elements requested | ||
perlawhirl | m: my @AoA = ('A'..'I').rotor: 3; say zip(@AoA); | ||
camelia | rakudo-moar 2285d3: OUTPUT«(((A B C) (D E F) (G H I)))» | ||
perlawhirl | m: my @AoA = ('A'..'I').rotor: 3; say [Z] @AoA; | ||
camelia | rakudo-moar 2285d3: OUTPUT«((A D G) (B E H) (C F I))» | ||
perlawhirl | zip() treats it's values as scalar | 16:28 | |
ermm, it's arguments | |||
AlexDaniel | timotimo: fwiw it is #126014 | ||
perlawhirl | that's the only zip related difference I'm aware of... I was not aware of any difference between infix Z and metaop Z | 16:29 | |
16:29
synopsebot6 joined
|
|||
AlexDaniel | timotimo: and yeah, that makes sense | 16:29 | |
perlawhirl | but i'm welcome to be show how they differ so I don't misuese it :D | ||
timotimo | AlexDanie+│ timotimo: fwiw it is #126014 | ||
synopsebot6 | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=126014 | ||
MasterDuke | added valgrind output | 16:30 | |
timotimo | so, how do i properly check for multiplication overflow? internet says i have to check before doing the multiplication so that i don't run into undefined behaviour that could make any test "after the multiplication" bogus | ||
perlawhirl | bedtime for me... 3:30 am here :/ | ||
g'night #perl6 | 16:31 | ||
lucasb | perlawhirl: I wasn't aware of that. thanks for clarifying | ||
timotimo | gnite perlawhirl | ||
lucasb | perlawhirl: good night | ||
16:31
perlawhirl left
16:33
kaare_ left,
kaare_ joined
|
|||
AlexDaniel | timotimo: is it signed or unsigned? | 16:34 | |
timotimo | the result is size_t | ||
but yeah, unsigned | 16:36 | ||
arnsholt | In that case, a*b <= MAX_INT should be equivalent to a <= MAX_INT/b | 16:37 | |
Modulo floating-point bugbears due to division | |||
timotimo | it's rather likely that the element size is a simple and small value | 16:38 | |
but yeah, i'll try that | |||
lucasb | nqp-m: nqp::setelems(nqp::list,2**62) | 16:40 | |
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
lucasb | :D | 16:41 | |
timotimo | same thing, because it nulls out the slots | ||
16:42
awwaiid left
|
|||
AlexDaniel | timotimo: just wanted to note that wrap of unsigned integers is actually defined, if I recall correctly | 16:42 | |
timotimo | oh, it is? | ||
arnsholt | Oh, that's true, I think! | 16:43 | |
16:43
awwaiid joined
|
|||
AlexDaniel | I don't see how it is going to help in this case, but yeah | 16:44 | |
timotimo | what do i include to get MAX_INT, limits.h? | ||
apparently not | 16:45 | ||
AlexDaniel | isn't it SIZE_MAX ? | ||
timotimo | ah | ||
right, i want the max of size_t anyway | |||
lucasb | stdint.h | 16:47 | |
for SIZE_MAX | |||
funny, the error mesg changes, depending of the size specified | 16:51 | ||
nqp-m: nqp::setelems(nqp::list,2**31) | |||
camelia | nqp-moarvm: OUTPUT«Memory allocation failed; could not allocate 17179869184 bytes» | ||
lucasb | nqp-m: nqp::setelems(nqp::list,2**64) | ||
camelia | nqp-moarvm: OUTPUT«MVMArray: Can't resize to negative elements at <tmp>:1 (<ephemeral file>:<mainline>) from gen/moar/stage2/NQPHLL.nqp:1428 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/NQPHLL.moarvm:eval) from gen/moar/stage2/NQPHLL.nqp:1631 (/home/camelia/rakudo-m-in…» | ||
lucasb | nqp-m: nqp::setelems(nqp::list,2**62) | ||
camelia | nqp-moarvm: OUTPUT«(signal SEGV)» | ||
timotimo | lucasb: i put a branch up on moarvm that addresses this issue, but it clearly has shortcomings | 16:52 | |
please feel free to look into it some more while i'm AFK | 16:53 | ||
AlexDaniel: you're invited to take a look, too | |||
AlexDaniel | I'm already looking :) | ||
timotimo | thank you kindly | ||
i think the check may want to either be repeated at the top or move to the top entirely because otherwise it'll say something about negative sizes | |||
AlexDaniel | timotimo: “Can't resize to a number bigger than 64bits” who said that it is 64bits? | 16:58 | |
is it actually so? | 16:59 | ||
I mean, is it 64bits on 32-bit platforms? | |||
17:02
awwaiid left
17:03
awwaiid joined
|
|||
AlexDaniel | timotimo: in fact in 2**64 case it complains about n being negative, isn't it already too late to attempt any fixes in set_size_internal ? | 17:05 | |
OK you will fix a segfault, but the problem of xx wrapping around will be there still | 17:07 | ||
dalek | c: b8cdb18 | (Tom Browder)++ | doc/Language/modules.pod6: remove pod tag, shorten commen |
17:08 | |
timotimo | AlexDaniel: right, that verbiage was put in before i thought to put the value we compare against into the exception string, too | 17:12 | |
but yeah, set_size_internal takes an MVMint64, and bind_pos does, too | |||
but set_size - the instruction you get with setelems - takes a uint | |||
clearly we'd prefer this to be uniform across the board. not sure how many pieces of the Everything will need changing | 17:14 | ||
however ... are you really going to be asking for 2**63 slots anyway? | |||
AlexDaniel | that's stupid, but what if I do? | ||
timotimo | m: say (2 ** 63) / (1024 * 1024 * 1024 * 1024), " terabyte" | 17:15 | |
camelia | rakudo-moar 2285d3: OUTPUT«8388608 terabyte» | ||
timotimo | then you shall get an exception | ||
AlexDaniel | m: 42 xx (2 ** 100) | 17:16 | |
camelia | rakudo-moar 2285d3: OUTPUT«WARNINGS for <tmp>:Useless use of constant integer 42 in sink context (line 1)Cannot unbox 101 bit wide bigint into native integer in block <unit> at <tmp> line 1» | ||
AlexDaniel | ah | ||
there's an exception for that | |||
timotimo | yeah, it happens way earlier | ||
AlexDaniel | OK | ||
timotimo | the ops that we use to access arrays and other positional things "under the hood" all take 64 bit integers | 17:17 | |
(apparently a mix of signed and unsigned) | |||
so it'll have to unbox your Int to an int | |||
and boom | |||
i mean ... we could also "if (ssize > 2 ** 48) exception('cowardly refusing to allocate an array with more than 2 ** 48 slots')" | 17:19 | ||
m: say (2 ** 48) / (1024 * 1024 * 1024 * 1024), " terabyte" | |||
camelia | rakudo-moar 2285d3: OUTPUT«256 terabyte» | ||
timotimo | we don't likely have users with that much ram, do we? | 17:20 | |
AlexDaniel | not yet | ||
timotimo | consider also that things like sorting aren't in-place | ||
oh, multiply that with the size of your elements, too | |||
so if you have a list of regular objects, that'll be a 64bit int for each slot | 17:21 | ||
MasterDuke | i use machines with 278Gb at work, and we're soon getting 512Gb machines | ||
timotimo | so 2048 terabyte just for a single of those arrays | ||
MasterDuke | and those are just regular dell servers | ||
timotimo | and our implementation requires all those slots in there to be nulled whenever we increase the size of such an array | ||
AlexDaniel | yeah, 256 Tb of RAM does not seem like some unimaginable amount nowadays | ||
timotimo | OK, so we go up to 56 | 17:22 | |
m: say (2 ** 56) / (1024 * 1024 * 1024 * 1024), " terabyte" | |||
camelia | rakudo-moar 2285d3: OUTPUT«65536 terabyte» | ||
timotimo | month after month we can go and increase that | ||
AlexDaniel | xD | ||
psch | r: my @a; say @a[2**64] | 17:23 | |
camelia | rakudo-moar 2285d3: OUTPUT«Cannot unbox 65 bit wide bigint into native integer in block <unit> at <tmp> line 1» | ||
..rakudo-jvm 2a1605: OUTPUT«(Any)» | |||
psch | except jvm limitations | ||
well, we can shuffle somewhere | |||
...assuming i got the gist of the discussion. it felt relevant enough :P | |||
timotimo | hmm | 17:24 | |
psch | point being that array indices on jvm have to be native ints | ||
MasterDuke | timotimo: while you're messing around with bigints, github.com/MoarVM/MoarVM/pull/405 | ||
AlexDaniel | MasterDuke: 278Gb is great. That probably means that you can have a year long bisectable uptime on that machine | ||
psch | so yeah, shuffling would be some kind of higher level abstraction for the underlying slots of Array | ||
but that, on the other hand, again limits us for native typed arrays | |||
MasterDuke | AlexDaniel: :) -> :( | 17:25 | |
psch | cause there we have to kinda sorta do C-style pointer arithmetic | ||
i mean, clearly not as bad, but it's a thing | |||
j: use nqp; nqp::setelems(nqp::list, 2**64) | 17:26 | ||
camelia | ( no output ) | ||
psch | j: use nqp; say nqp::setelems(nqp::list, 2**64).elems | ||
camelia | rakudo-jvm 2a1605: OUTPUT«Method 'elems' not found for invocant of class 'BOOTArray' in block <unit> at <tmp> line 1» | 17:27 | |
psch | oh right | ||
j: use nqp; say nqp::elems(nqp::setelems(nqp::list, 2**64)) | |||
camelia | rakudo-jvm 2a1605: OUTPUT«0» | ||
timotimo | neat. | ||
psch | j: use nqp; my \l := nqp::list; say nqp::setelems(l, 2**64); say nqp::elems(l) | ||
camelia | rakudo-jvm 2a1605: OUTPUT«()0» | ||
timotimo | clearly they have some sort of sparse array implementation there? | ||
17:27
awwaiid left
|
|||
timotimo | eh .. or it just silently fails? | 17:27 | |
psch | i'd go with that, yeah | ||
j: use nqp; my \l := nqp::list; say nqp::setelems(l, 2**64); nqp::bindpos(l, 2**64, 1); say nqp::elems(l) | 17:28 | ||
camelia | rakudo-jvm 2a1605: OUTPUT«()1» | ||
psch | hm, maybe not | ||
AlexDaniel | timotimo: here's a thing… set_elems receives 「MVMuint64 count」, then passes it to set_size_internal as 「MVMint64 n」. Why? | ||
timotimo | AlexDaniel: yes, why indeed. | ||
psch | AlexDaniel: that looks like an oversight, honestly | ||
17:28
awwaiid joined
|
|||
dalek | c: ff008f5 | (Luca Ferrari)++ | doc/Language/exceptions.pod6: Change a supposed sub title to head2 |
17:29 | |
MasterDuke | i found this a little confusing: MVMuint64 mp_get_int64 | ||
c: 006be40 | (Luca Ferrari)++ | doc/Language/objects.pod6: Reword the private method section |
|||
c: 5359d4c | (Luca Ferrari)++ | doc/Language/objects.pod6: Autopunning of a role creates a class and instantiate an object. |
|||
c: 45b3701 | (Tom Browder)++ | doc/Language/ (2 files): Merge pull request #946 from fluca1978/master A few improvements |
|||
17:29
wamba joined
|
|||
psch | j: use nqp; my \l := nqp::list; say nqp::setelems(l, 2**64); nqp::bindpos(l, $_, 1) for do $_ ** 10 for ^21; say nqp::elems(l) | 17:30 | |
MasterDuke | and then later in the function: if (bits > 64) { MVM_exception_throw_adhoc(tc, "Cannot unbox %d bit wide bigint into native integer", bits); } | ||
camelia | rakudo-jvm 2a1605: OUTPUT«()java.lang.OutOfMemoryError: Java heap space in block <unit> at <tmp> line 1» | ||
psch isn't actually sure if that's a sensible thing to do..? | |||
the point being, i'm only assigning 21 elements | |||
AlexDaniel | MasterDuke: where's that? | ||
MasterDuke | is that error message precisely correct on 32bit machines | ||
? | |||
MoarVM/src/6model/reprs/P6bigint.c | 17:31 | ||
psch | oh, i swapped the operand order for ** | ||
j: use nqp; my \l := nqp::list; say nqp::setelems(l, 2**64); nqp::bindpos(l, $_, 1) for do 10 ** $_ for ^21; say nqp::elems(l) | |||
camelia | rakudo-jvm 2a1605: OUTPUT«()java.lang.OutOfMemoryError: Java heap space in block <unit> at <tmp> line 1» | ||
timotimo | MasterDuke: our native integers are always 64bit | ||
psch | ...i think | ||
aaanyway, yeah, there's a different challenge for array sizes on jvm as well | |||
timotimo | hooray, it's never easy | 17:32 | |
psch | i assume whatever moar will do will be somewhat portable | ||
AlexDaniel | MasterDuke: don't assume that something is correct with 32-bit rakudo. Just test it | ||
arnsholt | In Java checking for overflow is easy though! | ||
psch | but only if it does introduce another layer of abstraction | ||
and, well, more abstraction on java clearly is a slow thing, so uhm | |||
arnsholt | You can just stuff it in a long and do it stupidly, since Java array indices are only ints =D | ||
But yeah, native ints on JVM are long, not int | |||
AlexDaniel | MasterDuke: for a while I had 32-bit rakudo and found a bunch of bugs this way ;) | 17:33 | |
arnsholt | And nums are double, not float | ||
MasterDuke | i don't currently have a 32bit machine | ||
17:33
erdic left
|
|||
AlexDaniel | yeah… me too… | 17:33 | |
timotimo | just fire up a qemu :) | ||
psch | m: use NativeCall; say nativesizeof(my int $ = 0) | ||
camelia | rakudo-moar 2285d3: OUTPUT«NativeCall op sizeof expected type with CPointer, CStruct, CArray, P6int or P6num representation, but got a P6opaque (Int) in sub nativesizeof at /home/camelia/rakudo-m-inst-2/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) li…» | ||
psch | feh | 17:34 | |
m: my int $x = 0; use NativeCall; say nativesizeof($x) | |||
camelia | rakudo-moar 2285d3: OUTPUT«NativeCall op sizeof expected type with CPointer, CStruct, CArray, P6int or P6num representation, but got a P6opaque (Int) in sub nativesizeof at /home/camelia/rakudo-m-inst-2/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) li…» | ||
MasterDuke | turns out i have a 32bit XP vm sitting around | ||
17:34
flexibeast left
|
|||
psch | why is int suddenly P6opaque..? | 17:34 | |
j: my int $x = 0; use NativeCall; say nativesizeof($x) | |||
camelia | rakudo-jvm 2a1605: OUTPUT«(timeout)» | ||
MasterDuke | not sure i want to try and do anything useful in it though | ||
psch | ooh boy | ||
i guess i really don't know enough about NC :P | 17:35 | ||
AlexDaniel | MasterDuke: there you go: github.com/perl6/whateverable/issues/43 | ||
18 open issues /o\ | |||
17:36
erdic joined
|
|||
psch | r: my int $x = 0; say $x.REPR | 17:38 | |
camelia | rakudo-moar 2285d3, rakudo-jvm 2a1605: OUTPUT«P6opaque» | ||
psch | r: use nqp; my int \x = 0; use NativeCall; say nativesizeof(nqp::getattr(x, Int, '$!value')) | 17:39 | |
camelia | rakudo-moar 2285d3: OUTPUT«Type check failed in binding; expected int but got Int (0) in block <unit> at <tmp> line 1» | ||
..rakudo-jvm 2a1605: OUTPUT«(timeout)» | |||
psch walks away | |||
timotimo | o_O | 17:43 | |
AlexDaniel | bisectable6: oh you poor soul… | ||
dalek | osystem: 235c98a | (Tom Browder)++ | META.list: another try at a link to tar ball per irc with ugexe |
17:50 | |
17:51
bisectable6 joined
17:52
awwaiid left
17:53
awwaiid joined
17:54
bisectable6 left
17:55
bisectable6 joined
17:58
bisectable6 left,
bisectable6 joined
17:59
bisectable6 left
|
|||
lucs | m: my $foo = 'FOO'; print q:s'\latexstuff{$fooBAR} # How to get 'FOOBAR', with scalar interpolation, but no closure ones (to avoid having to escape all the '{')? | 18:00 | |
camelia | rakudo-moar 2285d3: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Variable '$fooBAR' is not declaredat <tmp>:1------> 3my $foo = 'FOO'; print q:s'\latexstuff{7⏏5$fooBAR} # How to get 'FOOBAR', with sca» | ||
psch | m: say q{foo\qq[{"bar".succ}]} | 18:01 | |
camelia | rakudo-moar 2285d3: OUTPUT«foobas» | ||
psch | lucs: ^^^ you can switch between q and qq inside any quoted string | ||
m: say "foo \q[{ bar }]" # ther other way around | |||
camelia | rakudo-moar 2285d3: OUTPUT«foo { bar }» | ||
psch | s/ther/the/ | 18:02 | |
18:03
setty1 left
|
|||
lucs | Hmm... Interesting. | 18:03 | |
psch | i *think* we also have a modifier for qq that only supresses closures | ||
m: say qq:s[foo { 1 + 1 }] | 18:04 | ||
camelia | rakudo-moar 2285d3: OUTPUT«foo 2» | ||
psch | ...well, that's not it | ||
m: say qq:S[foo { 1 + 1 }] | |||
camelia | rakudo-moar 2285d3: OUTPUT«5===SORRY!5=== Error while compiling <tmp>Unrecognized adverb: :Sat <tmp>:1------> 3say qq:S7⏏5[foo { 1 + 1 }]» | ||
psch | yeah, no idea. i don't know if it's doc'd either | ||
18:04
Actualeyes left
18:05
rgrinberg left
|
|||
lucasb | m: say qq:!c/oh { 2 + 2 }/ | 18:06 | |
camelia | rakudo-moar 2285d3: OUTPUT«oh { 2 + 2 }» | ||
18:07
Matt_ joined,
Matt_ is now known as Guest23616
18:11
Guest23616 left
|
|||
lucs | m: my $foo = 'FOO'; print "\\latexstuff\{{$foo}BAR} ", q:s'\latexstuff{$foo\qq{}BAR}' # Both are LTA :( | 18:13 | |
camelia | rakudo-moar 2285d3: OUTPUT«\latexstuff{FOOBAR} \latexstuff{FOOBAR}» | ||
18:14
girafe joined
|
|||
lucasb | m: my $foo = 'FOO'; say q:s'\oh{$foo<>BAR}', q:s'\oh{$foo[]BAR}', q:s'\oh{$foo{}BAR}' | 18:17 | |
camelia | rakudo-moar 2285d3: OUTPUT«\oh{FOOBAR}\oh{FOOBAR}\oh{FOOBAR}» | ||
18:17
bazzaar left
|
|||
gfldex | m: sub latexstuff(|c){ '\latexstuff{' ~ c ~ '}' }; my $foo = 'FOO'; say latexstuff($foo ~ 'BAR'); | 18:17 | |
camelia | rakudo-moar 2285d3: OUTPUT«\latexstuff{FOOBAR}» | ||
psch | oh my what | ||
dalek | ateverable: 8ec09c6 | (Aleks-Daniel Jakimenko-Aleksejev)++ | Bisectable.p6: Bail out if there is something wrong Not sure why this forgotten, but it is essential (in fact, it was working properly before the rewrite). Tests needed. |
||
psch | so i ordered takeout | 18:18 | |
and it just arrived | |||
but there was some kind of weird interaction between me using the doorbell receiver/speaker thing | |||
and the delivery guy ringing the doorbell again | |||
and now it wont stop ringing | |||
i dismantled part of the speaker-thingy in our flat and it stopped, but if i reassemble it it starts again | 18:19 | ||
lucs | lucasb: That's pretty good. I don't understang how they work, but hey, there they are :) | ||
psch | i'm really unsure what to do | ||
lucs | lucasb: Thanks. | ||
18:19
bisectable6 joined
|
|||
gfldex | m: my $foo = 'BAR'; say $foo<>; | 18:20 | |
camelia | rakudo-moar 2285d3: OUTPUT«BAR» | ||
gfldex | lucs: see docs.perl6.org/language/subscripts#Zen_slices | 18:21 | |
lucs | gfldex: Thanks | ||
psch | the lesson is clearly "don't order takeout" | ||
i think | |||
lucasb | psch: what food did you order? | ||
psch | lucasb: a "Kebap Teller" with extra feta | 18:22 | |
18:22
pmurias joined
|
|||
lucasb | hmm, yummy | 18:22 | |
.botsnack | |||
synopsebot6 | om nom nom | ||
yoleaux | :D | ||
gfldex | you could get yourself one of those big cast iron castle-dracula-doornockers | ||
psch | right now i'm going with "it's gonna stop eventually" | 18:23 | |
which, honestly, seems really unlikely | |||
cause the board and all looks lots digital so it's probably reach some weird racey edge case and is stuck | |||
MasterDuke | have you tried kinetic debugging? | 18:24 | |
psch | well, i did rip off the speaker... | ||
18:24
awwaiid left
|
|||
MasterDuke | threaten it with a hammer | 18:24 | |
psch | i'm gonna eat first :S | 18:25 | |
18:25
awwaiid joined
18:28
dalek joined,
ChanServ sets mode: +v dalek
|
|||
AlexDaniel | What's the first rakudo release that had support for moarvm? | 18:36 | |
psch | yey, it fixed itself | 18:37 | |
the speaker/doorbell thingy | |||
lucasb | hmm, back in 2012? | ||
psch | afair the nqp refactor that made nqp-m work was instrumental in making nqp-j work | 18:38 | |
AlexDaniel | 2013.11 ? github.com/rakudo/rakudo/commit/0a...0aa36f0d4b | ||
psch | the first moar relase was 2014.01, according to www.moarvm.org/releases.html | ||
AlexDaniel | ah, 2014.01 indeed | 18:39 | |
18:48
awwaiid left
18:50
awwaiid joined
18:51
domidumont left
18:55
woolfy left
19:05
awwaiid left
19:06
_slade_ joined,
awwaiid joined
|
|||
dalek | ateverable: 2bf7d40 | (Aleks-Daniel Jakimenko-Aleksejev)++ | build.p6: Stop attempting to build pre-moar tags 2014.01 is the first rakudo release with MoarVM support. Given that we cannot build parrot or anything else, let's just cut off older tags. |
19:17 | |
19:19
andrzejku_ left
19:20
emmmmm joined,
emmmmm left
19:24
darutoko- left
19:25
jabits joined
|
|||
lucasb | m: role A::B::C[::T] {}; say A::B::C[Int].new.^shortname | 19:27 | |
camelia | rakudo-moar 3ca0f8: OUTPUT«C[Int]» | ||
lucasb | m: role A::B::C[::T] {}; say A::B::C[Int].^shortname | ||
camelia | rakudo-moar 3ca0f8: OUTPUT«A::B::C[Int]» | ||
lucasb | oops, I meant to eval this in #perl6-dev | 19:28 | |
psch | D: | ||
lucasb | MasterDuke++ for taking a look at it | ||
psch | MasterDuke++ indeed | ||
lucasb | but the shortname should be... short :) | 19:29 | |
19:29
awwaiid left
|
|||
psch | m: class A { class B { class C { } } }; say A::B::C.^shortname | 19:29 | |
camelia | rakudo-moar 3ca0f8: OUTPUT«C» | ||
psch | hmm, yeah, that's a valid concern | ||
19:30
awwaiid joined
|
|||
dalek | osystem: bc28e60 | (Tom Browder)++ | META.list: another META6.json fix |
19:32 | |
19:33
kaare_ left
19:34
labster joined
19:41
DrBojingle joined
19:42
pierre_ joined
|
|||
DrBojingle | What kind of projects are you guys using Perl6 for? | 19:42 | |
psch | the last not-backend thing i did was github.com/Perl6-Noise-Gang/p6-Music-Helpers | 19:45 | |
which is a library for generating musical cadences | |||
it might have bitrotted a bit 'cause i didn't quite find the time to work on it in a few months | 19:46 | ||
19:47
pierre_ left
|
|||
masak | DrBojingle: I'm implementing a language using Perl 6. (though it's slightly dogfooding, since the language is also exploring macro mechanisms, and the lessons are then meant to be used in Perl 6 itself.) | 19:49 | |
moritz is about to earn shitloads of money by giving a perl 6 training course | 19:52 | ||
19:53
awwaiid left
|
|||
lucasb | moritz: will your material be available afterwards? :) | 19:54 | |
19:54
awwaiid joined
|
|||
DrForr | moritz: Heh, I finally got paid for my training course yesterday. | 19:55 | |
20:03
TEttinger joined
20:05
jabits left
20:06
HoloIRCUser2 joined,
DrBojingle left
20:07
HoloIRCUser3 joined
|
|||
masak was reminded by the above to keep pushing for putting out an abstract for a Perl 6 course on his employer's web site | 20:09 | ||
20:10
HoloIRCUser2 left
20:11
mohae joined,
HoloIRCUser3 left,
HoloIRCUser1 joined
20:12
HoloIRCUser2 joined
20:13
mohae_ left
20:16
HoloIRCUser1 left
|
|||
[ptc] | moritz: where will you be giving it? | 20:17 | |
20:18
woolfy joined
20:20
woolfy left
20:24
awwaiid left
20:25
wongjtf99 joined,
awwaiid joined
|
|||
wongjtf99 | ok, does anyone know of an up to date Perl 6 book/ebook that i can purchase? | 20:26 | |
gfldex | wongjtf99: we don't got that yet, maybe in a few month | 20:27 | |
wongjtf99: see www.reddit.com/r/perl/comments/557..._6_books/) | 20:28 | ||
20:33
labster left
20:37
smee joined
|
|||
moritz | lucasb: not clear yet | 20:37 | |
[ptc]: Berlin | |||
20:37
smee left
|
|||
moritz | lucasb: it'll be a fairly small group (2-4 devs), so I won't have too much slides or so anyway, much will be interactive/dicussions/exercises | 20:38 | |
and maybe I'll do a code kata or two | |||
timotimo | cool | 20:39 | |
moritz | nothing final yet, though | 20:40 | |
(oh, and it'll be all in German, so not very interesting for the broader audience) | 20:42 | ||
lizmat | moritz++ | 20:44 | |
:-) | |||
moritz | ... and I wonder if my next big project should be a book on Perl 6 | 20:45 | |
20:45
bjz joined
|
|||
moritz | anybody else wondered if they should write a book on Perl 6, and just needed the right trigger? we could join forces :-) | 20:46 | |
DrForr | I've been approached several times; I just don't know if I could do the subject justice. | 20:47 | |
moritz | DrForr: that's your imposter syndrome talking | 20:48 | |
20:49
awwaiid left
|
|||
DrForr | I'm aware. | 20:49 | |
timotimo | become a Subject Justice Warrior? :) :) | ||
MasterDuke | will the real DrForr please stand up? | ||
20:49
awwaiid joined
|
|||
moritz | DrForr: I'd certainly be interested in a collaboration; I'll write up some thoughts and paste it in a gist | 20:53 | |
20:54
TEttinger left
|
|||
DrForr | Nod. | 20:55 | |
21:01
labster joined
|
|||
AlexDaniel | m: sub foo { once { say "HELLO! THIS IS PRINTED ONCE" }; foo if $++ < 5 }; foo | 21:09 | |
camelia | rakudo-moar 3ca0f8: OUTPUT«HELLO! THIS IS PRINTED ONCE» | ||
AlexDaniel | m: sub foo { if True { once { say "HELLO! THIS IS PRINTED ONCE" } }; foo if $++ < 5 }; foo | ||
camelia | rakudo-moar 3ca0f8: OUTPUT«HELLO! THIS IS PRINTED ONCEHELLO! THIS IS PRINTED ONCEHELLO! THIS IS PRINTED ONCEHELLO! THIS IS PRINTED ONCEHELLO! THIS IS PRINTED ONCEHELLO! THIS IS PRINTED ONCE» | ||
AlexDaniel | ¯\_(ツ)_/¯ | 21:10 | |
21:10
Ven_ joined
|
|||
gfldex | is this a newbug? | 21:10 | |
21:11
cgfbee left
|
|||
AlexDaniel | gfldex: I have no idea | 21:11 | |
so once means maybe once | 21:12 | ||
gfldex | it does not. It's like a block that is guarded by a state variable | 21:13 | |
21:13
awwaiid left
|
|||
gfldex | i can see any RT for this. Please rakudobug. | 21:13 | |
21:14
awwaiid joined
|
|||
gfldex | m: sub f { { once { say 'oi‽' } } }; f; f | 21:15 | |
camelia | rakudo-moar 3ca0f8: OUTPUT«oi‽oi‽» | ||
gfldex | AlexDaniel: ^^^ golfed | ||
21:15
HoloIRCUser1 joined,
HoloIRCUser2 left,
HoloIRCUser2 joined
|
|||
lizmat | m: sub f { { { say "oi‽" } unless $++ } }; f; f # same issue / DIHWIDT | 21:16 | |
camelia | rakudo-moar 3ca0f8: OUTPUT«oi‽oi‽» | ||
21:17
xxdxdd joined
|
|||
lizmat | aka, the once is bound to its scope, not to the outer sub | 21:17 | |
and I think that is intentional | 21:18 | ||
gfldex | if it's intentional we need to doc that | 21:19 | |
21:19
HoloIRCUser1 left
|
|||
AlexDaniel | .oO( and a good way to doc it is “do not use 「once」” ) |
21:20 | |
really, I've been bitten by this thing too many times | |||
21:20
HoloIRCUser1 joined
|
|||
AlexDaniel | you move some stuff around and BOOM! It no longer does what you mean | 21:20 | |
moritz | DrForr, [ptc], everybody else: gist.github.com/moritz/29301316955...90e4ce9e7b | 21:21 | |
feedback would be very welcome | |||
21:21
cgfbee joined,
HoloIRCUser3 joined,
HoloIRCUser2 left
|
|||
MasterDuke | i love the idea of once, but it seems really tricky to get it to do what everybody expects in every situation | 21:21 | |
jnthn | Every issue you can create with `once` has an equivalent state var issue | 21:22 | |
It ties into the discussion in design.perl6.org/S04.html#When_is_..._a_closure | |||
DrForr | Are you planning to be at LPW, FOSDEM or OSCON? | 21:23 | |
(moritz) | |||
moritz | one of my favorite sections of the design docs :-) | ||
DrForr: no plans yet, which likely means "no" :( | |||
maybe YAPC::EU in Amsterdam, but that's like, 10 months away :/ | 21:24 | ||
DrForr | I know :/ | ||
jnthn | In short, closure clones (by design) produce a fresh set of state vars | 21:25 | |
21:25
HoloIRCUser1 left
|
|||
jnthn | Which is what you want in, say, sub accumulater() { return { ++state $ } } or so | 21:25 | |
moritz | anyway, I really need to get some sleep now | ||
jnthn | 'night, moritz | ||
moritz | will backlog of anybody hilights me; thoughts via other channels on that gist would be very welcome too | 21:26 | |
\o~ | |||
DrForr | moritz: I like the look from a cursory glance, but I'm needing to get to bed as well. | ||
o/' | |||
moritz | DrForr: sure, will talk tomorrow | ||
21:29
eliasr joined
21:30
stevieb left
21:31
xxdxdd left
|
|||
gfldex | jnthn: does that mean the behaviour of once we got right now is by design? | 21:33 | |
21:36
awwaiid left
|
|||
AlexDaniel | “The semantics of INIT and once are not equivalent to each other in the case of cloned closures. An INIT only runs once for all copies of a cloned closure. A once runs separately for each clone, so separate clones can keep separate state variables:” | 21:37 | |
21:38
awwaiid joined
|
|||
jnthn | gfldex: Well, it means that if we want to consider, say, if blocks differently, we're going to have to introduce a mechanism for doing so | 21:39 | |
21:39
ShimmerFairy left
|
|||
jnthn | gfldex: And rules for when it applies | 21:39 | |
gfldex: And it'll get "interesting" fast, I suspect (consider which side of the sense a while loop should land on, for example) | 21:40 | ||
(Especially when considering return lazy while ... style things which can be lazily evaluated.) | 21:41 | ||
21:41
labster left
|
|||
AlexDaniel | well, it would be nice if 「once」 meant once always | 21:42 | |
jferrero | m: say 4 == (1E12.log10 / 3).Int | ||
camelia | rakudo-moar 6977b8: OUTPUT«False» | ||
lucasb | in that reddit thread, the laurent_r user said he had written a book which was getting reviewed. does anybody knows him? I'd love to be a reviewer :) | 21:43 | |
21:43
pierre_ joined
|
|||
DrForr | He talked about it at YAPC, I think it was an LT on the last day. | 21:45 | |
21:45
firstdayonthejob joined
|
|||
dalek | osystem: e84bca2 | (Tom Browder)++ | META.list: update to v0.1.2 |
21:46 | |
lucasb | DrForr: I'll search if it is on youtube. thanks! | ||
DrForr | Should be up. | ||
21:48
pierre_ left
22:01
awwaiid left
22:02
labster joined
22:03
awwaiid joined,
FROGGS left
22:04
FROGGS joined
22:05
BenGoldberg left
|
|||
lucasb | found it! www.youtube.com/watch?v=dV5TR8UC6vU | 22:08 | |
starts around 13 minutes | |||
timotimo | which part are we interested in here? | ||
22:09
HoloIRCUser3 left,
HoloIRCUser4 joined
|
|||
lucasb | I was just looking for this person, who said he had written a book about P6 | 22:09 | |
timotimo | ah | ||
lizmat | Laurent Rosenfeld's announcement of the "Think Perl 6" book | ||
22:09
HoloIRCUser3 joined
|
|||
lucasb | based on the book how to think like a computer scientist | 22:09 | |
I read that book, the python version, a decade ago, I think. and I liked. | |||
timotimo has a review copy of that book that asks for it not to be spread without asking the author first | 22:10 | ||
lizmat | "The goal of this book is to teach you to think like a computer scientist.: | ||
but instead of using Python, it uses Perl 6 | |||
timotimo | right | ||
lizmat is proofreading | 22:11 | ||
22:12
awwaiid left
|
|||
timotimo | it has many pages | 22:12 | |
lizmat | 379 | 22:13 | |
(so far) | |||
22:13
HoloIRCUser4 left
|
|||
dalek | ateverable: 2702bd7 | MasterDuke17++ | Benchable.p6: Error out before saying anything Also use the correct pluralization when saying how many commits are being benchmarked. Fixes #37 |
22:14 | |
timotimo | i have one with 277 here | ||
lizmat | good night, #perl6! | ||
timotimo | gnite lizmat | 22:15 | |
22:19
yqt left,
yqt joined
22:20
BenGoldberg joined,
HoloIRCUser3 left
22:22
awwaiid joined
22:32
adrusi_ is now known as adrusi
22:37
awwaiid left
22:39
awwaiid joined
22:44
canopus left
22:50
canopus joined
22:52
bjz left
|
|||
tbrowder | nite lizmat! | 22:52 | |
22:53
bjz joined
22:57
RabidGravy left
23:00
obfusk left,
obfusk joined,
ocbtec left
23:01
awwaiid left
23:02
awwaiid joined
23:03
bjz left
23:08
nukosuke joined,
Ven_ left
23:12
nukosuke left
23:17
firstdayonthejob left
23:19
bjz joined
23:21
labster left
23:24
awwaiid left
23:25
awwaiid joined
23:35
grondilu left
23:42
girafe left
23:45
pierre_ joined
23:46
Zoffix joined
|
|||
Zoffix | How can I tell if I've got a native int? | 23:46 | |
m: my int $x = 2; say $x.^name | |||
camelia | rakudo-moar 6977b8: OUTPUT«Int» | ||
23:46
rindolf left
23:48
awwaiid left
23:49
buggable joined,
NeuralAnomaly joined,
awwaiid joined,
pierre_ left
23:50
labster joined
|
|||
timotimo | m: use nqp; my int $x = 4; my Int $y = 5; say nqp::objprimspec($x); say nqp::objprimspec($y); | 23:52 | |
camelia | rakudo-moar 6977b8: OUTPUT«00» | ||
timotimo | m: use nqp; my int $x = 4; my Int $y = 5; say nqp::objprimspec($x<>); say nqp::objprimspec($y<>); | ||
camelia | rakudo-moar 6977b8: OUTPUT«00» | ||
timotimo | m: use nqp; my int $x = 4; my Int $y = 5; say nqp::objprimspec(nqp::decont($x)); say nqp::objprimspec($y<>); | ||
camelia | rakudo-moar 6977b8: OUTPUT«00» | ||
timotimo | grmbl | ||
AlexDaniel | m: say ‘hello’; say ‘world’ | 23:56 | |
camelia | rakudo-moar 6977b8: OUTPUT«helloworld» | ||
Zoffix | m: use nqp; my int $x = 4; my Int $y = 5; say nqp::isint($x); say nqp::isint($y); | ||
camelia | rakudo-moar 6977b8: OUTPUT«00» |