»ö« 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
Cabanossi left,
dubi0us joined
00:02
Cabanossi joined
|
|||
raschipi | Thanks for the explanation guys. | 00:07 | |
00:12
lizmat left
00:16
espadrine left
00:17
lizmat joined
00:23
mienaikage left,
xui_nya[m] left,
wictory[m] left,
CIAvash[m] left,
Matthew[m] left,
tyil[m] left,
ilmari[m] left,
tadzik left,
unclechu left
00:24
M-Illandan left,
mack[m] left
00:32
Cabanossi left,
Cabanossi joined
00:36
Cabanossi left
00:37
zengargoyle joined,
Cabanossi joined
00:42
Actualeyes left
00:45
pierre_ joined
00:46
dj_goku left
00:48
dj_goku joined,
dj_goku left,
dj_goku joined
00:56
dubi0us left
00:57
pharv_ joined
00:59
dubi0us joined
01:01
dubi0us_ joined
01:03
Kyo91_ joined
01:04
dubi0us left,
pierre_ left
01:05
dubi0us_ left
|
|||
AlexDaniel | m: say %*ENV<ME>.comb.pick(*).join | 01:07 | |
camelia | lixAelenDa | ||
raschipi | m: say %*ENV<ME> | 01:10 | |
camelia | raschipi | ||
01:18
dubi0us joined,
pharv_ left
01:23
tadzik joined
01:24
tadzik left
01:30
Cabanossi left,
tadzik joined
01:31
andreoss left
01:32
Cabanossi joined
01:38
unclechu joined,
tyil[m] joined,
wictory[m] joined,
M-Illandan joined,
mack[m] joined,
Matthew[m] joined,
ilmari[m] joined,
xui_nya[m] joined,
CIAvash[m] joined,
mienaikage joined
01:40
dubi0us_ joined
01:43
dubi0us left
01:47
dubi0us_ left
01:48
ilbot3 left
01:51
ilbot3 joined,
ChanServ sets mode: +v ilbot3
|
|||
ugexe | m: m: use lib "inst#/home/camelia/star-2017.07/share/perl6/site"; use Zef::Client; use Zef::Config; my $client = Zef::Client.new(:config(Zef::Config::parse-file( Zef::Config::guess-path()))); .dist.name.say for $client.search("HTTP"); | 01:59 | |
camelia | HTTP::Server::Tiny HTTP::Server::Simple HTTP::UserAgent HTTP::Easy HTTP::Status |
02:00 | |
ugexe | i'm leaving installing modules onto camelia as an exercise to the user | ||
02:01
dubi0us joined
|
|||
mspo | where should lib sources go? | 02:01 | |
02:01
Kyo91_ left
|
|||
ckraniak | Question 10 or so about Native Call: how does one declare a function pointer in a CStruct? With a Pointer? | 02:04 | |
02:05
dubi0us left
02:08
noganex_ joined
02:09
Kyo91_ joined
02:10
noganex left
02:11
zengargoyle left,
dubi0us_ joined
02:16
dubi0us_ left,
astj joined
02:18
astj left,
zengargoyle joined
02:22
astj joined
02:40
astj left
02:41
skids joined
|
|||
timotimo | ckraniak: you should be able to nativecast from Pointer to any function pointer type you can imagine and backwards, too | 02:41 | |
ckraniak: btw, i can compile your nativecall issue code just fine, what exact perl6 --version do you have so i can maybe reproduce the issue? | 02:42 | ||
ckraniak | perl6 --version outputs 2017.07, 6.c | 02:43 | |
Is there a more verbose version somewhere? | |||
[Coke] | that version should be slightly more verbose than what you C&P'd | ||
ckraniak | IRC on phone not computer, cannot copypaste | 02:44 | |
timotimo | that's as verbose as you can get | ||
ckraniak | Hmm. Well I downloaded whichever it was on Friday I think | 02:45 | |
This would have been the msi version | |||
timotimo | oh, right, you're on windows | ||
i don't have a windows rakudo to test things out with, but it shouldn't matter | 02:46 | ||
ckraniak | Wednesday, actually, idk how fast y'all change stuff | ||
Try deleting the whole SHUT-UP class and see what it does | 02:47 | ||
timotimo | we release the compiler monthly, but we only build msi for Rakudo Star, which is compiler + modules + documentation | ||
sure | |||
same output | |||
ckraniak | Outputting 284? | ||
Welp just chalk it down to MS just knocking it out of the park again I suppose | 02:48 | ||
Thanks for looking into it anyway | |||
02:55
epony left
|
|||
timotimo | i find it hard to believe MS is at fault here o_O | 02:56 | |
02:58
dubi0us joined,
dubi0us left
|
|||
timotimo | i'll try falling asleep again :| | 02:58 | |
03:00
wamba joined
03:03
dubi0us joined
03:04
wamba left,
wamba joined
|
|||
ckraniak | Doesn't matter if it works | 03:06 | |
Even if the code looks completely stupid | |||
s/if/so long as/ # for clarity | |||
03:07
dubi0us_ joined,
dubi0us left
03:09
Kyo91_ left
03:10
epony joined
03:11
dubi0us_ left
03:14
Cabanossi left
03:16
Cabanossi joined,
pierre_ joined
03:17
dubi0us joined
03:21
pierre_ left
03:24
zengargoyle left
03:26
dubi0us left
03:32
dubi0us joined
03:37
dubi0us left,
dubi0us joined
03:42
dubi0us left
03:52
dubi0us joined
03:56
dubi0us left
04:01
zengargoyle joined,
dubi0us joined
04:05
dubi0us left
04:17
dubi0us joined
04:18
zengargoyle left
04:19
zengargoyle joined
04:22
dubi0us left
04:26
zengargoyle left
04:44
Cabanossi left
04:46
Cabanossi joined
04:54
haha_ joined
04:55
zengargoyle joined
05:07
dubi0us joined
05:12
dubi0us left
05:14
zengargo1le joined,
andrzejku joined
05:15
pilne left
05:16
raschipi left,
dubi0us joined
05:17
zengargoyle left,
skids left
05:18
andrzejku left
05:19
andrzejku joined
05:21
dubi0us left
05:23
dubi0us joined,
khw left
05:25
zengargo1le left
05:27
zengargoyle joined,
dubi0us left
05:28
dubi0us joined
05:32
dubi0us left
05:37
haha_ left
05:42
BenGoldberg left
05:43
haha_ joined
05:44
Cabanossi left
05:46
haha_ left,
Cabanossi joined
05:53
dubi0us joined
05:55
zengargoyle left
05:58
dubi0us left
06:03
dubi0us joined
06:07
dubi0us left
06:23
dubi0us joined
06:27
dubi0us left
06:30
Cabanossi left
06:31
Cabanossi joined
06:35
lizmat left
|
|||
stmuk | you can use choco install rakudostar and appveyor to easily test windows via MSI | 06:36 | |
06:37
dubi0us joined
06:46
dubi0us left
06:55
skids joined,
|oLa|1 joined
|
|||
moritz | ok, I forgot to reboot irc.p6c.org yesterday night; doing it now | 06:57 | |
stmuk | dont forget to replace systemd by sysvinit ;) | ||
06:57
pmichaud_ left,
[Coke] left,
|oLa| left
|
|||
moritz | ok, it came back up | 06:59 | |
I guess www.p6c.org comes next | 07:00 | ||
07:01
dubi0us joined
07:04
ijneb left
07:06
dubi0us left
07:07
dubi0us joined
07:12
darutoko joined,
dubi0us left
07:14
skids left
07:16
rindolf joined
07:17
zengargoyle joined
07:21
Koong joined
|
|||
Koong | I don't to know about for perl6. | 07:22 | |
-_-' | 07:23 | ||
Hi | |||
moritz | hello Koong | ||
Koong | hello moritz | 07:24 | |
07:28
Hotkeys left
|
|||
ckraniak | Want to say I am enjoying the language so far | 07:30 | |
07:33
Koong left
|
|||
ryu0 | That was odd. | 07:33 | |
07:36
pierre_ joined
07:37
zengargoyle left
|
|||
moritz | ckraniak: that's great to read | 07:42 | |
ryu0 | Though nothing compared to the weird web chat visitors we get in #learnprogramming. lol | 07:44 | |
07:53
zengargoyle joined
07:59
Cabanossi left
08:01
Cabanossi joined
08:04
yqt joined
|
|||
moritz | thinking about parsing a bit more, I think there could be a relatively simple way to improve pasing errors from grammars | 08:06 | |
we could have an assertion that makes a failure fatal for the whole whole parse after the grammar got there | 08:07 | ||
08:08
zengargoyle left,
lisbeths joined
|
|||
moritz | oh, it seems <commit> is meant to do just that | 08:08 | |
ryu0 | moritz: i assume perl 6 grammars are meant as a substitute for stuff like YACC and LEX? | 08:09 | |
moritz | ryu0: yes | 08:10 | |
jnthn: what would it take to implement <commit> in regexes? | |||
ryu0 | interesting. never seen that built into a language before. | ||
usually it's an addon. | |||
moritz | the really cool thing is that regexes are code objects in Perl 6 | 08:11 | |
so you can use all the usual techniques for code reuse (role composition, inheritance, delegation) for regexes and grammars as well | |||
ryu0 | Not an opaque compiled engine like other implementations? | ||
moritz | it's more like a declarative way to write a recusrive descend parser, with regexes (optionally without backtracking) for tokenization | 08:14 | |
08:15
zengargoyle joined
|
|||
moritz | *recursive | 08:16 | |
ryu0 | i also saw that the JVM is being targeted by nqp/rakudo. is there plans to expand it to other VMs too? | 08:20 | |
moritz | pmurias is working on a js backend | 08:21 | |
ryu0 | ah. | ||
lisbeths | The main three targets are llvm, jvm, and webassembly | ||
perhaps .net core | |||
ryu0 | I take it CIR isn't very popular. heh | ||
moritz | and I think it's pretty far along; like rakudo.js being able to compile the setting, and even use Test.pm | 08:22 | |
ryu0 | but i assume MoarVM will continue to remain the default VM, hm? | 08:23 | |
moritz | until something better comes along :-) | 08:24 | |
ryu0 | lol. i thought you were developing one to have your own regardless of where the 3rd party ones go. | ||
moritz | we are very pragmatic around here when it comes to such choices | 08:25 | |
like, parrot used to be target of choice | |||
08:25
aborazmeh joined,
aborazmeh left,
aborazmeh joined
|
|||
moritz | until moarvm became better in basically all dimensions | 08:25 | |
08:25
as_ joined
|
|||
moritz | if we find a 3rd party VM that does better than MoarVM, less maintainence effort to us | 08:25 | |
though it's going to be pretty hard to beat something that implements grapheme-level strings at VM level, and I don't see other VMs doing that right now | 08:26 | ||
ryu0 | that makes me wonder. Is stuff like NativeCall standardized across backends? | ||
moritz | somewhat, yes | 08:27 | |
ryu0 | ah. | ||
08:29
Cabanossi left
08:30
wamba left
|
|||
as_ | Morning! Anyone can tell why do we need both Supply and Supplier classes? Looks a bit confusing and overcomplicated to have Supplier.new and then Supplier.new.Supply. Supplier is only to be used as a factory? Why are they split? | 08:30 | |
gfldex | m: my @a = [{a=>1, b=>2}, {a=>3, c=>55}]; dd @a».<c>.grep(*.values.defined) | ||
camelia | (Any, 55).Seq | ||
08:30
pierre_ left
|
|||
gfldex | m: my @a = [{a=>1, b=>2}, {a=>3, c=>55}]; dd @a».<c>.grep(*.values».defined) | 08:30 | |
camelia | (55,).Seq | ||
gfldex | It's like Perl 6 was made to work with JSON. :) | 08:31 | |
08:31
Cabanossi joined
|
|||
moritz | it's like Perl 6 was made to work with data structures :-) | 08:34 | |
lisbeths | Some perl developers could learn a bit from minimal languages like forth where you deal with direct memory addresses and the only type is a byte | 08:44 | |
All you really need for a type system is ints | |||
08:44
wamba joined
|
|||
lisbeths | all you need for most things is arrays of ints | 08:45 | |
ryu0 | lisbeths: i've used languages that are typeless before. shell script is also typeless, since everything is a string more or less. | ||
lisbeths | Strings are a bit easier to get into than just ints | ||
08:46
dubi0us joined
|
|||
lisbeths | The problem with most string typed languages is escaping strings | 08:48 | |
ryu0 | that's a problem in many languages when you're embedding a string type of a different context. | 08:49 | |
especially C or C++. | |||
lisbeths | Nesting strings is very painful, especially because most languages use the same symbol for the left hand and the right hand of the string. | 08:50 | |
08:51
dubi0us left
08:52
dubi0us joined
08:57
dubi0us left
09:02
dubi0us joined
09:06
dubi0us left
|
|||
moritz | good thing we offer more data structures than just strings | 09:10 | |
lisbeths | Yeah thats what makes the perls so much better than bash. | 09:11 | |
In part. | |||
moritz | PSA: I'm going to reboot the server that hosts www.perl6.org and other Perl 6 websites | 09:12 | |
... back up | 09:14 | ||
lisbeths | Jeez what os are you running on that? | ||
moritz | now Debian Stretch | 09:16 | |
used to be Jessie | |||
lisbeths | That was a pretty fast reboot | ||
moritz | not many services running | 09:17 | |
and it's a VM, so no ultra-slow server bios | |||
rebooting the hypervisor spends about a minute or so just in the bios | 09:18 | ||
lisbeths | When I reboot my machine in azure it takes maybe four minutes but that's on hdd | ||
gfldex | JSON::Tiny got a broken test with This is Rakudo version 2017.07-152-g30584da built on MoarVM version 2017.07-378-g5e94da0 | ||
moritz | gfldex: yes, we have a rakudo bug report for that | 09:19 | |
gfldex goes to find a fresh bug | |||
09:20
dubi0us joined
|
|||
moritz | RT #131881 | 09:20 | |
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=131881 | ||
09:20
lisbeths` joined
09:21
lisbeths` left,
lisbeths` joined,
lisbeths` left,
lisbeths` joined
09:24
dubi0us left,
lisbeths left
09:27
dubi0us joined
09:28
lisbeths` is now known as lisbeths
09:31
nadim joined
09:32
dubi0us left
09:48
dubi0us joined
09:53
dubi0us left
10:00
Cabanossi left
10:01
Cabanossi joined,
pmurias joined
|
|||
pmurias | ryu0: re standardized, all the VMs generally try to implement the same layer of low level operations | 10:02 | |
ryu0: the differences are mostly some of them lacking features | |||
10:04
aborazmeh left
|
|||
pmurias | ryu0: re have our own we can always take over and fork an existing VM | 10:04 | |
ryu0: the main reason for MoarVM is that JVM has a slow startup so the MoarVM developers wanted something tailor built for Perl 6 | 10:05 | ||
10:05
ijneb joined
|
|||
pmurias | lisbeths: for me the most interesting thing we could target that we aren't is the graal/truffle thing on the JVM | 10:14 | |
10:30
Cabanossi left
|
|||
TEttinger | aaaargh graaaaaaaal | 10:30 | |
it's so frustrating to build | 10:31 | ||
10:31
wamba left
|
|||
TEttinger | and if you want slow startup time, graal has that covered | 10:31 | |
10:31
Cabanossi joined
10:33
pierre_ joined
10:40
dubi0us joined
10:42
as_ left
10:44
dubi0us left
10:52
pmurias_ joined
|
|||
pmurias_ | TEttinger: didn't they reduce the startup time with substrate VM? | 10:53 | |
TEttinger: AFAIR I got graal to build by just following the instructions they provided | 10:54 | ||
10:59
Cabanossi left
11:01
Cabanossi joined
11:02
eater is now known as root,
root is now known as eater
11:07
pierre_ left
11:08
pierre_ joined
11:11
evanm joined
11:12
zengargoyle left,
pierre_ left
11:14
pierre_ joined
11:19
zengargoyle joined
11:23
AlexDani` joined
11:24
AlexDaniel left
11:27
AlexDani` is now known as AlexDaniel
|
|||
TEttinger | pmurias: i'm on windows. | 11:29 | |
11:30
ChoHag joined
11:32
dubi0us joined
11:33
sena_kun joined
11:37
dubi0us left
11:44
Kyo91_ joined,
evanm left
11:56
dubi0us joined
11:57
Kyo91_ left
11:59
Cabanossi left
12:00
TEttinger left,
dubi0us left
12:01
Cabanossi joined
12:02
dubi0us joined
12:06
dubi0us left
|
|||
gfldex | m: sub f(|c){ dd c }; constant term:<GMT> = :0timezone; f GMT | 12:10 | |
camelia | \(:timezone(0)) | ||
gfldex | First time I found a good use for term:<> | 12:15 | |
12:30
piojo9 joined
12:31
pierre_ left,
Alikzus left
|
|||
piojo9 | p6: sub returns_int(--> Int) { return "a"; } | 12:33 | |
camelia | ( no output ) | ||
piojo9 | According to the docs, that should be a compiler error | ||
Good to confirm that it's not just my computer that's misbehaving | 12:34 | ||
12:34
nhywyll joined
|
|||
piojo9 | Are compile-time restraints on return types not implemented yet? (docs.perl6.org/language/functions#...nstraints) | 12:34 | |
12:40
xtreak joined
12:42
xtreak left,
xtreak joined
12:44
dubi0us joined,
yqt left
12:46
audiatorix joined
|
|||
gfldex | piojo9: the docs are wrong, return type constraints are always runtime checks | 12:47 | |
(and I hope I didn't write that part) | |||
12:48
dubi0us left
|
|||
audiatorix | I have a question about the react/whenever structure. Let's say I'm working with IO::Socket::Async for example, and I have two whenevers inside a react block (react { whenever ... -> $connection { whenever ... { ... } } }) | 12:48 | |
will the outer whenever block until the inner processing is done? | 12:49 | ||
by block I mean wait, not as in a block of code | |||
piojo9 | @gfldex: Thanks. Would it be appropriate to submit a feature request about this? I'm new to the p6 world. | ||
gfldex | piojo9: that would be very helpful | 12:50 | |
piojo9 | Obviously static checking on return types is wildly useful | ||
will do, as soon as I register an account. Thanks! | |||
gfldex | piojo9: Perl 6 is inherently dynamic, you can't even bet on a static type check of a constant value. | 12:51 | |
piojo9 | gfldex: Yes, but some things can be guaranteed. For instance, a type check will fail statically if you use a function returning Int as a parameter where a Str is required | 12:52 | |
p6: sub returns_str(-->Str) { return "a"; }; sub returns_int(--> Int) { return returns_str(); } | 12:53 | ||
camelia | ( no output ) | ||
piojo9 | the compiler should know what's going on in that case. | ||
12:54
Kyo91_ joined
|
|||
piojo9 | p6: sub needs_str(Str $val) { }; sub returns_int(--> Int) { return 0; }; sub tester { needs_str(returns_int()); } | 12:55 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Calling needs_str(Int) will never work with declared signature (Str $val) at <tmp>:1 ------> 3nt(--> Int) { return 0; }; sub tester { 7⏏5needs_str(returns_int()); } |
||
gfldex | m: class A {}; role R { method m { say 'oi‽' } }; sub f(--> R){ A.new but R }; say f | ||
camelia | A+{R}.new | ||
piojo9 | That fails, as it should--the type checking for parameters works like you would expect, and it takes advantage of knowledge about return constraints. | ||
gfldex | piojo9: ^^^ | ||
ryu0 | hm. | 12:57 | |
gfldex | piojo9: the type of any value in Perl 6 is determied at runtime _by_definition_. | 12:58 | |
13:00
Kyo91_ left
|
|||
piojo9 | gfldex: That's not how it looks from a user perspective. From a static background (with dabbling in dynamic languages), I expect gradual typing to be as static as it can be (based on the knowledge that's supplied) | 13:00 | |
Isn't static checking the point? Otherwise, it's not much different than throwing exceptions when argument types don't match | 13:01 | ||
gfldex | piojo9: the documentation of the MOP is indeed incomplete | ||
ryu0 | either way, the explicit typing syntax is more convenient than doing manual runtime type checking. | ||
piojo9 | And the 20:55 example I sent does show the compiler doing a static check and failing | ||
I didn't call any function--it fails when they're defined (as it should) | 13:02 | ||
gfldex | the compiler can cheat when it comes to native types, because it's the stated user intend to be unsafe. | ||
piojo9 | Okay, I'm sure this will become clearer as I use the language more (and read more) | 13:03 | |
thanks! | |||
ryu0 | piojo9: there's languages with very sophisticated static typing if you know where to look. | 13:05 | |
and i'm not talking about any of the top 10 languages. | 13:06 | ||
timotimo | you mean like dependent types? | ||
piojo9 | Haskell? | ||
ryu0 | functional languages tend to have very advanced stuff from what i've seen. | ||
piojo9 | Pattern matching as part of the type system is pretty cool | ||
ryu0 | I was impressed by SML. | ||
13:10
pierre_ joined,
pierre_ left
|
|||
AlexDaniel | m: sub returns-int(--> Numeric) { ‘a’ }; returns-int | 13:12 | |
camelia | Type check failed for return value; expected Numeric but got Str ("a") in sub returns-int at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
AlexDaniel | m: sub returns-int(--> Numeric) { ‘a’ }; use MONKEY-TYPING; augment class Str does Numeric { }; returns-int | ||
camelia | ( no output ) | ||
AlexDaniel | m: sub returns-int(--> Numeric) { ‘a’ }; use MONKEY-TYPING; augment class Str does Numeric { }; returns-int.say | ||
camelia | a | ||
AlexDaniel | m: sub returns-int(--> Numeric) { ‘a’ }; use MONKEY; EVAL ‘use MONKEY; augment class Str does Numeric { };’; say returns-int | 13:14 | |
camelia | a | ||
ryu0 | piojo9: it's a shame though. the compile time type checking should only be deferred to runtime if it can't be determined at compile time. | ||
AlexDaniel | ryu0: how can you determine it with my snippet above? ↑ | ||
ryu0 | which one? | 13:15 | |
AlexDaniel | m: sub returns-int(--> Numeric) { ‘a’ }; use MONKEY; EVAL ‘use MONKEY; augment class Str does Numeric { };’; say returns-int | ||
camelia | a | ||
AlexDaniel | this for example | ||
ryu0 | Well. it should be able to perform type-checking within the function definition as well. | 13:16 | |
all exit pathes should return a type compatible with "Numeric", but as you can see it doesn't. | |||
piojo9 | but EVAL is runtime | ||
I now see the problem with trying to augment perl6's static type checking--the types aren't static, as gfldex said. | 13:17 | ||
ryu0 | indeed it is. dynamic languages are hard to add static features to. | ||
because dynamic opens up a lot of possible scenarioes that don't exist when you start statically. | 13:18 | ||
piojo9 | It all comes down to "what do you mean by dynamic?" | ||
And if the types themselves are open for modification at runtime, all bets are off | |||
For a less permissive "dynamic", like $a can be a string, then $a can change to Int, the checking would be much easier. | |||
eater | how do I include a lib path relative to the file I'm currently in? | 13:19 | |
ryu0 | eater: try using -Ilib or w/e as an argument to perl6. | ||
eater | but how do I do it from inside perl? | 13:20 | |
s/perl/perl6 | |||
AlexDaniel | piojo9: well, we can fantasize about some strict-er mode where some things are disallowed and compile-time type checking works… but let's not hold our breath for this :) | ||
piojo9 | eater: use lib <the script's directory>; | ||
but I need to look up the perl6 equivalent of abs_path and __FILE__ | 13:21 | ||
eater | piojo9: `use lib "{$?FILE.dirname}/../lib"` doesn't work :( | ||
piojo9 | you can do it with pure perl and not including a static path | ||
eater | or any type of variable there | ||
piojo9 | really? wow | ||
eater | m: use lib "{$?FILE.dirname}/../lib"; | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Could not evaluate arguments at <tmp>:1 ------> 3use lib "{$?FILE.dirname}/../lib"7⏏5; |
13:22 | |
eater | m: say "{$?FILE.dirname}/../lib"; | ||
camelia | No such method 'dirname' for invocant of type 'Str' in block <unit> at <tmp> line 1 |
||
eater | well | ||
AlexDaniel | m: say "{$?FILE.IO.dirname}/../lib"; | ||
camelia | /tmp/../lib | ||
AlexDaniel | m: use lib "{$?FILE.IO.dirname}/../lib"; | ||
camelia | ( no output ) | ||
eater | .-. | ||
eater grabs the skillet | |||
I guess I need to educate myself for a bit, brb | 13:23 | ||
ryu0 | piojo9: so what do you think of perl6 so far? i'm looking into it mostly because i find that i end up relying on runtime type checking anyway in certain static languages so it seems to be not too different in that respect. | ||
timotimo waiting almost patiently for more TPCiA videos to hit the youtubes | 13:25 | ||
piojo9 | eater: looks like: use lib $?FILE.IO.parent.parent.add("lib"); | ||
eater | piojo9: :'))) | ||
well that's one way | |||
ryu0 | it seems like Perl6 has a better design than most for mixing permissive and restrictive type checks. | 13:26 | |
eater | but ayy, TimToady :) | ||
piojo9 | I didn't test that--I'm not casting it back to a string. It may not work... | ||
eater | piojo9: see AlexDaniel his solution | ||
that also works :) | |||
piojo9 | Okay, that makes a lot more sense :) | 13:27 | |
ryu0 | what does? | ||
piojo9 | AlexDaniel gave a better solution than mine | 13:28 | |
ryu0 | oh. | ||
eater | piojo9: not exactly better tho | ||
your solution is more verbose | |||
piojo9 | OTOH, ".." doesn't seem to work well in cygwin | ||
eater | his more implicit | ||
AlexDaniel blushes | |||
piojo9 | I had to use .parent to get the paths to clean up | ||
ryu0 | better is relative. if you need to include multiple files from the same directory, it might be better to add to the search path instead, assuming you can do that from the module. | ||
piojo9 | But in this case, there's no need to make the path look nice | ||
jnthn | audiatorix: No, nesting one whenever inside another doesn't imply any relationship between the two at all. A server written that way will be able to process concurrent requests. | 13:29 | |
piojo9 | ryu0: Perl6 seems like a pretty huge language. I mildly don't like the ways the syntax breaks with what all the other programming languages do (like the snake string concatenation operator) | 13:30 | |
But that stuff is minor | |||
13:30
dubi0us joined
|
|||
ryu0 | uh, perl6 isn't the only language to use that convention. | 13:30 | |
D is the same. | |||
piojo9 | oh! Sorry | ||
I've not used D | 13:31 | ||
ryu0 | they may not be mainstream but that's beside the point. | ||
13:31
dubi0us left
|
|||
piojo9 | right | 13:31 | |
13:31
dubi0us joined
|
|||
piojo9 | I have no problem with Perl trying to start from scratch | 13:31 | |
ryu0 | D is also a complex language that likes to advertise themselves as C++ done right. | 13:32 | |
piojo9 | I've heard of it--just not had an opportunity to use it | ||
ryu0 | course it's not as feature packed as Perl6 it seems like. | 13:33 | |
13:33
Alikzus joined
|
|||
piojo9 | ryu0: I haven't seen any language that is | 13:33 | |
ryu0 | part of me feels like a language is really broken if people write tools to overcome major shortcomings :x | 13:34 | |
JavaScript. People actually wrote a static type checker for it called flow. | |||
piojo9 | Haha. I've heard of a static type checker for python, but I didn't investigate. *shudder* | ||
You could say Boost was a workaround for the limitations of C++, but that mostly just got incorporated into the language :) | 13:35 | ||
ryu0 | wasn't that a weakness of the stdlib rather than the language though? | ||
piojo9 | C++ is an awfully big language, but I wouldn't call all of its complexity "features" | ||
ryu0: most of it, yeah, but the lack of lambda features, and the lack of first class functions/currying was more fundamental to the language | 13:36 | ||
ryu0 | C++ lacked lambda because C does. | 13:37 | |
iirc, closest thing is C blocks extensions, but only clang supports it. | |||
piojo9 | I think C++ stopped trying to be "c with classes" some years ago... | 13:38 | |
timotimo | haven't heard of blocks extensions | ||
ryu0 | en.wikipedia.org/wiki/Blocks_%28C_...tension%29 | ||
not too surprising. C is one language i've learned a lot about. | 13:39 | ||
Hardly anyone uses blocks outside of Mac OS X or so. | |||
but it's a way to get something resembling closure and such. | 13:40 | ||
iirc, it's mostly used an auxiliary feature to Objective-C. | 13:41 | ||
13:41
mr-foobar joined
|
|||
ryu0 | as an* | 13:41 | |
timotimo | mhm | ||
piojo9 | ryu0: I think one problem with a) being a big language, and b) having uncommon syntaxes: you need to use it all the time or you forget it. | 13:42 | |
ryu0 | is that a remark about Perl6? | 13:43 | |
piojo9 | That's what I'm afraid will happen. It happened to me with ruby--I just couldn't remember all the class names and method names | ||
and their docs aren't as good as perldoc | |||
ryu0: Yeah, but it's just speculation. | |||
13:44
mr-fooba_ left
|
|||
piojo9 | Time will tell. I remembered a reasonable amount of the core ideas of perl5 after using it for a few weeks at work, then not using it again for years | 13:44 | |
I don't think I could remember perl6 the same way. | |||
But it's damn useful to be able to pick up a language even if you're not fluent in it. C# and Java seem that way--they just follow the conventions you'd expect, and the compilers are pretty helpful | 13:45 | ||
ryu0 | i've looked for a language to supplement C and never quite found one i wanted to stick with yet. | ||
moritz | piojo9: perl 6 has some advantages over Perl 5 here, with more regular syntax | 13:46 | |
don't need to remember the @a vs. $a[0] stuff, for example | |||
piojo9 | moritz: right, and you can always call functions, no matter what the context is | ||
moritz | and since you can just write signatures, you don't need to remember to get elements for @_ or by calling shift() | ||
s/elements/arguments/ | |||
piojo9 | p6: sub xxx() {}(); | ||
camelia | ( no output ) | ||
13:47
dubi0us left
|
|||
ryu0 | but i've gotten fed up with how much work it takes to do anything in C. | 13:47 | |
piojo9 | moritz: I thought s/elements/replacements/ was perfect in perl5--just like sed and vim, but a little more powerful. | ||
ryu0 | even when using libraries the pains of how careful you have to be gets old. | ||
piojo9 | I guess that says more about me than about perl | ||
ryu0 | perl6 seems promising because it's a hybrid of the unix languages i already rely on. | 13:48 | |
13:49
dubi0us joined
|
|||
piojo9 | ryu0: I feel the same about C++. I can do it, but it's a constant effort. I liked it when I was younger, but I wonder if I'll still tolerate it when I'm older. | 13:49 | |
ryu0 | piojo9: C is worse, honestly. The language is less complex but you pay the price in greater code complexity. | ||
piojo9 | I believe that. Using void pointers instead of templates is like celibacy. | 13:50 | |
(That's an example as seen from the outside, since I don't really know C.) | |||
ryu0 | C is like telling all the atoms how to reform themselves in the form that happens to be the result you want. | 13:51 | |
lol | |||
piojo9 | haha | ||
ryu0 | and there's even different specialized uses for C. | ||
how you write userspace C is different from embedded or even kernel space C. | 13:52 | ||
piojo9 | Oh, I forgot about that "little detail"--I never actually understood kernel space C | ||
ryu0 | Ever write raw userspace ASM? | ||
A hello world takes more instructions than few lines of C. lol | 13:53 | ||
piojo9 | Haha, I never got good at low-level code (or even profiling based on generated assembly) | ||
ryu0 | first i had to allocate storage space for the string. | 13:54 | |
13:54
xtreak left,
Rawriful joined
|
|||
ryu0 | then i had to write the instructions to make a system call for write and then exit. | 13:55 | |
not very hard to do but it gives you a lot of perspective on how much work it is. | |||
piojo9 | in the snow, uphill both ways :) | ||
ryu0 | I imagine we'd still be using ASM if we had all agreed on a single CPU architecture. | 13:56 | |
But that never happened. | |||
13:56
dubi0us left
|
|||
AlexDaniel | moritz: hm, or: sub foo($foo, $bar = 50) { say $foo; say $bar }; foo 42 | 13:57 | |
piojo9 | It seems hard to imagine people wouldn't have added more and more shortcuts to compilers, until it was considered a programming language. | ||
ryu0 | how do you think C can to be? | ||
AlexDaniel | moritz: it's still experimental even in v5.26 it seems, but maybe a worthy option anyway | ||
ryu0 | lol | ||
piojo9 | though it might have taken a lot longer before someone thought to make a language that was completely divorced from the hardware. | 13:58 | |
ryu0 | it started as a portable way to describe general ASM characteristics. | ||
andrzejku | :-) | ||
piojo9 | ryu0: yeah, that's what I was taught | ||
But eventually, it still would have happened, even without the need for aid in portability | 13:59 | ||
ryu0 | course it doesn't have a standard way to check stuff like CPU flags. | ||
piojo9 | because people are lazy, in a good way. | ||
moritz | AlexDaniel: the experience with smartmatching and given/when kinda keeps me off experimental p5 features | ||
AlexDaniel | moritz: yes :( | ||
moritz | not to mention that Debian Stretch comes with 5.24, and at $work we use system perl on Debian for most stuff | 14:00 | |
(and we're still struggeling with getting rid of wheezy, which comes with perl 5.14) | |||
AlexDaniel | it's available since v5.20 | ||
ryu0 | wheezy? debian 7? | 14:01 | |
wow. ancient. | |||
AlexDaniel | there is this ticket but no information in it: RT #121481 | ||
synopsebot6 | Link: rt.perl.org/rt3/Public/Bug/Display...?id=121481 | ||
ryu0 | i imagine the introduction of systemd doesn't make upgrading easy. | 14:02 | |
AlexDaniel | not even a mention of what could possibly make them non-experimental and when | ||
Juerd | I encountered 0 problems on the dozens of Debian installations that were upgraded to a version with systemd. | ||
moritz | ryu0: not really; systemd hasn't been a pain point for us | ||
ryu0 | oh. | ||
moritz | in fact, it makes writing our own services easier | ||
Juerd | They did a good job to make that process pretty smooth. | 14:03 | |
moritz | the pain points come more from the fact that some of these systems have been up 12+ years, and there's not much documentation on what they actually do | ||
(upgraded from one debian version to the next, that is) | |||
ryu0 | aka the legacy systems everyone seems to have. | ||
Juerd | moritz: I have 3 of those and I'm always scared shitless to upgrade them :) | ||
moritz | and now we want to rsync them to virtual machines so that we can snapshot them | 14:04 | |
Juerd | root@c4:~# ls -lh /etc/hostname | ||
-rw-r--r-- 1 root root 3 Feb 17 2004 /etc/hostname | |||
2004... :) | |||
14:04
audiatorix left
|
|||
moritz | and ideally build replacements using some config management systems, and then get rid of the auld ones | 14:04 | |
14:04
Kyo91_ joined
|
|||
Juerd | The only things this thing still does is syslog and auth dns. | 14:05 | |
Still, upgrading it is scary. There's a lot of software on the thing, even if it doesn't run anymore. | |||
moritz | we have done this with a few of the systems, and it's always been way more work than anticipated | ||
Juerd: yes, that does sound scary | 14:06 | ||
and some of our stuff runs on blade centers that haven't had maintenace contracts for the last 6 years or so :-) | |||
and then there's always the issue with firewall rules; if we don't know who talks to the system, the only reliable way is to give the new system the old IP | 14:09 | ||
Juerd | That's also the case with this c4 thing; it's the auth dns server, so changing the IP is at least a month of work :) | ||
14:09
xtreak joined
|
|||
moritz | (we have firewall hardware/appliances all over, and they are managed by another team) | 14:09 | |
14:12
masak joined
|
|||
eater | zoffix, does IRC::Client support SSL? | 14:15 | |
14:16
pochi joined
14:17
dubi0us joined
|
|||
eater | I'm afraid the answer is no :( | 14:18 | |
ryu0 | eater: if it doesn't, you can use stunnel as a fallback. | ||
or try it i assume. | |||
14:18
BenGoldberg joined
|
|||
eater | no, we'll create a MR that adds SSL support! :D | 14:18 | |
ryu0 | ok, have fun. just an idea if you didn't want to implement it. | 14:19 | |
eater | ryu0: thanks for the tip tho :) | ||
ryu0 | oddly, i've seen people use it to implement HTTPS in obscure HTTP servers. | ||
14:19
piojo9 left
|
|||
ryu0 | does follow unix principles though. | 14:20 | |
socket pipelines. lol | |||
14:21
xtreak left
|
|||
moritz | ok, time to dist-upgrade hack.p6c.org, I guess | 14:21 | |
"what could possibly go wrong?" | 14:22 | ||
eater | :') | ||
gl moritz | |||
14:22
piojo10 joined
|
|||
AlexDaniel | hm, I should do that also | 14:22 | |
eater | \o/ rolling releases | 14:23 | |
AlexDaniel | or maybe wait for a few more years… :P | ||
ryu0 | moritz: assets.amuniversal.com/9a085dc06d63...1dd8b71c47 | 14:26 | |
14:27
Zoffix joined
|
|||
Zoffix | eater: no, it doesn't. When I wrote it, we didn't have IO::Socket::Async::SSL yet | 14:27 | |
eater | Zoffix: cool, you'll have 1 PR soon then :) | ||
ryu0 | Zoffix: does it support SASL authentication? | 14:28 | |
14:28
nhywyll left
|
|||
Zoffix | ryu0: no, it's not much more than an opened sock with a bit of processing on its data on top. | 14:29 | |
ryu0 | ok. | ||
nadim | hi, do we have a tool, or an ambrio of tool, which can listen to a port and when data is received diplay it on the terminal. debuging NCurses apps kinda sucks. | 14:32 | |
14:33
konsolebox joined
|
|||
Zoffix | second code block on docs.perl6.org/type/IO::Socket::INET | 14:34 | |
nadim | Zoffix++ | ||
I was still looking in the modules list but simple is better | 14:35 | ||
14:35
Zoffix left
14:37
kent\n left
14:39
kent\n joined
14:46
leah2 left
14:50
Kyo91_ left
14:54
HTTP_____GK1wmSU joined,
leah2 joined
|
|||
piojo10 | Nice meeting you guys. It's getting late, I've gotta go. I'll file that feature request about type checking, on the off chance that it's not impossible. | 14:56 | |
14:57
HTTP_____GK1wmSU left,
piojo10 left
15:06
zakharyas joined
15:12
Kyo91_ joined
15:13
llfourn joined
15:17
Sgeo_ joined
15:19
Sgeo__ left
15:23
dubi0us left
15:25
dubi0us joined
15:28
Sgeo_ left
15:29
dubi0us left
15:34
nadim left
15:36
nadim joined
15:37
xinming left
15:40
dubi0us joined
15:50
Kyo91_ left
15:51
nhywyll joined
15:53
dubi0us left
|
|||
ckraniak | m: use NativeCall; sub foo (Pointer $x = Pointer[void].new(0) ) { say "ok; } foo(); | 16:24 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Unable to parse expression in double quotes; couldn't find final '"' at <tmp>:1 ------> 3inter[void].new(0) ) { say "ok; } foo();7⏏5<EOL> expecting any of: argument list … |
||
16:24
dubi0us joined
|
|||
ckraniak | m: use NativeCall; sub foo (Pointer $x = Pointer[void].new(0) ) { say "ok"; } foo(); | 16:24 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Strange text after block (missing semicolon or comma?) at <tmp>:1 ------> 3x = Pointer[void].new(0) ) { say "ok"; }7⏏5 foo(); expecting any of: infix infix stopper … |
||
ckraniak | m: use NativeCall; sub foo (Pointer $x = Pointer[void].new(0) ) { say "ok; }; foo(); | ||
camelia | 5===SORRY!5=== Error while compiling <tmp> Unable to parse expression in double quotes; couldn't find final '"' at <tmp>:1 ------> 3nter[void].new(0) ) { say "ok; }; foo();7⏏5<EOL> expecting any of: argument list … |
||
ckraniak | Hang on | 16:25 | |
sena_kun | m: use NativeCall; sub foo (Pointer $x = Pointer[void].new(0) ) { say "ok"; }; foo(); | 16:26 | |
camelia | ok | ||
ckraniak | m: use NativeCall; sub foo (Pointer $x = Pointer[void].new(0) ) { say "ok"; }; foo(); | 16:27 | |
camelia | ok | ||
ckraniak | Ok now: | ||
m: use NativeCall; sub foo (Pointer[void] $x = Pointer[void].new(0) ) { say "ok; } foo(); | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Unable to parse expression in double quotes; couldn't find final '"' at <tmp>:1 ------> 3inter[void].new(0) ) { say "ok; } foo();7⏏5<EOL> expecting any of: argument list … |
||
ckraniak | m: use NativeCall; sub foo (Pointer[void] $x = Pointer[void].new(0) ) { say "ok"; }; foo(); | ||
camelia | Type check failed in binding to parameter '$x'; expected NativeCall::Types::Pointer[NativeCall::Types::void] but got NativeCall::Types::Pointer (NativeCall::Types::Po...) in sub foo at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
ckraniak | There | 16:28 | |
Adding [void] to the type is killing ot | |||
*it | |||
sena_kun | hmmm. | ||
16:29
Cabanossi left
|
|||
sena_kun | not sure about expected behavior. ckraniak, you probably want to fill a rakudo issue. | 16:30 | |
16:30
xinming joined
16:31
Cabanossi joined
16:32
espadrine joined
16:33
dubi0us left
16:34
masak left,
itaipu joined
16:37
andreoss joined
|
|||
BenGoldberg | m: use NativeCall; my constant voidP = Pointer[void]; sub foo( voidp $x = voidp.new(0) ) { say "ok" }; foo(); | 16:37 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Invalid typename 'voidp' in parameter declaration. Did you mean 'voidP', 'void'? at <tmp>:1 ------> 3nt voidP = Pointer[void]; sub foo( voidp7⏏5 $x = voidp.new(0) ) { say "ok" }; foo() |
||
BenGoldberg | m: use NativeCall; my constant voidp = Pointer[void]; sub foo( voidp $x = voidp.new(0) ) { say "ok" }; foo(); | ||
camelia | Type check failed in binding to parameter '$x'; expected NativeCall::Types::Pointer[NativeCall::Types::void] but got NativeCall::Types::Pointer (NativeCall::Types::Po...) in sub foo at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
BenGoldberg | m: use NativeCall; my constant voidp = Pointer[void]; sub foo( voidp $x is default(voidp.new(0)) ) { say "ok" }; foo(); | 16:38 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Can't use unknown trait 'is default' in a parameter declaration. at <tmp>:1 expecting any of: rw readonly copy required raw leading_docs… |
||
16:39
itaipu left
|
|||
BenGoldberg | ckraniak, As a simple workaround, any undefined instance of a pointer type can be used to represent a C NULL value. | 16:40 | |
16:40
khw joined
16:41
itaipu joined
|
|||
BenGoldberg | m: use NativeCall; sub foo( Pointer $foo ) { say "ok" }; foo(); | 16:41 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Calling foo() will never work with declared signature (NativeCall::Types::Pointer $foo) at <tmp>:1 ------> 3; sub foo( Pointer $foo ) { say "ok" }; 7⏏5foo(); |
||
BenGoldberg | m: use NativeCall; sub foo( Pointer $foo = Pointer ) { say "ok" }; foo(); | ||
camelia | ok | ||
BenGoldberg | m: use NativeCall; sub foo( Pointer $foo? ) { say "ok" }; foo(); | ||
camelia | ok | ||
ckraniak | ... The question mark is what I'll try | 16:42 | |
That makes more sense in the context I'm using this | |||
Although I don't think I suffer anything by using Pointer instead of Pointer[void] | 16:43 | ||
Thanks | 16:44 | ||
andreoss | is it possible to not inherit Any for a new class? | 16:48 | |
seems only through MOP | 16:52 | ||
16:53
pharv_ joined
16:56
dubi0us joined
|
|||
timotimo | m: class Foo is Mu { }; say Foo.^mro | 16:57 | |
camelia | ((Foo) (Mu)) | ||
timotimo | andreoss: ^ | ||
16:59
Cabanossi left
17:01
araraloren left,
Cabanossi joined,
yqt joined
17:05
dubi0us left,
zakharyas left
17:08
pharv_ left
17:10
dubi0us joined
17:14
dubi0us left
17:15
dubi0us joined,
cdg joined
17:16
zakharyas joined
17:17
cdg left,
cdg joined
17:19
pmurias_ left,
dubi0us left
17:24
dubi0us joined
17:28
dubi0us left
17:29
Kyo91_ joined
17:31
wamba joined
17:33
dubi0us joined
17:42
skids joined,
dubi0us left
17:45
Cabanossi left
17:46
Cabanossi joined
17:47
dubi0us joined,
dubi0us left,
dubi0us joined
17:50
Kyo91_ left
18:11
zakharyas left,
andreoss left
18:13
dubi0us left
|
|||
eater | hmm, is there a catch-all function for classes? like __call in php? | 18:15 | |
moritz | there's FALLBACK | 18:18 | |
and for direct invocation of the class, CALL-ME | |||
18:18
dubi0us joined
|
|||
eater | \o/ | 18:18 | |
thanks moritz | |||
moritz | you're welcome | 18:19 | |
18:22
dubi0us left
18:25
Kyo91_ joined
18:27
pepe__ joined
|
|||
pepe__ | Hi, (for a school task) I'm looking for implementations of strings in different systems. I know in language C strings are arrays (continuous positions in memory). In haskell strings are linked lists. I'm looking for a description about perl 6 implementation, because somewhere I read that it was in trees. | 18:30 | |
Can you confirm that? Where can i read about that implementation? | 18:31 | ||
timotimo | it's trees, but we try to keep them flat | ||
you'd want to look at MoarVM/MoarVM on github, especially src/6model/reprs/MVMString.h and src/strings/stringops.c | 18:32 | ||
pepe__: ^ | |||
pepe__ | ok. Thats great. Thanks. | ||
ryu0 | pepe__: you're describing a rope data structure i believe. | ||
pepe__ | Yes. | 18:33 | |
timotimo | the tree-ish parts we call "strands" | ||
moritz | the more interesting part is NFG | 18:35 | |
timotimo | aye, that has its own .h and .c | ||
moritz | which encodes grapheme clusters as a single, synthethic codepoint | ||
timotimo | the datastructure that manages synthetic codepoints is a trie with some concurrent-access-safe mechanisms in place | 18:36 | |
moritz | lockless reads, iirc | 18:48 | |
timotimo | right | 18:49 | |
we have the "free at safepoint" mechanism we use in many places to ensure things don't blow up | 18:50 | ||
and we'll use them in more places in the future | |||
19:02
dubi0us joined
|
|||
moritz finds he doesn't understand the $!highwater stuff | 19:04 | ||
19:06
dubi0us left
|
|||
mspo | is this because my rakudo is old? Serialization Error: missing static code ref for closure 'BUILD' | 19:08 | |
b2gills | pepe__: There was a talk video posted to www.facebook.com/theperlconference/ called “Unicode Internals of Perl 6” that may be of interest to you. | 19:15 | |
AlexDaniel | m: sub foo(:color(:$colour)) { $colour + 1 }; my $s; for ^1000000 { $s += foo(:color($_)) }; say $s; say now - INIT now | ||
camelia | Unexpected named argument 'color' passed in sub foo at <tmp> line 1 in block <unit> at <tmp> line 1 |
||
19:16
zakharyas joined
|
|||
mspo | also is there an 08 coming soon? | 19:16 | |
19:17
darutoko left
19:18
llfourn left
19:19
setty1 joined
19:20
dwarring joined
|
|||
AlexDaniel | mspo: yes | 19:21 | |
soon-ish :) | |||
19:22
pharv_ joined
19:28
mscha joined
|
|||
mscha | sub foo { ($^a+$^b) % 13 }; my @bar = [\[&foo]] 1..10; say @bar; | 19:29 | |
m: sub foo { ($^a+$^b) % 13 }; my @bar = [\[&foo]] 1..10; say @bar; | |||
camelia | [1 3 6 10 2 8 2 10 6 3] | ||
mscha | Is there a way to do this without a named sub? | ||
m: my @bar = [\[&{ ($^a+$^b) % 13 }]] 1..10; say @bar; | |||
camelia | 5===SORRY!5=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> 3my @bar = [\[&{ ($^a+$^b) % 13 }]]7⏏5 1..10; say @bar; expecting any of: infix infix stopper postfix statement… |
||
19:29
AlexDaniel left
|
|||
mscha | m: my @bar = [\[{ ($^a+$^b) % 13 }]] 1..10; say @bar; | 19:29 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> 3my @bar = [\[{ ($^a+$^b) % 13 }]]7⏏5 1..10; say @bar; expecting any of: infix infix stopper postfix statement … |
||
mscha | m: my @bar = [\[sub { ($^a+$^b) % 13 }]] 1..10; say @bar; | 19:30 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> 3my @bar = [\[sub { ($^a+$^b) % 13 }]]7⏏5 1..10; say @bar; expecting any of: infix infix stopper postfix statem… |
||
19:30
geekosaur left
19:31
AlexDaniel joined
|
|||
b2gills | m: my @bar = [\[{($^a+$^b)%13}]] 1..10; say @bar; | 19:32 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> 3my @bar = [\[{($^a+$^b)%13}]]7⏏5 1..10; say @bar; expecting any of: infix infix stopper postfix statement end… |
||
19:33
geekosaur joined
|
|||
b2gills | m: my @bar = [\[&({($^a+$^b)%13})]] 1..10; say @bar; | 19:33 | |
camelia | [1 3 6 10 2 8 2 10 6 3] | ||
AlexDaniel | b2gills: /o\ | ||
I need to configure my editor to highlight matched brackets in random colors | |||
it feels like I had this already, hmm… | |||
b2gills | There can't be any spaces and you need an & after the [ that denotes the code to use as an infix operator | 19:34 | |
19:34
cdg left
19:35
cdg joined
|
|||
b2gills | m: my @bar = [\[&((*+*)%13)]] 1..10; say @bar; | 19:36 | |
camelia | [1 3 6 10 2 8 2 10 6 3] | ||
AlexDaniel | why is there no :triangle named arg in reduce? | 19:37 | |
like, is [\…] the only way to do it? | |||
renormalist | I know I do it every year and often it stalls again but anyway - perl6 is gettign better and better, I even wrote my first little Perl6 program this time (Rakudo*2017.07). It feels very polished, just like a normal programming language. Thank you all. | ||
b2gills | produce | ||
renormalist | me stalls again with it, that is, not perl6 | ||
AlexDaniel | ah, it's produce! | 19:38 | |
Okay | |||
renormalist | (in the past) | ||
AlexDaniel | m: my @bar = (1..10) .produce: (* + *) % 13; say @bar | ||
camelia | [1 3 6 10 2 8 2 10 6 3] | ||
AlexDaniel | b2gills++ | ||
m: my @bar = 1..10 .produce: (* + *) % 13; say @bar | |||
camelia | Seq objects are not valid endpoints for Ranges in block <unit> at <tmp> line 1 |
||
AlexDaniel squints | 19:39 | ||
19:39
yqt left
|
|||
mscha | Thanks b2gills, AlexDaniels... | 19:39 | |
moritz | AlexDaniel: precedence | ||
mscha | The "no spaces in the code" is really weird... | ||
moritz | AlexDaniel: parsed 1..(10.produce: ...) | 19:40 | |
mscha | But produce is probably better - less “golfy”. | ||
AlexDaniel | moritz: I see that, but how come I expected it to do something different… | ||
moritz | what is produce, btw? | 19:41 | |
AlexDaniel | moritz: [\…] @a | ||
moritz | ah | ||
AlexDaniel | m: say ^10 .Str | ||
camelia | 0 1 2 3 4 5 6 7 8 9 | ||
moritz | reduce with intermediate results | ||
AlexDaniel | m: say 0..10 .Str | ||
camelia | 0..10 | ||
AlexDaniel | this is why I wrote that | ||
mscha | m: say produce({ ($^a + $^b) % 13 }, 1..10) | ||
camelia | (1 3 6 10 2 8 2 10 6 3) | ||
19:41
cdg left
|
|||
moritz | m: infix:<@>($a, $b) { ($a + $b) % 13 }; say [\@] 1..10 | 19:42 | |
camelia | 5===SORRY!5=== Error while compiling <tmp> Variable '$a' is not declared at <tmp>:1 ------> 3infix:<@>(7⏏5$a, $b) { ($a + $b) % 13 }; say [\@] 1.. |
||
moritz | m: sub infix:<@>($a, $b) { ($a + $b) % 13 }; say [\@] 1..10 | ||
camelia | (1 3 6 10 2 8 2 10 6 3) | ||
b2gills | mscha: It can be hard to tell if 「[+] List」 should be parsed as a left fold or an array literal, so there are no spaces allowed in 「[+] List」 | ||
19:43
Sgeo joined,
dubi0us joined
19:44
Kyo91_ left
|
|||
b2gills | m: my \term:<R+> = 5; say [ R+ ] # array literal | 19:46 | |
camelia | [5] | ||
b2gills | m: my \term:<R+> = 5; say [R+] # left fold | ||
camelia | 0 | ||
AlexDaniel | renormalist: that's great to hear :) Thank you for your feedback | 19:48 | |
19:48
dubi0us left
|
|||
pepe__ | b2gills: Thanks. I'm starting the video now. As I see, Perl 6 doesn't implement real ropes in strings because ropes are full trees with several levels of depth. Perl 6 implements something lighter: a list of substrings. | 19:55 | |
b2gills | pepe__: Note that is an implementation detail, and is not visible within the language | 19:57 | |
19:57
pilne joined
|
|||
b2gills | A Str is a singular opaque object in Perl 6, that consists internally of a list of graphemes. It is opaque in that you can't use array indexing operations on a Str, instead you use methods and subroutines to access parts of it | 20:01 | |
timotimo | a list of substrings where each substring is allowed to be repeated | ||
20:03
raschipi joined
20:05
pharv_ left
20:09
lizmat joined
20:11
BenGoldberg left
20:17
dubi0us joined
20:21
cpage_ left
20:22
cpage_ joined
20:25
cpage_ left,
itaipu left
20:30
Cabanossi left
20:31
Cabanossi joined
20:33
TEttinger joined
20:37
g0d355__ joined,
pepe__ left
20:38
rgrau joined
|
|||
mspo | AlexDaniel: okay I'll wait for it | 20:44 | |
AlexDaniel | NeuralAnomaly: status | ||
NeuralAnomaly | AlexDaniel, [✘] Next release will be in 5 days and 7 hours. Since last release, there are 49 new still-open tickets (2 unreviewed and 3 blockers) and 151 unreviewed commits. See perl6.fail/release/stats for details | ||
AlexDaniel | mspo: I mean, 5 days | 20:45 | |
mspo | blah | ||
nqp never got a 07.1 | |||
how about an early release for that/ :) | |||
AlexDaniel | I think we can wait for 5 days :) | ||
sorry :( | |||
mspo | np | ||
I can't do crap during the work week anyway | 20:46 | ||
raschipi | m: ?('aaa0001'..'zzz9999')[^91].grep('aaa0100') # Why false? | ||
camelia | WARNINGS for <tmp>: Useless use of "?" in expression "?('aaa0001'..'zzz9999')[^91].grep('aaa0100')" in sink context (line 1) |
||
raschipi | m: say ?('aaa0001'..'zzz9999')[^91].grep('aaa0100') # Why false? | ||
camelia | False | ||
AlexDaniel | not string ranges again… | 20:48 | |
but | |||
m: .say for (‘01’..‘99’)[^15] | |||
camelia | 01 02 03 04 05 06 07 08 09 11 12 13 14 15 16 |
||
AlexDaniel | 10 is missing | ||
m: .say for (‘00’..‘99’)[^15] | 20:49 | ||
camelia | 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 |
||
raschipi | I see that, but why? I had tested the 'aaa0000' case and I saw that it works. | ||
m: .say for (‘06’..‘99’)[^15] | 20:50 | ||
camelia | 06 07 08 09 16 17 18 19 26 27 28 29 36 37 38 |
||
AlexDaniel | raschipi: it does some kind of per character increment thingy. I never really understood it, sorry :( | ||
ugexe | a string range could work so many different ways its natural that it will seemingly do what you want in some cases but not others | 20:51 | |
raschipi | I see now, thanks. It wraps around to the number specified as the start of the sequence. | ||
AlexDaniel | raschipi: docs.perl6.org/language/traps#Stri.../Sequences | ||
raschipi | Thanks everybody. | 20:52 | |
20:56
rindolf left
20:58
samb1 left
20:59
andrzejku left,
Cabanossi left
21:01
Cabanossi joined,
zakharyas left
21:04
mscha left
21:09
dubi0us left
21:11
samb1 joined
21:17
dubi0us joined
21:18
itaipu joined
21:22
dubi0us left
21:27
dubi0us joined
21:34
dubi0us left
21:44
nhywyll left
21:46
konsolebox left
21:47
lisbeths` joined
21:48
lisbeths left
21:52
konsolebox joined,
imcsk8_ left
21:53
imcsk8 joined
22:00
Cabanossi left,
andreoss joined
22:01
Cabanossi joined
22:13
mscha joined
|
|||
mscha | m: say 0.1e0 + 0.2e0 == 0.3e0; say 1e-1 + 2e-1 == 3e-1 | 22:15 | |
camelia | False False |
||
mscha | m: say 0.1e0 + 0.2e0 == 0.3e0; | ||
camelia | False | ||
mscha | m: say 1e-1 + 2e-1 == 3e-1 | ||
camelia | True | ||
mscha | Huh? | ||
22:15
pmurias left
|
|||
jdv79 | Attempt to unlock mutex by thread not holding it | 22:17 | |
thats a new one for me | |||
22:20
lizmat left,
sufrostico joined,
sufrosti1o joined
|
|||
raschipi | m: (1e-1).^name | 22:21 | |
camelia | ( no output ) | ||
raschipi | m: (1e-1).^name.say | ||
camelia | Num | ||
22:24
wamba left
22:28
dubi0us joined,
raschipi left
22:29
raschipi joined,
nadim left
22:30
setty1 left,
lizmat joined
22:31
_28_ria joined,
dubi0us left
22:33
dubi0us joined
22:38
dubi0us left
|
|||
jdv79 | looks like its on a supplier.emit call | 22:46 | |
timotimo | hm, supplier isn't thread-safe?! | ||
22:47
dubi0us joined
|
|||
jnthn | jdv79: The only place I know that can happen is when using 6.d.PREVIEW | 22:47 | |
(Supplies need changes to work properly with it. Those haven't happened yet.) | 22:48 | ||
jdv79 | i am | 22:49 | |
NO | |||
ok | |||
haha | |||
22:49
sullivan joined
|
|||
jnthn | In theory, will be working on that in September. :) | 22:50 | |
22:51
dubi0us_ joined,
dubi0us left
|
|||
sullivan | I want to build Rakudo 2017-07 so the executables are in the standard system directories | 22:52 | |
So is it enough to give the argument "--prefix=/usr" to Configure.pl, | |||
22:52
espadrine left
|
|||
sullivan | Or do I need also to give an arg to "--libdir=" and what should it be? | 22:52 | |
timotimo | i think --prefix can very well be enough | 22:53 | |
but i've not installed rakudo into /usr or similar before | |||
raschipi | sullivan: You should look into what distros are doing, I will look for you in a minute. | 22:54 | |
22:54
andreoss left
|
|||
jdv79 | it seems like i run into a bunch of issues everytime i try to make headway with the only real app i'm trying to do in p6. well, at least i'll be on vaca til september this time:) | 22:54 | |
timotimo | no harm installing it to /opt/foobar and investigating if everything would end up looking correct | ||
jdv79: thanks for sticking with us and pointing out problems along the way! | |||
jdv79 | i think this one is a blocker | ||
sullivan | raschipi, good idea .. | 22:55 | |
QUIT | |||
jdv79 | cause if i go back to blocking await and up to the thread count i need (maybe ~64 or so) i'll run out of mem | ||
22:55
sullivan left
|
|||
timotimo | hmm, will we one day look back at texas operators (both in perl6 and the equivalents in other languages) and think of them the same way we think of trigraphs nowadays? | 22:55 | |
"we used to need them because you couldn't enter *those characters* on a regular keyboard" | |||
back then it was curly braces, now it's ≥ | |||
22:56
dubi0us_ left
|
|||
raschipi | timotimo: Yes, because soon every operating system will have an on-screen keyboard to input emoji and these symbols will be available there. Therefore it will be easy to input them everywhere, even without changing keyboards. | 22:59 | |
timotimo | "on-screen keyboard", "easy" ... :\ | 23:00 | |
AlexDaniel | timotimo: IMO for that to happen we should throw away the idea of keyboard layouts being static and unmodifiable | 23:01 | |
timotimo | time for LCARS | 23:02 | |
AlexDaniel | hm, now I wonder if there's a way to have the keyboard layout file located outside of standard xkb paths | 23:04 | |
so that it's at least editable by non-root | 23:05 | ||
23:05
itaipu left
|
|||
AlexDaniel | setxkbmap has -I option, so YES! | 23:06 | |
23:06
eponym joined
23:07
epony left
23:09
dubi0us joined
|
|||
timotimo | nice | 23:10 | |
i wonder, can you get code execution with a malicious xkbmap file? :) | |||
23:13
_28_ria left
23:14
dubi0us left
23:15
_28_ria joined
|
|||
timotimo | "Supposedly there’s a JIT in the works, but it appears to have been in the works for a number of years, so I’m not holding my breath." - snrk | 23:17 | |
23:18
dubi0us joined
23:19
eponym left,
epony joined
|
|||
sjn | www.reddit.com/r/perl/comments/6th...of_perl_6/ | 23:21 | |
23:23
dubi0us left
|
|||
timotimo | i wish i could point out to him that he can instead of .out-supply literally just .out.Supply | 23:23 | |
i'll post a little tweet | 23:24 | ||
23:24
dubi0us joined
23:28
pierre_ joined
23:29
dubi0us left
23:30
Cabanossi left,
pierre_ left
23:31
pierre_ joined,
Cabanossi joined
23:35
pierre_ left
23:37
rgrau left
23:42
dubi0us joined
23:43
sena_kun left
23:45
dubi0us_ joined,
dubi0us left
23:46
skids left
23:47
dubi0us joined
23:49
dubi0us_ left
23:54
dubi0us_ joined,
dubi0us left
23:56
dubi0us_ left
|