|
This channel is intended for people just starting with the Raku Programming Language (raku.org). Logs are available at irclogs.raku.org/raku-beginner/live.html Set by lizmat on 8 June 2022. |
|||
|
00:50
jaguart joined
01:47
MasterDuke joined
02:16
tea3po joined
02:17
explorer left
02:20
teatwo left
02:33
MasterDuke left
03:11
deoac joined
|
|||
| deoac | In this program, why does is the error reported as being on line 1? | 03:12 | |
| #! /usr/bin/env raku | |||
| use v6.d; | |||
| sub MAIN (Str $? where .lc eq 'test', Bool :$test) { | |||
| say 'Hello'; | |||
| } | |||
| Use of uninitialized value of type Str in string context. | |||
| Methods .^name, .raku, .gist, or .say can be used to stringify it to something meaningful. | |||
| in block <unit> at mail.raku line 1 | |||
| Use of uninitialized value of type Str in string context. | |||
| Methods .^name, .raku, .gist, or .say can be used to stringify it to something meaningful. | |||
| in block <unit> at mail.raku line 1 | |||
| Usage: | |||
| mail.raku [--test] [<Str where { ... }>] | |||
| I understand the error, but not the 'line 1' part | 03:13 | ||
|
03:23
Heptite left
04:17
tea3po left,
tea3po joined
04:28
tea3po left
04:29
tea3po joined
05:22
jaguart left
06:40
jaguart joined
06:44
jaguart left
|
|||
| Nemokosch | What line number do you expect? | 07:23 | |
| rcmlz | Hello, I have a questing related to typing I can not solve. | 09:22 | |
| m: my @not_typed = ( ("A", "B"), ("X",), () ); my @list_of_list of List = ( ("A", "B"), ("X",), () ); | |||
| Raku eval | |||
| rcmlz | works fine, but I can not workout how I can fix not the type of the inner list elements | 09:23 | |
| m: my constant Universum = "A".."Z"; my @list_of_list_of_elements_of_universum of List of Universum = ( ("A", "B"), ("X",), () ); | 09:24 | ||
| Raku eval | Exit code: 1 ===SORRY!=== Error while compiling /home/glot/main.raku List cannot be parameterized at /home/glot/main.raku:2 ------> ements_of_universum of List of Universum⏏ = ( | ||
| rcmlz | Is there a way in Raku to also type data structures like Array of Arrays or List of Lists? Thank you. | 09:25 | |
| Nemokosch | well, as it says, List cannot be parameterized. Array can. | 09:27 | |
| I'm not sure how much this is an official stance but List is much like just a skeleton type, even though it's not an abstract class | 09:30 | ||
| the same metadata that gives Array the mutability for all items, gives the typing info as well | 09:31 | ||
| having said that, I'm not sure it would work with Array because type deduction doesn't really happen on literals | 09:32 | ||
| and Universum is really just a Range value, not a type. However, these pieces can be put together using custom runtime checks | 09:36 | ||
| rcmlz | Thanky ou @Nemokosch for the hint. I am nearly there | 09:41 | |
| m: my subset Universum of Int where {$_ > 1}; # two steps my @list_of_elements_of_universum1 of Universum = [2, 2]; my @list_of_elements_of_universum2 of Universum = [3, 3]; my @list_of_lists_of_elements_of_universum1 of Array of Universum; push @list_of_lists_of_elements_of_universum1, @list_of_elements_of_universum1, @list_of_elements_of_universum2; # single steps my | |||
| @list_of_lists_of_elements_of_universum2 of Array of Universum = [ @list_of_elements_of_universum1, @list_of_elements_of_universum2 ]; # single steps - manual entry my @list_of_lists_of_elements_of_universum3 of Array of Universum = [ [2, 2], [3, 3] ]; | |||
| Raku eval | Exit code: 1 Type check failed in assignment to @list_of_lists_of_elements_of_universum3; expected Array[Universum] but got Array ([2, 2]) in block <unit> at main.raku line 17 | ||
| Nemokosch | m: my constant Universum = "A".."Z"; subset InUniversum of Str where Universum; subset ListOfListOfUniversum of List where { .all ~~ List && .all.all ~~ InUniversum }; my @list_of_list_of_elements_of_universum is ListOfListOfUniversum = ( ("A", "B"), ("X",), () ); | 09:42 | |
| Raku eval | Exit code: 1 You cannot create an instance of this type (ListOfListOfUniversum) in block <unit> at main.raku line 4 | ||
| Nemokosch | bruh | 09:43 | |
| I was just trying to make a constraint for it 😩 | |||
| rcmlz | The last step is not working - I like to use this sort of direct specification of an array of arrays in tests, so would be handy to be able to do it directly | ||
| Nemokosch | ^ | ||
| that is really just an Array with two arbitrary values for all the compiler cares | 09:44 | ||
| rcmlz | ok, then I will do that in two steps. I had the hope that the compiler works out that e.g. [2, 2] is an array of elements of the universum. # single steps - manual entry - failing my @list_of_lists_of_elements_of_universum3 of Array of Universum = [ [2, 2], [3, 3] ]; | 09:46 | |
| Thank you for the help. | 09:47 | ||
| Nemokosch | my constant Universum = "A".."Z"; subset ListOfListOfUniversum of List where { .all ~~ List && .all.all (elem) Universum }; this constraint seems to work, it's kinda strict even | 09:52 | |
| rcmlz | Thank you. I guess I will go for the simpler 2-step-Array-approach. | 10:08 | |
| Nemokosch | the assignments perform the type checks, from what I know | 10:15 | |
| however, sadly they go top-down | |||
| without recursing | |||
| so "it says Array[Int] but all I see is a literal [1, 2, 3] - nah, that won't cut it" | 10:16 | ||
|
10:29
habere-et-disper joined
|
|||
| habere-et-disper | How do I seach for a relevant method on the REPL? If I try to grep over what's available I get a mess: | 10:43 | |
| m: [].^methods.grep( 'lazy' ) | |||
| camelia | Method object coerced to string (please use .gist or .raku to do that) in block <unit> at <tmp> line 1 Method object coerced to string (please use .gist or .raku to do that) in block <unit> at <tmp> line 1 Method object coerced to string (… |
||
| habere-et-disper | Okay this seems better: | 10:45 | |
| m: [].^methods.gist.words.grep( / lazy / ) | |||
| camelia | ( no output ) | ||
| habere-et-disper | m: [].^methods.gist.words.grep( / lazy / ).say | ||
| camelia | (is-lazy lazy-if lazy) | ||
| lizmat | ^methods.map(*.name).... | 10:51 | |
| ^methods>>.name | 10:52 | ||
| habere-et-disper | Thanks lizmat ! I just discovered that you can chain the sequence operator ! So cool: | 10:58 | |
| m: ( 0 ... 10 ... 1 ).say | |||
| camelia | (0 1 2 3 4 5 6 7 8 9 10 9 8 7 6 5 4 3 2 1) | ||
|
11:10
Heptite joined
11:41
Heptite left
11:48
Heptite joined
11:58
habere-et-disper left
12:58
habere-et-disper joined
13:33
lizmat left
13:46
habere-et-disper left
14:04
lizmat joined
14:05
Heptite left
14:14
tea3po left,
tea3po joined
14:15
tea3po left,
tea3po joined
14:16
tea3po left,
tea3po joined
14:17
tea3po left,
tea3po joined
14:23
tea3po left
14:24
tea3po joined
14:38
deoac left
15:19
Heptite joined
19:40
deoac joined
20:47
deoac left
|
|||
| gfldex | m: say "▁" ... "█"; | 21:48 | |
| camelia | (▁ ▂ ▃ ▄ ▅ ▆ ▇ █) | ||
| gfldex | m: say '🂡' ... '🃞'; | 21:49 | |
| camelia | (🂡 🂢 🂣 🂤 🂥 🂦 🂧 🂨 🂩 🂪 🂫 🂬 🂭 🂮 🂱 🂲 🂳 🂴 🂵 🂶 🂷 🂸 🂹 🂺 🂻 🂼 🂽 🂾 🂿 🃁 🃂 🃃 🃄 🃅 🃆 🃇 🃈 🃉 🃊 🃋 🃌 🃍 🃎 🃏 🃑 🃒 … | ||
| gfldex | m: say ('🂡' ... '🃞').pick; # :-> | 21:50 | |
| camelia | 🃌 | ||
| gfldex | Chaining infix:<...> is specced in S03-sequence/misc.t and thus an ENODOC. In fact, that operator deserves it's own website. | 21:54 | |
| Nemokosch | or alternatively, it deserves to be simplified to a level that mere mortals can comprehend | 22:00 | |
| m: say 3 ... ^6 | 22:02 | ||
| Raku eval | (3 2 1 0 1 2 3 4 5) | ||
|
22:42
Heptite left
|
|||