»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
zachk for building perl6 inside of android, can I just use the execstack program to fiddle the executable stack bit on libmoarvm.so (I believe) and have it work? like the windows linux subsystem fix? 00:28
AlexDaniel why did I set that notification 01:06
what did I even mean
huyna hi, i want to learn Perl 6 but is it necessary to learn Perl 5 before? 03:10
SmokeMachine huyna: no, perl6 is a different language from perl5... 03:22
huyna Thanks SmokeMachine 03:26
smallick m: say (1, 1, *+* ... *)[100]; 04:03
camelia 573147844013817084101
smallick m: say (1, 1, *+* ... *)[100]; say now - INIT now; 04:04
camelia 573147844013817084101
0.00856416
smallick m: say (1, 1, *+* ... *)[1e4, 1e5, 1e6]; 04:06
camelia MoarVM panic: Memory allocation failed; could not allocate 64 bytes
smallick what happened? Huge number, i think.
smallick m: .print 05:15
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in block <unit> at <tmp> line 1
smallick m: .print given "Hello, world!"
camelia Hello, world!
smallick m, 0.print 05:28
smallick m, 1.print 05:30
smallick m, print 11 ** 11 05:31
smallick camelia, help 05:33
camelia smallick: Usage: <(prof-m|rakudo-jvm|nqp-js|nqp-moarvm|nqp-jvm|debug-cat|p5-to-p6|star-m|rakudo-moar|rm|star|nqp-q|master|p56|r|j|rakudo|sm|rj|p6|nqp-mvm|nqp|r-j|nqp-m|perl6|r-m|m|r-jvm)(?^::\s(?!OUTPUT)) $perl6_program>
smallick bisect: print i*i == i**2 05:34
bisectable6 smallick, On both starting points (old=2015.12 new=87b71c2) the exit code is 0 and the output is identical as well
smallick, Output on both points: «False»
smallick m, print pi.cos + i* pi.sin 05:35
m: print pi.cos + i* pi.sin
camelia -1+1.2246467991473532e-16i
smallick m: print (pi.cos + i* pi.sin == i ** 2) 05:36
camelia True
smallick see
m: print (2*pi).cos + i* (2*pi).sin 05:37
camelia 1-2.4492935982947064e-16i
smallick wow 05:38
m: say (2*(pi.sin) == (2*pi).sin) 05:39
camelia False
smallick say 2* pi.sin => (2*pi).sin 05:40
evalable6 2.4492935982947064e-16 => -2.4492935982947064e-16
smallick why this ^^^^ happens?
new feature!! 05:42
say 1 05:43
evalable6 1
smallick print 1
evalable6 1
smallick .print given Any.new 05:44
evalable6 Any<93965475250432>
smallick say 2* pi.sin == - (2*pi).sin 05:45
evalable6 True
smallick explain above 05:46
print pi.cos 05:47
AlexDaniel m: print pi.cos
camelia -1
smallick m: print pi.cos
camelia -1
AlexDaniel smallick: so what exactly needs to be explained? I'm not following 05:48
smallick m: print (2*pi).cos 05:49
camelia 1
smallick cos is exact and sin inexact?? 05:50
AlexDaniel smallick: it's floating point math, it's weird
smallick m: say pi.sin => (2*pi).sin
camelia 1.2246467991473532e-16 => -2.4492935982947064e-16
AlexDaniel it's not specific to perl6, I think, you should get same result in other languages 05:51
smallick m: say (pi/2).cos == 0.sin 05:52
camelia False
smallick say 0.sin <=> (pi/2).cos 05:53
evalable6 Less
Woodi morning #perl6 :)
smallick print (pi/2).cos - 0.sin 05:54
evalable6 6.123233995736766e-17
smallick what is the smallest number gt 0 here 05:55
say (0/0).Num 05:56
evalable6 NaN
smallick say 1e-500 05:57
evalable6 0
smallick say (1e-500, 1e-400, * * 10).grep(*!=0)[^5] 05:58
say 1e-325, 1e-324, 1e-323 05:59
evalable6 001e-323
smallick say 1/10 ** 324
evalable6 0
Woodi as timotimo noted, looks that ASN.1 compilers are so buggy that you can take as granted... story: in 200x I was following OpenLDAP monthly releases and at some points it looked as they had fixes to ASN.1 parser every single month by that period... just my not-very precise impression :) but now OL have years without ASN.1 parser bugs :) 06:00
smallick say 10 ** (10.log)
evalable6 200.71743249053017
smallick print Junction 06:02
dd Junction
dd Junction.new ; CATCH .say 06:03
m: say Junction
camelia (Junction)
Woodi sena_kun: LDAP is still used :) ActiveDirectory in enterprise Windows is one. midPoint have one inside too. and PAM in every (?) Linux distros can use it instead of /etc/passwd :)
smallick m: (1..999).grep(*%%(3|5)).sum.say 06:05
camelia 233168
smallick how to use S meta op? 06:08
Geth doc: d3ce0a4d83 | (JJ Merelo)++ | doc/Language/modules.pod6
Revises changes

And does some clarification, de-indentation and reflow. This closes #2571
07:05
doc: 7b34d3c39d | (JJ Merelo)++ | META6.json
Reordered and added missing pm6, closes #2564
cpan-p6 03cpan-p6 reporting for duty! [Perl 6] 02git.tyil.nl/perl6/app-cpan-uploadnotifierbot 07:13
jmerelo Cool! tyil++ 07:19
tyil jmerelo: thanks :3
it's still in development, so it may require more restarts in the coming few days
masak good antenoon, #perl6 09:05
masak suggestion for a discussion topic: how would you rank the following FP concepts by importance/profundity, from most important (1) to least important (5)?: immutability, first-class functions, everything is an expression, referential transparency, tail call elimination 09:08
I would tentatively do 1. TCE, 2. FCF, 3. RT, 4. I, 5. EiaE 09:10
masak of course, there's no right answer. at least I don't think there is. I mostly mean to provoke discussion. 09:40
masak also, maybe I missed a central concept. in that case, feel free to replace one of mine. 09:40
pmurias masak: I would say it dependends in what context you view the concepts 09:43
masak ok, let's say we're somewhere in the neighborhood of a Haskell programmer or an ML programmer
pmurias masak: like tail calls expressions are a lot more important in a pure FP to be able to iterate without running out of stack than when mixing in function programming parts in a hybrid language 09:46
masak: I do also feel in idiomatic haskell a lot of iteration is done by higher order functions rather then low level tail calls 09:48
masak yeah, I mean TCE is completely vital in Haskell. but I've also heard JavaScript FP heads complain that the lack of TCE in JavaScript (in practice) puts real barriers on what you can do with FP in JavaScript 09:52
the point about idiomatic Haskell is well taken
guess it's one of those "should I be explicit and low level, or more high-level and use (HOF) built-ins?" 09:53
cpan-p6 New module released to CPAN! Doublephone (0.0.4) by 03JSTOWE
masak kinda like how I usually end up arguing `map` vs `for` loops with beginner JS classes
El_Che Woodi: almost every network login (RADIUS) uses a ldap backend als the main one. 09:54
Woodi: and lots of SSO solutions as well, like Shibboleth
pmurias masak: I would say it's more like using a for vs a while 10:00
masak: a lot of the HOF built-ins correspond to more structured looping constructs while a direct tail call self-recursion gives you a raw loop 10:01
cpan-p6 New module released to CPAN! App-CPAN (0.0.2) by 03TYIL 10:09
lizmat tyil++ 10:12
tyil TIL emacs for writing POD is a pain :( 10:16
masak tyil: POD, as in Perl 5's POD? 10:28
tyil oh, POD6 10:29
sorry
was writing the readme for cpan-p6 while waiting for the docker image to build, but emacs was messing up the indents pretty badly
vim has by far the best support for Perl 6, but vim is atrociously slow when faced with a perl/pod document larger than 50 lines 10:30
masak when I see people writing it in all-caps I assume it's the old Perl 5 format :) 10:38
TheDamian suggests that the new format be capitalized "Pod" 10:39
tyil I generally add a "6" to denote it, but I forgot this time
the way I capitalize it is inconsistent
masak .oO( tHe wAY i CApItALiZe iT Is inCoNSIsTeNt ) 10:43
tyil just the "it" part :( 10:44
lizmat m: say "1{"0" x $_}666{"0" x $_}1".is-prime for 0,13,42,506,608 # TIL :-) 11:03
camelia True
True
True
True
True
lizmat 2472 and 2623 take a bit too long for camelia 11:04
lizmat mostly afk for the rest of the day& 11:10
cpan-p6 New module released to CPAN! NativeHelpers-Array (0.0.3) by 03JSTOWE 11:45
tyil is there a reason why testing is not skipped when R* installs modules? 12:34
tyil the outcome of the test is ignored, and testing all those modules takes ages 12:34
smallick m: print (1/23).base-recurring 12:46
camelia No such method 'base-recurring' for invocant of type 'Rat'
in block <unit> at <tmp> line 1
smallick m: print (1/23).base-repeating 12:48
camelia 0. 0434782608695652173913
smallick m: print (1/11).base-repeating 12:49
camelia 0. 09
cpan-p6 New module released to CPAN! Manifesto (0.0.4) by 03JSTOWE 12:49
daxim m: my Str $s = 'abc'; my @l = $s.comb.map(-> $g { /$g/ }); @l.perl.say
camelia [/$g/, /$g/, /$g/]
daxim how do I make the variable interpolate?
tyil m: my Str $s = 'abc'; my @l = $s.comb.map(-> $g { $g }); @l.perl.say 12:51
camelia ["a", "b", "c"]
smallick m: say /<$_>/ for <a b c> # just checking
camelia /<$_>/
/<$_>/
/<$_>/
smallick m: 'abc'.comb.map({/{$_}/}).say 12:53
camelia (/{$_}/ /{$_}/ /{$_}/)
smallick m: print /(?:)/.WHAT 12:54
camelia 5===SORRY!5=== Error while compiling <tmp>
Quantifier quantifies nothing
at <tmp>:1
------> 3print /(?:7⏏5)/.WHAT
expecting any of:
argument list
term
12:55
smallick m: print //.WHAT
camelia 5===SORRY!5=== Error while compiling <tmp>
Null regex not allowed
at <tmp>:1
------> 3print //7⏏5.WHAT
smallick print /abc/.WHAT 12:56
evalable6 Use of uninitialized value of type Regex in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in block <unit> at /tmp/_ZuxXq0r0w line 1
smallick m: print <a b c>.comb.map(*.Regex) 12:57
camelia No such method 'Regex' for invocant of type 'Str'
in block <unit> at <tmp> line 1
smallick m: print <a b c d>.comb.map(Regex.new: *)
camelia Default constructor for 'Regex' only takes named arguments
in block <unit> at <tmp> line 1
smallick how string ===> regex 12:59
daxim 🤷 13:00
smallick converting string to regex ('^foobar$' ===> /^foobar$/) 13:01
cpan-p6 New module released to CPAN! Doublephone (0.0.5) by 03JSTOWE 13:05
sena_kun m: my $a = '^foobar$'; say 'foobar' ~~ /<$a>/ 13:18
camelia 「foobar」
sena_kun .tell smallick to turn an arbitrary string into a regex like: `my $a = '^foobar$'; say 'foobar' ~~ /<$a>/` 13:20
yoleaux sena_kun: I'll pass your message to smallick.
pmurias re splitting up the docs repo, wouldn't it make sense to use the same code to display docs for both the builtin things *and* user modules? 13:43
cpan-p6 New module released to CPAN! EuclideanRhythm (0.0.3) by 03JSTOWE 13:53
sena_kun pmurias, I think, the issue is that current doc site process is a mess, to be honest, with a number of issues that are here and very hard to fix because of that and very low test coverage. Hence I don't think the split can anyhow be bad for the case you pointed out, it's orthogonal. 13:57
andrzejku I don't truly understand 14:00
in Perl6 we cann't mutate variable
so when we modify something like String and Int it creates a copy 14:01
smallick how so 14:01
yoleaux 13:20Z <sena_kun> smallick: to turn an arbitrary string into a regex like: `my $a = '^foobar$'; say 'foobar' ~~ /<$a>/`
andrzejku so how to modify String?
if I have to modify every second char in it?
sena_kun andrzejku, it depends on what modification you want to do. Can you provide an example of your task? 14:02
smallick in c, type is associated with variables, here, it is not like that
andrzejku just trying to do something like that $input.comb[$index] = $input.comb[$index] * 2;
sena_kun the reason underneath is that a string is not a char array. 14:03
andrzejku it sounds like Perl6 is very slow by design
sena_kun andrzejku, what result are you expecting to get from multiplying a character? 14:04
andrzejku I am doing something like that
Int to Str
and then get every char as int and multiply
every seond*
and now I know that when it become and Str then it is immutable 14:05
and what now?:D
sena_kun m: '1234'.comb.map(*.Int).map(* * 2).join.say;
camelia 2468
sena_kun like this? ^
andrzejku 1438
every second 14:06
sena_kun give me a second...
smallick m: print <a b c>.map($^a => $^b) 14:12
camelia 5===SORRY!5=== Error while compiling <tmp>
Cannot use placeholder parameter $^a outside of a sub or block
at <tmp>:1
------> 3print <a b c>.map($^a7⏏5 => $^b)
smallick m: 1234.comb.map({ $^a + $^b })
camelia ( no output )
smallick say 1234.comb.map({$^a + $^b}) 14:13
evalable6 (3 7)
andrzejku looks like it is not implemented :D 14:14
sena_kun m: sub f($ind, $n) { ($ind + 1) %% 2 ?? $n * 2 !! $n }; '1234'.comb.map(*.Int).kv.map(&f}).join.say;
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse expression in argument list; couldn't find final ')' (corresponding starter was at line 1)
at <tmp>:1
------> 3! $n }; '1234'.comb.map(*.Int).kv.map(&f7⏏5}).join.say;
smallick 3124.comb
sena_kun m: sub f($ind, $n) { ($ind + 1) %% 2 ?? $n * 2 !! $n }; '1234'.comb.map(*.Int).kv.map(&f).join.say;
camelia 1438
sena_kun andrzejku, ^
a better solution can be made, I think, as I am just passing by folk who doesn't know Perl 6. :P
m: '1234'.comb.map(*.Int).kv.map({ ($^index + 1) %% 2 ?? $^n * 2 !! $^n }).join.say 14:15
camelia 1438
sena_kun inlined version 14:16
smallick what is that kv
moritz m: say <a b c>.kv
camelia (0 a 1 b 2 c)
smallick key value ? 14:17
moritz keys and values as in inline list
first introduces for hashes, but sometimes useful for lists as well
m: say <a b c>.pairs
camelia (0 => a 1 => b 2 => c)
moritz m: say '1234'.comb.pairs.map({ .key %% 2 ?? .value !! 2 * .value})».value.join 14:18
camelia No such method 'value' for invocant of type 'Str'. Did you mean 'values'?
in block <unit> at <tmp> line 1
moritz m: say '1234'.comb.pairs 14:19
camelia (0 => 1 1 => 2 2 => 3 3 => 4)
smallick and what the » do 14:20
sena_kun quick alternative to `.map` when you want to just use value's method and pass result further. 14:21
moritz call a method on every element of a list, basically like .map (but eager, not lazy)
sena_kun m: ('1', '2')>>.Int.say; 14:22
camelia (1 2)
smallick a simple example
sena_kun :)
moritz m: say (1, 4, 9, 16)».sqrt 14:23
camelia (1 2 3 4)
smallick m: say 1234.comb.map({ $^a, $^b ** 2 }) 14:24
camelia ((1 4) (3 16))
smallick m: say 1234.comb.map({ $^a, $^b * 2 }).flatten 14:25
camelia No such method 'flatten' for invocant of type 'Seq'
in block <unit> at <tmp> line 1
sena_kun m: say 1234.comb.map({ $^a, $^b * 2 }).flat.join 14:26
camelia 1438
smallick m: 12131411.comb.map({ $^a, $^b * 2 }).join
camelia ( no output )
smallick m: 12131411.comb.map({ $^a, $^b * 2 }).join
camelia ( no output )
sena_kun and I knew it can be done better than version of mine. :)
smallick++
smallick 1121313221341.comb.map({ $^a, $^b * 2 }).flat.join.print 14:27
moritz m: say 1121313221341.comb.map({ $^a, $^b * 2 }).flat.join.print
camelia Too few positionals passed; expected 2 arguments but got 1
in block <unit> at <tmp> line 1
sena_kun m: '12345'.comb.map(*.Int).kv.map({ ($^index + 1) %% 2 ?? $^n * 2 !! $^n }).join.say 14:29
camelia 14385
sena_kun .kv one handles odd number of elements though. 14:30
smallick hmm
andrzejku shit kill me but I am out
sena_kun andrzejku, ? 14:31
andrzejku too hard
sena_kun well, programming _is_ hard, no doubts. :| 14:32
andrzejku yes but I remmember those sequenced
things from Ruby and Rust
and it was much more easier to understand 14:33
smallick m: my $v = 12345; say $v.kv.map({ $^a %% 2 ?? $^b * 2 !! $^b }).join 14:34
camelia 24690
smallick wont work
remember Yuan Ma
how to iterate over hash 14:36
sena_kun smallick, its values or keys? or both? 14:37
pmurias sena_kun: decoupling stuff will help reusing the documentation rendering code both for core stuff and for modules
smallick both 14:38
sena_kun pmurias, 100% agreed.
sena_kun smallick, you can call `keys` or `values` or already shown `kv`. 14:38
and then.
pmurias sena_kun: but I also agree that splitting mangled together things into repos before they are decoupled will make decoupling *harder*
sena_kun m: my %a = a => 1, b => 2; for %a.values { $_.say }; for %a.keys { $_.say }; 14:38
camelia 1
2
a
b
sena_kun pmurias, yes, I have pointed that out too at github.com/perl6/doc/issues/2542#i...-451942693 :) 14:39
scovit m: my @c = "1234".comb; @c[1] *= 2; say @c.join
camelia 1434
Util m: my $v = 12345; say $v.comb.map(-> $a, $b? { $a, |($b * 2 if defined $b) }).flat.join; 14:40
camelia 14385
smallick aha!
scovit andrzejku: why can't you use an array?
pmurias sena_kun: saw that discussion, didn't comment on that issue as it seems you adressed the split as not helping decoupling 14:42
smallick m: my $v = 12345.comb; $v[1, 3, *+2 ... $v.elems] *= 2 ; say $v.join
camelia Cannot modify an immutable Str (2)
in block <unit> at <tmp> line 1
scovit m: my @c = "1234567".comb; @c[1, 3 ... *] *= 2; say @c.join
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
16357
in block <unit> at <tmp> line 1
Use of uninitialized value of type Any in string conte…
scovit smallick use arrays 14:43
m: my @c = "1234567".comb; @c[1, 3 ... 10] *= 2; say @c.join
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
110357
in block <unit> at <tmp> line 1
Use of uninitialized value of type Any in string cont…
scovit m: my @c = "1234567".comb; @c[1, 3 ... 7] *= 2; say @c.join
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
18357
in block <unit> at <tmp> line 1
Use of uninitialized value of type Any in string conte…
sena_kun pmurias, well, in my comment on github I have tried to express that decoupling goes first and different repos come second.
pmurias, and by your `re splitting` here I rudely guessed you is against the split proposal, which may be false. 14:44
*you are
scovit m: my @c = "1234567".comb; $_ *=2 for @c[1, 3 ... *]; say @c.join 14:45
camelia 14385127
smallick m: my @c = "1234".split».Int; @c[1, 3 ... *] *= 2; say @c.join
camelia Cannot resolve caller split(Str:D: ); none of these signatures match:
(Str:D: Regex:D $pat, $limit is copy = Inf;; :$v is copy, :$k, :$kv, :$p, :$skip-empty, *%_ --> Seq:D)
(Str:D: Str(Cool) $match;; :$v is copy, :$k, :$kv, :$p, :$skip-emp…
Util m: my @c = "1234567".comb; @c[1, 3 ... 7] >>*=>> 2; say @c.join;
camelia 143851272
pmurias sena_kun: I'm definitely against splitting the repos before the things are decoupled
smallick what is that :D
sena_kun pmurias, that's different from "against the split at all", so count me +1 to what you think. :) 14:46
Util m: my @c = "1234567".comb; @c[1, 3 ... *] »*=» 2; say @c.join;
camelia 14385127
sena_kun lol
Util++
Util `*=` was failing because it can only operate on one thing on the left-hand-side. 14:47
smallick oh
pmurias sena_kun: I don't have a super strong opinion against the split after the decoupling
Util Turning it into its hyper-operator (with magic pointing to the right) allows the left to be a list, while the right-hand-side is constant. 14:48
pmurias sena_kun: keeping stuff split into independent subdirectories in the repo is one possible options
smallick what is that 'Str:D' things? 14:49
scovit nice
pmurias sena_kun: in node.js land it seems to be fairly popular for complex things
tyil smallick: Str:D is a type with a type smiley, the type being Str (for String), and :D means it has to be definite (or defined)
smallick Is :U undefined, then 14:50
tyil yes
smallick saw a Mu:U in STD 14:51
pmurias has anyone seen TimToady lately?
tyil the default is :_, which means you don't really care if it's defined or not
smallick m: say Mu.new ~~ Mu:D 14:52
camelia Died with X::Multi::NoMatch
in block <unit> at <tmp> line 1
smallick m: say Mu.new ~~ Mu:U 14:53
camelia Died with X::Multi::NoMatch
in block <unit> at <tmp> line 1
tyil not sure if you can smartmatch against a type with smiley
m: my Mu:D $foo = Mu.new
camelia ( no output )
tyil m: my Mu:U $foo = Mu.new
smallick i am not sure also
camelia Type check failed in assignment to $foo; expected Mu:U but got Mu (Mu.new)
in block <unit> at <tmp> line 1
tyil ugh, uploaded a module to CPAN over 4 years ago, but zef still doesnt list it when I search for it :/ 14:55
smallick m: say 13 ~~ Int:D 14:56
camelia True
smallick m: say ([*] 1..23 ) + 1 ~~ :is-prime 14:57
camelia False
smallick m: my $n = [*] 1..23 + 1; say (2..$n).grep($n%%*) 14:59
camelia (2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 30 32 33 34 35 36 38 39 40 42 44 45 46 48 49 50 51 52 54 55 56 57 60 63 64 65 66 68 69 70 72 75 76 77 78 80 81 84 85 88 90 91 92 95 96 98 99 100 102 104 105 108 110 112 114 115 …
smallick say ([*] 1..23) + 1 15:00
evalable6 25852016738884976640001 15:01
smallick strange number
m: my $n = [*] 1..23 + 1; say (2..$n).grep({ not $n %% $_ }) 15:03
camelia (29 31 37 41 43 47 53 58 59 61 62 67 71 73 74 79 82 83 86 87 89 93 94 97 101 103 106 107 109 111 113 116 118 122 123 124 127 129 131 134 137 139 141 142 145 146 148 149 151 155 157 158 159 163 164 166 167 169 172 173 174 177 178 179 181 183 185 186 18…
smallick prime factorization of that num (23! + 1) 15:05
wait! 15:06
m: my $n = ([*] 1..23) + 1; 15:07
camelia ( no output )
smallick say $n %% 2
moritz m: say (([*] 1..23) + 1) %% 29
camelia False
smallick m: say ([*] 1..23 + 1) %% 2
camelia True
smallick ha!
moritz m: my $n = (([*] 1..23) + 1); say (2..sqrt($n)).grep({ $n %% $_}).head(20) 15:08
smallick say ([*] 1 .. 23 + 1)
evalable6 620448401733239439360000
camelia (timeout)
andrzejku map(*.Int) sounds like a magic fo me 15:09
smallick which have higher precedence between .. and +
say ([*] 1..23)+1 15:10
evalable6 25852016738884976640001
smallick plus have
tyil andrzejku: .map() is a thing from functional languages, and applies the code given to it to each element in a list, *.Int is a WhateverCode, the * is the Whatever here, and the .Int casts "whatever" it has to an Int type 15:12
sena_kun m: my @a = <1 2 3>; my @b; for @a -> $element { @b.append: $element.Int }; say @b
camelia [1 2 3]
tyil so map(*.Int) makes every item in a list turn into an Int 15:13
andrzejku ahh good to know 15:14
I will probably back to read a book :D
Perl6 is quite hard
can I see how thats implemented in Perl6? 15:15
tyil well, technically yes
but I would not know where to look exactly
smallick say (1/0).Num
evalable6 Inf
tyil don't be afraid to ask questions here or on StackOverflow, or the Perl6-users mailing list, andrzejku
andrzejku ok
tyil I jsut wanted to solve today the next exercise 15:16
form Perl6
but it is too hard just find a function in Perl6
tyil Perl 6 is a massive language, but it's composed of a lot of small, easy rules, and most people around here (and SO, and the ML) will be glad to help you out if you need it
andrzejku and apply it
like I did Ruby for example
andrzejku tyil 15:16
thnks
a lot
tyil :) 15:17
andrzejku what if I want to look for the map implementation github.com/perl6/nqp 15:18
is there any way to find it 15:19
smallick big language indeed.
tyil andrzejku: github.com/rakudo/rakudo/search?q=...sub+map%22 15:20
if you search inside that repo, you probably should have some luck, it pointed me towards github.com/rakudo/rakudo/blob/a904....pm6#L2090
but I'm not sure if this is what you were looking for 15:21
moritz I tend to have the rakudo git repo checked out, and run git grep -F 'sub map' 15:22
andrzejku emmm 15:23
whats implemented in NQP then?
smallick perl6 itself 15:23
thundergnat m: say '123456789'.comb »*» (1,2); 15:24
camelia (1 4 3 8 5 12 7 16 9)
smallick wow
thundergnat m: say (1..23) »*» (1,2);
camelia (1 4 3 8 5 12 7 16 9 20 11 24 13 28 15 32 17 36 19 40 21 44 23)
thundergnat :-) 15:25
smallick m: say (1234.comb».Int »*» (1, 2)).join 15:26
camelia 1438
smallick m: say (1243213421.comb».Int »*» (1, 2)).join 15:27
camelia 1446223822
smallick is exhausted 15:31
AlexDaniel tyil: open a ticket for star 15:33
github.com/rakudo/star/issues
tyil AlexDaniel: ack
Util thundergnat++ 15:37
daxim m: my Str $s = 'abc'; my @l = $s.comb.map(-> $g { /<$g>/ }); @l.perl.say 15:42
camelia [/<$g>/, /<$g>/, /<$g>/]
daxim sena_kun, that doesn't work, either 15:43
sena_kun hmm... 15:45
m: my Str $s = 'abc'; my @l = $s.comb.map(-> $g { /<$g>/ }); say 'a' ~~ @l[0]; say 'a' ~~ @l[1]; say 'b' ~~ @l[1]; 15:46
camelia 「a」
Nil
「b」
daxim wtf 15:46
sena_kun daxim, is there something wrong with ^?
daxim yeah, the fucking stringification is wrong 15:47
sena_kun let me try...
m: my $ehehe = 'a'; /<$ehehe>/.perl;
camelia ( no output )
sena_kun m: my $ehehe = 'a'; /<$ehehe>/.perl.say;
camelia /<$ehehe>/
sena_kun I am not sure it is wrong. I mean, stringification is done using variable name. 15:48
in case with `<$g>`, variable $g is captured from outer env every time and it, indeed, has different value in those three cases, I think.
daxim that's useless. $g is assigned multiple times and long out of scope when I inspect the regex 15:49
sena_kun daxim, do you mean it has to be presented as `'a'`, `'b'` and so on? 15:50
instead of link to the rule.
sena_kun or, rather, captured rule name. 15:50
daxim guess what the other 8 programming languages I'm familiar with do 15:51
smallick m: say /<$_>/ ~~ 'a' given 'a'
camelia Regex object coerced to string (please use .gist or .perl to do that)
False
in block at <tmp> line 1
sena_kun m: say 'a' ~~ /<$_>/ given 'a';
camelia 「a」
smallick m: say /<$_>/ given 'foo' 15:52
camelia /<$_>/
smallick huh 15:52
smallick m: my $a = 'abcde'.comb; say $a.map({ /<$_>/ }) »~~» $a 15:57
camelia The iterator of this Seq is already in use/consumed by another Seq
(you might solve this by adding .cache on usages of the Seq, or
by assigning the Seq into an array)
in block <unit> at <tmp> line 1
sena_kun daxim, to my understanding, such behavoir derives from Regex being a routine, to use it as a code block. I am not a core member though, just your average folk. :) You can likely open an issue though. 15:58
smallick m: my @a = <a b c d e f>; say @a.map({ /<$_>/ }) »~~» @a 15:59
camelia Regex object coerced to string (please use .gist or .perl to do that)
(False False False False False False)
in block <unit> at <tmp> line 1
Regex object coerced to string (please use .gist or .perl to do that)
in block <unit> at <tmp> line…
smallick m: say s/<$_>/<$_>/ given 'foo' 16:01
camelia Cannot modify an immutable Str+{Match::CachedCompiledRegex} (foo)
in block <unit> at <tmp> line 1
smallick m: say TR/<$_>/$_/ given 'foobar' 16:02
camelia foobar
smallick hmm 16:03
smallick m: say TR/b/abb/ given 'abc' 16:06
camelia aac
smallick say ~5 16:06
evalable6 5 16:07
smallick say ~5, 10
evalable6 510
smallick say 1/0 == 2/3 16:09
evalable6 False
smallick say 1/3 == 1/0
evalable6 False
smallick say 1.gist 16:10
evalable6 1
smallick m: .say 16:11
camelia (Any)
smallick m: .print
camelia Use of uninitialized value of type Any in string context.
Methods .^name, .perl, .gist, or .say can be used to stringify it to something meaningful.
in block <unit> at <tmp> line 1
smallick m: Mu.new.^name.say
camelia Mu
smallick 1.^name.say 16:12
evalable6 Int
smallick say /a/.WHAT.perl 16:13
evalable6 Regex
smallick dd dd
m: say qx<ping 8.8.8.8>; 16:17
camelia ping: icmp open socket: Operation not permitted
cpan-p6 New module released to CPAN! Tomtit (0.0.29) by 03MELEZHIK
smallick m: say VM
camelia (VM)
smallick m: say $*VM;
camelia moar (2018.12.13.g.473324.ee.3)
smallick m: say WOW 16:18
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
WOW used at line 1
smallick bisect: say 1/0 == 1/3 16:19
bisectable6 smallick, On both starting points (old=2015.12 new=ec289a6) the exit code is 0 and the output is identical as well
smallick, Output on both points: «False␤»
smallick e: 16:20
evalable6
smallick e: say $*VM
evalable6 moar (2018.12.13.g.473324.ee.3)
smallick e: say qx<uname> 16:21
evalable6 Linux
smallick m: say qx<uname>
camelia Linux
smallick m: say qx<uname -a>
camelia Linux camelia 4.4.165-81-default #1 SMP Mon Dec 3 07:47:23 UTC 2018 (0bfc9ed) x86_64 x86_64 x86_64 GNU/Linux
smallick r: say qx<ls> 16:22
camelia "my file"
Inline-Perl5
Perlito
bin
dalek-queue
evalbot
evalbot.log
file.txt
lib
log
mbox
nqp-js
p1
p2
p6eval-token
perl5
precomp
rakudo-j-1
rakudo-j-2
rakudo-j-inst
rakudo-j-inst-1
rakudo…
16:23
smallick camelia, help
camelia smallick: Usage: <(prof-m|rakudo-jvm|nqp-js|nqp-moarvm|nqp-jvm|debug-cat|p5-to-p6|star-m|rakudo-moar|rm|star|nqp-q|master|p56|r|j|rakudo|sm|rj|p6|nqp-mvm|nqp|r-j|nqp-m|perl6|r-m|m|r-jvm)(?^::\s(?!OUTPUT)) $perl6_program>
smallick m: say qx<pwd> 16:24
camelia /home/camelia
AlexDaniel smallick: what are you trying to do? Maybe I can help :) 16:25
smallick just seeing the system where expressions are evaluated
is it a problem 16:26
AlexDaniel smallick: by the way, you can run some code in your browser: perl6.github.io/6pad/ 16:27
I think your browser version needs to be new enough for it to work, but maybe that's already not an issue 16:28
smallick it is my phone where i'm typing these
a keypad one
AlexDaniel nice
smallick: there are three bots here, actually. camelia evalable6 and perlbot 16:29
perlbot AlexDaniel: Stored smallick: there are three bots here, actually. camelia evalable6 and
AlexDaniel ??
anyway…
smallick yes 16:30
AlexDaniel smallick: it's fine to explore the bots, but fwiw it's not fine to attempt to damage them in any way :)
smallick i am sorry
AlexDaniel smallick: camelia is very permissive and will even let you write to the filesystem. evalable6 is a bit more restricted, but will still allow you do things for your convenience
IIRC perlbot is as secure as it can get, but then you can't do some things that you might want to do legitimately… 16:31
smallick i am just trying to learn it 16:32
with help from you
i remembered perl one and saw how it works here 16:33
AlexDaniel perlbot: help 16:34
perlbot AlexDaniel: Provides help text for a specific command. Try 'help echo'. See also the command 'plugins' to list all of the currently loaded plugins.
AlexDaniel hmmm what was the command…
p6: say 42
camelia 42
AlexDaniel perlbot: say 42
eval: say 42
evalable6 42
AlexDaniel rkeval: say 42 16:35
perlbot AlexDaniel: 42
AlexDaniel ah, there it is
smallick is there an expr evaluator, tired to write say 16:36
if forgot to write say
m: 42
camelia WARNINGS for <tmp>:
Useless use of constant integer 42 in sink context (line 1)
smallick m: ([*] 1..11) 16:37
camelia ( no output )
AlexDaniel smallick: right, in command line if you run `perl6` without any arguments it goes into the REPL mode 16:37
AlexDaniel and there it prints the result of expressions nicely 16:37
bots don't have that, unfortunately 16:38
say 42
evalable6 42
AlexDaniel but you can drop `m:` sometimes :)
smallick if i had computers 16:38
AlexDaniel evalable6 won't respond if there's an error and m: was omitted, so it's not perfect
smallick i have this j2me phone as a computer 16:41
what is the perl6 compiler to jvm 16:43
timotimo rakudo
you just have to build it with --backends=jvm or --backends=moar,jvm
or maybe that's --backend=
smallick how much big it is, whole executable 16:44
after building
timotimo not sure, but i don't think it's small
smallick bigger than 1GB? 16:46
timotimo don't think so 16:47
smallick smaller than a gb
timotimo i'll go ahead and build it
smallick tell me later, then. Good bye 16:49
timotimo wow, the build is kind of slow 16:53
Xliff_ will perl6 -e "use Module" precompile it? 17:18
It used to.
Now I am not sure.
Geth doc: 3a35ce0678 | (Tom Browder)++ (committed using GitHub Web editor) | doc/Language/hashmap.pod6
fix typo
17:29
doc: 98fa7f92bf | (Tom Browder)++ (committed using GitHub Web editor) | doc/Language/hashmap.pod6
add missing comma
17:38
cpan-p6 New module released to CPAN! OO-Plugin (v0.0.4) by 03VRURG 18:41
Geth doc: b9d722734a | (Tom Browder)++ (committed using GitHub Web editor) | doc/Language/hashmap.pod6
add example of in-place editing of a hash key

also shows how to delete a hash key which seems to be missing
18:42
tbrowder idea for a useful prog: use AI tool to translate p5 to p6 18:45
maybe other langs, too!
El_Che call it parrot 18:46
tbrowder heh, heh! good one El_Che! to SNL you go...
El_Che :) 18:47
sena_kun if only such a tool was possible at technology level humanity is at...
tbrowder well, maybe it could be a first cut, easier than hand-transforming for lots of code. use lizmat's Butterfly code set as a start for training => expected results 18:49
AlexDaniel sena_kun: if you drop the “A”, then it's possible, but slavery is not legal :) 18:53
sena_kun the issue is that the thing currently called as "AI" is not really "intelligence", just a bunch of cool statistics tricks. Useful - sure, but a neural network doesn't understand a bit of what it is doing. I think, easy cases can be translated for sure, I mean, we already have translators(compilers and interpreters) from langauge A to language B, but I am not sure any reasonably complex pattern can be dealt with this way. Though I am not
compiler implementor nor neural network researcher fwiw. Sounds like a top-notch PhD topic though. :)
isomorphismes short of alias `zef about`='zef info`, is there a way of aliasing zef commands ? 19:14
SmokeMachine m: say (1,2,3,4,5).map: -> $a, $b? { |($a, ($_ * 2 with $b)) } 19:26
camelia (1 4 3 8 5)
isomorphismes short of alias `zef about`='zef info`, is there a way of aliasing zef commands ? 19:54
El_Che write a small wrapper? 19:55
skids Yay, I finally have a substantial use-once-and-throw-away script to write at work. Guess what language I'm using> :-) 19:56
yoleaux 28 Sep 2018 20:08Z <Zoffix> skids: just a minor comment: it's slightly annoying to come across several dozen merges during spec review because it takes a second to realize which changes you reviewed already in earlier commits. Unless it can't be merged to master yet or it's somethign controvercial, just commit directly instead of going through PRs. The commits are bot-announced and the spec is reviewed pre-release, so we don't
28 Sep 2018 20:08Z <Zoffix> skids: really need any FYI-type notifications about new tests.
Xliff_ wow
El_Che blast from the past 19:57
skids Yeah I've been a lame do nothin lately. 19:58
Xliff touches skids and his hand doesn't pass through!
Xliff hides
skids: Kidding aside. How have you been?
skids Meh, very tired all the time and have to work crowbarring utter crap into other utter crap at $DAYJOB. 19:59
skids Anyway, I made a new-to-me-at-least idiom: gist.github.com/skids/7cc60e21ddcb...af236cc1d2 20:01
Xliff skids: That's cool. Could use a bind, though! :) 20:02
Depending on the situation. 20:03
skids Yeah I had a bind but I golfed it out :-) 20:04
pmurias jnthn: I counted the precompile mode tests fails - 44 tests files (I skiped ones with use libs) fail due to bugs ignored by our regular test suite 20:24
Xliff will perl6 -e "use Module" precompile it? 20:30
sena_kun tries out... 20:32
Xliff, yes. 20:33
Xliff OK, so say Module is not installed in system perl but lives under project/lib
sena_kun at least with: cat base.pm6 --> `BEGIN { say 'ehehe' }`. and then `perl6 -I. -e 'use base;'` results in ehehe, but next `perl6 -I. -e 'use base;'` has no ehehe. :) 20:34
Xliff When I do "perl6 -Ilib -e 'use Module'" I know it compiles. 20:34
However when I do "perl6 -Ilib -I../anotherproject/lib -e 'use Module'" Module is recompiled AGAIN. 20:35
sena_kun is there a way to use it using -e without -I?
Xliff sena_kun: Yes. You can use -e without -I if Module is zef installed. 20:35
sena_kun Xliff, that is odd. I am doing so quote often and don't have the issue.
Xliff, oh, sorry. Of course, I know that installed module can be used without -I, I meant non-installed yet local one. 20:36
Xliff Oh. No. You are correct.
As in "Yes, you cannot do -e without -I"
In that case.
For small projects you might not notice it. 20:37
But for large ones (like mine) it's definitely noticable.
sena_kun Xliff, is Module from anotherproject lib? Is it being recompiled every time?
Xliff sena_kun: Yes.
And no. Once it recompiles again it's fine. 20:38
sena_kun Xliff, so it is being precompiled twice?
anyway, I think it has to be reported if so. 20:39
Xliff Yes. Once from when I compile it in project1/lib when in project/ and again in project2 when I "-I../project1/lib" from project2
sena_kun worth a report, I think. at least a ticket is easier for core members to notice and likely respond with something better than I can. :) 20:41
Xliff sena_kun: Fair enough. But I will need to gather more info for an effective ticket. 20:44
sena_kun it is. I still can reproduce it though, for some reason. For example. inside of my tester directory I have `inner` one, then I can out of it do `perl -I.. -e 'use base'` and it still uses precom. 20:45
*precomp
*can't reproduce
Xliff Yes. The reason I say that is coz noone has commented about: github.com/rakudo/rakudo/issues/2589
sena_kun: I think bug is triggered with more than one -I and if modules are coming from both dirs 20:46
sena_kun Xliff, it might be. A golf is welcome, anyway. re ticket: well, sadly number of people qualified enough to help is not so big. :( 20:47
Xliff Ah. 20:48
rindolf hi all 21:08
skids o/
rindolf zef install App::Mi6 is taking a long time on fedora 29 21:09
and moar takes 23% OF my ram 21:15
and still runs now 21:16
Geth ecosystem: 1ec4d82b30 | (Jonathan Stowe)++ | META.list
Move more modules to CPAN
21:32
cpan-p6 New module released to CPAN! Audio-Icecast (0.0.3) by 03JSTOWE 21:37
Kaiepi telnet is fucking hard to write 21:39
robertle Kaiepi: you mean the telnet protocol? I had to do that once to, and it was shocking! 21:41
telnet is a much more complex protocol than one would think
Kaiepi yeah i'm writing a module for it
robertle the option negotiation on connection establishment alone...
Kaiepi i finished that
it's the extensions that's the hard part
tadzik huh 21:45
tadzik having used it here or there it sounds like something that should/could be pretty trivial 21:45
lizmat
.oO( tormenting the developers for the ease of the user )
21:47
where have I heard that before :-)
zachk at a repl is there a way to see what methods are defined (maybe with signatures as well) for a class or an instance of a class? 21:51
moritz zachk: $obj.^methods
zachk ty
moritz docs.perl6.org/routine/methods 21:52