🦋 Welcome to Raku! raku.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: colabti.org/irclogger/irclogger_log/raku
Set by ChanServ on 14 October 2019.
Geth_ doc: 0b4f443b71 | (Stoned Elipot)++ | util/xt-recent.sh
Do not use a local(?) git alias

while here simplify pipeline
06:26
doc: 582a3a7133 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | util/xt-recent.sh
Merge pull request #3328 from Raku/xt-recent

Do not use a local(?) git alias
doc: 0b5ba69307 | (Stoned Elipot)++ | doc/Type/Compiler.pod6
Add Compiler.backend()
06:28
doc: 047691220d | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Type/Compiler.pod6
Merge pull request #3324 from Raku/comp-backend

Add Compiler.backend() Thanks, but please refer to the corresponding issue in the future.
linkable6 Link: docs.raku.org/type/Compiler
doc: 9d04f32134 | (Stoned Elipot)++ | 2 files
Document Str.index ignorecase/ignoremark

while here:
  - Str.index is a method: adjust section heading and use it in examples
  - revisit Cool.index description
06:31
doc: c020fecec2 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | 2 files
Merge pull request #3329 from Raku/str-index-i_m

Document Str.index ignorecase/ignoremark Please also ref to existing issues (and mark as solved when accepted). I'll do these last two.
Geth_ doc/str-starts-ends-i_m: f06f3847cf | (Stoned Elipot)++ | doc/Type/Str.pod6
Document Str's .starts-with and .ends-with ignorecase/ignoremark

Refs #3229
07:33
doc: stoned++ created pull request #3331:
Document Str's .starts-with and .ends-with ignorecase/ignoremark
Geth_ doc/str-contains-i_m: caf425b428 | (Stoned Elipot)++ | doc/Type/Str.pod6
Document Str.contains ignorecase/ignoremark

Refs #3229
While here note that Str.contains' Regex support is also available since Rakudo version 2020.02.
09:26
doc: stoned++ created pull request #3332:
Document Str.contains ignorecase/ignoremark
09:27
doc: f06f3847cf | (Stoned Elipot)++ | doc/Type/Str.pod6
Document Str's .starts-with and .ends-with ignorecase/ignoremark

Refs #3229
09:30
linkable6 Link: docs.raku.org/type/Str
Geth_ doc: c799e9f0e8 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Type/Str.pod6
Merge pull request #3331 from Raku/str-starts-ends-i_m

Document Str's .starts-with and .ends-with ignorecase/ignoremark
linkable6 DOC#3229 [open]: github.com/Raku/doc/issues/3229 [docs][new] Changes and additions for 2020.02
chloekek Oh I’m so confused again by containers. 10:05
p6: my %h = a => '1,2,3'; %h<a> .= split(',').Array; for %h<a> { .say } 10:06
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
chloekek p6: my %h = a => '1,2,3'; %h<a> .= split(',').Array; for %h<a>[] { .say }
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
chloekek p6: my %h = a => '1,2,3'; %h<a> .= split(',').Array; for @(%h<a>) { .say }
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
chloekek p6: my %h = a => '1,2,3'; %h<a> .= split(',').cache; for %h<a>[] { .say }
camelia 1
2
3
chloekek p6: my %h = a => '1,2,3'; %h<a> .= split(',').cache; for %h<a> { .say }
camelia (1 2 3)
chloekek p6: my %h = a => '1,2,3'; %h<a> .= split(',').cache; for %h<a>[] { .say } 10:07
camelia 1
2
3
chloekek It doesn’t work on my machine. 10:08
If I bind instead of .= then it works, as usual. 10:09
Silly me made the mistake of assigning instead of binding and was bitten. 10:10
If you never introduce containers then you never get problems caused by containers. 👌 10:13
AlexDaniel chloekek: oh… I think it's .= that is causing your problem 10:49
p6: my %h = a => '1,2,3'; %h<a> = %h<a>.split(',').Array; for %h<a> { .say }
camelia [1 2 3]
AlexDaniel chloekek: I think it does (%h<a> .= split(',')).Array
another way to do it would be, ummm 10:50
p6: my %h = a => '1,2,3'; %h<a> .= split(',') .= Array; for %h<a> { .say }
camelia [1 2 3]
chloekek lol
AlexDaniel greppable6: \.=.*\. 10:51
greppable6 AlexDaniel, 662 lines, 160 modules: gist.github.com/0851b5a011e5500c92...236453f3a4
AlexDaniel lizmat: are you sure that this does what you think? :) github.com/moritz/perl6-all-module...s.pm6#L335 10:52
github.com/moritz/perl6-all-module...id.pm#L398
m: my @indices = <a b c d a c d>; @indices .= sort.unique; say @indices 10:53
camelia [a a b c c d d]
AlexDaniel hah
chloekek Compiler should probably give an error or at least a warning.
AlexDaniel yeah, it's a construct that is visually ambiguous
or deceptive I should say
chloekek This is not your average trap. :þ 10:54
lizmat m: my @a = <a b c d>; @a .= sort.List; dd @a
camelia Array @a = ["a", "b", "c", "d"]
lizmat m: my @a = <a b b c c c d d d d>; @a .= sort.unique; dd @a
camelia Array @a = ["a", "b", "b", "c", "c", "c", "d", "d", "d", "d"]
lizmat yup, that's probably not what was intended :-) 10:55
AlexDaniel chloekek: can you file two tickets? One for the docs so that it can be documented as a trap, another for rakudo/rakudo so that we can make it issue a warning or something
chloekek On it! 10:56
AlexDaniel doesn't look like a very common trap, although I remember doing it multiple times in my own code… 10:58
lizmat m: my @a = <a b b c c c d d d d>; @a .= sort .= unique; dd @a 11:03
camelia Array @a = ["a", "b", "c", "d"]
lizmat I wonder how much magic it would be considered to have the above codegenned automatically
chloekek AlexDaniel: github.com/rakudo/rakudo/issues/3621 11:04
lizmat chloekek++ 11:06
chloekek Maybe .= should be looser than . 11:07
AlexDaniel thanks
chloekek Just like += is looser than .
AlexDaniel m: my @indices = <a b c d a c d>; @indices .= sort . unique; say @indices 11:09
camelia [a a b c c d d]
AlexDaniel m: my @indices = <a b c d a c d>; @indices [.]= sort.unique; say @indices
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed postfix call
at <tmp>:1
------> 3 @indices = <a b c d a c d>; @indices [.7⏏5]= sort.unique; say @indices
AlexDaniel m: my $x = 5; $x [+]= 2; say $x 11:10
camelia 7
AlexDaniel chloekek: it looks like an operator but the fake is coming through x)
chloekek So this works: ==> map ({ %^a<meta-tags> .= split(',') .= grep(?*) .= cache; %^a }) 11:43
cpan-raku New module released to CPAN! List::MoreUtils (0.0.7) by 03ELIZABETH 11:44
chloekek And it works even without zen slice, for some reason: for %archive<meta-tags> { … }
AlexDaniel chloekek: what about using .eager 11:45
instead of .cache 11:46
chloekek I still don’t understand the difference between list, cache and eager.
AlexDaniel no idea
chloekek Or how .lazy works, how can a postfix method call turn something lazy?
AlexDaniel you can also do .List
chloekek I’d like to just assign it to my @ because I know what that does when given a Seq. 11:47
But that’s not pleasant with .= :)
AlexDaniel chloekek: I don't even know the difference between a List and a Seq, so… 11:49
chloekek: because a list can be lazy, I think? And a Seq can be cached? So they're the same? What? I don't know.
chloekek Seq can be iterated once, List as many times as you want 11:50
So List necessarily remembers produced elements
If you call .cache on a Seq, then it returns a List, and the same List every time.
I guess if you call .list instead of .cache it will create a new List.
AlexDaniel m: my $foo = <a b c>.split(‘ ’); say WHAT $foo; say $foo; say $foo 11:51
camelia (Seq)
(a b c)
(a b c)
AlexDaniel didn't I just iterate a seq twice?
chloekek Maybe you can /shrug 11:52
AlexDaniel chloekek: no, .list won't necessarily return a list, but .List should (although it sometimes doesn't?)
chloekek p6: my $foo = 'a b c'.split(' ').grep(?*); say $foo; say $foo
camelia (a b c)
(a b c)
chloekek What does <a b c>.split(' ') mean?
p6: say <a b c>.split(' ').raku 11:53
camelia ("a", "b", "c").Seq
AlexDaniel oh I mean't ‘’ instead of < > whoops
but it's the same I think
because it'll probably stringify a list first
chloekek p6: my $foo = 'a b c'.split(' ') but role { method list { die } }; say $foo 11:54
camelia (a b c)
chloekek p6: my $foo = 'a b c'.split(' ') but role { method cache { die } }; say $foo
camelia Died
in method cache at <tmp> line 1
in block <unit> at <tmp> line 1
AlexDaniel much like .contains on a list used to return what you didn't mean by stringifying first
chloekek .gist calls .cache hence
p6: my $foo := 'a b c'.split(' '); for $foo { }; for $foo { }
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
chloekek So say works because it calls .cache, but for doesn't because it directly iterates the Seq.
AlexDaniel okay so you can't iterate it unless something automatically calls .cache on it
more than once that is 11:55
chloekek p6: my $foo := 'a b c'.split(' '); $foo.cache; for $foo { }
camelia ( no output )
chloekek p6: my $foo := 'a b c'.split(' '); $foo.cache; for $foo { }; for $foo { }
camelia ( no output )
AlexDaniel so why do we have lazy lists instead of just using cached seqs? 11:57
chloekek Seqs aren't Positional.
AlexDaniel I mean, sure, because it uses something something for the implementation, but the user-facing stuff is rather confusing
m: my $foo := 'a b c'.split(' '); say $foo[1]; say $foo[0] 11:58
camelia b
a
AlexDaniel looks positional to me?
chloekek p6: my @foo := 'a b c'.split(' ') 11:59
camelia Type check failed in binding; expected Positional but got Seq ($(("a", "b", "c").Seq))
in block <unit> at <tmp> line 1
chloekek It implements AT-POS but it does not do Positional
AlexDaniel p6: my @foo := 'a b c'.split(' ').list 12:00
camelia ( no output )
AlexDaniel p6: my @foo := 'a b c'.split(' ').list; dd @foo
camelia ("a", "b", "c")
AlexDaniel p6: my @foo := 'a b c'.split(' ').list; say WHAT @foo
camelia (List)
AlexDaniel p6: my @foo := 'a b c'.split(' ').cache; dd @foo 12:01
camelia ("a", "b", "c")
AlexDaniel p6: dd 'a b c'.split(' ').cache
camelia ("a", "b", "c")
AlexDaniel p6: my $x = 'a b c'.split(' '); say $x[0]; dd $x
camelia a
Seq $x = $(("a", "b", "c").Seq)
AlexDaniel p6: my $x = 'a b c'.split(' '); $x.cache; dd $x 12:02
camelia Seq $x = $(("a", "b", "c").Seq)
lizmat PositionalBindFailover
chloekek Seq is a wrapper around Iterator and a list, apparently. 12:03
p6: .say for Seq.^attributes
camelia Iterator $!iter
Mu $!list
AlexDaniel chloekek: so .cache returns a List, but actually the Seq itself becomes cached. So you can do just $x.cache; and there's no need to assign it
chloekek: which is why `$foo .= .grep().cache;` works 12:04
chloekek Yes PositionalBindFailover.cache assigns to $!list.
.list uses $!list, or creates a new one if $!list is not set.
AlexDaniel m: my $foo := ‘a b c’.split(‘ ’); $foo.cache; say WHAT $foo; .say for $foo.list; .say for $foo.list
camelia (Seq)
a
b
c
a
b
c
AlexDaniel m: my $foo := ‘a b c’.split(‘ ’); $foo .= cache; say WHAT $foo; .say for $foo.list; .say for $foo.list
camelia Cannot modify an immutable Seq ((a b c))
in block <unit> at <tmp> line 1
chloekek .list and .cache are identical, except that .cache sets $!list the first time.
AlexDaniel m: my $foo = ‘a b c’.split(‘ ’); $foo .= cache; say WHAT $foo; .say for $foo.list; .say for $foo.list
camelia (List)
a
b
c
a
b
c
AlexDaniel m: my $foo = ‘a b c’.split(‘ ’); $foo.cache; say WHAT $foo; .say for $foo.list; .say for $foo.list 12:05
camelia (Seq)
a
b
c
a
b
c
chloekek p6: my $foo := 'a b c'.split(' '); $foo.list; say $foo
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
AlexDaniel sourceable6: a b c’.split(‘ ’).cache()
sourceable6 AlexDaniel, No idea, boss. Can you give me a Code object? Output: gist.github.com/de941db8bad242ce67...823fdb80c6
AlexDaniel sourceable6: ‘a b c’.split(‘ ’).cache()
sourceable6 AlexDaniel, github.com/rakudo/rakudo/blob/d8f2...ce.pm6#L24
chloekek I suggest looking at the implementation: Seq.pm6 and Sequence.pm6.
This made clear to me what happens.
And how .cache, .list and .iterator work. 12:06
AlexDaniel: Nevermind, I do need the zen slice. 12:11
AlexDaniel chloekek: why do you *need* the zen slice? :) 12:12
chloekek %archive<meta-tags> is a scalar container containing a list. 12:13
for %archive<meta-tags> will loop only once.
for %archive<meta-tags>[] will actually loop.
AlexDaniel what about `for %archive<meta-tags>.list` ? 12:14
chloekek That works too.
AlexDaniel oh, [] doesn't cache
chloekek %archive<meta-tags> is already a list. 12:15
It’s just wrapped in a scalar container.
AlexDaniel but [*] does. Interesting
chloekek p6: my %a = meta-tags => 'a,b,c'; %a<meta-tags> .= split(',') .= cache; for %a<meta-tags> { .raku.put } 12:16
camelia $("a", "b", "c")
chloekek p6: my %a = meta-tags => 'a,b,c'; %a<meta-tags> .= split(',') .= cache; for %a<meta-tags>[] { .raku.put }
camelia "a"
"b"
"c"
AlexDaniel TIL [] 12:17
synthmeat (sorry for interrupting) is there a way to get, for a grapheme's .fc, a list of graphemes comparison would return true?
AlexDaniel synthmeat: you mean like reverse-search for what foldcase resolves to? 12:18
synthmeat yes
AlexDaniel synthmeat: I think you'll need to make a lookup table for that yourself 12:19
synthmeat but it's in there somewhere already! 12:20
AlexDaniel synthmeat: I don't know if that thing is viable in general, does unicode have any rules for multichar .fc conversions? Like can two characters .fc to a single one in some conditions?
synthmeat yes
ß and ss
AlexDaniel synthmeat: where? We only know how to .fc a string, we don't know how to go backwards 12:20
AlexDaniel synthmeat: when you .fc both strings we just compare if they're the same 12:21
I mean, technically you do the comparison :)
jnthn Indeed, I believe the mappings are only stored in the direction needed to implement .fc
AlexDaniel samcv: ↑
chloekek I don’t understand why array and hash elements are containerized.
It’s certainly not needed for mutation:
p6: my @x = 1,; @x[0] := 2; @x[0] := 3; say @xs 12:22
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '@xs' is not declared
at <tmp>:1
------> 3my @x = 1,; @x[0] := 2; @x[0] := 3; say 7⏏5@xs
chloekek p6: my @x = 1,; @x[0] := 2; @x[0] := 3; say @x
camelia [3]
chloekek p6: my @x = 1,; @x[0] := 2; @x[0] := (1,2,3); say @x.raku 12:23
camelia [(1, 2, 3),]
jnthn How else would you assign to them?
chloekek Overload the []= and {}= operators. 12:24
That's what Ruby does, and it does not suffer from the for %h<k> issue.
jnthn That only handles the case where the assignment appears literally like that, not all of the more indirect cases 12:25
For example, @a[$i]++ is postfix:<++>(@a[$i]), where the operator takes the argument `is rw` and assigns the successor into it. 12:27
chloekek I guess I’ll just write Raku::Critic and have it complain about using hash elements in for loops without zen slice.
AlexDaniel chloekek: yeah, I really want Raku::Critic. Maybe jnthn++'s work will help with that 12:30
cuz the language is definitely not foolproof enough for the fool I am :)
synthmeat: it's not hard to implement that, but it takes a few seconds to build the table: perl6 -e 'my %fc-reverse-lookup; for 0..0x10FFFF { %fc-reverse-lookup{.chr.fc}.push: .chr }; say ‘Done!’; for lines() { say %fc-reverse-lookup{.fc} }' 12:33
synthmeat oh, nice! /me tries to play with it 12:36
AlexDaniel Here's the table of things that resolve to multiple characters: gist.github.com/AlexDaniel/81f64e4...40c226aee4 12:37
hah non-ascii version of the ff operator ff 12:38
I'm kidding, of course
AlexDaniel unidump: 流流流流 12:44
unicodable6 AlexDaniel, gist.github.com/4cb3f934c6bc1809b4...51d0a2d39a
chloekek p6: say ::('Str').raku; 12:57
camelia Str
chloekek p6: say ::($_).raku given 'Str';
camelia Str
Doc_Holliwood m: multi foo($x) { $x.say }; foo(123) 13:31
camelia 123
Doc_Holliwood m: multi foo($x) { $x.say }; foo.WHAT.say 13:32
camelia 5===SORRY!5=== Error while compiling <tmp>
Calling foo() will never work with any of these multi signatures:
($x)
at <tmp>:1
------> 3multi foo($x) { $x.say }; 7⏏5foo.WHAT.say
Doc_Holliwood m: multi foo($x) { $x.say }; (&foo).WHAT.say
camelia (Sub)
Doc_Holliwood m: multi foo($x) { $x.say }; (foo).WHAT.say
camelia 5===SORRY!5=== Error while compiling <tmp>
Calling foo() will never work with any of these multi signatures:
($x)
at <tmp>:1
------> 3multi foo($x) { $x.say }; (7⏏5foo).WHAT.say
Doc_Holliwood m: foo($x) { $x.say }; (&foo).WHAT.say
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '$x' is not declared
at <tmp>:1
------> 3foo(7⏏5$x) { $x.say }; (&foo).WHAT.say
Doc_Holliwood so, you can omit the "sub" when you use "multi"? 13:33
m: class Foo { multi foo($x) { $x.say }; }; Foo.new.foo(123) 13:34
camelia No such method 'foo' for invocant of type 'Foo'
in block <unit> at <tmp> line 1
Doc_Holliwood m: class Foo { multi sub foo($x) { $x.say }; }; Foo.new.foo(123)
camelia No such method 'foo' for invocant of type 'Foo'
in block <unit> at <tmp> line 1
Doc_Holliwood interesting
MasterDuke yeah. think it is mentioned in the docs somewhere 13:36
AlexDaniel and I can never remember if it defaults to multi sub or multi method 13:41
chloekek proto and multi default to sub. 13:43
El_Che jnthn: comma does intellij to crash when open projects, also non raku projects: gist.github.com/nxadm/6e1de81afbd9...2fc4b17b3a 14:15
jnthn: an upgrade to the freshly releases Intellij 2020.1, Linux amd64, Ubuntu 19.10 14:16
El_Che jnthn: comma community 2020.01.0 plugin 14:18
Altai-man_ El_Che, do you just report it or was expecting it to work? 14:21
El_Che Altai-man_: I don't understand the question
Altai-man_ sorry, my grammar...
El_Che, are you saying "Just FYI, this isn't working" or "I installed new idea and the plugin doesn't work!"?
2020.01 is very fresh and we don't support iet yet, 2019.03 is the latest supported version, I think. 14:22
s/iet/it/
El_Che both
I just reinstalled the plugin. It does not work, but it does not crash other languages
kind of a headup that 2020.01 is out and many will upgrade 14:23
Altai-man_ >NoClassDefFoundError: com/intellij/ide/util/projectWizard/SourcePathsBuilder
El_Che, next release will probably support it, though still no idea. Thanks for reporting. 14:24
El_Che OK, I reinstalled and enabled. It crashes other projects. 14:25
(other == other langs) 14:26
Altai-man_ Alas, it won't work regardless of what you do.
El_Che plugin do have some sort of supported versions, I think. Maybe for the feature it's good be a good idea to mark the plugin as such. If I recall correctly you get warned at upgrade time if the plugins are incompatible 14:27
Altai-man_: I heard there were some problems with signing on MacOS? 14:30
Altai-man_ Yes, but during migration to 2019.03 we don't used deprecated API, which is why I am disappointed but not surprised they broke things by removing parts not marked as deprecated. 14:31
El_Che, AFAIK, they were resolved and latest release is available on macos.
melezhik2 chloekek: how can I install locally built Raku nix package? - gist.github.com/melezhik/48fd3ea8a...cc4c2e0de9 14:32
nix-env -iA Test-Mock
error: attribute 'Test-Mock' in selection path 'Test-Mock' not found 14:33
looks like
nix-env -f . -iA Test-Mock
woks fine
now the question is, how can use this raku module? 14:34
chloekek I have no idea, I never use nix-env.
melezhik2 perl6 -MTest::Mork
through an error
melezhik2 throw 14:34
chloekek I think nix-env defaults to looking up on nixpkgs.
lizmat ,.oO( Test::Mindy )
chloekek Try nix-env -f default.nix -iA Test-Mock
melezhik2 gist.github.com/melezhik/48fd3ea8a...nt-3252512
like I said "nix-env -f . -iA Test-Mock" works as well, now how can I test that module is successfully used by raku? 14:35
now I am using my system installed rakudo, which is probably wrong 14:36
chloekek I never use imperative installation commands, but what you can do is: PERL6LIB=$(< /nix/store/14p68llhai20xh2673pk2gq5cacccycy-Test-Mock/PERL6LIB) perl6 -MTest::Mock 14:36
melezhik2 ahh , it's ok, but how do you use those modules on your system? don't you alter PERL6LIV every time? 14:37
chloekek Ideally you would be able to do this: nix-shell -p 'rakuWithPackages (p: [ p.Test-Mock ])' --run perl6, like you can do with Python and Perl, but this is not yet implemented.
melezhik2 it's impossible (-;
chloekek I use them by building the programs that depend on them with Nix as well. 14:38
If a Raku distribution has a bin directory, then each file in there will end up in PATH if you install it.
Libraries by themselves are not useful outside of programs that depend on them. Except for the case of REPLs, but I don’t use REPLs either, so I never got to implement that.
melezhik2 I am not concerned with PATH , it seems no problem with it in nix 14:39
I am talking about PERL6LIB
chloekek I don’t think nix-env -i can arbitrarily adjust environment variables such as PERL6LIB.
melezhik2 you're right, it does not
this is why I am asking
El_Che Altai-man_: Just discovered Jetbrains Toolbox that lets you rollback intellij versions
melezhik2 looks like the only option in nix-shell/ nix run 14:40
chloekek So if you want to have a REPL with a Raku package in scope, you must build a REPL that has it in scope.
melezhik2 to test Nix raku distribtutions
chloekek Which you can do. I can write an example for that.
melezhik2 yeah
it's abit trickier then I'd expected ;-)
melezhik2 error: undefined variable 'rakuWithPackages' at (string):1:94 14:41
when I run "nix-shell -p 'rakuWithPackages (p: [ p.Test-Mock ])' --run perl6"
and btw, should I install nix rakudo? 14:42
chloekek Yes, I just said I still have to implement that. 14:48
Which I have now done!
melezhik2 sure
chloekek You can now write this with the latest raku-nix: nix-shell -p '(import ./. {}).rakuWithPackages (p: [ p.Test-Mock ])' --run 'perl6 -MTest::Mock'
As well as this: nix-build -E '(import ./. {}).rakuWithPackages (p: [ p.Test-Mock ])' && result/bin/perl6 -MTest::Mock 14:49
melezhik2 btw, I wonder why not just `nix run -c "raku -MTest-Mock -e 1"` ?
chloekek nix run only sets PATH.
melezhik2 ah, ok 14:50
I guessed that
an error after your last commit - gist.github.com/melezhik/48fd3ea8a...nt-3252530
chloekek Put (import ./. {}). before rakuPackages 14:51
melezhik2 yeah. it works now, though I don't understand (-: the meaning of the construction 14:53
gist.github.com/melezhik/48fd3ea8a...nt-3252539
:-)
chloekek So the way it works is: 14:54
chloekek When you build a Raku package with rakuPackage, it creates an output directory that has the precompiled MoarVM bytecode in it, in the directory format that Rakudo uses to import precompiled modules. As well as a file PERL6LIB that lists all the dependencies. 14:54
guifa2 o/ 14:55
chloekek What rakuWithPackages does is: it generates a Bash script that forwards all arguments to perl6, after setting PERL6LIB to the concatenated contents of the PERL6LIB files in each output directory of each package you give it.
You can see this if you do: nix-build -E '(import ./. {}).rakuWithPackages (p: [ p.Test-Mock ])' && cat result/bin/perl6 14:58
Wrapping programs to set environment variables is such a common operation in Nix that it has a function makeWrapper that does exactly this. rakuWithPackages calls makeWrapper. 15:04
melezhik2 thanks. I need time to understand all of that, so far look like - "nix-shell -p '(import ./. {}). rakuWithPackages (p: [ p.Test-Mock ])' --run "perl6 -MTest::Mock2 -e 1"" is what I was looking for 15:08
melezhik2 btw what p.Test-Mock does? 15:09
> As well as a file PERL6LIB that lists all the dependencies. 15:10
yeah makes a sene now
sense
melezhik2 chloekek: by testing Raku nix modules installation, do you mean just simple `raku -M$module` or you're thinking about `zef test $module` 15:19
tellable6 melezhik2, I'll pass your message to chloekek
melezhik2 the last is probably harder bearing in mind the nature of nix based installs
samcv synthmeat, I don't think it's allowed to .fc from 2 characters down to 1. Only to go from 1 to 2 15:36
El_Che Hi, for a cli app, for command mode, do you also see it as: ./prog action sub-action --param-for-sub --param-for-sub=foo? 15:38
that's what I mostly see, e.g. docker 15:39
chloekek melezhik: Yeah there is currently no infrastructure in raku-nix for running tests. 15:48
tellable6 chloekek, I'll pass your message to melezhik2
chloekek melezhik: Building and importing the modules seems like a good first step.
tellable6 chloekek, I'll pass your message to melezhik2
melezhik chloekek: "Building and importing the modules seems like a good first step" - good 15:52
tellable6 2020-04-13T15:48:19Z #raku <chloekek> melezhik: Yeah there is currently no infrastructure in raku-nix for running tests.
2020-04-13T15:48:33Z #raku <chloekek> melezhik: Building and importing the modules seems like a good first step.
melezhik I guess I am choosing between 2 options how can I assist here 15:53
1) bringing nix modules build/import logic to RakuDist - think about a new "OS" supported
2) writing some Sparrow plugins/DSL so one can reuse those ones in their test scripts 15:54
which one is preferable , chloekek: ? 15:55
cpan-raku New module released to CPAN! Gcrypt (0.1) by 03CTILMES 16:40
Geth_ doc/str-substr-eq-i_m: a77eccfea4 | (Stoned Elipot)++ | 2 files
Document Str.substr-eq ignorecase/ignoremark

Refs #3229
17:24
Geth_ doc: stoned++ created pull request #3334:
Document Str.substr-eq ignorecase/ignoremark
17:25
Geth_ doc: a77eccfea4 | (Stoned Elipot)++ | 2 files
Document Str.substr-eq ignorecase/ignoremark

Refs #3229
17:51
doc: 8deaff588c | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | 2 files
Merge pull request #3334 from Raku/str-substr-eq-i_m

Document Str.substr-eq ignorecase/ignoremark
linkable6 DOC#3229 [open]: github.com/Raku/doc/issues/3229 [docs][new] Changes and additions for 2020.02
cpan-raku New module released to CPAN! Gcrypt (0.2) by 03CTILMES 17:58
Doc_Holliwood m: role R { method foo() { say "!" } }; use MONKEY-TYPING; augment List does R; 18:45
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed augment (found type followed by trait; did you forget a variable in between?)
at <tmp>:1
------> 3!" } }; use MONKEY-TYPING; augment List 7⏏5does R;
Doc_Holliwood m: role R { method foo() { say "!" } }; use MONKEY-TYPING; augment class List does R; 18:46
camelia 5===SORRY!5=== Error while compiling <tmp>
Too late for unit-scoped class definition;
Please use the block form.
at <tmp>:1
------> 3ONKEY-TYPING; augment class List does R;7⏏5<EOL>
Doc_Holliwood m: role R { method foo() { say "!" } }; use MONKEY-TYPING; augment class List does R {};
camelia ( no output ) 18:47
Doc_Holliwood m: role R { method foo() { say "!" } }; use MONKEY-TYPING; augment class List does R {}; (1,2).foo
camelia !
Doc_Holliwood noice
lizmat and another Rakudo Weekly News hits the Net: rakudoweekly.blog/2020/04/13/2020-...-surprise/ 19:25
sena_kun downforeveryoneorjustme.com/perlfoundation.org says www.perlfoundation.org/grant-ideas.html is down 19:31
lizmat works for me now 19:35
jnthn very punny, lizmat++ :) 19:37
[Coke] grant-ideas.html is the wrong link. 19:39
grants.perlfoundation.org/ is better. 19:40
We haven't put in a redirect yet. Will see if I can make weebly do that later.
sena_kun oh, this one works, [Coke]++
sena_kun lizmat, I think weekly should use the new one as well. 19:40
lizmat link updated 19:41
sena_kun lizmat++ 19:42
bartolin_ lizmat++ # weekly 19:45
MasterDuke lizmat++ 20:03
guifa2 lizmat++ 20:07
lizmat argh, I just realized I forgot something in this weeks Weekly :-( sorry guifa 20:09
guifa2 lizmat: no problem! I'm still getting caught up with $day-job and $get-phd-paper-in-hand-work so I haven't advanced as quickly on that front as I'd've liked
So by the time people read the proposal next week, there may even be a semi-experimental module ready 20:10
lizmat weekly: grammar proposal by guifa gist.github.com/alabamenhu/2fec7a8...4a2ae2f04d
notable6 lizmat, Noted! (weekly)
guifa2 really can't wait to have this semester off of his shoulder so he can dive fully into Intl::, so much work there to get done, especially given everything I've learned over the past few months 20:17
chloekek Is it possible to force line buffering on stdout?
tellable6 2020-04-13T15:19:09Z #raku <melezhik2> chloekek: by testing Raku nix modules installation, do you mean just simple `raku -M$module` or you're thinking about `zef test $module`
chloekek I can set $*OUT.out-buffer = 0 but that completely disables buffering. 20:21
MasterDuke chloekek: docs.raku.org/type/IO::Handle#method_open has some info
maybe something with the TTY settings would do what you want 20:22
chloekek My stdout is not a TTY, it’s a pipe.
I think line buffering is just not a thing at the moment.
chloekek p6: say %*ENV; say %(|%*ENV, A => 'B'); 20:40
camelia {DBUS_SESSION_BUS_ADDRESS => unix:path=/run/user/1017/bus, HOME => /home/camelia, LC_CTYPE => en_US.UTF-8, LOGNAME => evalbot, MAIL => /var/mail/evalbot, PATH => /usr/bin:/bin:/usr/sbin:/sbin, SHELL => /bin/bash, SUDO_COMMAND => /home/camelia/rakudo-m…
chloekek p6: say %(|%*ENV, A => 'B'); 20:40
camelia {A => B, DBUS_SESSION_BUS_ADDRESS => unix:path=/run/user/1017/bus, HOME => /home/camelia, LC_CTYPE => en_US.UTF-8, LOGNAME => evalbot, MAIL => /var/mail/evalbot, PATH => /usr/bin:/bin:/usr/sbin:/sbin, SHELL => /bin/bash, SUDO_COMMAND => /home/camelia/…
chloekek My goodness, it didn’t work because I wrote my %*ENV = %(|%*ENV, ...);. 20:43
guifa2 's eyes are hurting from that %(|%* . Was that perl? ;-) 20:50
lizmat chloekek: I don't think line buffering is a thing atm
chloekek lizmat: I thought so 20:52
synthmeat wait, wait, wait. PAST -> QAST -> RakuAST? seriously? no RAST? 20:53
tobs m: my %h = a => 'b'; %h »//«= %(A => 'B', a => 'z'); say %h
camelia {A => B, a => b}
lizmat no, no RASTaman Vibration
chloekek guifa2: (|~«. is my favorite sequence of symbols in my code so far. ({ !$++ || .[1] ne comes close. 20:58
lizmat in my opinion, $++ is nice for oneliners, but shouldn't be used in any code that lives elsewhere 20:59
chloekek I like how much you can get done without any letters. :) 21:01
Geth_ doc/str-indices-i_m: 1fbe42f257 | (Stoned Elipot)++ | 2 files
Document Str.indices ignorecase/ignoremark

Refs #3229
21:02
lizmat chloekek: you think you like that now :-)
tobs m: my %h = a => 'b'; %h »R//«= %(A => 'B', a => 'z'); say %h # doh, this one will overwrite instead of preserve pairs on the LHS
camelia {A => B, a => z}
Geth_ doc: stoned++ created pull request #3335:
Document Str.indices ignorecase/ignoremark
tobs »R//«= is not half bad either IMHO :-)
chloekek lizmat: Be sufficiently proud of your obscure one-lines that you don’t forget them.
[Coke] autarch++ just fixed the redirect in the weebly source, so both links go to the same place now. 21:03
(for grant ideas)
lizmat chloekek: but will other people recognize them ?
chloekek Every unknown is an opportunity to learn. 21:04
AlexDaniel or an opportunity to hate
x)
cpan-raku New module released to CPAN! Gcrypt (0.4) by 03CTILMES 23:36