|
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:05
NemokoschKiwi joined
00:07
NemokoschKiwi left
00:36
Manifest0 left
04:57
tbrowder__ left,
tbrowder__ joined
07:39
Manifest0 joined
07:58
dakkar joined
08:22
teatwo joined
08:25
teatime left
16:25
swaggboi joined
16:36
dakkar left
|
|||
| librasteve | on sigils, the story is $ is a container for any type of thing - Int, Str, List, Array, Hash, Map, Bag, your custom class and so on - @ is a special sigil for Array that brings in (the confusingly named) list assignment and works with Array literals - % is a special sigil for Hash that brings in list assignment and works with Hash literals | 17:19 | |
| this typegraph docs.raku.org/type/Iterable#typegraphrelations is a handy way to see how Array and Hash are assembled from classes and roles so they are the most functionally rich - I guess the raku design concept was to take the perl notions of @array and %hash and to reconstruct from more pure classes and roles | 17:23 | ||
| crag-of-the-week crag '"#ffffff".subst("#").comb(/(..)/).map({:16($_)}).say' | 18:05 | ||
| #(255 255 255) | |||
| ^^ this is an atypical "crag" in that it does not use Physics::Measure objects .(eg. dimensions and units of measure and so on) ... but I felt that any command line calculator based on raku should be able to help me do colour math for CSS (having said that I think that there is a gap for a new module that does color math in a more concise way) | 18:16 | ||
| lizmat | m: '"#ffffff".substr(1).comb(2).map({:16($_)}).say | 18:19 | |
| camelia | ===SORRY!=== Error while compiling <tmp> Unable to parse expression in single quotes; couldn't find final "'" (corresponding starter was at line 1) at <tmp>:1 ------> ff".substr(1).comb(2).map({:16($_)}).say⏏<EOL> expecting … |
||
| lizmat | m: "#ffffff".substr(1).comb(2).map({:16($_)}).say | ||
| camelia | (255 255 255) | ||
| nemokosch | @symbol can default to Lists, like in the case of constants | 18:21 | |
| same with %symbols and Maps | |||
|
20:00
cleo left
20:01
cleo joined
|
|||
| librasteve | m: my @a = (1,2); say @a.WHAT | 20:17 | |
| Raku eval | (Array) | ||
| librasteve | m: my %h = (a=>1,b=>2).Map; say %h.WHAT | 20:18 | |
| Raku eval | (Hash) | ||
| librasteve | sure it may be possible to force @ to List and % to Map - but that would be pretty unusual | 20:19 | |
| nemokosch | m: constant @a = (1,2); say @a.WHAT | ||
| Raku eval | (List) | ||
| nemokosch | depends on what you count unusual | 20:20 | |
| librasteve | well a constant is not a variable - so i count that as unusual | ||
| nemokosch | by a similar reasoning, @symbols are by definition unusual | 20:21 | |
| librasteve | bollocks | ||
| nemokosch | because they don't have containers | ||
| librasteve | double bollocks | ||
| ttfn | |||
| antononcube | @librasteve So, four all together? | 20:22 | |
|
20:22
tea3po joined
|
|||
| nemokosch | I would say the ratio of "unusualness" is similar for constants among symbols and containerless, "fake" variables among all variables | 20:22 | |
|
20:25
teatwo left
20:27
tea3po left
20:28
tea3po joined
20:29
tea3po left,
tea3po joined
20:54
tea3po left
20:55
tea3po joined
|
|||
| gfldex | m: constant @lolwut = [1,2]; @lolwut[3] = 42; say „@lolwut[]‼“; | 21:09 | |
| camelia | Use of uninitialized value of type Any in string context. Methods .^name, .raku, .gist, or .say can be used to stringify it to something meaningful. 1 2 42‼ in block <unit> at <tmp> line 1 |
||
| gfldex | @librasteve Please note that the declarator ‘constant’ does not create constants. | 21:10 | |
| nemokosch | it's actually crazy how true that is, huh | 21:12 | |
| m: constant @lolwut = [1,2]; @lolwut = 1; @lolwut.say | 21:13 | ||
| Raku eval | [1] | ||
| nemokosch | even assignment can work on it | ||
| m: constant @a = 1,2; say @a.WHAT | 21:14 | ||
| Raku eval | (List) | ||
| nemokosch | hmm | ||
| so does binding have low precedence or is it also split into two precedence groups? 🤔 | 21:15 | ||
| because pretty sure constants are set up with binding | 21:16 | ||
| lizmat | m: my constant %h = a => 42; dd %h.^name | ||
| camelia | "Pair" | ||
| lizmat | m: my constant %h = a => 42, b => 666; dd %h.^name | ||
| camelia | "Map" | ||
| lizmat | m: my constant %h = { a => 42, b => 666 }; dd %h.^name | ||
| camelia | "Hash" | ||
| nemokosch | well. Can a constant be unassigned? Does it even make sense to talk about a "default value" here? | 21:17 | |
| m: constant @x; | |||
| Raku eval | Exit code: 1 ===SORRY!=== Error while compiling /home/glot/main.raku Missing initializer on constant declaration at /home/glot/main.raku:1 ------> constant @x⏏; | ||
| nemokosch | perhaps not | ||
| lizmat | the problem is that with "my constant @a = [1,2,3]" | ||
| you're binding an array at compile time | 21:18 | ||
| with: my constant @a = 1,2,3 | |||
| you would be initializing a List at compile time | |||
| m: my constant @a = 1,2,3; dd @a.^name | |||
| camelia | "List" | ||
| lizmat | both have their uses | 21:19 | |
| gfldex | `constant` exists so we can avoid creating Scalar containers with $-sigiled symbols (without using term:<>). | ||
| nemokosch | isn't that what bindings achieve by default? | 21:20 | |
| lizmat | afk again& | ||
| nemokosch | anyway, this was surprising: | ||
| m: my $true-list := 1, 2, 3; dd $true-list | |||
| Raku eval | (1, 2, 3) | ||
| nemokosch | it actually has this low precedence level | 21:21 | |
|
23:40
Manifest0 left
|
|||