🦋 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.
00:12 wamba left 00:28 KotH left, KotH joined 00:32 bartolin left, bartolin joined 00:41 sena_kun left 00:56 sena_kun joined
EuAndreh[m] How can I add a tuple type as a return value? See: euandre.org/pastebin/raku-tuple-ty...ation.html 01:03
vrurg EuAndreh[m]: Use List or modules.raku.org/dist/Tuple:cpan:ELIZABETH 01:15
EuAndreh[m]: Depending on how you plan to use the return value, it could be a Pair or Array too. 01:16
EuAndreh[m] vrurg: I think it's closer to a Pair 01:17
Can the Pair be generic on the contents?
vrurg EuAndreh[m]: Like?
EuAndreh[m] Maybe something like Pair[Str, Str]
Actually, a Pair contains a key and a value. I'm after a tuple instead 01:18
So probably a List or an Array 01:19
vrurg Anyway, Pairs are not parameterizable.
EuAndreh[m] I guess Lists aren't also, right? 01:20
vrurg You're right.
EuAndreh[m] vrurg: Thank you very much :)
vrurg EuAndreh[m]: you're welcome. :) 01:21
01:21 Voldenet left 01:25 sauvin joined 01:26 Voldenet joined, Voldenet left, Voldenet joined 01:52 mensvaga left
cpan-raku New module released to CPAN! Red (0.1.1) by 03FCO 02:21
02:22 sauvin left 02:26 sauvin joined 02:42 sena_kun left 02:56 sena_kun joined 03:56 quotable6 left, shareable6 left, benchable6 left, nativecallable6 left, committable6 left, sourceable6 left, bloatable6 left, unicodable6 left, statisfiable6 left, releasable6 left, reportable6 left, greppable6 left, notable6 left, bisectable6 left, coverable6 left, squashable6 left 03:57 unicodable6 joined, shareable6 joined, bisectable6 joined, nativecallable6 joined, statisfiable6 joined, notable6 joined, reportable6 joined 03:58 sourceable6 joined, committable6 joined, coverable6 joined, benchable6 joined, quotable6 joined 03:59 greppable6 joined, squashable6 joined, releasable6 joined, bloatable6 joined 04:31 johnjohn101 joined 04:41 sena_kun left 04:56 sena_kun joined
xinming_ SmokeMachine: Still trying, busy with other things in life, If I have time, I'll do it, and whenever I have time, I'll trouble you. 04:59
05:08 guifa2 joined 05:24 johnjohn101 left 05:35 Voldenet left
xinming_ What is the difference between categorize and classify in List class? I feel they are the same. 05:38
even the example, there is one example behave the same. 05:39
05:41 Voldenet joined, Voldenet left, Voldenet joined 06:00 guifa2 left
Geth_ doc: 24dd9ebf99 | (Stoned Elipot)++ | assets/sass/style.scss
Be more specific in selecting href to "external" sites

  ...and thus avoid selecting the "internal" link to language/operators#infix_//
as seen in doc/Language/typesystem.pod6
doc: 20b84e83cd | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | assets/sass/style.scss
Merge pull request #3135 from stoned/fix-external-url-selector

Be more specific in selecting href to "external" sites
06:41 sena_kun left 06:49 RobRaku joined 06:55 sena_kun joined 06:56 wamba joined 07:21 Xliff left 07:25 RobRaku left 07:48 wamba left 07:55 rindolf joined 08:00 squashable6 left 08:01 kensanata joined 08:03 squashable6 joined 08:08 Voldenet left 08:10 kensanata left 08:14 Voldenet joined, Voldenet left, Voldenet joined 08:17 wamba joined 08:18 abraxxa joined, Voldenet left, cpan-raku left, kensanata joined 08:19 abraxxa left, squashable6 left, abraxxa joined, cpan-raku joined, cpan-raku left, cpan-raku joined 08:20 squashable6 joined 08:23 Voldenet joined, Voldenet left, Voldenet joined 08:24 abraxxa left, abraxxa joined 08:30 RobRaku joined 08:37 xinming joined 08:40 xinming_ left 08:42 sena_kun left 08:57 sena_kun joined
sarna hey, can I somehow get more info from a test that failed? like, expected x, got y? 09:02
I'm using `mi6 test` and when something fails I just get "test x failed" :/ 09:06
09:11 ToddAndMargo joined
ToddAndMargo Hi All. I am trying ot code a Native call to a C functions that uses a "LPTSTR". How do I declare that? Something like `constant DWORD := int32; ` but for LPTSTR? 09:12
lizmat sarna: raku -Ilib t/foo.t 09:16
ToddAndMargo if it helps, I found this description: "LPTSTR is a [long] pointer to a (non-const) TCHAR string" 09:17
and "LPTSTR: null-terminated string of TCHAR (Long Pointer)" 09:19
09:21 rindolf left
sarna lizmat: that doesn't give me any more info than "test x failed on line y" 09:26
lizmat well, then maybe the test is a bit wonky? Like being an "ok" or a "flunk" ? 09:27
what does the test say on that line ?
sarna it's an "ok" test
which one would give me more info?
lizmat is-deeply ? 09:28
is ?
09:29 rindolf joined
lizmat m: use Test; is "foo", "bar" 09:29
camelia not ok 1 -
# Failed test at <tmp> line 1
# expected: 'bar'
# got: 'foo'
lizmat m: use Test; is-deeply "foo", 42
camelia not ok 1 -
# Failed test at <tmp> line 1
# expected: 42
# got: "foo"
sarna that works, thanks lizmat :)
lizmat afk for a few hours& 09:32
PSA: there will ne *no* Rakudo Weekly this week, the next one will be on 6 January 2020
09:44 AlexDaniel left, AlexDaniel joined, AlexDaniel left, AlexDaniel joined
sarna m: enum Foo<Bar Baz>; Foo(Nil or 0) 09:54
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
------> 3enum Foo<Bar Baz>; Foo(Nil7⏏5 or 0)
expecting any of:
sarna m: enum Foo<Bar Baz>; Foo((Nil or 0))
camelia ( no output )
sarna why do I need extra parens here? :D
10:02 chloekek joined 10:07 titsuki joined, wamba left 10:15 ToddAndMargo left 10:43 sena_kun left, mahmudov joined 10:52 RobRaku left 10:55 sena_kun joined 11:02 squashable6 left, pilne left 11:04 squashable6 joined 11:07 Tirifto joined
moritz m: enum Foo<Bar Baz>; say Foo( 0 ) 11:16
camelia Bar
moritz m: enum Foo<Bar Baz>; say Foo( Nil or 0 )
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
------> 3enum Foo<Bar Baz>; say Foo( Nil7⏏5 or 0 )
expecting any of:…
moritz m: enum Foo<Bar Baz>; say Foo( 0 or 0 )
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
------> 3enum Foo<Bar Baz>; say Foo( 07⏏5 or 0 )
expecting any of:…
moritz looks like a bug to me
it seems to be stopping at the wrong precedence level here 11:17
11:27 kensanata left 11:33 Voldenet left
sarna how to turn an array of chars into an array of numbers? I tried this, but it didn't work 11:37
11:38 Voldenet joined, Voldenet left, Voldenet joined
sarna m: for "1234".comb { Int($_) } 11:38
camelia ( no output )
sarna oh lol it works
m: my @foo = do for "1234".comb { Int($_) }; dd @foo[0] 11:39
camelia Int @foo = 1
moritz m: say "1234".comb.map(+*) 11:40
camelia (1 2 3 4)
moritz m: say "1234".comb>>.Int
camelia (1 2 3 4)
sarna neat! 11:41
11:59 chloekek left, xinming left 12:01 cramel joined, xinming joined 12:25 kensanata joined 12:26 chloekek joined
sarna what does that mean: `expected Positional[Int] but got Array ($[1, 2, 3])`? isn't Array positional? 12:38
m: sub foo(Int:D @arg) { } ; foo([1;2;3]) 12:39
camelia Type check failed in binding to parameter '@arg'; expected Positional[Int] but got Array ($[1, 2, 3])
in sub foo at <tmp> line 1
in block <unit> at <tmp> line 1
12:41 sena_kun left
tbrowder hi, all 12:42
tellable6 2019-12-26T19:03:19Z #raku <jmerelo> tbrowder what about simply raku-advent-calendar.org for a domain?
2019-12-26T19:09:49Z #raku <lizmat> tbrowder perhaps raku-advent-calendar.blog ?
12:43 mahmudov left
tbrowder the choices i gave are what was offered free, i assume anything else would cost more but i don't know. i'll check when i get a chance... 12:44
ref modules: i want to add to a module a test that requires a debian package. is there any clever way to skip the test if it's not available? 12:48
the meta6 would actually list a module that requires the uuid-dev library 12:49
12:50 Doc_Holliwood joined
tbrowder that module is LibUUID 12:50
Doc_Holliwood Cow-orker: Hey, you, what are you up to? Me: I'm looking for whatever. Cow-orker: Ok, ok. No need to be snarky.
m: .say for (2..50).grep: is-prime(*) 12:52
camelia No such method 'is-prime' for invocant of type 'Whatever'
in block <unit> at <tmp> line 1
Doc_Holliwood Why doesn't this work?
Or rather, why doesn't it dwim?
12:54 cramel left
Doc_Holliwood m: .say for (2..50).grep: is-prime(* + 0) 12:54
camelia No such method 'is-prime' for invocant of type 'WhateverCode'
in block <unit> at <tmp> line 1
Doc_Holliwood m: .say for (2..50).grep: is-prime((* + 0)())
camelia Too few positionals passed; expected 1 argument but got 0
in block <unit> at <tmp> line 1
12:55 RobRaku joined 12:57 sena_kun joined
SmokeMachine m: sub foo(Int:D @arg) { } ; foo([1,2,3]) 13:06
camelia Type check failed in binding to parameter '@arg'; expected Positional[Int] but got Array ($[1, 2, 3])
in sub foo at <tmp> line 1
in block <unit> at <tmp> line 1
13:06 mahmudov joined
SmokeMachine m: sub foo(Int:D @arg) { } ; foo(Array[Int].new: [1,2,3]) 13:06
camelia ( no output )
SmokeMachine m: sub foo(@arg where .all ~~ Int:D) { } ; foo([1,2,3]) 13:07
camelia ( no output )
lizmat m: .say for (2..50).grep: *.is-prime # Doc_Holliwood
camelia 2
SmokeMachine sarna: ^^
13:08 bbkr joined
sarna thanks SmokeMachine :) 13:08
SmokeMachine sarna: `Int @array` is different from a array with every element being an int... 13:10
Doc_Holliwood lizmat: that's what i get for simplyfying :P Here's what I originally wanted to do: 13:11
SmokeMachine m: say [1, 2, 3] ~~ Positional[Int]; say Array[Int].new([1, 2, 3]) ~~ Positional[Int]
camelia False
Doc_Holliwood m: use Prime::Factor; .say for (2..50).grep: is-prime( prime-factors(*).elems ); 13:13
camelia ===SORRY!===
Could not find Prime::Factor at line 1 in:
SmokeMachine m: subset ArrayOfInts of Positional where .all ~~ Int:D; say [1, 2, 3] ~~ ArrayOfInts
camelia True
sarna SmokeMachine: wait, what 13:14
D: heck
SmokeMachine sarna: what? 13:15
sarna SmokeMachine: what is `Int @array` then?
isn't it "a thing that does positional and has Ints inside"?
SmokeMachine sarna: `Int @array` is equivalent of `Array[Int]` 13:16
Doc_Holliwood it is. but a plain [1,2] isn't an array of Ints
sarna what's [1,2] then?
Doc_Holliwood it could contain anything. the subset above is a runtime check for any array
SmokeMachine sarna: no, it's a defined type... so, to set a value for that, that value should have that type..
m: [1,2].^name.say 13:17
camelia Array
SmokeMachine m: Array[Int].new([1,2]).^name.say
camelia Array[Int]
SmokeMachine sarna: ^^
sarna oh, that's because I can append values of any type to that literal, right? 13:18
Doc_Holliwood right.
sarna thanks for explaining, I got it now
SmokeMachine m: my Int @a; @a.push: 1; @a.push: "a" 13:19
camelia Type check failed in assignment to @a; expected Int but got Str ("a")
in block <unit> at <tmp> line 1
13:19 mahmudov left
SmokeMachine m: my @a where .all ~~ Int; @a.push: 1; @a.push: "a" 13:19
camelia Type check failed in assignment to @a; expected <anon> but got Str ("a")
in block <unit> at <tmp> line 1
13:19 mahmudov joined
sarna that's funny: 13:21
m: my @a where .any ~~ Int; @a.push: 1; @a.push: "a"
camelia Type check failed in assignment to @a; expected <anon> but got Str ("a")
in block <unit> at <tmp> line 1
13:22 xinming left
SmokeMachine m: my @a where { .all ~~ Int || fail "Please just give me Ints" }; @a.push: 1; @a.push: "a" 13:24
camelia Please just give me Ints
in block <unit> at <tmp> line 1
13:24 RobRaku left 13:27 xinming joined 13:32 bbkr left 13:37 wamba joined 13:50 xinming left 13:51 xinming joined 14:37 leah2 left 14:40 sena_kun left, leah2 joined 14:43 kensanata left 14:45 kensanata joined 14:57 sena_kun joined 15:05 Xliff joined
Xliff . 15:05
sena_kun: You around? 15:06
15:16 elmo40 joined
elmo40 hrmm... interesting 15:17
15:17 elmo40 left 15:21 mahmudov left 15:34 chloekek left 15:36 RobRaku joined 15:47 rba[m] left 15:50 lucasb joined 15:56 kensanata left 16:00 mahmudov joined
Tirifto Hello! Is there a way to create an empty (path-less) IO::Path object, or is it a much better idea to avoid the kind of situation where I would need to do that in the first place? 16:06
AlexDaniel Tirifto: what about a type object? 16:08
m: say IO::Path
camelia (Path)
AlexDaniel but yes, I'm intersted to know why you need this
intersted* uhh sloppy fingers :)
heh I did it again :D
Tirifto AlexDaniel: I'm writing a script to assemble webpages for me. It has a class for data of the pages it's going to export (one object per page), with one datum being the path the page's content should be written to. At one point in the script, it's known that a new page will be exported, but the data of the page is yet to be provided (piece by piece). My first idea was to create the page object with all of its attributes empty, and fill them 16:20
in as the data are read. In keeping with this, I could just give it any arbitrary path, since the datum's going to get overwritten anyways, but some more obviously default/temporary value would feel more proper. :P
AlexDaniel Tirifto: yeah sounds like you just need a type object 16:21
m: my IO::Path $x; dd $x
camelia Path $x = IO::Path
AlexDaniel m: my IO::Path $x; dd $x; $x = ‘foo’.IO; dd $x
camelia Path $x = IO::Path
Path $x = IO::Path.new("foo", :SPEC(IO::Spec::Unix), :CWD("/home/camelia"))
Tirifto AlexDaniel: Aha, neat! So type objects fit in their types? 16:22
AlexDaniel Tirifto: yeah, constraints are :U by default, you can use :D if you wanted to forbid that 16:23
m: my IO::Path:D $x = IO::Path 16:24
camelia Type check failed in assignment to $x; expected IO::Path:D but got IO::Path (IO::Path) (perhaps Nil was assigned to a :D which had no default?)
in block <unit> at <tmp> line 1
AlexDaniel m: my IO::Path:D $x = ‘foo’.IO
camelia ( no output )
Tirifto :D
Actually, :U 16:25
Thank you, AlexDaniel, that solved the problem! I can move on to the next one. :) 16:30
16:35 rindolf left 16:41 sena_kun left 16:46 rindolf joined 16:52 RobRaku left 16:56 sena_kun joined
Geth_ doc: d22976f450 | (Stoned Elipot)++ | doc/Language/typesystem.pod6
Fix link to sub-signatures
lizmat www.reddit.com/r/rakulang/comments..._a_string/ 17:43
17:44 mahmudov left 17:45 mahmudov joined 17:55 xinming left 17:56 xinming joined 18:19 RobRaku joined 18:26 patrickb joined, AlexDani` joined 18:29 AlexDaniel left 18:42 sena_kun left 18:56 sena_kun joined 18:59 pony is now known as no-n 19:02 wildtrees joined
moritz there was an answer already, I've given a somewhat longer version 19:12
19:25 sauvin left 19:44 stoned75 left 20:05 rindolf left 20:18 abraxxa left 20:20 abraxxa joined 20:39 mahmudov left 20:40 mahmudov joined 20:41 sena_kun left 20:55 Xliff left 20:56 sena_kun joined 21:05 RobRaku left 21:22 squashable6 left 21:24 squashable6 joined 21:25 Dasein joined, wamba left
Dasein How do you properly install Zef? 21:26
I've had issues because of being a noob
21:26 Dasein left
lizmat 29 seconds is not a lot of time to give you an answer 21:29
Tirifto If my class ‘has @.an-array’, how can I leave it empty upon blessing? 21:44
(I've added a custom ‘new’ method, but blessing with the pair ‘an-array => @()’ raised complaints about wrong number of arguments, and declaring a variable as ‘my $an-array = ()’ and blessing with that as ‘:$an-array’ gives me the array [()], which contains one element, when I'd really like zero.) 21:48
Oh, it looks like I don't need to mind all of the attributes in my blessing, and those omitted will be empty? 21:50
21:54 Xliff joined
Xliff . 21:54
jnthn Tirifto: Yes, an @-sigil thing will default to an empty array, so nothing is needed to leave it empty. But the fix would be to use `my @an-array;` and bless with `:@an-array`, or even shorter without the temporary, `:an-array[]`. 21:57
Easiest to do nothing at all, of course :)
Tirifto Ah, thank you, jnthn! 22:00
Makes sense. :)
Also, does substitution somehow mess with the ‘$_’ variable? I find that ‘$item ~~ s[$ph_title] = .title’ complains about the invocant being of type ‘Str’, even when outside of the line it's not, while ‘my $new = $_; $item ~~ s[$ph_title] = $new.title’ will work just fine. 22:07
(Sorry if I'm overlooking basic information in the documentation; there's (fortunately) a lot to read there!) 22:09
22:11 kensanata joined 22:12 lucasb left 22:13 mahmudov left
tobs Tirifto: it seems that the matchee $item becomes $_ for the duration of s///. (I'm surprised this syntax even does what you meant...) 22:25
m: my $a = "far"; my $b = "bar"; given $a { say $b ~~ s['a'] = .uc; say $_ }; say $a; say $b
camelia 「a」
tobs I for one would have excepted the substitution's Match object to be $_ during the substitution, but that apparently only works with the &subst method when it receives a callable, but that's my own confusion, not yours :) 22:29
Xliff m: my $a = "far"; my $b = "bar"; given $a { say $b ~~ s['a'] = $a.uc; say $_ }; say $a; say $b 22:30
camelia 「a」
22:31 stoned75 joined
Tirifto I like how Raku has kept the sense of wonder and mystery from Perl. :) 22:31
Xliff m: my $a = "far"; my $b = "bar"; given $a { s['a'] = .uc given $b; say $_ }; say $a; say $b 22:33
camelia far
22:40 RobRaku joined 22:41 sena_kun left 22:57 sena_kun joined 23:05 Suya joined 23:09 RobRaku left 23:11 wamba joined 23:24 wamba left, patrickb left, kensanata left