»ö« 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:01
colomon joined
00:02
bpmedley left,
adu left
|
|||
cfedde | does perl6 have an idiom for line oriented file reading? kinda like while(<>){...} ? | 00:07 | |
00:07
pierre-vigier joined
|
|||
RabidGravy | .lines | 00:07 | |
m: for $*IN.lines -> $line { say ">>>", $line } | 00:08 | ||
camelia | rakudo-moar 3259ba: OUTPUT«>>>Céad slán ag sléibhte maorga Chontae Dhún na nGall>>>Agus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll;>>>Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luí>>>I mo dhiaidh bhí gleanntái…» | ||
TimToady | m: for lines() { .say } | 00:10 | |
camelia | rakudo-moar 3259ba: OUTPUT«Céad slán ag sléibhte maorga Chontae Dhún na nGallAgus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll;Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luíI mo dhiaidh bhí gleanntáin ghlas’ G…» | ||
Juerd | m: say lines | 00:11 | |
camelia | rakudo-moar 3259ba: OUTPUT«(Céad slán ag sléibhte maorga Chontae Dhún na nGall Agus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll; Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luí I mo dhiaidh bhí gleanntáin ghlas’ Ghaoth…» | ||
RabidGravy | m: lines>>.say | 00:12 | |
camelia | rakudo-moar 3259ba: OUTPUT«Céad slán ag sléibhte maorga Chontae Dhún na nGallAgus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll;Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luíI mo dhiaidh bhí gleanntáin ghlas’ G…» | ||
RabidGravy | anymore? | ||
00:12
_Vi left
|
|||
Juerd | If you don't mind parens: | 00:12 | |
m: lines.say | |||
camelia | rakudo-moar 3259ba: OUTPUT«(Céad slán ag sléibhte maorga Chontae Dhún na nGall Agus dhá chéad slán ag an Eireagal ard ina stua os cionn caor is coll; Nuair a ghluais mise thart le Loch Dhún Lúich’ go ciúin sa ghleann ina luí I mo dhiaidh bhí gleanntáin ghlas’ Ghaoth…» | ||
cfedde | TIE5WTDI | 00:13 | |
00:13
pmurias_ left
|
|||
Juerd | s/I/A/? | 00:13 | |
cfedde | s/I/A/ | ||
Juerd | TAPMT5WTDI | ||
RabidGravy | :) | ||
cfedde | s/M/MM/ | 00:14 | |
00:18
keix left
|
|||
cfedde | are there idioms I should be reading about to use perl6 as a cli tool? ansible blablabla | perl6 -e 'summarize the good bits' | 00:20 | |
00:22
sortiz joined
00:25
Skarsnik left
|
|||
timotimo | state variables and END phaser come to mind, particularly when you use -ne | 00:33 | |
00:35
protium left,
psy_ left
|
|||
orbus | perl6: it's like perl5, only moreso | 00:35 | |
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfileMissing block (taken by some undeclared routine?)at /tmp/tmpfile:1------> 3it's like perl5, only moreso7⏏5<EOL> expecting any of: new name to be defined» | ||
..rakudo-jvm 6c0f93: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfileMissing blockat /tmp/tmpfile:1------> 3it's like perl5, only moreso7⏏5<EOL> expecting any of: new name to be defined» | |||
orbus | haha | ||
oops | |||
was afraid it might do that | |||
timotimo | m: Perl, Cool with any Version | 00:36 | |
camelia | ( no output ) | ||
timotimo | ^- i loved this one | ||
orbus | haha | ||
so, when does work start on perl7? | 00:38 | ||
moving ever closer to the platonic ideal of perl | 00:39 | ||
00:39
abaugher joined
|
|||
timotimo | the thing is, perl6 already allows a very big amount of making the language evolve without doing another break | 00:40 | |
orbus | I am mostly joking | 00:41 | |
although | |||
Juerd | orbus: 13 years from now | ||
orbus | there is a certain tendency in the technology world to view something as stagnant if numbers aren't going up | ||
Juerd | orbus: And then it'll take another 15 to complete, so expect Perl 7 in 2043. | 00:42 | |
orbus | haha | ||
00:42
keix joined
|
|||
Juerd | Perl 6 stuff started around 2000, when Perl 1..5 was already 13 years old. Etc. :) | 00:42 | |
orbus | right right | ||
1 2 3 4 5 6 .. Inf | 00:44 | ||
Juerd | m: my @p = 1, 2, 3, 4, 5, 6 ... Inf; say @p[42]; | 00:45 | |
camelia | rakudo-moar 3259ba: OUTPUT«43» | ||
cfedde | do we mark the beginning at the cup flinging event? | ||
Juerd | This sequence is kind of boring | ||
timotimo | i suppose so? | ||
orbus | so here's a question for the people familiar with perl6 guts | 00:46 | |
I wrote a (really horrible) program yesterday | 00:47 | ||
timotimo | uh-oh | ||
orbus | well, I've been toying off and on with implementing atomic compare and swap with high level structures | ||
just as a learning exercise mostly | |||
RabidGravy | right, toodles people | ||
orbus | anyway, I have a hash right? | 00:48 | |
that I need to share between threads | |||
timotimo | mhm | ||
orbus | so to control access to it | ||
I put it in a channel | |||
some worker grabs it | |||
operates on it | |||
then sticks it back in the channel for someone else to grab | |||
timotimo | mhm | ||
orbus | and I basically got that working | ||
but the program got slower and slower the longer it ran | 00:49 | ||
timotimo | i don't see why you don't just have a monitor from IO::Monitors control it | ||
oh? | |||
orbus | mostly because if this ever pans out it would potentially go in core | ||
(although a vm level implementation is probably more correct) | |||
but yeah | |||
it was getting slower and slower and slower - I started doing deletes from the hash | 00:50 | ||
timotimo | i'm not sure why that'd be something to go into core. i don't see what the benefit is over using a simple Lock | ||
orbus | atomic compare and swap is in the spec | ||
and there's a function for it | |||
it's just not actually implemented | |||
there's a stub implementation now | |||
that doesn't actually do anything | |||
timotimo | ah | ||
orbus | I wanted to make it do something | ||
I had a working implementation with a lock | 00:51 | ||
but it was kind of a global lock | |||
and nine suggested I try to make it more granular | |||
which I agree with, but I've been wrestling with it off and on ever since | |||
I think I've maybe hit some concurrency bugs too | |||
00:52
RabidGravy left
|
|||
orbus | some of the things I tried look like they should work but randomly fail | 00:52 | |
timotimo | hmm | ||
orbus | so it's either my poor programming or there's unfound bugs | ||
maybe both | |||
anyway | |||
I'm just trying to figure out why it's getting slower | |||
when you delete from a hash, does it free any memory? | |||
or does the has reserve memory for more stuff to be put in? | 00:53 | ||
hash* | |||
00:53
prammer joined
|
|||
orbus | oh | 00:54 | |
also | |||
I'm populating the hash with promises | |||
:D | |||
potentially thousands of them | |||
that could also be the culprit I guess | |||
00:54
Actualeyes joined
|
|||
timotimo | i don't very good at concurrency internals | 00:54 | |
orbus | yeah, no worries | 00:55 | |
I'm just curious mostly | |||
timotimo | like, do we create a mutex when we build a promise? | ||
00:55
prammer left
|
|||
orbus | don't know how it's implemented | 00:55 | |
timotimo | why not look at it? :) | ||
orbus | I may | ||
timotimo | yeah, every Promise has a Lock in it | 00:56 | |
orbus | most of my C knowledge flew out of my head years ago | ||
I could probably figure it out eventually | |||
a Promise basically feels like a one-time use lock | |||
so that's not terribly surprising | |||
timotimo | oh, i didn't mean to look into the moarvm C code | ||
just into Promise.pm | 00:57 | ||
really all it has is create a lock and lock and unlock it with nqp::lock and nqp::unlock | |||
orbus | yeah | ||
I think I did look in there | |||
most of the concurrency stuff ultimately falls back to the vm level | |||
from what I saw | |||
timotimo | of course | ||
orbus | anyway, I'm just messing around with it mostly | 00:59 | |
and learning more about the concurrency features | |||
I was working on Supplies yesterday | |||
and learned quite a bit | |||
timotimo | supplies are cool, definitely | 01:00 | |
orbus | probably need to talk to jnthn whenever he comes back - there's a couple questions I want to ask that he might be the best person to answer | ||
timotimo | interestingly, supplies are less about introducing concurrency, but about limiting concurrency | ||
orbus | well sure | 01:01 | |
in a way that goes for all the concurrency primitives | |||
it's easy to do a bunch of stuff at the same time | |||
it's hard to make it work together and not stomp all over each other | |||
timotimo | :) | ||
that's right | |||
it's especially important with regards to our simple data structures, like arrays | 01:02 | ||
resizing arrays concurrently makes things explode | |||
i think the only thing that has a lock "in it" is IO stuff like file handles | |||
orbus | yeah, see that's what I kind of wanted to ask jnthn about - what operations are actually guaranteed to be atomic | 01:03 | |
I *think* scalar assignment is, but maybe not if you're doing object creation in the assignment | |||
nobody seems to have done a real writeup on the topic that I can find | 01:04 | ||
just bits and pieces a few places | |||
I do know about the array growth thing | |||
timotimo | right, that could be very interesting | ||
but i also don't know what our future plans are | |||
like, i seem to recall that jnthn wanted to make some things more threadsafe | |||
orbus | would be nice to know | ||
timotimo | the thing about scalar assignment is that it depends on how the bytecode itself gets generated | 01:05 | |
01:05
harpactocrates left,
BenGoldberg left
|
|||
orbus | it gets very tricky to do some kinds of work if you don't have any guarantees on what's safe | 01:05 | |
coordinator / worker type stuff should work well with what there is now | 01:06 | ||
but some other things get tricky | |||
01:07
BenGoldberg joined
|
|||
orbus | like the compare and swap thing turned out to be a lot harder than I thought it would be - especially if I didn't want to just throw a big lock around it | 01:07 | |
but even with the big lock I was hitting mysterious race conditions I didn't really understand | |||
and still don't | |||
it would *usually* work | |||
timotimo | huh. | 01:08 | |
orbus | I thought it had to do with state variable initialization not being threadsafe | ||
timotimo | obviously, if things are locked, things shouldn't b0rk | ||
orbus | but now I think it's something more subtle | ||
because I've seen some other weird stuff | |||
timotimo | ah, could be, actually | ||
orbus | well | ||
I got rid of the state variable | |||
timotimo | i could very well imagine state variables could be race-y | ||
orbus | but it was still doing bad things | 01:09 | |
like what was actually happening is | |||
I made the lock a global variable | |||
initialize it right at the top of the script | |||
01:09
muraiki joined
|
|||
orbus | before any concurrent stuff starts | 01:09 | |
but then when all the threads were running | |||
every once in a while | |||
it would crash and say I was trying to call protect on an uninitialized variable | 01:10 | ||
the Lock was originally a state varialbe | |||
but even when I made it global, it did the same thing | |||
usually worked, but occasionally blew up | |||
so I suspect there's some subtle internal race in there someplace | 01:11 | ||
timotimo | huh! | ||
it'd be great if you could golf that | |||
01:11
prammer joined
|
|||
orbus | like make it a one liner? | 01:12 | |
it's not a lot of code to begin with | |||
01:12
[particle] left
|
|||
timotimo | not a single line necessarily; just reduce the amount of different concepts involved | 01:12 | |
01:12
_Gustaf__ joined
|
|||
orbus | I have some examples - my hands are kind of tired now | 01:13 | |
typing all day | |||
01:13
[particle] joined
|
|||
timotimo | sure, don't overstress your hands, they are a vital part of your body :S | 01:13 | |
01:13
_Gustaf_ left
|
|||
orbus | especially for us computer guys | 01:13 | |
timotimo | i'm quite glad i haven't had wrist pain in a few months, i think | ||
orbus | lucky - mine's been acting up | ||
timotimo | though my "mouse hand" is not quite happy for some reason; not in a way that "acts up", just not so cool in general | 01:14 | |
orbus | messing with perl6 in the evening after typing all day at work is partly to blame | ||
:p | |||
I started alternating mouse hands between home and work years ago | |||
because of wrist pain | |||
helps some | |||
timotimo | ah | 01:15 | |
i have a stretching exercise i can do to make it better | |||
it hurts like crazy while doing it, but the pain subsides extremely quickly | |||
orbus | I probably need one | ||
muraiki | I was having some bad hand pain. I ended up going to physical therapy and it turned out the problem actually was rooted in my neck and shoulders. strengthening those areas with light weight training made a huge difference | 01:16 | |
timotimo | the one i do is i stand up in front of my desk, put the hand down flat on the table with the fingers pointing towards my belly and the thumb to the "outside" (as in: right hand's thumb points to the right, left hand's thumb would point to the left) | ||
then i go through each finger and lift it up a bit | 01:17 | ||
it works pretty much completely painless on my left hand, but it's hard to do on my right hand | |||
orbus | huh | ||
I'll have to give that a try | |||
muraiki | but whatever happens if you are having pain in your hands, address it sooner rather than later | ||
01:17
cognominal left
|
|||
timotimo | interesting | 01:17 | |
orbus | muraiki: I really need to go see a chiropractor or something - back's not so hot either | ||
timotimo | i need to see someone about my feet, too :\ | 01:18 | |
muraiki | I found that a standing desk also helped, but it wasn't enough. for me, at least, I needed to actually strengthen the muscles that were the root cause, not just stretch or stand | ||
orbus | there's a guy at work who has a standing desk | ||
timotimo | fair enough | ||
orbus | I don't think I could stand all day | 01:19 | |
muraiki | well, standing all day is also bad for your body | ||
the intent is to alternate between sitting and standing, and to move around a bit | |||
timotimo | standing gives me knee pain very quickly :( | ||
orbus | oh weird - monoprice put snacks in with my cable order | ||
muraiki | ultimately my point is that if you are having pain, you need to find someone who help you treat it properly as it's very much an individual case | ||
timotimo | potentially related to the foot thing | 01:20 | |
orbus | yeah, I agree | ||
just... lazy | |||
muraiki | I already have one friend who basically cannot type or even play video games outside of work, if he wants to continue being a programmer | ||
timotimo | ;( | ||
muraiki | and he's only in his early 30s :( | ||
timotimo | that realyl sucks | ||
orbus | well, I'm going to go see if I can get this hdmi switch to play nice with ubuntu | 01:22 | |
later all | |||
timotimo | i want a hdmi switch, too ... | 01:23 | |
good luck! | |||
orbus | first one I got was no good | ||
but this one is powered | |||
so I"m hoping for better results | |||
01:23
prammer left
|
|||
orbus | problem I'm having now is the linux desktop won't come back after switching - just found and xfce setting that may help | 01:23 | |
01:24
lichtkind left
|
|||
timotimo | i mostly use the xrandr CLI tool, tbh | 01:25 | |
it has a few really cool switches. like when you're giving a talk somewhere and the projector has an aspect ratio that differs from your laptop and due to the built-in display not supporting the given resolution of the projector, you can't just "mirror displays", so i just use --scale-from and be happy | 01:27 | ||
01:27
peter__ joined
|
|||
orbus | I used xrandr to get it back last time | 01:27 | |
but I want the desktop to come back when I switch between inputs on the switch | |||
for whatever reason on this system | |||
if you unplug hdmi | |||
the desktop doesn't come back | |||
unless you ssh in and fiddle with xrandr | |||
timotimo | hum. it doesn't notice, eh? | ||
orbus | think so | 01:28 | |
timotimo | oh, it won't even give you a virtual terminal on ctrl-alt-f*? | ||
orbus | I just found something where it may be an xfce problem | ||
nope | |||
display gets messed up somehow | |||
timotimo | that seems more like a video driver problem :( | ||
orbus | not sure | ||
found an article that's worth a try | |||
I have a tv with three unputs and I want to put the computer, playstation and maybe some other stuff on the switch | 01:29 | ||
but if I can't get the computer to play nice, I'll just have to reorganize | |||
Juerd | *** Error in `/home/juerd/.rakudobrew/moar-nom/install/bin/moar': free(): invalid size: 0x00007efde41d3bb0 *** | 01:33 | |
Is that cause for concern? | |||
And what could I do to gather more information about the problem if I wanted to report the bug? | |||
01:35
adu joined
01:37
prammer joined
01:38
prammer left
|
|||
timotimo | Juerd: you can compile your moarv mwith --asan | 01:38 | |
01:39
ParsonsNose left
|
|||
Juerd | rakudobrew build moar --asan? | 01:39 | |
01:39
prammer joined,
lokien_ left
01:40
prammer left
|
|||
timotimo | nah | 01:41 | |
no clue how to make rakudobrew set that flag | |||
i'd just cd into that folder and configure & compile it yourself | |||
Juerd | Where does the --asan go? | 01:42 | |
configure? make? | |||
timotimo | configure | ||
Juerd | Configure.pl doesn't like --asan | 01:43 | |
timotimo | only moarvm's configure.pl | 01:44 | |
perhaps it has --moar-option= | |||
Juerd | How can I tell if it worked or was ignored? | ||
timotimo | things will become a lot slower | ||
Juerd | Should this be noticeable in 'Stage parse'? | 01:45 | |
timotimo | yeah | ||
asan isn't nearly as slow as valgrind, but it has an impact | |||
like 3x perhaps? | |||
Juerd | I'm now using tools that I don't really understand, with an option that I've never before heard of. | 01:46 | |
Guessing the syntax... | |||
Nope, didn't work. | |||
timotimo | you can lld the moar executable i expect | ||
Juerd | Sorry, I'm going to need more hand-holding I'm afraid | 01:47 | |
geekosaur | ldd? (lld might produce surprises...) | ||
timotimo | er | ||
Juerd | I think I'll just go to bed. Maybe another time. | 01:48 | |
timotimo | damn you, rakudobrew ;) | 01:50 | |
01:53
linuxuser9000 left,
xpen joined
01:58
peter__ left
02:02
cognominal joined
02:04
kjk joined
02:09
mrons joined
|
|||
dalek | osystem: bea825e | (Pierre VIGIER)++ | META.list: Add Attrx::PrivateAccessor to ecosystem Automatic creation of private accessor for private attribute See: github.com/pierre-vigier/Perl6-Att...teAccessor |
02:09 | |
osystem: d646512 | (Zoffix Znet)++ | META.list: Merge pull request #122 from pierre-vigier/master Add Attrx::PrivateAccessor to ecosystem |
|||
02:11
pierre-vigier left
02:12
prammer joined
02:13
peter__ joined
02:14
peter__ left
02:18
prammer left
02:19
adu left
02:20
pierre-vigier joined
02:23
bitmap left
02:24
bitmap joined
02:25
Guest82811 left
02:28
adu joined,
colomon left
02:29
colomon joined
02:41
leont left
02:42
MadcapJake left
02:43
protium joined
02:45
ilbot3 left
02:48
ilbot3 joined,
keix left
02:49
keix joined
02:50
noganex joined
02:51
zhi joined
02:52
Util_ joined,
garu_ joined,
b^_^d joined,
mls_ joined,
pjcj_ joined,
mspo_ joined,
silug left,
jast left,
mls left,
cosarara left,
wtw left,
Util left,
mspo left,
literal left,
pjcj left,
d^_^b left,
garu left,
cfloare left,
bowtie left,
avar left,
jast joined,
avar joined,
literal joined,
wtw joined,
muraiki left
02:53
noganex_ left,
daxim left,
sjohnson left,
jojotus left,
krakan left,
samb1 left,
avar left,
avar joined,
wtw left,
wtw joined,
Psyche^ left,
krakan joined,
daxim joined,
Psyche^ joined,
larion_ left,
muraiki joined,
larion joined,
samb1 joined,
cfloare joined,
bowtie joined
02:54
mspo_ is now known as mspo
02:55
molaf_ joined,
sjohnson joined,
MadcapJake joined
02:56
cosarara joined
|
|||
dalek | blets: 73b3a7f | lichtkind++ | docs/tablet-3-variables.txt: added permutations to 3 |
02:56 | |
blets: 023c70c | lichtkind++ | docs/appendix-b-grouped.txt: more links from B to G |
|||
blets: 950fa2c | lichtkind++ | docs/ (2 files): update list methods |
|||
02:58
krakan left,
molaf left
02:59
krakan joined
03:00
_Vi joined
03:03
silug joined
03:05
Actualeyes left
03:07
colomon left,
colomon joined
|
|||
pierre-vigier | dalek, thanks for the pull request | 03:23 | |
i'm trying to install Test::META | |||
however, it's failing with | |||
Could not find META6:ver<0.0.4..*> | |||
*resolve stage failed for META6:ver<0.0.4..*>: Project META6:ver<0.0.4..*> not found in the ecosystem) | |||
trying to install it through panda install Test::META | 03:24 | ||
( i already have an old version so , META6:ver<0.0.2>:auth<github:jonathanstowe>:api<> already installed ) | |||
03:27
molaf_ left
03:31
kid51 joined
|
|||
timotimo | is that syntax even supported? | 03:32 | |
timotimo disappears into bed | |||
pierre-vigier | not sure, it's a complaint from panda | 03:37 | |
03:48
pat_js left
03:52
domino5 joined
03:54
kid51 left
03:55
noganex_ joined
03:56
kid51 joined
03:57
noganex left
04:00
domino5 left
04:03
kid51 left
04:07
pierre-vigier left
04:10
muraiki left
04:11
pierre-vigier joined
04:12
adu left,
_Vi left
04:15
adu joined
04:16
yeahnoob joined
|
|||
dalek | osystem: f9b9c49 | (Zoffix Znet)++ | META.list: AttrX::PrivateAccessor's META.info renamed to META6.json |
04:17 | |
04:18
yqt left
04:21
kjk left
04:34
Calibellus left
04:36
_Vi joined,
pierre-vigier left
04:38
Actualeyes joined
04:40
pierre-vigier joined
04:45
skids left
04:48
BenGoldberg left
04:53
rickbike joined,
keix left
04:58
_Vi left
04:59
_Vi joined
05:07
protium left,
pierre-vigier left
05:10
MadcapJake left
05:11
pierre-vigier joined
05:25
notbenh left
05:28
peter__ joined
|
|||
pierre-vigier | Small question, how to Test a "BEGIN" time behavior, to check if it dies when needed? | 05:29 | |
even in a dies-ok , it dies before arriving there | |||
perigrin | I'm not a perl6 person but I'm awake ... if I were me I'd try BEGIN dies-ok | 05:30 | |
pierre-vigier | i'll try, i'm thinking to try eval-dies-ok | ||
perigrin | see if putting it in the phaser dwims. | 05:31 | |
pierre-vigier | and evaluate the code in run time | ||
llfourn | pierre-vigier: that's the ticket :) | ||
pierre-vigier | inded, eval-dies-ok wokrs | 05:34 | |
just needed to make sur to reimport my package in the evaluated string | |||
thanks | |||
llfourn | EVAL should inhert from the surrounding lexical scope | 05:35 | |
pierre-vigier | in my case, not sure why, it does not | ||
my module export a trait | |||
and the trait is not visible inside the Eval string | |||
llfourn | that is very strange | 05:36 | |
pierre-vigier | let me create a gist | ||
05:36
khw left
|
|||
pierre-vigier | switching eval-dies-ok to eval-lives-ok, to see the actual dying message | 05:36 | |
llfourn | m: sub trait_mod:<is>(Any, :$goof!) { "win".say }; use Test; eval-lives-ok 'class herp is goof { }'; | 05:37 | |
camelia | rakudo-moar 3259ba: OUTPUT«not ok 1 - # Failed test at /tmp/0tR1_8Jjcn line 1# Error: 'Test::herp' cannot inherit from 'goof' because it is unknown.» | ||
llfourn | hmMMmm | ||
m: sub trait_mod:<is>(Any, :$goof!) { "win".say }; use MONKEY-SEE-NO-EVAL; EVAL 'class herp is goof { }'; | 05:38 | ||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /home/camelia/EVAL_0Type check failed in binding <anon>; expected Any but got herpat /home/camelia/EVAL_0:1» | ||
llfourn | m: sub trait_mod:<is>(Any:U, :$goof!) { "win".say }; use MONKEY-SEE-NO-EVAL; EVAL 'class herp is goof { }'; | ||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /home/camelia/EVAL_0Type check failed in binding <anon>; expected Any but got herpat /home/camelia/EVAL_0:1» | ||
05:38
_Gustaf__ left
|
|||
llfourn | confused :S | 05:38 | |
pierre-vigier | gist.github.com/pierre-vigier/528d...649a47266c | ||
llfourn | I can see that it doesn't work :) | 05:39 | |
pierre-vigier | indeed, your example is similar | ||
llfourn | although it fails differently under vanila EVAL | ||
well just thinking about it eval-lives-ok is gonna EVAL it in a different lexical scope | 05:40 | ||
so doh my bad | |||
pierre-vigier | hum, might be, but i can test my module now, Thanks! | 05:41 | |
llfourn | no worries :) | ||
(though I don't think I did much lol) | |||
pierre-vigier | anyway to affect a value to a private attribute in custom constructor? self.bless does not handle private attribute | 05:42 | |
llfourn | pierre-vigier: you can use BUILD or BUILDALL to set private attributes at construction time from args | 05:43 | |
05:43
vendethiel joined
|
|||
pierre-vigier | oh, indeed, i need to "study" a bit more that part | 05:43 | |
llfourn | pierre-vigier: or if you are feeling adventurous: github.com/LLFourn/p6-AttrX-InitArg | 05:44 | |
pierre-vigier | perl6 is wonderfull, but BIG | ||
llfourn | yes :) | ||
pierre-vigier | oh, actually, i was reading your module jsut before :D | ||
llfourn | ah cool | ||
pierre-vigier | was searching if there was a "simpler" way, haha | ||
05:45
notbenh joined
|
|||
llfourn | I made the module because ppl keep complaining that the simple way is not simple enough! | 05:45 | |
pierre-vigier | i reused the same namespace, hope you don't mind | ||
llfourn | Of course, that's great | ||
pierre-vigier | github.com/pierre-vigier/Perl6-Att...teAccessor | ||
llfourn | ah did you see the PR to bring this feature into rakudo? | 05:46 | |
pierre-vigier | did not find it | ||
llfourn | check out: github.com/rakudo/rakudo/pull/674 | ||
pierre-vigier | i want to add a disclaimer that it's a "temporary module | ||
llfourn | I'm not sure the PR will ever be merged but autarch++ did the work to demonstrate how it could be done | 05:47 | |
I thought you saw that then did yours but I guess it's just a coincidence | |||
autarch | I did? | ||
llfourn | autark is not you? | ||
(oohhh autark is not you...) | 05:48 | ||
pierre-vigier | nope, it's not me | ||
05:49
keix joined
|
|||
pierre-vigier | misread | 05:49 | |
llfourn | rt.perl.org/Public/Bug/Display.html?id=127172 now I see it's a different autark | ||
pierre-vigier | so, nope, i did not see the PR, i add a similar need, and wanted to play with traits | 05:50 | |
llfourn | well there you go | ||
05:51
peter__ left
|
|||
mspo | is moar threading/scheduler vulnerable to this go issue? github.com/golang/go/issues/1435 | 05:53 | |
sortiz | use Test; sub trait_mod:<is>(Mu, :$goof!) { "win".say }; lives-ok { class herp is goof { }}; | ||
llfourn | pierre-vigier: btw you have added .precomp to your git repo github.com/pierre-vigier/Perl6-Att...master/lib | ||
pierre-vigier | oh, crap | ||
sortiz | m: use Test; sub trait_mod:<is>(Mu, :$goof!) { "win".say }; lives-ok { class herp is goof { }}; | ||
camelia | rakudo-moar 3259ba: OUTPUT«winok 1 - » | ||
pierre-vigier | let me remove it, thansk | ||
05:53
peter__ joined
05:54
Cabanossi left
|
|||
llfourn | sortiz: hmmm well done | 05:54 | |
it should have been Mu of course | |||
05:55
andrewalker left
|
|||
pierre-vigier | m: use Test; sub trait_mod:<is>(Mu, :$goof!) { "win".say }; eval-lives-ok q[ class herp is goof { }]; | 05:55 | |
camelia | rakudo-moar 3259ba: OUTPUT«not ok 1 - # Failed test at /tmp/lNVxBcxZV_ line 1# Error: 'Test::herp' cannot inherit from 'goof' because it is unknown.» | ||
pierre-vigier | same problem | 05:56 | |
llfourn | yep as you can eval-lives-ok is EVAL'd inside Test:: | ||
05:56
Cabanossi joined
|
|||
llfourn | not in the lexical scope in which it was called (of course) so you have to use it within the string. | 05:56 | |
sortiz | m: use Test; eval-lives-ok q|sub trait_mod:<is>(Mu, :$goof!) { "win".say }; class herp is goof {};| | 05:57 | |
camelia | rakudo-moar 3259ba: OUTPUT«winok 1 - » | ||
sortiz | llfourn, yes. | 05:58 | |
pierre-vigier | any way to capture the error given by eval-dies-ok? | ||
to verify that the message is the one expected | |||
llfourn | pierre-vigier: I guess you want "eval-throws-ok" but I'm not sure it exists | ||
you can just use normal EVAL and do a throws-ok inside it | 05:59 | ||
05:59
andrewalker joined
|
|||
pierre-vigier | i did not find it in the doc, but yes, EVAL and throws-ok | 05:59 | |
thanks again | |||
llfourn | no worries | 06:00 | |
sortiz | m: use Test; say GLOBAL::Test::EXPORT::DEFAULT::.keys | 06:03 | |
camelia | rakudo-moar 3259ba: OUTPUT«(&isnt &plan &pass &cmp-ok &flunk &does-ok &subtest &unlike &like &use-ok &todo &skip-rest &eval-dies-ok &is-deeply &throws-like &ok &is &diag &done-testing &is-approx &skip &dies-ok &lives-ok &eval-lives-ok &MONKEY-SEE-NO-EVAL &nok &is_approx &isa-ok &can…» | ||
06:03
ParsonsNose joined
|
|||
llfourn | sortiz: do you need the GLOBAL? | 06:04 | |
sortiz | Not really. | ||
But safer ;) | |||
llfourn | I wonder why Test exports MONKEY-SEE-NO-EVAL | 06:05 | |
as a routine | |||
06:05
vendethiel left
|
|||
sortiz | I dunno, use the source llfourn. | 06:06 | |
06:07
peter__ left
|
|||
sortiz | m: need Test; say GLOBAL::Test::EXPORT::DEFAULT::.keys # Without import | 06:08 | |
camelia | rakudo-moar 3259ba: OUTPUT«(&isnt &plan &pass &cmp-ok &flunk &does-ok &subtest &unlike &like &use-ok &todo &skip-rest &eval-dies-ok &is-deeply &throws-like &ok &is &diag &done-testing &is-approx &skip &dies-ok &lives-ok &eval-lives-ok &MONKEY-SEE-NO-EVAL &nok &is_approx &isa-ok &can…» | ||
llfourn | the source doesn't exmplain much | ||
06:08
peter__ joined
|
|||
llfourn | I find it strange that that works tbh | 06:09 | |
sortiz | llfourn, use is need + import | 06:10 | |
llfourn | no I mean how you are able to see Test::EXPORT | ||
EXPORT is meant to UNIT scoped | |||
therefore invisible but apparently if you do is export within a 'module' you can see it | |||
sortiz | m: need Test; say Test::EXPORT.WHAT; | 06:12 | |
camelia | rakudo-moar 3259ba: OUTPUT«(EXPORT)» | ||
llfourn | so apparently if it's done within a package it attaches it to the package as well or instead of the compunit | 06:13 | |
sortiz | If I understand well EXPORT is UNIT scoped inside Test at compile time. | ||
llfourn | if it was UNIT scoped you could never see it via Test:: | 06:14 | |
sortiz | TO collect all is export. | ||
llfourn | if you were to re-write Test without unit module Test at the top | ||
you couldn't do that | |||
sortiz | So you can't "use" it. | 06:15 | |
llfourn | but because it's in a module it adds it to Test::EXPORT instead of UNIT::EXPORT if I understandd correctly | ||
or maybe both? | |||
conclusion it adds it to both | 06:19 | ||
sortiz: thanks for showing me that! | |||
sortiz | m: module Foo { sub bar is export {}; }; say UNIT::Foo::.keys | 06:20 | |
camelia | rakudo-moar 3259ba: OUTPUT«(EXPORT)» | ||
sortiz | In the same main UNIT | 06:21 | |
llfourn | yeah and if you look at UNIT::EXPORT::DEFAULT bar will be there too | ||
sortiz | m: module Foo { sub bar is export {}; }; say UNIT::Foo::EXPORTS::.keys | ||
camelia | rakudo-moar 3259ba: OUTPUT«(Grepper)» | ||
llfourn | (no S) | 06:22 | |
sortiz | m: module Foo { sub bar is export {}; }; say UNIT::Foo::EXPORT::.keys | ||
camelia | rakudo-moar 3259ba: OUTPUT«(DEFAULT ALL)» | ||
llfourn | m: module Foo { sub bar is export {}; }; say Foo::EXPORT::DEFAULT::.keys; say UNIT::EXPORT::DEFAULT::.keys; | ||
camelia | rakudo-moar 3259ba: OUTPUT«(&bar)(&bar)» | ||
llfourn | so it goes to both | ||
sortiz | m: module Foo { sub bar is export(:special) {}; }; say UNIT::Foo::EXPORT::.keys | 06:23 | |
camelia | rakudo-moar 3259ba: OUTPUT«(special ALL)» | ||
llfourn | m: my module Foo { sub bar is export {}; }; say Foo::EXPORT::DEFAULT::.keys; say UNIT::EXPORT::DEFAULT::.keys; | 06:24 | |
camelia | rakudo-moar 3259ba: OUTPUT«(&bar)(&bar)» | ||
llfourn | UNIT::EXPORT is what's used to decide what to import | 06:25 | |
but I guess Foo::EXPORT gets a copy so that you can do import Foo; | |||
sortiz | Yes, and is export accepts any adverbs. | ||
llfourn | yes it's quite an awesome system overall | 06:26 | |
sortiz | o/ bed time, see you. | ||
llfourn | sortiz: gnight o/ | 06:27 | |
dalek | osystem: a6ba0b0 | LLFourn++ | META.list: Add OO::Schema github.com/LLFourn/p6-OO-Schema |
06:28 | |
06:38
_nadim left
06:39
jme` left
06:40
rickbike left
06:50
pierre-vigier left
06:53
pierre-vigier joined
07:05
pierre-vigier left
07:12
FROGGS joined
|
|||
dalek | c: ed2d1ce | (Wenzel P. P. Peppmeyer)++ | doc/Language/modules.pod: merge redundant examples and add type capture |
07:13 | |
c: ebdd00a | (Wenzel P. P. Peppmeyer)++ | doc/Language/modules.pod: Merge pull request #347 from gfldex/master merge redundant examples and add type capture |
|||
07:15
pierre-vigier joined
07:16
lokien_ joined,
sjoshi joined,
pierre-vigier left
07:18
_Gustaf_ joined
07:20
domidumont joined
|
|||
nine | .tell pierre-vigier panda does not yet support versioned requires | 07:21 | |
yoleaux | nine: I'll pass your message to pierre-vigier. | ||
07:25
lsm left,
domidumont left
07:26
domidumont joined
07:27
sno left
07:33
sjoshi left
07:34
lsm joined
|
|||
[Tux] | Oof, Inline::Perl5 + IO → Segmentation fault | 07:35 | |
07:35
firstdayonthejob joined
|
|||
[Tux] | moar[10776]: segfault at 7f4166e41c0f ip 00007f4166e41c0f sp 00007ffe230bf970 error 15 | 07:37 | |
FROGGS | [Tux]: can you rakudobug that? | ||
[Tux] | I might be able to do that | 07:38 | |
FROGGS | or I::P5-bug it | ||
[Tux] | but I have to go to a third party today, so little on-line time | ||
csv-ip5xs 50000 18.076 12.351 | 07:39 | ||
test 50000 23.327 22.689 | |||
test-t 50000 12.662 11.767 | |||
csv-parser 50000 50.161 0.875 | |||
07:41
_nadim joined
|
|||
hobbs | would anyone like to review my Daily Programmer solution? www.reddit.com/r/dailyprogrammer/c...ld/cyxp08d | 07:43 | |
(challenge is in the expando box at the top) | |||
07:43
CIAvash joined
|
|||
hobbs | if there's anything I can do to make it thread without a lot of work, that would be nice | 07:44 | |
[Tux] | FROGGS, seems to be a one-timer. I cannot reproduce :( | ||
07:47
marmay left
07:48
sjoshi joined
|
|||
FROGGS | :/ | 07:48 | |
07:49
zhi left
07:50
marmay joined
07:51
kjs_ joined,
jdrab joined
07:55
Actualeyes left
07:59
marmay left,
zakharyas joined
|
|||
El_Che | hi | 07:59 | |
08:00
marmay joined
08:08
darutoko joined
08:09
icelesstea left
08:18
adu left
08:22
c9874 joined
08:26
lnrdo joined
08:27
marmay left
08:29
jdrab left
08:30
peter__ left
08:32
jdrab joined
|
|||
_nadim | Hi. And good morning all. | 08:32 | |
08:32
DrForr joined
08:35
marmay joined
08:37
lnrdo left,
rindolf joined
|
|||
moritz | \o | 08:39 | |
08:39
firstdayonthejob left
|
|||
DrForr | \m/ | 08:41 | |
08:45
_Vi left
08:50
_Vi joined
|
|||
moritz | wisdom of the day: the MOP does not DWIM | 08:50 | |
(re: RT#127263 which I'm minded to reject) | 08:51 | ||
08:57
RabidGravy joined
|
|||
FROGGS | can't we make it accepts strings only? | 08:58 | |
09:07
rhr left
09:08
dakkar_ joined
09:09
virtualsue joined,
rhr_ joined
|
|||
moritz | not easily | 09:10 | |
'cause it's compiled before BOOTSTRAP.pm, so the Str type doesn't even exist yet | 09:11 | ||
_nadim | Why do warn and note output an extra newline? | 09:13 | |
moritz | because it's convenient | 09:15 | |
_nadim | except when the warnings go to a warnings log and you get extra newlines | 09:16 | |
moritz | note that warnings are resumable exceptions, not just string output to STDERR | 09:17 | |
_nadim | IMHO, it's better to let the user control the extra newline or extra whatnot. I noticed that but 'note' also outputs an extra NL. | ||
09:18
roguelazer left
|
|||
_nadim | $*ERR.print does the job for me but feels counterintuitive compared to warn 'somehting' | 09:18 | |
09:18
ruoso left
09:19
sno joined,
huggable left,
riatre left
|
|||
moritz | or your mechanism that logs the warnings and which stumbles upon newlines could strip them | 09:19 | |
09:21
ruoso joined,
zacts left,
zacts joined,
roguelazer joined,
riatre joined,
zacts is now known as Guest69790
|
|||
_nadim | still counterintuitive IMO but I will get used. Another thing i notice is that $?FILE is a full path when callframe.file has no path. | 09:28 | |
moritz | that does seem a bit inconsistent | 09:30 | |
_nadim | just wrinkles to iron out ;) | 09:31 | |
RabidGravy | is the only difference between "Foo.?bar" and "Foo.*bar" that the latter returns a list of results? To me that would imply that it execute more than one candidate but I can't provole it to do so | 09:36 | |
moritz | m: class Foo { multi method bar { 1 }; multi method bar { 2 } }; say Foo.*bar() | 09:37 | |
camelia | rakudo-moar 3259ba: OUTPUT«Ambiguous call to 'bar'; these signatures all match::(Foo $: *%_):(Foo $: *%_) in block <unit> at /tmp/GfPsRa76Qv line 1» | ||
RabidGravy | yeah this is what confused me | 09:38 | |
moritz | m: class BaseFoo { method bar { 1 } }; class Foo is BaseFoo { method bar { 2 } }; say Foo.*bar() | ||
camelia | rakudo-moar 3259ba: OUTPUT«(2 1)» | ||
moritz | it doesn't work on the multi level, it seems, but rather on the proto/only level | ||
RabidGravy | ah! I hadn't tried that one | ||
moritz | I'd argue for removing .* from the core, because I haven't ever seen a use case for it, and it can be implemented in a module if it's needed eventually | 09:39 | |
09:39
ab6tract joined
|
|||
moritz | *and* it's surprising | 09:39 | |
RabidGravy | I can see a use case for it, but it doesn't work with roles, so militates against the "composition over inheritance" dogma | 09:41 | |
09:41
pierre-vigier joined
09:42
pierre-vigier left
09:44
pierre-vigier joined
|
|||
nine | A very strange feature, indeed. | 09:47 | |
moritz looks if the ecosystem uses it | |||
moritz@hack:~/p6/perl6-all-modules$ git grep '\w\.\*\w+('|wc -l | 09:48 | ||
0 | |||
nine | I would have been surprised :) | 09:49 | |
moritz | and still 0 if I remove the leading \w | ||
nine | Same result in the spec tests? | ||
moritz | nine: I'm sure it's tested | ||
nine | I think the regex is wrong | 09:50 | |
ack '\.\*\w+' in the spec tests gives lots of results where .* is part of a regex | |||
I'm sure there must be some ecosystem module having that, too | |||
moritz | nine: hence the trailing ( | 09:51 | |
git grep -E '\.\*\w+\(' is the proper invocation | |||
because with -E, it doesn't like \w | |||
RabidGravy | weird yellow light here today | 09:52 | |
moritz | RabidGravy: it's the aliens | 09:53 | |
nine | moritz: but ( is not mandatory for function calls :) | 09:54 | |
moritz | nine: I know, it's a heuristic | ||
09:58
pierre-vigier left,
pierre-vigier joined
09:59
marmay left
10:00
yeahnoob left
10:07
g4 joined,
g4 left,
g4 joined
10:11
lnrdo joined
10:13
pierre-vigier left
10:14
Peter_R joined
10:15
pierre-vigier joined
10:17
[TuxCM] joined
10:21
[TuxCM] left
10:22
marmay joined
10:23
pocket joined
|
|||
Ulti | 528 modules in the ecosystem, that's growing relatively fast | 10:26 | |
10:26
marmay left,
virtualsue left
10:27
marmay joined,
marmay left,
marmay joined,
marmay left
10:28
virtualsue joined
10:33
pocket left
10:37
espadrine joined
10:38
pocket joined
|
|||
dalek | c: c482acb | RabidGravy++ | doc/Type/Promise.pod: The behaviour of allof/anyof was changed pre-Christmas. |
10:40 | |
RabidGravy | Ulti, if all the people who have contributed 1 module wrote another it would double :) All good. | 10:42 | |
10:43
pocket left
|
|||
moritz | RabidGravy: no | 10:45 | |
there are several who contributed more than one module | |||
Ulti | RabidGravy not sure about that most authors have written multiple modules if we had more contributors that would be true | 10:46 | |
10:46
marmay joined
|
|||
Ulti | but thats what I mean I think thats what is about to happen so we could have a mini explosion that makes modules.perl6.org a little clunky to use without some changes | 10:46 | |
10:46
lnrdo left
10:48
lnrdo joined
10:51
donaldh joined,
marmay left
10:52
marmay joined
10:55
AlexDaniel joined,
sm0x joined
|
|||
gfldex | m: my @a = Buf[uint8].new('abc'.ords); my @b = Buf[uint].new('ghj'.ords); dd @a X @b; | 10:56 | |
camelia | rakudo-moar 3259ba: OUTPUT«((Buf[uint8].new(97, 98, 99), Buf[uint].new(103, 104, 106)),).Seq» | ||
gfldex | should X know about Buf{uint8]? | 10:57 | |
10:57
virtualsue left
10:58
bpmedley joined
|
|||
jnthn | gfldex: You'd have to .list them. Unless you otherwise need Bufs, maybe would be better with native arrays? | 10:59 | |
10:59
bpmedley left
|
|||
jnthn | Buf is an item, like Str and Uni. A native array behaves like an array. | 10:59 | |
11:00
jojotus joined
11:01
jdrab left
|
|||
gfldex | jnthn: i will try that | 11:01 | |
11:02
leont joined
11:08
abraxxa joined
11:10
pmurias joined
|
|||
pmurias | how are things going on with the Perl 6 version of metacpan? | 11:10 | |
11:11
abraxxa left
11:12
bpmedley joined
|
|||
gfldex | m: my uint8 @a = 'abc'.ords; my uint8 @b = 'ghj'.ords; dd @a, @b, @a +^ @b; | 11:14 | |
camelia | rakudo-moar 3259ba: OUTPUT«array[uint8].new(97, 98, 99)array[uint8].new(103, 104, 106)0» | ||
gfldex | does that do @a.elems +^ @b.elems ? | ||
jnthn | I'd have expected so | ||
11:14
jdrab joined
|
|||
gfldex | m: my uint8 @a = 'abc'.ords; my uint8 @b = 'ghj'.ords; dd @a, @b, @a +^ @b; | 11:14 | |
camelia | rakudo-moar 3259ba: OUTPUT«array[uint8].new(97, 98, 99)array[uint8].new(103, 104, 106)0» | ||
gfldex | m: my uint8 @a = 'abc'.ords; my uint8 @b = 'ghj'.ords; dd @a, @b, @a Z+^ @b; | ||
camelia | rakudo-moar 3259ba: OUTPUT«(100, 107, 105).Seq» | ||
jnthn | You'd have to hyper it to distribute it | 11:15 | |
gfldex | that works but returns Seq instead of array[uint8] | ||
m: my uint8 @a = 'abc'.ords; my uint8 @b = 'ghj'.ords; dd @a, @b, @a >>+^<< @b; | |||
camelia | rakudo-moar 3259ba: OUTPUT«array[uint8].new(97, 98, 99)array[uint8].new(103, 104, 106)(6, 10, 9)» | ||
gfldex | m: my uint8 @a = 'abc'.ords; my uint8 @b = 'ghj'.ords; dd @a, @b, (@a >>+^<< @b).WHAT; | 11:16 | |
camelia | rakudo-moar 3259ba: OUTPUT«array[uint8].new(97, 98, 99)array[uint8].new(103, 104, 106)Cannot look up attributes in a type object in block <unit> at /tmp/a63BTVhhi5 line 1» | ||
gfldex | m: my uint8 @a = 'abc'.ords; my uint8 @b = 'ghj'.ords; dd @a, @b, (@a >>+^<< @b).^name; | ||
camelia | rakudo-moar 3259ba: OUTPUT«array[uint8].new(97, 98, 99)array[uint8].new(103, 104, 106)"List"» | ||
jnthn | Why would it return array[uint8]? Z is lazy. Hyperops otoh should retain structure...not sure they currently do. | ||
(One thing we didn't manage to get in prior to 6.c...guess that's for 6.d now) | |||
11:19
_nadim left
11:23
TheFox21 joined
|
|||
RabidGravy | regarding the ecosystem, right now there are 126 distinct authors for an average of 4.2 per author | 11:26 | |
11:26
lnrdo left
|
|||
RabidGravy | (and the top 10 most prolific represent more than a third of those) | 11:29 | |
timotimo | o/ | ||
11:34
_nadim joined
11:37
aqualung joined
11:42
pat_js joined
|
|||
aqualung | why do "~$_.say" and "say ~$_" behave differently in this context? pastebin.com/cGZ29Qfm | 11:43 | |
timotimo | in ~$_.say you stringify the result of $_.say, whereas for say ~$_, you stringify $_ before saying it | 11:44 | |
11:44
kjs_ left
|
|||
timotimo | try (~$_).say to see this better | 11:44 | |
_nadim | can I alias a sub to another sub? I guess yes but how. | 11:45 | |
RabidGravy | or $_.Str.say | ||
_nadim, my &foo = &bar; | |||
m: sub foo() { say "I'm foo" }; my &bar = &foo; bar(); | 11:46 | ||
camelia | rakudo-moar 3259ba: OUTPUT«I'm foo» | ||
_nadim | hmm, much nicer than mucking around with |c! Thanks | 11:49 | |
aqualung | thanks, I guess I was hoping perl would just figure it out on its own with some magic | 11:50 | |
RabidGravy | so much nicer than ye olde "no strict 'refs'; *{bar} = &foo" as well | ||
timotimo | do we have &foo.blahsame and &foo.nextblah and such? | ||
aqualung: nah, prefixes are always looser than method calls | 11:51 | ||
11:51
pierre-vigier left
|
|||
_nadim | RabidGravy: yes nicer but *bar = &foo was sufficient | 11:53 | |
11:53
kid51 joined,
xpen left
|
|||
leont | Great | 11:53 | |
Tests fail because «expected: $("build",) got: $["build"]»… | 11:54 | ||
timotimo | m: say ($("build",)).WHAT; say ($["build"]).WHAT | ||
camelia | rakudo-moar 3259ba: OUTPUT«(List)(Array)» | ||
11:54
abraxxa joined
|
|||
timotimo | ah, well ... | 11:54 | |
RabidGravy | Actually it has to be 'perl -e 'sub foo { print "Im foo" }; no strict "refs"; *{"bar"} = \&foo; bar()'' | 11:55 | |
aqualung | Will installing the runtime take less time in the future? I know it warns you about taking long but it took 2 hours to install everything | 11:56 | |
leont | Seems using binding instead of assignment solves my case, but it's still a bit annoying that it's that sensitive | ||
RabidGravy | which is why I guess there are 3 million Sub::* modules on CPAN | ||
moritz | aqualung: it is much faster when you have more RAM | ||
pmurias | what's koalatee? | ||
RabidGravy | "It's fine if you squint at it" | 11:57 | |
aqualung | Got a reference as to how long it takes on something that is not a toaster like my machine? | ||
moritz | aqualung: five minutes maybe | ||
aqualung | when using rakudobrew? | 11:58 | |
RabidGravy | It has the attributes of a good software but no guarantees are made whether it works | ||
aqualung, is this on a rapberry pi by any chance? that's about how long it takes there | 11:59 | ||
pmurias | RabidGravy: it's mentioned on the module ecosystem page but it's not described | ||
aqualung | it is not, just not a very powerful machine | ||
moritz | aqualung: or maybe ten | 12:00 | |
abraxxa | i've installed v6.c yesterday on the macbook pro of my better half and I must say the experience was aweseom! | ||
yoleaux | 13 Jan 2016 17:38Z <jnthn> abraxxa: Sorry, had to disappear for a bit... Yes, time off was useful, thanks for asking. :) | ||
moritz | certainless less than half an hour, even on my PC from 2002 or so | ||
timotimo | aqualung: TWO HOURS?!? | 12:01 | |
aqualung | i kid you not | ||
RabidGravy | pmurias, I think the criteria are approximately like, has a README, has a conforming META.info, has tests and has some POD | ||
nine | leont: is-deeply was carried over from Perl 5 without much thought to the differences with Perl 6. It's also hard, because sometimes you _do_ want it to be very strict and other times, you don't care if you get a () or a [] | ||
timotimo | aqualung: last time i heard an installation time of that dimension was when somebody compiled rakudo on a raspberry pi | ||
abraxxa | git in Terminal told me that XCode has to be installed, a gui pop asked me if I want to do that, 2 minutes later it was installed and I could git clone rakudobrew and rakudobrew install! | ||
timotimo | maybe you were running out of RAM? | 12:02 | |
abraxxa | jnthn: good to read! ;) | ||
aqualung | don't think I ever ran out even though it ran quite low when I checked from time to time | ||
RabidGravy | timotimo, yeah, but that's with no JIT and 512MB of ram | ||
abraxxa | and I wrote a small script to solve a brain-twister ;) | ||
leont | Also, is there any reason why when can't take an argument? | ||
timotimo | i don't think "no jit" makes such a big difference, tbh | ||
abraxxa | will post it in a gist on github | ||
hit a bug with hyper/race though when optimizing it | 12:03 | ||
timotimo | abraxxa: hyper/race and grep currently don't happy. | ||
but i haven't actually looked closely at how much code we map into main memory when compiling the core setting | |||
leont | I currently want to do «when Callable -> &function {} when List -> @list {}», but that complains about «Too few positionals passed; expected 1 argument but got 0» | ||
abraxxa | timotimo: yes, duckduckgo reported the RT as third hit ;) | ||
timotimo | good duckie | ||
abraxxa | my rbp1 with 256mb ram needed 1gig of swapfile and using only 16mb for the gpu to being able to compile 2015.10 | 12:04 | |
would be bad to post rough numbers regarding compile mem consumption somewhere | |||
timotimo | would be .. bad? | ||
12:05
xpen joined,
pmurias left
|
|||
abraxxa | btw i'd prefer to find alle Perl 6 related infos on perl6.org and not have additional sites like getperl6.org that require additional SEO to get into the top hits on search engines | 12:05 | |
meeting, later | |||
aqualung | I understand one no longer needs "using strict" and "using warnings "all" as they are on by default. Correct? | 12:06 | |
nine | aqualung: yes | ||
aqualung | A very welcome change | ||
nine | One of the advantages of not having legacy code to deal with | ||
12:07
pmurias joined
|
|||
aqualung | is HTTP::UserAgent the replacement of LWP::UserAgent? | 12:08 | |
nine | yes | ||
RabidGravy | which reminds me, I was going to do something to it today | 12:10 | |
but can't remember what | 12:11 | ||
aqualung | What do seasoned p5 veterans think of p6 so far? | ||
FROGGS | aqualung: please report github issues for anything strange you encounter with HTTP::UserAgent | ||
RabidGravy | I love it :) | ||
nine | aqualung: for me it brought much fun back into programming :) | ||
RabidGravy | yeah, exactly | ||
FROGGS | aqualung: it is hard to say from the inside of the echo chamber | 12:12 | |
aqualung | Yeah I figured as much | ||
I was partial to it at first but after playing around with it it is really growing on me | |||
FROGGS | aqualung: some love it, some hate it, some just fear that that P5's opportunities get limited over time due to P6 | 12:13 | |
aqualung: what I think is more interesting is that Perl 6 attracts hackers from other languages | |||
aqualung: say python or js (node.js) or whatever | 12:14 | ||
12:14
cognominal left
|
|||
awwaiid | aqualung: I love Perl 6 -- I think it is a great polyglot language; an amazing language adopting and inventing concepts from TONS of sources | 12:14 | |
timotimo | i got pulled in from python | ||
FROGGS | so I think that Perl 6 not even has the chance to be cool, but even to stay for a long time | 12:15 | |
FROGGS .oO( yeah, timotimo is a Slytherin ) | |||
aqualung | I got into p5 because unlike many modern languages it gives you the freedom to do things the way you want | 12:16 | |
12:16
kid51 left
|
|||
aqualung | on top of that it is not as verbose as many others | 12:16 | |
timotimo | i'm a montytongue | ||
FROGGS | aqualung: Perl 6 is also exactly that | 12:17 | |
12:18
TEttinger left,
kjs_ joined
|
|||
aqualung | FROGGS: Yeah, at first I was afraid they would take away some of the freedom I like about perl. But p6 retains that perl spirit | 12:19 | |
awwaiid googles montytongue | |||
12:20
sena_kun joined
|
|||
DrForr | These days I speak fluent parsertongue :) | 12:21 | |
dalek | c: 6f7116e | RabidGravy++ | doc/Language/concurrency.pod: Altered behaviour of anyof/allof Add an additional example to getting the result of allof |
||
12:22
pierre-vigier joined
|
|||
FROGGS | DrForr: *g* | 12:22 | |
12:22
brrt joined
12:23
xpen left,
pierre-vigier left
|
|||
leont | m: subset Filename of Any where { $_ ~~ Str|IO::Path }; sub file(Str(Filename) $file) { say $file }; file("foo") | 12:24 | |
camelia | rakudo-moar 3259ba: OUTPUT«foo» | ||
leont | m: subset Filename of Any where * ~~ Str|IO::Path; sub file(Str(Filename) $file) { say $file }; file("foo") | ||
camelia | rakudo-moar 3259ba: OUTPUT«===SORRY!===Cannot invoke this object» | ||
12:24
Skarsnik joined
|
|||
leont | That surprises me | 12:24 | |
m: subset Filename of Any where Str|IO::Path; sub file(Str(Filename) $file) { say $file }; file("foo") | |||
camelia | rakudo-moar 3259ba: OUTPUT«===SORRY!===Cannot invoke this object» | ||
nine | m: subset Filename of Any where Str|IO::Path; sub file(Filename $file) { say $file }; file("foo") | 12:26 | |
camelia | rakudo-moar 3259ba: OUTPUT«foo» | ||
nine | leont: did you mean this? ^^ | ||
leont | m: subset Filename of Any where Str|IO::Path; sub file(Filename $file) { say $file }; file("foo".IO) | 12:27 | |
camelia | rakudo-moar 3259ba: OUTPUT«Constraint type check failed for parameter '$file' in sub file at /tmp/oDBtYKzu66 line 1 in block <unit> at /tmp/oDBtYKzu66 line 1» | ||
12:28
molaf joined
|
|||
leont | Not really, the coercion to Str was quite on purpose, though I could code around it | 12:29 | |
12:30
kaare_ joined,
xpen_ joined
|
|||
aqualung | Alright I am gonna go and try to break HTTP::UserAgent, thanks for the help | 12:32 | |
12:32
aqualung left
12:33
mls_ is now known as mls
|
|||
Skarsnik | Hello | 12:34 | |
12:35
xpen_ left
|
|||
RabidGravy | erp | 12:42 | |
Skarsnik | derp? | ||
12:44
skids joined,
skids left
12:45
pecastro joined
12:46
sena_kun left
12:47
pocket joined
|
|||
timotimo | yarp | 12:50 | |
12:50
Actualeyes joined
|
|||
gfldex | hobbs: my version is 34% faster gist.github.com/gfldex/0e4b6577937.../revisions | 12:53 | |
12:54
pierre-vigier joined
|
|||
RabidGravy | RARR! | 12:56 | |
12:58
pierre-vigier left
|
|||
timotimo | why not 34x faster? | 12:58 | |
12:58
pierre-vigier joined
|
|||
gfldex | that's for when jnthn has made rakudo well fast | 12:58 | |
RabidGravy | innit bruv | 12:59 | |
12:59
g4 left
|
|||
gfldex | i will keep it, both the original and my version, to see how optimisations play out on both variants | 12:59 | |
timotimo | OK | ||
just a quick question | |||
12:59
domm_ left
|
|||
gfldex | i hope my version will play nicer with the future optimiser | 12:59 | |
timotimo | why do you use +^ and not + ? | ||
gfldex | i didn't start that bit madness! | 13:00 | |
timotimo | i'd expect the latter to be a bit faster, still | ||
and making $byte non-native-typed will give a nice speed boost with the way rakudo currently pessimizes native ints, too. | 13:01 | ||
13:01
brrt left
|
|||
gfldex | the whole thing is in response to www.reddit.com/r/dailyprogrammer/c...ld/cyxp08d | 13:01 | |
so there is a propaganda aspect to it where i can nicely point into the future | 13:02 | ||
13:02
marmay left
|
|||
timotimo | oh, ok | 13:02 | |
gfldex | i iz propagandacat! i haz a truuf! | ||
timotimo | so will you make my changes and see if it makes things faster at all? | ||
what does a --profile look like? | |||
13:02
marmay joined
13:03
marmay left,
marmay joined
13:04
domm_ joined
13:05
TheFox21 left
13:08
pierre-vigier left,
brrt joined,
pocket left
13:09
_Vi left
13:11
pierre-vigier joined
|
|||
El_Che | what's the syntax to call methodnames as a variable: $obj.$methodname ? | 13:12 | |
(besides things like dispatch tables?) | 13:13 | ||
leont | $obj."$methodname" | ||
$obj."$methodname"() | |||
El_Che | thanks (tried .$methodname .<<$methodname>> :) ) | ||
13:13
CIAvash left
13:18
AlexDaniel left
|
|||
dalek | c: 6c6515e | (Fritz Zaucker)++ | doc/Language/modules.pod: Suggest automated testing through Travis-CI |
13:20 | |
c: 7286715 | (Zoffix Znet)++ | doc/Language/modules.pod: Merge pull request #350 from zaucker/patch-2 Suggest automated testing through Travis-CI |
|||
13:24
uruwi_ left
13:30
brrt left
|
|||
dalek | rl6-roast-data: 930a466 | coke++ | / (6 files): today (automated commit) |
13:32 | |
href="https://modules.perl6.org:">modules.perl6.org: 792fdd4 | (Fritz Zaucker)++ | templates/root/index.html.ep: Link to the "official" Travis Perl6 instructions. See also my PR on github.com/perl6/doc/pull/350. This PR makes modules.perl6.org and doc.perl6.org/language/modules consistent. |
13:34 | ||
href="https://modules.perl6.org:">modules.perl6.org: 90d1f32 | (Zoffix Znet)++ | templates/root/index.html.ep: Merge pull request #54 from zaucker/patch-1 Link to the "official" Travis Perl6 instructions. |
|||
13:37
kjs_ left
|
|||
[Coke] | me waves at [particle] whom he saw join the backscroll. | 13:38 | |
gfldex | timotimo: --profile: gist.github.com/e6f32ca9851f1456376b | ||
Skarsnik | gah, I hate when the restauration of one of my vm crash x) | 13:40 | |
timotimo | gfldex: ugh. look at routines tab with "exclusive time" sorted descending | ||
the code is spending 29% of its time in "find_best_dispatchee" | 13:41 | ||
gfldex | timotimo: what's causing that? | 13:43 | |
Skarsnik | someone has an idea how to have L<> in a table (in pod) that get correctly interpreted? | 13:44 | |
timotimo | dunno, i'm looking for that in the call graph now | ||
hm. HYPER seems to cause that at least in one instance | 13:45 | ||
13:45
perlawhirl joined
|
|||
perlawhirl | hello | 13:46 | |
perlers | |||
what is this code (from Terminal::Print) doing? : $raw ~~ s:nth(*)[\d+] = "%d"; | 13:47 | ||
timotimo | i think it replaces the last instance of digits with "%d" | ||
m: my $raw = "hi there 1 2 3 how are you 99 99 1024"; $raw ~~ s:nth(*)[\d+] = "%d"; say $raw | 13:48 | ||
camelia | rakudo-moar 3259ba: OUTPUT«hi there 1 2 3 how are you 99 99 %d» | ||
perlawhirl | what is s:nth ? | ||
timotimo | substitute + only the $n'th one | 13:49 | |
gfldex: could you try what happens when you replace all those »+foo« with Z+foo instead? | |||
nine | gfldex: the 8 calls to rand for one resuling byte seems excessive | ||
timotimo | nine: well, it's needed if the probability isn't 50% | ||
nine | no, it's not :) | 13:50 | |
gfldex | nine: i agree but don't got a better idea | ||
timotimo | oh? | ||
nine: at this point random-byte takes only 0.86% of the total time :) | |||
13:50
_Vi joined
|
|||
perlawhirl | which page of docs can i find about substitution and nth | 13:51 | |
timotimo | crossover is at 0.21%, hamming-distance is at 0.16% | ||
doc.perl6.org/routine/subst - here's "nth" | |||
nine | Took me a while, but I think this could work: thinking in integers makes it easier. rand gives you essentially 32 random bits. Divide that into groups of 4 and shift them, so you get 8 nibbles. Check for each nibble if it is < $prob / 8. That's your random bits. | ||
timotimo | mutate is at 0.14% ... | ||
[Tux] | timotimo++; # Inline::Perl5 syntax simplification | 13:54 | |
Skarsnik | Is that a bug that I can't put link (L<>) in a table in pod? It get litteral written like L<Test::META|modules.perl6.org/dist/Test::META> | ||
timotimo | Skarsnik: yeah, that's a limitation of the current pod parser | 13:55 | |
gfldex | Skarsnik: that's a bug | ||
timotimo | nine: i'm not sure i understand, though :) | 13:56 | |
Skarsnik | damn, I wanted to add a list of modules tool and co in the documentation | ||
does it work with list? | |||
timotimo | lists? | 13:57 | |
gfldex | =item | ||
timotimo | yeah, that should work no-problem | ||
gfldex | SHODAN: that works, we got plenty of that already | 13:58 | |
timotimo | SUPERNOVA | ||
gfldex | Skarsnik: ^^^^ | ||
SHODAN | ok | ||
gfldex | sorry mate | ||
SHODAN | :) | ||
np | |||
gfldex | timotimo: i tries Z- and it's a lot slower | 13:59 | |
timotimo | huh? | 14:00 | |
can you give the --profile of that, too? | |||
and the code? | |||
Skarsnik | hm, should I replace .pm with .pm6 in the module doc? | 14:02 | |
I mean, what is the recommanded? personnaly I prefer .pm6 x) | |||
nvm, the doc is quite clear on this x) | 14:03 | ||
gfldex | Skarsnik: .pm6 is less confusing on windows | ||
Skarsnik | Source files generally use the standard C<.pm> extension, and scripts or | 14:04 | |
executables use C<.pl>. However, if you wish to highlight that the file is | |||
written in Perl 6 you can use the C<.pm6> extension for modules, and the | |||
C<.p6> extension for scripts. | |||
erf | |||
gfldex | timotimo: it's still running | ||
nemo | m: say 2⁶; | ||
camelia | rakudo-moar 3259ba: OUTPUT«64» | ||
nemo | huh... | ||
why does that not work on my local install | |||
m: say 2¹⁰ | |||
camelia | rakudo-moar 3259ba: OUTPUT«1024» | ||
Skarsnik | how old is your rakudo? | 14:05 | |
PerlJam | nemo: how old is your local install? | ||
nemo | PerlJam: whatever the heck Ubuntu 14.04 LTS is packaging. Bah. I bet there's something in backports. God I hate ubuntu's backports mechanism | ||
nemo checks | |||
screws us w/ hedgewars every release | 14:06 | ||
Skarsnik | probably 2015.11? | ||
PerlJam | nemo: that's *got* to be too old. :) | ||
nemo | aw. no backports | ||
gfldex | it helps alot to add --profile when you need a profile :-/ | ||
nemo | PerlJam: rakudo 2013.12-1 | ||
O_o | |||
PerlJam | nemo: way way waaay old | ||
nemo: I normally use rakudobrew to get my perl6 | 14:07 | ||
14:11
ramillies joined
14:12
skids joined
|
|||
Ulti | xA7/win 2 | 14:13 | |
-___- | |||
14:13
ramillies left
|
|||
gfldex | timotimo: gist.github.com/bbf09982f08dc677a674 | 14:16 | |
14:18
kjs_ joined,
molaf left
|
|||
RabidGravy | what larks | 14:21 | |
14:23
kjs_ left
14:24
perlawhirl left
14:25
kjs_ joined,
cdg joined
14:29
FROGGS left
|
|||
[Coke] | we should add a timebomb; if your rakudo is more than a year old, warn when running. If it's more than 2 years old, error out. :| | 14:32 | |
(no I'm not serious, you monsters.) | 14:33 | ||
hahainternet | i think i agree with the warning | 14:35 | |
in fact i'd probably configure that to a week for me | |||
because i don't reliably rebuild rakudo, but any time i come across a problem i find annoying in any other language i try and drop to perl6 and give it a go | |||
Skarsnik | could have been a good idea before 6.c release x) | ||
14:37
pierre-vigier left
|
|||
nemo | maybe I'm failing at searching, but I can't find any backport request for updating rakudo in LTS. weird | 14:39 | |
esp strange since you guys just did a release | |||
pmurias | [Coke]: maybe we should try the autoupdating "evergreen" model the browser are doing ;) | 14:40 | |
[Tux] | I merged the suggested changes and now Travis fails :( travis-ci.org/Tux/CSV/jobs/102357841 | 14:41 | |
Skarsnik | nemo, they probably wait for the next release (like they should do) | 14:42 | |
14:45
pierre-vigier joined
14:46
sftf joined
14:50
cognominal joined
|
|||
RabidGravy | yeah, haven't seen a rakudo for fedora recently | 14:50 | |
"This is perl6 version 2015.11 built on MoarVM version 2015.11" | |||
leont | I'm seeing «Failed to stat file: no such file or directory» in spurt (the directory is existent), I'm confused | 14:52 | |
I'm only seeing it when the first argument is an IO::Path, and probably only when the file has been spurted before… | 14:53 | ||
Skarsnik | hm make html on the doc fail for me :( | ||
Writing html/js/search.js ... | 14:54 | ||
Failed to open file /home/skarsnik/devel/doc/html/js/search.js: no such file or directory | |||
gfldex | Skarsnik: is that a local build after you changed stuff? | 14:55 | |
Skarsnik | yes | ||
I updated the repository before that too | 14:56 | ||
gfldex | Skarsnik: you could try github.com/gfldex/pod-to-bigpage and see how far it gets | 14:57 | |
Skarsnik | gah running make html regenerate everything x) | 14:58 | |
14:58
pierre-vigier left
|
|||
RabidGravy | I might add an "await-ok" to something as I'm getting bored of typing "ok do { await $foo }, 'blah';" | 14:59 | |
14:59
pierre-vigier joined
|
|||
Skarsnik | sound like a good thing to add to Test | 14:59 | |
15:00
sno left
|
|||
leont still thinks Test is growing too organically | 15:00 | ||
RabidGravy | or a Test::Async in the ecosystem | ||
15:00
sno joined
|
|||
RabidGravy | actually the latter is probably the best because there are quite a lot of patterns emerging in what I'm testing right now | 15:03 | |
15:04
prammer joined,
pierre-vigier left
|
|||
leont | Yeah, modular solutions are good | 15:04 | |
Skarsnik | Yes, but there is a balance between having script that look like; use Test; use Test::MoreStuff; use Test::ForOneThing; use Test::YANT; and use Test | ||
leont | Given a fat interface, you can be sure half of those functions won't age well | 15:05 | |
RabidGravy | That doesn't worry me too much | ||
15:05
pjscott joined
|
|||
leont | Being able to replace them with something better by using a different module 5 years from now is a feature | 15:05 | |
RabidGravy | i.e. using lots of specific modules | ||
yeah | |||
15:06
FROGGS joined
|
|||
Skarsnik | The issue is when there is too much module, a new user have no idea where to get something he want | 15:06 | |
RabidGravy | good search, good documentation | 15:07 | |
use of tags in META files | |||
Skarsnik | tags that are not 'specified'? | ||
RabidGravy | and if you want you can make a Test::Everything | 15:08 | |
tags are specified in S22 | |||
Skarsnik | I mean the list of tags | ||
RabidGravy | why should they be specified, people are supposed to be intelligent and if they want people to find the module they should use sensible tags | 15:09 | |
leont | RabidGravy: that ends with Test::Most, half of the stuff that is uses isn't recommended anymore, and at least one function is a notorious incompatibility | ||
RabidGravy | "folksonomy" | ||
15:09
lokien_ left
|
|||
timotimo | you know the tagging system python employs? | 15:10 | |
RabidGravy | leont, as I said, I don't mind using loads of modules | ||
timotimo, probably as shit as the npm one right? | 15:11 | ||
leont | META.json has keywords too, no one uses them though | ||
15:12
ramillies joined
|
|||
RabidGravy | I think it's just "tags" : design.perl6.org/S22.html#tags | 15:13 | |
timotimo | RabidGravy: i have no idea. | ||
RabidGravy | if it ain't documented it don't exist | ||
timotimo | pypi.python.org/pypi?%3Aaction=list_classifiers - this thing | ||
15:15
Actualeyes left
|
|||
RabidGravy | that's more of a classification system or full-on taxonomy though, must have been bike-shedded to pieces | 15:15 | |
so python, I don't think that kind of thing would fly around here | |||
mspo | they look like oids | 15:16 | |
RabidGravy | though it would allow people to give vent to their authoritarian streak and everyone else could ignore it | ||
there is a sot of classification on CPAN but it's not really kept up to date as searching has approved | 15:17 | ||
improved | 15:18 | ||
timotimo | at least these classifiers are used throughout the pypi | ||
RabidGravy | sure | ||
_nadim | how can one capture output to $*ERR to check it in a test? | ||
15:18
ramillies left
|
|||
RabidGravy | replace $*ERR with some handle like object that captures, I believe there are some in the ecosystem | 15:19 | |
timotimo | yeah, IO::Capture::Simple and IO::MiddleMan | 15:20 | |
_nadim | thanks | ||
15:20
pjscott left
15:21
khw joined
|
|||
nemo | Skarsnik: well, without a bug filed requesting it to be added to backports, will never know | 15:23 | |
Skarsnik: typically some maintainer would file one of those and they would evaluate it - it isn't automatically added to LTS after all | 15:24 | ||
you have to manually upgrade | |||
aaand have opted into backports too | |||
but I can't even find a request | |||
15:25
sjoshi left
15:27
ZoffixW joined
|
|||
ZoffixW | There's actually Test::Output modules.perl6.org/repo/Test::Output | 15:27 | |
Oh, nm, for now | 15:28 | ||
Just use IO::MiddleMan :) I had issues with capturing output of Test.pm with Test::Output, which is why I wrote IO::MiddleMan, but I see I haven't yet had a chance to update Test::Output to use it. It may be broken atm :P | |||
15:29
sena_kun joined
|
|||
ZoffixW | There's Test::IO::Capture inside IO::Capture::Simple github.com/sergot/IO-Capture-Simpl...Capture.pm | 15:29 | |
sena_kun | How much situation with error handling changed since perl6advent.wordpress.com/2011/12/...ceptional/ ? | 15:33 | |
15:34
Actualeyes joined
|
|||
ZoffixW | There probably have been changes and new exception types and messages. Why? | 15:35 | |
El_Che | I had the same use case for STDERR. I ended changing the method adding a boolean to the signature with a default. Signatures in perl 6 == love | 15:36 | |
nine | m: sub rand-byte($prob) {my $thresh = $prob * 16; my int32 $rand = (2**32).rand.Int; my $byte = [+|] (^8).map({(($rand +> ($_ * 4)) +& 0x0f < $thresh) +< $_}); }; say rand-byte(0.2); | ||
camelia | rakudo-moar 3259ba: OUTPUT«72» | ||
nine | timotimo: ^^^^ | ||
gfldex: ^^^ | |||
Of course this is bound to be dog slow. It's just a demonstration of the idea :) | 15:37 | ||
15:38
lichtkind joined
|
|||
ZoffixW | m: m: sub rand-byte($prob) {my $thresh = $prob * 16; my int32 $rand = (2**32).rand.Int; my $byte = [+|] (^8).map({(($rand +> ($_ * 4)) +& 0x0f < $thresh) +< $_}); }; say rand-byte(0.2) for ^4 .hyper: :1batch | 15:38 | |
camelia | rakudo-moar 3259ba: OUTPUT«6448» | ||
ZoffixW | m: m: sub rand-byte($prob) {my $thresh = $prob * 16; my int32 $rand = (2**32).rand.Int; my $byte = [+|] (^8).map({(($rand +> ($_ * 4)) +& 0x0f < $thresh) +< $_}); }; say rand-byte(0.2) for ^4 .hyper: :1batch | ||
camelia | rakudo-moar 3259ba: OUTPUT«01141074» | ||
ZoffixW | Weird, eh? | ||
(varying number of results) | 15:39 | ||
mspo | I wrote a replacement for the call out to |fmt in p6doc using a grammar: gist.github.com/msporleder/29644fce49e662aa7ae4 | ||
aside from using "say" in the action instead of a method to return the result, can anyone tell me all the stuff I did wrong? | 15:40 | ||
stmuk_ | hmm it probably shouldn't even call out to |fmt .. there was a regexp to do that anyway | 15:41 | |
mspo | I was thinking a smart regex could do the whole job in one line :) | 15:43 | |
stmuk_ | Pod::To::Text twrap probably does this already | ||
FROGGS | mspo: you can just do "make ~$/" instead of calling it as a method | ||
mspo | but couldn't get it just right | ||
stmuk_ | assuming you are just trying to restrict the number of columns of p6doc at the command line? | 15:44 | |
mspo | FROGGS: make/made was very confusing for me; I still don't get it | ||
stmuk_: that's what p6doc does, yes | |||
stmuk_: I was trying to emulate some fmt(1) behavior like retaining leading whitspace and blank lines | |||
stmuk_ | mspo: so you want to add a third way of doing the same thing to the two already existing? :) | ||
mspo | stmuk_: I want to suggest removing the call to |fmt in p6doc and I wanted to write a replacement as an exercise | 15:45 | |
FROGGS | mspo: "make foo" assigns foo to $/.made, so that you got your hands on $<submatch>.made from the outer action method | ||
stmuk_ | actually your way is probably better .. I think Larry was complaining about the formatting behaviour a couple of days back | ||
I don't understand why |fmt was added | |||
mspo | indeed | ||
stmuk_ | maybe remove |fmt and extend the Pod::To::Text twrap (which is in Rakudo core unfortunately not p6doc) | 15:46 | |
mspo | FROGGS: I will read that until I grok it ;) | ||
dalek | blets: 8552c5c | (Herbert Breunung)++ | docs/appendix-b-grouped.txt: more links from B o A and G |
||
FROGGS | mspo: :o) | 15:47 | |
stmuk_ | the formating should be more aware of the pod structure I'm sure | ||
PerlJam | mspo: make puts things in your .ast or .made and that's how you communicate information "up" the parse. (Does that help any?) | 15:48 | |
stmuk_ | mspo: see aldo irclog.perlgeek.de/perl6/2016-01-12#i_11871389 | 15:49 | |
PerlJam | mspo: I know I didn't say anything substantially different from FROGGS but sometimes different words provide different perspective :) | ||
stmuk_ | ^ also | ||
15:50
ZoffixW left
15:51
lnrdo joined
|
|||
mspo | stmuk_: ideally the pod would be parsed into some kind of DOM-ish or parse-tree-ish thing, I would think | 15:52 | |
15:52
_Vi left
|
|||
mspo | stmuk_: and each section could be fed through the correct formatting | 15:52 | |
alos the "80" is arbitrary | |||
15:52
_Vi joined
|
|||
stmuk_ | mspo: yes that would be excellent | 15:53 | |
mspo | moar --doc is the real command | ||
oh wait, maybe not | 15:56 | ||
leont | Can I put a BagHash in a %!attribute? | 16:02 | |
Or a Set for that matter? | 16:03 | ||
RabidGravy | m: class Foo { has %.foo is BagHash; }; say Foo.new.foo.WHAT; # yes | 16:05 | |
camelia | rakudo-moar 3259ba: OUTPUT«(BagHash)» | ||
pmurias | leont: re Test::Most, having a Test::Bloat for those who don't want to import each module seems at least a better solution than cramming stuff into Test | ||
leont | True | ||
16:08
jme` joined
|
|||
RabidGravy | leont, in general "is" on an atribute (or variable) sets the container type | 16:09 | |
16:09
muraiki joined
|
|||
muraiki | can someone please help me understand what I'm doing wrong in this tiny grammar? gist.github.com/muraiki/e856a437ab8d60f055ff | 16:09 | |
16:10
lnrdo left
|
|||
garu_ | everyone++ # super excited to learn perl 6 \o/ | 16:10 | |
timotimo | token doesn't have backtracking | ||
so the .+ will eat until the end of string and not find a >, then abort | 16:11 | ||
muraiki | timotimo: d'oh | ||
timotimo | it should be enough to just use "regex" instead of "token" | ||
:) | |||
muraiki | yay! thanks so much | ||
man, I even remember reading that in the docs | |||
it just didn't click | |||
PerlJam | or just use a non-greedy quantifier | ||
leont | RabidGravy: thanks, that seems to work | 16:12 | |
RabidGravy | :) | ||
16:15
ramillies joined,
c9874 left
|
|||
_nadim | Hmmm! Does the test framework squirel away symboles in some way? something that works outside the test framework get me the error "variable $author is not declared. It is, the line above the function call. | 16:16 | |
pmurias | jnthn: t/moar/02-multidim.t is great, having to just implement instead of rever engineer those all those ops is awesome | ||
PerlJam | _nadim: show the code :) | 16:17 | |
16:17
wollmers joined
|
|||
jnthn | pmurias: :) | 16:18 | |
dalek | c: 86f452a | (Sylvain Colinet)++ | doc/Language/modules (2 files): Add a page with a list of modules/tool related to module developpement |
||
timotimo | _nadim: potentially giving the test function a string to eval? | ||
dalek | c: 4e08a04 | (David Brunton)++ | doc/Language/operators.pod: Grammar-o on its Possessive form of it. |
||
c: 009c4f4 | (Steve Mynott)++ | doc/Language/operators.pod: Merge pull request #351 from dbrunton/patch-1 Grammar-o on its |
|||
timotimo | and then it gets eval'd inside the test package? | 16:19 | |
_nadim | timotimo: yes, it goe to an EVAL | ||
timotimo | right. then it won't see the symbols in your local scope | 16:20 | |
16:20
dwarring left
|
|||
timotimo | unless it takes special care to evaluate in the caller's scope | 16:20 | |
which it might do | |||
_nadim | removing those tests make the tests a bit moot. | 16:21 | |
how do I force the callers scope on? | |||
wollmers | I finished the port of the fastest P5 diff/LCS implementation to P6 LCS::BV. | ||
_nadim | PerlJam: code is not so interesting ;) | 16:22 | |
wollmers | It's on Panda. 2-4 times faster than P6 Algorithm::Diff | 16:23 | |
nine | wollmers: could this be a complete replacement for Algorithm::Diff? | ||
jnthn | _nadim: The typical trick is to pass a closure that does the EVAL | ||
wollmers | LCS::BV benchmark 500-1000 cases per second, P5 50000-60000 on core i5 (MacAir) | 16:25 | |
nine: not completely. It implements only the core loop. Takes two ArrayRefs, returns an array of indices. | 16:26 | ||
nine | wollmers: so could it be done as a patch to Algorithm::Diff? My point being, that as a user, I'd be looking for "diff" and would never find something called "LCS::BV" | 16:27 | |
wollmers | nine: like Algorthm::Diff::LCSindx(), but returns n x 2 array, not 2 x n array. | ||
16:29
_Vi left
16:30
_Vi joined
|
|||
_nadim | jnthn: that would mean changing the code that I have to test. tests changing code is a bit "bleahh". In this case it is just a normal string interpolation in t.he EVAL, maybe I should just turn a blind eye as it is part of P6 | 16:30 | |
wollmers | nine: Algorithm::Diff allows custom comparison function, and custom hash. Also has convenience formatting around. | ||
nine: that's the reason I did an extra module. The API of A::Diff is one of the reasons for slowness. | 16:32 | ||
16:33
sena_kun left
|
|||
ramillies | Hello. I've recently encountered a weird behavior of some string comparisons and could use some explanation of it: | 16:35 | |
p6: say ("a" xx 1000).map(+("a" le *)).index(0) | |||
camelia | rakudo-moar 3259ba: OUTPUT«414» | ||
wollmers | Next I will try nativecall in P6 for LCS::BV. Should allow estimated speed of 5 mio cases/sec in the pure C part. Will see, how much the interface P6/C slows it down. | ||
ramillies | To me, this appears like 'a' le 'a' is true the first 414 times I ask, and then it turns to false. Is there some rational explanation, or is it a bug? | 16:36 | |
wollmers | Sorry, should read 0.5 mio cases. | 16:37 | |
16:38
sena_kun joined
|
|||
dalek | c: a5955cc | (Steve Mynott)++ | doc/Type/Str.pod: add newline after Usage: |
16:40 | |
16:40
_Gustaf_ left
|
|||
nine | ramillies: that's...very odd | 16:43 | |
jnthn | Surely a bug, probably in dynamic optimization given it kicks in after a lot of iterations. | ||
ramillies | Good that I'm not the only one who doesn't like it. | ||
nine | JIT bug | 16:44 | |
ramillies | By the way, it doesn't happen for any other characters, just for the "boundary edge". | ||
"boundary case", I meant. | |||
nine | MVM_JIT_DISABLE=1 fixes it | ||
ramillies | True. Thank you. | ||
mspo | ramillies: what is * doing in that case? | 16:45 | |
nine | ramillies: please rakudobug it | ||
16:45
lokien_ joined,
prammer left
|
|||
ramillies | * is the parameter for map. | 16:45 | |
+("a" le *) is a lambda which gives 1 if the incoming string is ge "a", 0 if not. | 16:46 | ||
nine: Lemme find out how, I still need to find my way around here. | 16:47 | ||
wollmers | p6: sue v6; | ||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfileUndeclared routine: sue used at line 1. Did you mean 'sum'?» | ||
16:47
prammer joined
|
|||
mspo | but the incoming string is always 'a'? | 16:48 | |
ramillies | Yes. | ||
16:48
domidumont left
|
|||
wollmers | p6: <a b c>.eSt; | 16:48 | |
camelia | rakudo-moar 3259ba: OUTPUT«Method 'eSt' not found for invocant of class 'List' in block <unit> at /tmp/tmpfile line 1» | ||
mspo | ramillies: shouldn't you be using $_ ? | ||
ramillies | The point is that when I compare 1000 'a's with an 'a', it's True the first 414 times and then False. | ||
That would do the exactly same thing, I think. | 16:49 | ||
ramillies goes to file it as a bug | |||
donaldh | I think the perl6 idiom is to use the whatever * | ||
yoleaux | 12 Jan 2016 07:47Z <nine> donaldh: I know it-s perl6-debug-m. There's also perl6-debug-j, so I just replace "perl6-debug" in $*EXECUTABLE by "perl6" | ||
12 Jan 2016 07:48Z <nine> donaldh: do you have any other precomp issues? | |||
wollmers | p6: amp { } <a b c>; | ||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfileMissing required term after infixat /tmp/tmpfile:1------> 3amp { } <a b c>7⏏5; expecting any of: prefix term» | ||
wollmers | p6: asy 'a'; | 16:50 | |
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tmpfileUndeclared routine: asy used at line 1. Did you mean 'say', 'any'?» | ||
sena_kun | Is self.attr much slower than $!attr? | 16:51 | |
jnthn | sena_kun: At the moment, yes. In a few months time, with further optimization work that's on the way, no. | ||
wollmers | Where can I find the code of the logic 'sue ...' -> Did you mean 'sum'? This can be improved. | 16:52 | |
sena_kun | jnthn, hmm, thank you. I don't like that $!some notation much, it looks a bit like bool negation. Then I'll use $!some anyway. | 16:54 | |
Hotkeys | nah bool negation would be !$some :p | ||
(or !$!some if you're daring) | |||
sena_kun | Hotkeys, I know it, but it's tricky and easy to do typo. | 16:55 | |
jnthn | It is, though it's likely to be caught at compile time | ||
m: class A { has $!a; method m() { say !$a } } | |||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/YQhuAXv3L_Variable '$a' is not declared. Did you mean '$!a'?at /tmp/YQhuAXv3L_:1------> 3class A { has $!a; method m() { say !7⏏5$a } }» | ||
16:55
bioexpress joined,
dwarring joined
|
|||
Hotkeys | I like the $! and $. notations | 16:56 | |
hobbs | gfldex: thanks for going over my code :) | ||
jnthn | But yeah, if you're scanning code quickly it may take a little getting used to | ||
sena_kun | jnthn, it makes sense then. | ||
bioexpress | Hello, I've found this in the bugreport #127064: | ||
"And if $s happened to contain anything other than literals, so I had to us my @matching = @lines.grep(/ <$s> /);" | |||
Hotkeys | but the first time I saw $.method in code I read it like "Oh $ is sugar for self" | ||
bioexpress | Is this a bug (that I have to use the "<>" in this cases) or is the bug only the slower speed? | 16:57 | |
dalek | blets: 972f4f1 | (Herbert Breunung)++ | docs/ (2 files): added .combinations |
||
mspo | fwiw my perl6 does not produce 414 | 16:58 | |
it says 0 | |||
sena_kun | Also, is there any manual about passing arguments by values/by references in functions? | ||
16:58
donaldh left,
kubrat left
|
|||
ramillies | mspo: That's even weirder, it should say Nil. | 16:59 | |
Didn't you write lt instead of le? | |||
dalek | p: 51d350b | (Pawel Murias)++ | src/vm/js/ (2 files): [js] Start working on multidimensional ops. Make them work on 1 dimensional arrays. |
||
p: aa0cd13 | (Pawel Murias)++ | src/vm/js/ (6 files): [js] Partial implementation of multi-dim arrays. Support throwing errors from internals by throw new NQPException("...") instead of always using a ctx. |
|||
mspo | ramillies: doesn't the (+( turn it into a number? | ||
sena_kun | By "manual" I meant "In case1 by value, in case2 by reference, etc" thing. | 17:00 | |
ramillies | mspo: It does. | ||
mspo | > say ("a" xx 1000).map(+("a" le *)).index(0) | ||
0 | |||
[Coke] | mspo: what version of rakudo do you have? | ||
17:00
psy_ joined
|
|||
[Coke] | Note: anyone who has a version < 2015.12, yes, your stuff is going to be different. Please upgrade to Christmas. | 17:00 | |
Hotkeys | m: say ("a" xx 1000).map(+("a" le *)).index(0) | 17:01 | |
camelia | rakudo-moar 3259ba: OUTPUT«414» | ||
jnthn | bioexpress: /$s/ means something very different from /<$s>/ | ||
17:01
psy_ left
|
|||
jnthn | bioexpress: The first means "just match literally the text in the string" | 17:01 | |
ramillies | mspo: That means: Make a list of 1000 "a"s. For every thing in it, compare "a" <= (the thing). When it is True, put 1 in the list, when False, put 0. Then give index of the first 0 | ||
jnthn | bioexpress: <$s> means "compile the thing in $s as if it's regex syntax" - which is naturally going to be slower | 17:02 | |
mspo | [Coke]: Nov | ||
17:02
psy_ joined
|
|||
ramillies | mspo: Essentially: tell me how many comparisons "a" le "a" must I do before it starts to be false. | 17:02 | |
jnthn | bioexpress: Also, my Str $s = 'foo'; ... /$s/ is likely to be faster than without the type annotation. | ||
17:03
pmurias left
|
|||
bioexpress | Thx! | 17:03 | |
17:05
rickbike joined
|
|||
bioexpress | Where is the best place in the documentation to read about the /<$s>/? | 17:06 | |
17:08
zakharyas left
|
|||
PerlJam | bioexpress: I don't think there's much documentation about that particular construct. (though, there's not much to it other than what jnthn just said) | 17:11 | |
17:11
ab6tract left
|
|||
bioexpress | Ok, thx again. | 17:12 | |
PerlJam | bioexpress: Maybe read S05 ... design.perl6.org/S05.html#Extensibl...%3C...%3E) | ||
[Coke] | docs.perl6.org/language/regexes is where it should be, but I don't see it yet. | ||
yah, until we get our doc story straight, the synopses are a good place to double check. | |||
PerlJam | bioexpress: oops, you want the section on variable interpolation (which is just before the section I linked) | 17:13 | |
bioexpress | I've found it. | 17:15 | |
Hotkeys | m: say 42 ≥ 17 | 17:18 | |
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/33_NSJUerLConfusedat /tmp/33_NSJUerL:1------> 3say 427⏏5 ≥ 17 expecting any of: infix infix stopper postfix statement end statement modif…» | ||
Hotkeys | darn | ||
I was hoping | |||
PerlJam | Hotkeys: If we have unicode set ops, surely we should have the relational ops as well | 17:19 | |
Hotkeys | I'd think so | ||
hoelzro | what's the policy for roast if something is spec'd in the design docs, but there's no test for that feature yet? should it go into 6.c or 6.d? (ex. $=data) | 17:24 | |
PerlJam | 6.c.1 or 6.d | 17:25 | |
17:26
bioexpress left
17:27
hankache joined
|
|||
hankache | good evening #perl6 | 17:28 | |
dalek | osystem: c1d5872 | (Mathieu Gagnon)++ | META.list: Remove perl6-tag-helper Looks impossible to me to fix and pretty useless anyway. |
||
PerlJam | hankache: good morning! :) | 17:29 | |
hankache | hi PerlJam :) | ||
17:29
jdrab left
|
|||
nemo | Hotkeys: is there like some config for defining those associations? like >= ≥ ? | 17:30 | |
Hotkeys | I mean | ||
you could define it yourself | 17:31 | ||
[Coke] | hoelzro: "it depends". for now, put it in master | ||
hoelzro | *nod* | ||
[Coke] | we basically need to review stuff that's in master occasionally and consider cutting bits into a newer spec. | 17:32 | |
Hotkeys | m: sub infix:<≥> ($a, $b) {$a >= $b}; say 42 ≥ 17 | ||
camelia | rakudo-moar 3259ba: OUTPUT«True» | ||
Hotkeys | m: sub infix:<≥> ($a, $b) {$a >= $b}; say 42 ≥ 100 | ||
camelia | rakudo-moar 3259ba: OUTPUT«False» | ||
[Coke] | (which right now is a branch, but based on talks elsewhere, may end up as subdirs in master.) | ||
Hotkeys | but it'd be nice to just have them | ||
since we have other fancy unicode | |||
sena_kun | m: given 3 { when 2 or 3 {say "hooray"}}; | 17:34 | |
camelia | ( no output ) | ||
sena_kun | m: say given 3 { when 2 or 3 {say "hooray"}}; | ||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/arEccVgYWTUnsupported use of bare "say"; in Perl 6 please use .say if you meant $_, or use an explicit invocant or argument, or use &say to refer to the function as a nounat /tmp/arEccVgYWT:1------> 3…» | ||
sena_kun | Uh. | 17:35 | |
RabidGravy | m: given 3 { when 2|3 {say "hooray"}} | ||
camelia | rakudo-moar 3259ba: OUTPUT«hooray» | ||
sena_kun | RabidGravy, you're great. | ||
RabidGravy | you want the junction their | ||
there | |||
[Coke] | m: given 3 { when any(2,3) { say "y" }} | 17:36 | |
camelia | rakudo-moar 3259ba: OUTPUT«y» | ||
[Coke] | ... again, too slow. :) | ||
sena_kun | RabidGravy, yeah, just it. | ||
RabidGravy | :) but it's interesting with different versions | ||
sena_kun | RabidGravy, I'm targeting my cool and unique and pretty compress library only for christmas+ rakudo only, so it's okay, I think. | 17:37 | |
RabidGravy | the infix '|' makes a any() junction, and infix '&' makes an all() | 17:38 | |
sena_kun, absolutely - unless there are bugs that you really do need fixing to work then that's that best plan | |||
17:39
_Vi left
17:40
domidumont joined
|
|||
Hotkeys | so should 'use v6.c' be the way to go from now on | 17:41 | |
17:41
_Vi joined
|
|||
llfourn would also like to know what 'use' to use | 17:41 | ||
Hotkeys | 6.c would make it so you require 2015.12 | 17:42 | |
at least | |||
maybe 'use v6.c+' | |||
llfourn | is that what we should put in module META? | 17:43 | |
TimToady | that will use either maint or dev languages; if you want only maint versions, v6.*.0 should work for that | ||
m: say v6.d.MUMBLE ~~ v6.*.0 | 17:44 | ||
camelia | rakudo-moar 3259ba: OUTPUT«False» | ||
TimToady | m: say v6.d ~~ v6.*.0 | 17:45 | |
camelia | rakudo-moar 3259ba: OUTPUT«True» | ||
llfourn | why would you want to exclude maint or dev languages and what are they? | ||
dalek | osystem: 0ce1543 | leont++ | META.list: Add Build::Graph and Build::Simple |
||
osystem: d4a198c | (Will Coleda)++ | META.list: Merge pull request #123 from Leont/master Add Build::Graph and Build::Simple |
|||
pat_js | m: say "outside: $_" for 4,(4|0),0 ==> map sub ($_) {return $_ if $_ != 0; say "in sub: $_";$_} | 17:46 | |
camelia | rakudo-moar 3259ba: OUTPUT«outside: 4in sub: 0outside: any(4, 0)in sub: 0outside: 0» | ||
TimToady | as we move toward 6.d we'll have two tracks, a 6.c.1+ track, and a 6.d.a+ track | ||
[Coke] | (two tracks). Please clarify this in the -release convo, also. :) | ||
TimToady | 6.c.1 will be minor tweaks for buggy or missing tests that don't really change the language (much) | ||
pat_js | is that intentional? | ||
llfourn | so .number => maint, .character => dev? | ||
TimToady | 6.d.a will be the first step towards whatever language we release as 6.d.0 | 17:47 | |
llfourn | okay cool | ||
TimToady | use v6.d.* will pick up any 6.d including previews | ||
pat_js | m: say "outside: $_" for (4|0) ==> map sub ($_) {return $_ if $_ != 0; say "in sub: $_";$_} | ||
camelia | rakudo-moar 3259ba: OUTPUT«in sub: 0outside: any(4, 0)» | ||
TimToady | you can say: use v6.d.PREVIEW or anything uppercase too | 17:48 | |
since Z lt a | |||
[Coke] | m: use v6.d.BARFYKITTENS; | ||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/FuNa2VpuIXNo compiler available for Perl v6.d.BARFYKITTENSat /tmp/FuNa2VpuIX:1------> 3use v6.d.BARFYKITTENS7⏏5;» | ||
Hotkeys | is there a difference between using .list or .List on a sequence? | ||
they seem to do the same thing | |||
pat_js | is this a way to find out which of the junctions variables are true or is this a bug? | ||
llfourn | Hotkeys: probably not, the captialised version is there for type coercion I think | 17:49 | |
[Coke] | list and List are not the same, no | ||
17:49
_Vi left
|
|||
pat_js | returning from a sub, that is. | 17:49 | |
TimToady | pat_js: generally that means you should be using a set instead of a junction | 17:50 | |
17:50
dakkar_ left
|
|||
[Coke] | pat_js: I'm not sure using $_ as a anon sub parameter is a good idea. | 17:50 | |
flussence | www.openssh.com/txt/release-7.1p2 # hooray, another thing to panic about | ||
TimToady | [Coke]: what's the matter with it? | 17:51 | |
llfourn uses $_ all the time as method/sub param | |||
17:51
molaf joined
|
|||
llfourn | well *all* the time is an overstatement | 17:52 | |
but it's handy sometimes | |||
TimToady | [Coke]: when I say "two tracks" I am not committing to any particular representation of those; that's what -release is there to figure out :) | ||
llfourn | though in the case above it should just be a block I guess, though I'm not sure if I understand what's going on | ||
17:52
sftf left
|
|||
TimToady | I'm just repeating the API that's already been thrashed out for versions from the user point of view | 17:53 | |
llfourn | though yeah it actually doesn't make much sense to use $_ as an *anon* sub param | ||
pat_js | I had read the documentation, but this also seems to work. I just want to know if it is intentional or if it should print "any (4, 0)" in both cases | ||
17:54
SCHAAP137 joined
17:55
_Vi joined
|
|||
Hotkeys | I like that type smileys are actually called that in code | 17:56 | |
llfourn | m: (4|0).map: .say | ||
camelia | rakudo-moar 3259ba: OUTPUT«(Any)Cannot call map(Int: Bool); none of these signatures match: ($: Hash \h, *%_) (\SELF: █; :$label, :$item, *%_) (HyperIterable:D $: █; :$label, *%_) in any at gen/moar/m-Metamodel.nqp line 3124 in block <unit> …» | ||
TimToady | what's going on there is it's autothreading the map | ||
Hotkeys | m: sub $foo (Int:d $bar) {} | ||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/kLEEyP7hlKMissing blockat /tmp/kLEEyP7hlK:1------> 3sub7⏏5 $foo (Int:d $bar) {} expecting any of: new name to be defined» | ||
llfourn | m: (4|0).map: *.say | ||
Hotkeys | m: sub $foo (Int:d $bar) {say $bar;} | ||
camelia | rakudo-moar 3259ba: OUTPUT«40» | ||
rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/8SJA7oL9RCMissing blockat /tmp/8SJA7oL9RC:1------> 3sub7⏏5 $foo (Int:d $bar) {say $bar;} expecting any of: new name to be defined» | |||
Hotkeys | wow where's the err I was getting | 17:57 | |
TimToady | so the inside of the map never sees the junctoin | ||
Hotkeys | that mentioned smileys | ||
oh | |||
m: sub foo (Int:d $bar) {say $bar;} | |||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/cP0_3BOtOhInvalid type smiley 'd' used in type nameat /tmp/cP0_3BOtOh:1------> 3sub foo (Int:d7⏏5 $bar) {say $bar;}» | ||
Hotkeys | :D | ||
17:57
abraxxa left
|
|||
llfourn | m: say (4|0).map: * + 1 | 17:57 | |
camelia | rakudo-moar 3259ba: OUTPUT«any((5), (1))» | ||
dalek | href="https://perl6.org:">perl6.org: ad65336 | (Stefan Seifert)++ | / (3 files): Revert "Revert "Give Zef some more prominence."" Now that zef can install modules with native components correctly, it's really time for giving it more prominence! |
17:58 | |
pat_js | m: (sub ($_) {return $_ if $_ != 0; say "in sub: $_";$_})(4|0).say | ||
camelia | rakudo-moar 3259ba: OUTPUT«in sub: 0any(4, 0)» | ||
17:58
ramillies left
|
|||
TimToady | same thing | 17:58 | |
llfourn | m: { $_ if $_ != 0; say "in sub: $_";$_ }.(4|0).say | 18:00 | |
camelia | rakudo-moar 3259ba: OUTPUT«WARNINGS for /tmp/h5gBFC94CD:Useless use of $_ in sink context (line 1)in sub: any(4, 0)any(4, 0)» | ||
TimToady | and this actually points at why we can't just use junctions for sets, since the code that deals with a single value has no idea whether it's inside of any or all or one or none | ||
llfourn | m: { say "in sub: $_";$_ }.(4|0).say | 18:01 | |
camelia | rakudo-moar 3259ba: OUTPUT«in sub: any(4, 0)any(4, 0)» | ||
pat_js | m: my @a; (sub ($_) {return $_ if $_ != 0;@a.push($_); $_})(4|0); @a.say | ||
camelia | rakudo-moar 3259ba: OUTPUT«[0]» | ||
TimToady | parameters to blocks defualt to Mu rather than Any | 18:02 | |
masak | nine: you know that a revert of a revert is morally equal to a cherry-pick, right? :P | ||
(hi, #perl6) | |||
llfourn | m: say -> { } | 18:03 | |
camelia | rakudo-moar 3259ba: OUTPUT«-> { #`(Block|61200592) ... }» | ||
llfourn | m: say -> $a { } | ||
camelia | rakudo-moar 3259ba: OUTPUT«-> $a { #`(Block|59584368) ... }» | ||
TimToady | we thought autothreading your if/while/given/... blocks would be terribly confusing | ||
llfourn | m: say ({ }).params[0].gist | ||
camelia | rakudo-moar 3259ba: OUTPUT«Method 'params' not found for invocant of class 'Hash' in block <unit> at /tmp/k8t9j1ssgt line 1» | ||
TimToady | m: say ({;}).params[0].gist | 18:04 | |
camelia | rakudo-moar 3259ba: OUTPUT«Method 'params' not found for invocant of class 'Block' in block <unit> at /tmp/2MGiQZXsvJ line 1» | ||
pat_js | but is it okay to use this sort of strange return statement to find out only the right values? | ||
nine | masak: I actually think it's factually equal but morally different ;) | ||
llfourn | m: say ({;}).signature.params[0].gist | 18:05 | |
camelia | rakudo-moar 3259ba: OUTPUT«Mu $_? is raw» | ||
18:05
firstdayonthejob joined,
ely-se joined
|
|||
TimToady | pat_js: it's probably a design smell that junctions are being used that way in the first place | 18:06 | |
ely-se | Are static type checks still present? How predictable are they? | 18:07 | |
18:07
Peter__R joined
|
|||
ely-se | IIRC months ago you couldn't tell beforehand whether the type checker would croak or not. | 18:07 | |
18:07
dfcarpenterak joined
|
|||
masak | nine: I would settle for factually *equivalent* but morally equal :) | 18:07 | |
ely-se | m: sub f(Int $x) { }; f("blah".IO) | ||
camelia | rakudo-moar 3259ba: OUTPUT«Type check failed in binding $x; expected Int but got IO::Path in sub f at /tmp/lU27X0dyEg line 1 in block <unit> at /tmp/lU27X0dyEg line 1» | ||
nine | masak: I think I can't split that hair any further. I bow to the master :) | 18:08 | |
masak bows back, but splits into 69,104 small hairs | |||
TimToady | ely-se: at this point, we do not attempt to intuit that a .IO method returns an IO object | 18:09 | |
masak | 69,105! ergh! | ||
ely-se | oh ok :P | ||
m: sub f(Int $x) { }; f("ばか") | |||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/t22v2MJFYkCalling f(Str) will never work with declared signature (Int $x)at /tmp/t22v2MJFYk:1------> 3sub f(Int $x) { }; 7⏏5f("ばか")» | ||
ely-se | ah nice | ||
TimToady | we might add a bit more type inference as we go along, but the problem with type inferencers is that they tend to force the programmer to be as smart as the inferencer, and that tends to drop mere mortals into the ditch alongside the road | 18:10 | |
ely-se | I'm fine as long as it is well-specified what the type checker accepts and what it rejects, instead of something unpredictable. | 18:11 | |
TimToady | in general, we don't want to intuit methods anyway since they're late bound, but we do know at compile time that we will interpret .IO as a coercion, so that's a possible inference that wouldn't hurt much | 18:12 | |
well, the whole point of having a language that can evolve into the future is that it will be unpredictable what will be considered "adaptive" in 20 years | 18:13 | ||
18:13
perl6newbee joined,
lnrdo joined
|
|||
ely-se | Type checkers always reject some correct programs, and it'd be real bad if existing correct code will fail to compile in a future version because the compiler detects a type error. | 18:13 | |
masak | ely-se: rejecting at compile time that which would fail at runtime anyway seems safe though | 18:14 | |
TimToady | "will never work" | ||
the only argument against that approach is that time bombs should be left undisturbed to explode later :) | 18:15 | ||
ely-se | masak: maybe the code will never be executed (e.g. guarded by if (False)), released into the public, used all over the place, and then the next version rejects it | ||
TimToady | and you're going to do a release without even compiling the code? :P | ||
ely-se | I mean Perl 6 implementation release | ||
18:15
dfcarpenterak left
18:16
sena_kun left
|
|||
masak | TimToady: to be honest, I'd prefer if such a time bomb went off at compile time | 18:16 | |
ely-se | example: gist.github.com/rightfold/07aa357ca1e721d10d89 | ||
TimToady | well, they're not really time bombs; they're proximity bombs... | 18:17 | |
masak | I don't care much about whether something is guarded by `if False`. wrong code is wrong code. | ||
ely-se | the point is that you have to be extremely conservative with fatal static analysis if you don't well-specify things and aim for backwards compatibility | 18:18 | |
masak | ely-se: ...but if the code would have failed at runtime anyway...? | ||
ely-se | the code in question would not have failed at runtime. | ||
masak | then you're not accepting my premise | ||
why then would type inference flag it as a type error? I don't understand | 18:19 | ||
TimToady | it's not all that either/or anyway, since there are intermediate approaches | ||
Hotkeys | TimToady: any plans on adding unicode ops like ≥ and ≤ | ||
ely-se | In version 1 of Perl 6, the code works (passes compilation and works at runtime). In version 2 of Perl 6, the code would still work, except does not pass compilation. | ||
Hotkeys | since we have other fancy ones | ||
TimToady | deprecations, warnings, etc | ||
Hotkeys | like the set ops | ||
llfourn | masak: because it becomes wrong but it is done a path that is never reached at runtime I think it the point. | ||
in a path* | |||
18:20
jojotus left
|
|||
llfourn | this is pretty close to the least of my concerns :P | 18:20 | |
masak | llfourn: I don't care if the path is reached or not. I'd like code that will never work to blow up at compile time if it can | ||
ely-se | TimToady: it is hard to find out when to emit such warnings when you don't know what the type checker will do (because it's not specified anywhere) | ||
llfourn | masak: me too I guess. | ||
ely-se | right now it seems to be completely random. | 18:21 | |
18:21
jojotus joined
|
|||
TimToady | no, it's somewhat specified | 18:21 | |
masak | but either way, ely-se is against arguing a case (making previously working code fail at compile time) that I agree is worth being very careful with | ||
ely-se | oh, I couldn't find it | ||
masak | m: sub foo($x is rw) { $x = "OH HAI" }; my @a = foo(my $y), $y; say @a[1] # is this guaranteed to always output "OH HAI\n" because *mumble mumble* sequence points? | 18:22 | |
camelia | rakudo-moar 3259ba: OUTPUT«OH HAI» | ||
ely-se | I'm gonna play with P6 again. Writing wiki software | 18:24 | |
masak | \o/ | ||
ely-se | I wanted to wait till GLR so now's the time :P | 18:25 | |
18:26
firstdayonthejob left
|
|||
TimToady | the notion occurs in several spots, but is explicitly stated at S03:3242 "The compiler is allowed to complain about anything it knows cannot succeed at run time." | 18:35 | |
18:37
dfcarpenterak joined
18:38
perl6newbee left
|
|||
ely-se | ok | 18:40 | |
18:41
espadrine left
|
|||
[Coke] | our main problem there is "did we test for a certain way" | 18:41 | |
pat_js | is the chain assoc for custom operators working? | ||
TimToady | not yet | ||
on my todo list | |||
18:41
kjs_ left
|
|||
TimToady | the simple fix didn't work :) | 18:42 | |
pat_js | Ah okay, I thought I do something wrong. | ||
TimToady | the fundamental problem is that chain operators need to be parsed kind of like a list infix, but rakudo's EXPR actually parses them as left associative, so you don't really have all the information you'd like when you'd like it, so the code handling chained ops is too special-purpose and brittle to see the user-defined op correctly | 18:43 | |
*list-associative infix | 18:44 | ||
pat_js | ah, okay. | ||
TimToady | I did try once. :) | 18:45 | |
PerlJam | masak: Even if that behavior is guaranteed, it gives me the heebie jeebies to see it used :) | 18:46 | |
masak | PerlJam: I actually had a fairly cute use case for it, where it felt right and desirable :) | 18:48 | |
PerlJam: (it's a DSL for describing abstract board games) | |||
18:49
AndyDee joined,
lokien_ left,
lnrdo left
18:50
vendethiel joined
18:57
psy_ left
18:59
SCHAAP137 left
|
|||
ely-se | If I put scripts in bin/ should I also list them somewhere in META.info? | 19:00 | |
19:00
tadzik left
|
|||
RabidGravy | no, it will install the scripts from bin | 19:00 | |
ely-se | ok! | 19:01 | |
RabidGravy | I just found myself wanting multi method dispatch based on an attribute of the invocant, I probably need to step away from the keyboard | 19:03 | |
nine | What could possibly go wrong? | 19:04 | |
19:09
tadzik joined,
Guest69790 left
19:10
zacts joined
19:13
kjs_ joined
|
|||
mspo | fixed my grammar so that it works for p6doc URI|fmt.pl6 | 19:15 | |
but it doesn't format actual pod at all :) | |||
DrForr | Just noticed that 'constant' doesn't appear to be searchable. | 19:16 | |
PerlJam | probably because of the bias towards variable declarators | 19:19 | |
Skarsnik | RabidGravy and other, feel free to add stuff in doc.perl6.org/language/modules-extra | 19:20 | |
DrForr | Same for 'enum'. | 19:21 | |
19:24
lastAck99 joined
19:25
DrPete_ joined,
ely-se left
19:28
rickbike left
|
|||
pat_js | is this a viable solution for rosettacode.org/wiki/Amb ? : gist.github.com/P-Seebauer/c755eeb9170cc1ca7f6f | 19:29 | |
it needed attention. but this solution "abuses" junctions as a constraint solving engine. | |||
and there is still no inherent amb operator | 19:30 | ||
but Junctions sort of fill that role in perl6 | |||
jeek | pat_js: any? | 19:31 | |
19:32
cdg left
19:33
cdg joined
|
|||
pat_js | no, it works | 19:33 | |
the problem is, that I'm using the (sub(){ return unless test; do-something})(|@junctions) to get around the fact that you shouldn't inspect Junctions | 19:34 | ||
19:35
mempko joined
19:38
dfcarpenterak left,
cdg left
19:39
spider-mario joined
|
|||
RabidGravy | is there a single thing that can split a list of objects into sub-lists based on an attribute of the object? | 19:44 | |
19:44
chewie_2082 left
|
|||
leont | classify? | 19:45 | |
jeek | Did the eigenstates function make it into perl 6? | ||
b2gills | pat_js: I think the only way to get it to work the way it really wants to work is to use macros | 19:46 | |
pat_js | is there a way to write a custom container? like scalar, but different. or even like a junction, but differen? | 19:47 | |
Skarsnik | RabidGravy, what kind og weird stuff are you doing? xD | 19:48 | |
llfourn | pat_js: do you mean with a different sigil? | ||
RabidGravy | Hmm classify, yeah I think that's the puppy, cheers leont++ | ||
pat_js | no with other semantics | ||
similar to tie in perl5 | |||
leont still wants a boolean classify | |||
llfourn | pat_js: check out: doc.perl6.org/type/Proxy | 19:49 | |
Skarsnik | pat_js, maybe you want to play with Proxy? | ||
RabidGravy | Skarsnik, github.com/jonathanstowe/Tinky | ||
Skarsnik | Oh wow, have fun :) | 19:50 | |
RabidGravy | It was nearly done-ish then I thought of a cute-ness while I was making the synopsis example | 19:51 | |
19:52
_Vi left
|
|||
RabidGravy | i.e. if transactions have the same name then it will make a method that selects based on the current state of the object | 19:52 | |
pat_js | thanks, Skarsnik and llfourn, but I think I might need something closer to a Junction, now that I look at it. Junctions have this incredible feature of "eating" the operations and subs applied to it. | 19:53 | |
wollmers | p6: sprintf("%b", -9); | ||
camelia | ( no output ) | ||
pat_js | m: say (3|4) + 7 | ||
camelia | rakudo-moar 3259ba: OUTPUT«any(10, 11)» | ||
pat_js | that's amazing. | ||
wollmers | p6: sprintf("%x", -9); | 19:54 | |
camelia | ( no output ) | ||
wollmers | m: sprintf("%x", -9); | ||
camelia | ( no output ) | ||
wollmers | m: say sprintf("%x", -9); | ||
camelia | rakudo-moar 3259ba: OUTPUT«-9» | ||
Skarsnik | RabidGravy, you don't declare the states in the class? | ||
b2gills | m: sub amb ( &code, +@values ) { grep -> @_ { code |@_ }, [X] @values }; say amb ->\x,\y{ x * y == 8}, (1,2,3), (7,6,4,5); | ||
camelia | rakudo-moar 3259ba: OUTPUT«((2 4))» | ||
wollmers | m: say sprintf("%b", -9); | ||
camelia | rakudo-moar 3259ba: OUTPUT«-1001» | ||
wollmers | m: say sprintf("%b", 1 +< 63); | 19:55 | |
camelia | rakudo-moar 3259ba: OUTPUT«1000000000000000000000000000000000000000000000000000000000000000» | ||
wollmers | m: say sprintf("%b", 1 +< 64); | ||
camelia | rakudo-moar 3259ba: OUTPUT«10000000000000000000000000000000000000000000000000000000000000000» | ||
b2gills | m: say sprintf("%b", 1 +< 128); | ||
camelia | rakudo-moar 3259ba: OUTPUT«100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000» | ||
wollmers | m: say sprintf("%b", +^0); | 19:56 | |
camelia | rakudo-moar 3259ba: OUTPUT«-1» | ||
b2gills | m: say sprintf("%b", 2**128 -1); | ||
camelia | rakudo-moar 3259ba: OUTPUT«11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111» | ||
wollmers | m: say sprintf("%b", -9); | ||
camelia | rakudo-moar 3259ba: OUTPUT«-1001» | ||
b2gills | An Int is theoretically unbounded | 19:57 | |
wollmers | m: say sprintf("%064b", +^0); | ||
camelia | rakudo-moar 3259ba: OUTPUT«00000000000000000000000000000000000000000000000000000000000000-1» | ||
b2gills | Int isn't 2's complement | 19:58 | |
wollmers | When was it specced, that bits have a sign? That sprintf("%b", +^0) outputs -1? | 19:59 | |
TimToady | Int is 2's complement, +^ isn't | ||
a negative Int merely has an infinite number of 1 bits instead of 0 bits | 20:00 | ||
20:01
SCHAAP137 joined
|
|||
jeek | m: my $firstword = ("the"|"that"|"a"); my $secondword = ("frog"|"elephant"|"thing"); my $thirdword = ("walked"|"treaded"|"grows"); my $fourthword = ("slowly"|"quickly"); my $sentence = $firstword ~ " " ~ $secondword ~ " " ~ $thirdword ~ " " ~ $fourthword; if $sentence == "that thing grows slowly" { say $sentence; } | 20:01 | |
camelia | rakudo-moar 3259ba: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5any(\"the\", \"that\", \"a\") any(\"frog\", \"elephant\", \"thing\") any(\"walked\", \"treaded\", \"grows\") any(\"slowly\", \"quickly\")' (indicated by ⏏)…» | ||
jeek | :( | ||
TimToady | (notionally; I'm sure libtommath stores a sign bit somewhere :) | ||
colomon | jeek: you want eq, not == | ||
jeek | So I do. | 20:02 | |
pat_js | m: my @a =(all «the that a»),(all «frog elephant thing»),(all «walked treaded grows»),(all «slowly quickly»);sub lf (Str $l, Str $r) {$l.ends-with($r.substr(0,1))};(sub ($w1, $w2, $w3, $w4){return unless [and] lf($w1, $w2), lf($w2, $w3),lf($w3, $w4);say "$w1 $w2 $w3 $w4"})(|@a); | ||
camelia | rakudo-moar 3259ba: OUTPUT«that thing grows slowly» | ||
20:02
pdcawley joined
20:04
firstdayonthejob joined
20:05
darutoko left,
mempko left
20:07
rickbike joined
|
|||
dalek | ar: 22c44f3 | hankache++ | docs/perl6intro.pdf: update perl6intro.pdf |
20:09 | |
ar: c6f059b | (Steve Mynott)++ | docs/perl6intro.pdf: Merge pull request #63 from hankache/master update perl6intro.pdf |
|||
pat_js | ah, okay. | 20:12 | |
20:14
zakharyas joined
20:16
yqt joined
20:20
ely-se joined,
FROGGS left
20:25
yurivish left,
hankache left
|
|||
dalek | Heuristic branch merge: pushed 137 commits to rakudo/2016.01-preparation by niner | 20:27 | |
Skarsnik | wow | ||
20:29
alpha123 left
|
|||
nine | It's a branch based on 2015.12 with cherry-picked commits that don't break backwards compatibility but a lot of fixes and performance improvements and cleanup | 20:29 | |
20:30
domidumont left
|
|||
ely-se | the error message you get when you mistake is for does is quite cryptic | 20:30 | |
m: role A { }; class C is A { } | |||
camelia | ( no output ) | ||
ely-se | m: role A { method f() { ... } }; class C is A { } | ||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/mq_CmFBQm9Method 'f' must be implemented by A because it is required by a roleat /tmp/mq_CmFBQm9:1» | ||
Skarsnik | ? | 20:31 | |
it's clear | |||
RabidGravy | Skarsnik, it's dynamic innit ;-) but I could see some "workflow Foo { state Open { } ; state Close {} .. transition OpenClose { has State $.from = Open.new; .... } }" | ||
20:31
kjs_ left
|
|||
[Coke] | nine: thank you for taking the lead on that! | 20:34 | |
stmuk_ | nine++ # stable branch | 20:35 | |
TimToady | .oO(less unstable) |
20:36 | |
nine++ # courage :) | |||
nine | I really just want to get it over with :) | 20:38 | |
20:39
alpha123 joined
20:41
pmurias joined
|
|||
pmurias | masak: I can imagine situations where we should abort the program because of code that's invalid but never executed | 20:42 | |
* shouldn't | |||
20:42
riatre left
20:43
roguelazer left
|
|||
pmurias | my $foo = Foo.new; if $foo !~ Foo {do-something-that-invalid-on-Foo($foo)} | 20:43 | |
20:43
riatre joined,
roguelazer joined
|
|||
Skarsnik | there is no routine/method type checking (it's kind of annoyingx) | 20:44 | |
pmurias | ely-se: it's possible to make a type-checker that only rejects invalid programs | ||
Skarsnik | I mean before running | 20:45 | |
ely-se | pmurias: yes, but assuming Turing-completeness, not all invalid programs, and it's also difficult to make it useful if it only rejects invalid programs | ||
because it can reject only very few programs | 20:46 | ||
pmurias | I think dialyzer for Erlang is an example of rejecting only invalid programs | ||
ely-se | if it rejects a program because a dead part of it is ill-typed, it rejects a valid program | ||
20:46
molaf left
|
|||
ely-se | and it has to, because of the halting problem | 20:47 | |
20:47
_Vi joined
|
|||
pmurias | it's a tradeoff between only accepting some valid ones and rejecting all invalid ones or rejecting some invalid ones and accepting all valid ones | 20:48 | |
ely-se: dialyzer assumes that dead code is bad and should be detected | |||
jnthn | Skarsnik: The big point of OO is late binding (or at least, was meant to be). :) If you want early binding and more static checking, consider a more functional design rather than an OO one. | ||
ely-se | pmurias: so it rejects some valid programs! | 20:49 | |
pmurias | not sure if it rejects or just warns ;) | ||
20:49
rurban joined
|
|||
hahainternet | hey rurban | 20:50 | |
saw your post on HN yesterday but didn't want to fight :D | |||
pmurias | pmurias: re only very few programs in my experience loads of type error bugs in dynamic languages are simple ones | ||
Skarsnik | jnthn, Perl 6 is still loosy on sub that are not method for type checking. and I am pretty sure in lot of case you want so | 20:51 | |
erf | |||
dalek | c: 16af427 | (Steve Mynott)++ | bin/p6doc: Remove use of |fmt since this breaks code samples like chomp($string); $string.chomp; by putting them on one line when p6doc is used. In any case we should be extending code in Pod::To::Text to format pod (and there is a text wrap sub there). |
||
Skarsnik | I would not mind something to let Perl 6 tell me that I am passing the wrong type to a method at compile time | ||
jnthn | Skarsnik: I'm sure somebody will do that in a module. :) But in terms of what we do by default, it'll mostly be about more static checking of lexically scoped things. | 20:53 | |
mspo | isn't that the point of types? | ||
a point | |||
jnthn | There's many points :) | 20:54 | |
pmurias | ely-se: in regards to stuff breaking due to newly discovered crap dead code, just not aborting legacy production code solves that issue | ||
ely-se | What do you mean by that? | ||
It may be legacy code in an old library that you have to use. | |||
jnthn | I don't know why people are getting so worked up over the "more compile time checking in later language versions" thing. It's all rather easily solved by having the "use v6.d" or whatever switch on spitting out errors on more things. | 20:55 | |
PerlJam | People like to get worked up. | ||
jnthn | Then code that declared its language version will keep on working. | ||
PerlJam | especially about things they understand poorly ;) | ||
Skarsnik | I would like a pragma x) | 20:56 | |
jnthn | PerlJam: Tell me about it. Thankfully I decided not to backlog here any more, so I can see less of it. :P | ||
TimToady | it will also be our fault that they forgot to declare the version :) | ||
jnthn | Of course. :) | ||
TimToady | and used a repo that doesn't enforce versions... | ||
ely-se | Everything is your fault! | ||
PerlJam | .oO( "Perl 6 sucks! I always have to declare which version of the language I'm using!" ) |
20:57 | |
TimToady | well, not everything | ||
20:57
jack_rabbit left
|
|||
ely-se | I like version numbers at the top of files. | 20:57 | |
TimToady | if I ever get to thinking everything is my fault, it's time to shoot me | ||
ely-se | I didn't know you got more granularity than just "Perl 6". | ||
Skarsnik | I don't like them | ||
ely-se | XML is my favourite language because of <?xml version="1.0" ?> | ||
hahainternet | one thing i think is a smart idea fwiw | 20:58 | |
TimToady | XML is not my fault! | ||
hahainternet | is date specifism | ||
PerlJam | heh | ||
hahainternet | ie, perl5 allows me to use Modern::Perl '2015'; | ||
ely-se | TimToady: if XML didn't allow specifying version numbers then XML-related incompatibilities would be your fault. | ||
hahainternet | i like the fact that it's done by date, it feels a bit more accessible | ||
b2gills | TimToady: but TAP is your fault | ||
TimToady | well, "ok 1" is my fault | 20:59 | |
PerlJam | hahainternet: but doesn't make enough sense (IMHO) for *language* versioning. | ||
hahainternet | PerlJam: i'm ambivalent on that | ||
PerlJam | hahainternet: For compiler versions, I can see it being used, but not for languages. | ||
hahainternet | i just wanted to raise the issue | ||
TimToady | TAP is only partly my fault, for writing a TEST script to analyze "ok 1" | ||
pmurias | hahainternet: until you find code that's written 20 years ago | ||
hahainternet | pmurias: hey as long as it says '1995' on it (jesus christ that was 20 years ago!) | ||
RabidGravy | tum ti tum | ||
Skarsnik | C standard name are a date! | ||
ely-se | jnthn: is any d for use v6.d; already supported? | 21:00 | |
v6.0 is croaked upon | |||
Skarsnik | I thing the real issue is what is the default? | ||
If I put nothing it assume what? | |||
ely-se | it assumes PHP by default | ||
21:00
yqt left
|
|||
PerlJam | Skarsnik: the highest standard the compiler understands | 21:01 | |
jnthn | Skarsnik: If you put nothing it assumes latest. | ||
Well, latest standard, yes. | |||
TimToady | that'd be v6.*.0 | ||
Skarsnik | That I will never put the version probably xD | ||
TimToady | v6.*.0+ rather | ||
then you can't test against any dev versions | 21:02 | ||
RabidGravy | Well it should be the version you tested with | ||
PerlJam | Skarsnik: that will probably only bite you when we deprecate things. | ||
pmurias | .oO(use php:from<1995>) |
||
TimToady | well, there may be subtle differences that don't fall into the category of deprecations | 21:03 | |
the whole point of going from 6.c to 6.d someday is to mutate the language | |||
PerlJam | that's why I said "probably" :) | ||
[Coke] | TimToady: a doc page on how spec versions work would be a good thing. | ||
someone enterprising could scrape the logs for timtoady today and write it up! | 21:04 | ||
TimToady | you (or someone like you) should mostly likely probably kinda sorta said (or indicate) something more along the lines of "probably" | ||
PerlJam | [Coke]: heh ... I was thinking you should do exactly that! :) | ||
[Coke] | You can't spell timtoady with mit out today! | ||
ely-se | oh, it's actually literally "v6.d" | ||
on my machine it says v6.c | |||
what do those letters mean? | |||
[Coke] | yes. there has only ever been v6.c so far. | ||
version 6 - christmas | 21:05 | ||
ely-se | oh ok :) | ||
I'll use that then. | |||
TimToady | instead of using years or numbers, we decided we like letters for language standards | ||
especially since they can be associated with names like 'christmas', 'diwali', etc | 21:06 | ||
jnthn | I can also try and draft something up on versioning in the coming days. | ||
TimToady | which cuts a bit of the marketing headwind | ||
ely-se | v6.e for elyse | ||
TimToady | are you a religious festival? | ||
DrForr | multi++ # though I'm probably borderline abusing it. | ||
hahainternet | TimToady: i think you could argue .f for 'Friday' would count as that ;) | 21:07 | |
and it makes the release window for that version very easy too :D | |||
TimToady | hah | ||
ely-se | what if you went all the way to Z? | ||
PerlJam | ely-se: we will. | ||
TimToady | we've already said we no longer have to hit the day in question | ||
Christmas was a fluke | |||
pure coincidence :) | |||
PerlJam | ely-se: Are you asking what comes after 6.z ? | ||
ely-se | yes | ||
TimToady | well, there's always 6.zz | 21:08 | |
Skarsnik | the end of the world probably | ||
ely-se | Perl 7 | ||
PerlJam | m: my $s = "z"; $s++; say $s; | ||
camelia | rakudo-moar 3259ba: OUTPUT«aa» | ||
TimToady | m: say v6.z cmp v6.0 | ||
camelia | rakudo-moar 3259ba: OUTPUT«Less» | ||
PerlJam | :-) | ||
TimToady | there's always 6.0 | ||
21:08
Ven joined
|
|||
PerlJam | that would really confuse people | 21:08 | |
skids | Restart the alphabet with umlauts | ||
21:08
rindolf left
|
|||
ely-se | Having fun with Perl 6 already. | 21:09 | |
geekosaur | m: say so 'z < '{' | ||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/S7QeOVXnTDUnable to parse expression in single quotes; couldn't find final "'" at /tmp/S7QeOVXnTD:1------> 3say so 'z < '{'7⏏5<EOL> expecting any of: list composer singl…» | ||
TimToady | given some of us hope to be dead by the time we reach .z, it's someone else's problem :) | ||
ugexe | m: say "z".succ | ||
camelia | rakudo-moar 3259ba: OUTPUT«aa» | ||
geekosaur | woo[s | ||
ely-se | gist.github.com/rightfold/c250865ca780d62d2596 | ||
geekosaur sighs. typing not working so hot today | |||
m: say so 'z' < '{' | |||
camelia | rakudo-moar 3259ba: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '3⏏5z' (indicated by ⏏) in block <unit> at /tmp/8BLa9qTm5P line 1Actually thrown at: in block <unit> at /tmp/8BLa9qTm5P line 1» | ||
geekosaur | derr | ||
m: say so 'z' lt '{' | |||
camelia | rakudo-moar 3259ba: OUTPUT«True» | ||
TimToady | If we do switch to 6.0 someday, I hope to be dead before we hit v6.6.6... | ||
21:09
kaare_ left
|
|||
ely-se | and reincarnate on the day of lucky v7.7.7 | 21:10 | |
stmuk_ | . o O ( are there any religious festivals starting with F? ) | ||
hahainternet | Friday! | ||
followed by more people than any other religion | |||
prayed for by more people than any saint | |||
TimToady | m: say v6.z cmp v6.ä | 21:11 | |
camelia | rakudo-moar 3259ba: OUTPUT«Less» | ||
hahainternet | celebrated more than any festival you can name :D | ||
TimToady | I guess that works | ||
PerlJam | .oO( I thought Friday was followed by Saturday ) |
||
TimToady | not sure how many religious holidays start with umlauts though... | ||
hahainternet | where's the rimshot bot ;) | ||
ely-se | stmuk_: Feast of the Sacred Heart | ||
stmuk_ | floralia | ||
mspo | festivus | 21:12 | |
ugexe | festivus has no ties to religion | ||
TimToady | fiesta, if we wanna get the hispanics to feel included | ||
doesn't really have to be religious | |||
jnthn | PerlJam: That moment when you're not sure if pun or Rebecca Black reference... :) | ||
PerlJam | heh | ||
TimToady | I don't think my birthday is particularly religious...yet... | ||
nine | Why is ä after z? | ||
DrForr | Bummer, 'is rw' only works on scalars. | 21:13 | |
TimToady | maybe you want 'is raw' | ||
DrForr | Ah, that works but I'm not sure where I'd dig up docs on that. | 21:14 | |
TimToady | nine: because we decided versions go in unicodical order | ||
jnthn | rest & | 21:15 | |
ely-se | just continue with the next code point after z | ||
TimToady | wants to be alpha to be considered before .0 | ||
and we do have to parse the silly things | |||
ely-se | so at one point you'll end up with v6.🕴 | ||
TimToady | as it is, we disallow a method call after a version number | ||
ely-se | fonts that lack 🕴 suck | 21:16 | |
masak | m: say (v1.0).Str | ||
camelia | rakudo-moar 3259ba: OUTPUT«1.0» | ||
TimToady | m: say v6.c.1.Str | ||
camelia | rakudo-moar 3259ba: OUTPUT«v6.c.1.Str» | ||
ely-se | m: say (v1.🕴).Str | ||
camelia | rakudo-moar 3259ba: OUTPUT«5===SORRY!5=== Error while compiling /tmp/WPMhquVWnRMalformed postfix callat /tmp/WPMhquVWnR:1------> 3say (v1.7⏏5🕴).Str» | ||
mspo | so is there interest in me trying to patch the line wrapper stuff into p6doc and removing the | fmt -m 80, or should that logic get built into a Pod:: module | ||
TimToady | what happens if you want ) for a version character? | 21:17 | |
stmuk_ | mspo: I just removed the |fmt since it broke other things | ||
21:17
cdg joined,
yqt joined
|
|||
mspo | stmuk_: oh cool | 21:17 | |
TimToady | |fmt is just wrong for non-flowed text | ||
mspo | TimToady: I made a grammar to chop lines that works a little better | ||
ely-se | TimToady: escape it with a backslash | ||
stmuk_ | mspo: I think line wrapping logic should be in "Pod::To::Text" | 21:18 | |
TimToady | okay, what if you want a backslash in your version? | ||
ely-se | escape it with a backslash | ||
[Coke] | (religious) I would be grateful it it were just "holidays". | ||
21:18
zakharyas left
|
|||
_nadim | What's the rule for which symboles string EVAL can an can not see? I had a script with a sub that does string EVAL, no problems seing scoped symbols. in tests it doesn't work and when I move the sub to it's own package, the symboles are not seen either. | 21:19 | |
TimToady | really, it's anything that is a named celebration | ||
that isn't too non-family-friendly, I should add :) | |||
skids | What, no Ron Jeremey Day? | ||
ely-se | programmer's day | ||
stmuk_ | holiday is holyday! | 21:20 | |
TimToady | _nadim: EVAL only sees things in its outer lexical scope | ||
which means (or is supposed to mean) the spot where the EVAL is called | |||
RabidGravy | so, when we get to Yule we're ready to start again | ||
[Coke] | note that EVAL has a magical undocumented parameter. | 21:21 | |
_nadim | please do tell | ||
stmuk_ | X-Day (Church of the SubGenius) | ||
TimToady | EVAL is specially recognized by the compiler, one of the reasons it's uppercased | ||
pat_js | where can I find documentation about the CALL-ME documentation? | 21:22 | |
TimToady | we are specifically NOT restricting it to one culture's religious holidays | ||
stmuk_ | Integrity Day -- | ||
A day of contemplation of Hubbard's 1965 study on Scientology Ethics. | |||
maybe not | 21:23 | ||
21:24
prammer left
|
|||
Hotkeys | Are we going to get 6.pi-day | 21:24 | |
Or will that wait til 6.π | 21:25 | ||
_nadim | TimToady: outer scope is the compilation unit then, right? this works for example nopaste.linux-dev.org/?931825 | ||
TimToady | m: say v6.π cmp v6.τ | ||
camelia | rakudo-moar 3259ba: OUTPUT«Less» | ||
Hotkeys | Of course we can have tau day too | 21:26 | |
m: say v6.π cmp v6.c | |||
camelia | rakudo-moar 3259ba: OUTPUT«More» | ||
Hotkeys | Good we haven't missed it | ||
TimToady | _nadim: yes, that should work | 21:27 | |
ely-se | Is it already possible to "use M <&f>;" to import just the f sub from M? | 21:28 | |
the compiler says no EXPORT sub is defined | |||
21:28
roguelazer left
|
|||
dalek | kudo/2016.01-preparation: 1cb4034 | coke++ | docs/announce/2016.01.md: Placeholder release announcement |
21:29 | |
21:29
rodarmor left
|
|||
TimToady | m: say v6.c cmp v6.𒁖 | 21:29 | |
camelia | rakudo-moar 3259ba: OUTPUT«Less» | ||
21:29
riatre left
|
|||
TimToady | .u 𒁖 | 21:29 | |
yoleaux | U+12056 CUNEIFORM SIGN DAG [Lo] (𒁖) | ||
TimToady | and I think it is one! | 21:30 | |
21:30
roguelazer joined,
rodarmor joined,
riatre joined
|
|||
wollmers | Int has unlimited bits. Thus my bitvector LCS::BV has half the code now, is the shortest and fastest (written in P6;-). And O(n). A::Diff crashed in second benchmark. | 21:33 | |
21:34
rindolf joined,
ruoso left
21:39
sno left
21:41
Skarsnik left
21:42
friedo_ joined,
ruoso joined
|
|||
friedo_ | hi folks | 21:43 | |
what am I doing wrong with named positional parameters here? pastebin.com/xxmeP8gj | |||
timotimo | friedo_: you have declared the sub takes 3 positional arguments and 0 named arguments | 21:44 | |
if you want it to take named arguments, you'll haev to put a : in front of the $ | |||
if you want the sub to work with positionals as well as nameds, you'll have to build two candidates and make the sub into a multi sub | |||
friedo_ | what I've read elsewhere seems to imply that the :name(val) form works for both positional and named params though :/ | 21:45 | |
e.g. this post, unless it's obsolete? perl6advent.wordpress.com/2009/12/...arameters/ | 21:46 | ||
dalek | kudo-star-daily: 9bf888c | coke++ | log/ (6 files): today (automated commit) |
21:51 | |
TimToady | it's only about 6 years out of date... :) | 21:52 | |
we decided trying to support that would lead to insanity | 21:53 | ||
for some definition of "we", and "insanity" | |||
21:53
ELBeavers joined
|
|||
friedo_ | @TimToady thanks for the clarification | 21:54 | |
[Coke] | dd | 21:59 | |
nine | I'm off to bed now. Good night all! | 22:00 | |
22:00
lokien_ joined
|
|||
PerlJam | nine: sleep well! | 22:01 | |
22:05
skids left
|
|||
timotimo | nite nine | 22:05 | |
22:06
friedo_ left
|
|||
mspo | finding all of the Pod moduls is fun :) | 22:07 | |
ely-se | v6.i.imgur.com/XWOuu8G.gif | 22:15 | |
timotimo | wow, i've only ever seen a very, very short version of that gif before | 22:16 | |
22:17
kjs_ joined
|
|||
ely-se | I feel sorry for you. | 22:17 | |
It's the most awesome gif of all time. | |||
sjn | v6.🎆 | ||
flussence | .oO( a codepoint is worth a thousand frames ) |
22:18 | |
ely-se | m: say v6 * 1i | 22:19 | |
camelia | rakudo-moar 3259ba: OUTPUT«Cannot call Numeric(Version: ); none of these signatures match: (Mu:U \v: *%_) in block <unit> at /tmp/5sgFteWnia line 1» | ||
ely-se | no imaginary versions | ||
sjn | heh | 22:20 | |
.u 🎆 | |||
yoleaux | U+1F386 FIREWORKS [So] (🎆) | ||
sjn needs a font that shows that grapheme | |||
22:21
M___ joined
|
|||
dalek | c: a41aee8 | (Steve Mynott)++ | bin/p6doc: Look under Language and Type so that 'p6doc Str' and 'p6doc faq' now |
22:21 | |
flussence wonders why fontconfig has half a dozen commands that do almost identical things, and none of them are "show me which fonts have this character in them" | 22:24 | ||
22:26
mempko joined
22:29
pmurias left
|
|||
ely-se | Well, time to sleep. Bye! | 22:30 | |
flussence: because incompetence | |||
22:30
ely-se left
|
|||
mspo | timotimo: www.youtube.com/watch?v=9CS7j5I6aOc for the sound | 22:36 | |
and www.youtube.com/watch?v=NFTaiWInZ44 | |||
22:38
andrewalker left
22:41
Ven left
22:43
andrewalker joined
22:45
muraiki left
|
|||
zengargoyle | hrm... is there now no easy way to use rakudobrew and share a Perl 6 install with multiple users? | 22:46 | |
it's doing odd things, like panda shows installed modules to one user but not another. | 22:47 | ||
22:50
Praise left,
Praise joined
22:51
bjz joined
22:52
rurban left
|
|||
tadzik | ugh | 22:53 | |
rakudobrew is not meant to be used as a system-wide installation | |||
please don't go there, it's a very bad idea :) | |||
b2gills | It should probably fail with that message if ran as root | 22:55 | |
dalek | c: 47fcaf0 | (Steve Mynott)++ | bin/p6doc: 'p6doc -l' now lists some documents |
||
tadzik | that's not a bad idea | 22:56 | |
timotimo | utf8everywhere.org/ - haven't read it yet, but might be interesting? | 22:58 | |
zengargoyle | tadzik: why? what's wrong with /opt/rakudobrew being rwxrwsr-x user:group and having user in group? | ||
23:00
TEttinger joined
|
|||
zengargoyle | directories/files are rwx for everybody in group. stuff should install and work that way (it did at one point...) | 23:00 | |
23:00
lichtkind left
|
|||
tadzik | should. We already had someone here who did some mumbo-jumbo with a system-wide rakudo and ended up with his /usr/bin wiped | 23:01 | |
I don't doubt that it can be done correctly, but I want no part of that, I won't advertise it and in any case I won't support such usage | |||
23:01
pat_js left
|
|||
tadzik | s/rakudo/rakudobrew/ | 23:01 | |
23:01
bjz left
23:02
sno joined
|
|||
zengargoyle | fwiw, seem more like a rakudo/panda issue than rakudobrew... | 23:02 | |
tadzik | nah | 23:03 | |
dalek | c: 4839d10 | (Steve Mynott)++ | bin/p6doc: file is already an .IO |
||
tadzik | well, the erratic behaviour in question came up because of either putting rakudobrew in /usr/bin or symlinking rakudobrew's bin there, or something | ||
rakudobrew treats its bin like its own thing, temporary by all means, and will not hesitate to wipe it | 23:04 | ||
23:04
rindolf left
|
|||
tadzik | it was without a doubt the user's fault | 23:04 | |
but still :) | |||
23:05
_Vi left
|
|||
tadzik | it wasn't developed with multiuser-usage in mind, it wasn't tested for it... it might Just Work, but I won't claim responsibility for any of this | 23:05 | |
stmuk_ | it's like rakudobrew has become a monster independent of its creator and the standard way of installing perl6 :) | ||
zengargoyle | ah, not a problem here. i started with /opt/rakudobrew and just changed permissions to be a group thing. but for some reason panda works for owner but not group. | ||
tadzik | (not that I will in other cases :P) | ||
zengargoyle | like i can still *use* installed modules, but panda list doesn't show them. | 23:07 | |
tadzik | hm, peculiar | 23:09 | |
well, if panda is unable to write to the rakudo's site/, it falls back to ~/.perl6/site | |||
that could explain it | 23:10 | ||
it also picks up the first location that works, ignoring others | |||
zengargoyle | that's probably broken. i'm sure i can write to /opt/rakudobrew yet still end up with stuff in .perl6 | ||
i've gone as far as chown/chmod -R the whole thing just to be sure, remove .perl6 and it shows up again. which is patently silly. | 23:11 | ||
23:14
mempko left
|
|||
zengargoyle | if i chown -R to another user, that user works. so looks like somewhere it's checking acutal owner permissions vs group/actual permissions. | 23:14 | |
23:18
cpage_ left
23:23
_Vi joined
|
|||
tadzik | interesting | 23:26 | |
all panda does (that I know of) is checking the writability of file/directory | |||
zengargoyle | might try a start-from-scratch and test thing this weekend or something. since something like «perl6 -e 'use LibraryCheck; say "woot";'» works no matter which user owns install, but «panda --installed list» only works for actual owner... it might only be in the part that tries to enumerate available modules vs the part that tries to load a specific module. so it seems so far. | 23:30 | |
not sure if panda is using a compunitrepo to get the list of installed or relying on it's own list somewhere. | 23:31 | ||
23:32
_Vi left,
_Vi joined
23:33
kid51 joined
|
|||
tadzik | no, it has its own list | 23:33 | |
to keep track of what was installed as a dependency and what was not | |||
zengargoyle | seems like that should be in compunit or something so other package managers have the same info. | 23:34 | |
23:34
yurivish joined
|
|||
tadzik | that'd be nice | 23:34 | |
23:41
jabus joined
|
|||
RabidGravy | coo a 103 line synopsis, I'd skip the rest of the documentation if that was half of it | 23:41 | |
jabus | how to connect to MS sql server using perl6? looks like DBIish is for sqlite, postgres and mysql only? | 23:42 | |
23:43
skids joined
|
|||
RabidGravy | right now, I'd guess that you can't TBH, though I'm sure you could bind to an ODBC library | 23:44 | |
23:45
kjs_ left
|
|||
RabidGravy | there is an Oracle driver in hand for DBIish and I guess someone could make a FreeTDS driver or whatever the new fashion is | 23:46 | |
jabus | huh. I don't know a good way to bind to an ODBC lib (or really any bind to anything.) | ||
RabidGravy | well it's look at the DBIish code and doc.perl6.org/language/nativecall and then hack something together with your favourite ODBC library :) | 23:48 | |
lots of code but probably not horribly difficult | 23:49 | ||
I'm sure someone will be sufficiently motivated at some point to make this | 23:52 | ||
after all no-one's made an email sending library yet | 23:53 | ||
23:55
cpage_ joined
23:57
firstdayonthejob left
|
|||
jabus | ok thx RbdGrvy. | 23:57 | |
23:57
SCHAAP137 left
|
|||
RabidGravy | right time to crash, toodles peeps | 23:58 |