|
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. |
|||
|
08:07
dakkar joined
10:14
habere-et-disper joined
10:16
frost joined
|
|||
| habere-et-disper | How do you subset a Pair ? | 10:26 | |
| I tried: | |||
| m: subset File-Rank of Pair where (Str => Int); my File-Rank $foo = 'd' => 4; | |||
| camelia | Type check failed in assignment to $foo; expected File-Rank but got Pair (:d(4)) in block <unit> at <tmp> line 1 |
||
| Nemokosch | two things | 10:28 | |
| to answer the question: you can probably write a check utilizing .key and .value | 10:29 | ||
| where { .key ~~ Str && .value ~~ Int } | |||
| second: keep in mind that a Pair is not meant to be used as a tuple. The two elements have a hierarchic relation, moreover the key cannot have a container while the value can | 10:30 | ||
| the key is really meant to identify the value. Just to make sure you know what you are going for. | 10:31 | ||
|
10:32
frost left
|
|||
| habere-et-disper | Thanks Nemokosch. I had wanted something more succinct like the documentation gives for other types, eg: `subset Foo of List where (Int,Str);` but I guess not. | 10:33 | |
| Thank you for the tuple distinction. Awareness created. :D | 10:36 | ||
| Nemokosch | The lack of proof is not the proof of lack so there could be something like that still 😛 | 10:39 | |
| that's mostly a matter of smartmatching, though, so one would need to check Pair.ACCEPTS | 10:40 | ||
| According to Rakudo sources, a $pair1 ~~ $pair2 if and only if $pair1.key ~~ $pair2.key && $pair1.value ~~ $pair2.value... which tells me that it could work | 10:45 | ||
| oh, gotcha... | 10:47 | ||
| dd Str => Int | |||
| m: dd Str => Int | |||
| Raku eval | :Str(Int) | ||
| Nemokosch | this still doesn't give it away but hold on | ||
| m: dd (Str => Int).key | 10:48 | ||
| Raku eval | "Str" | ||
| Nemokosch | there | ||
| it is not the type but simply the string Str, that's why another string doesn't smartmatch to it | |||
| lemme join quickly, the IRC bot is more up-to-date | 10:50 | ||
|
10:50
Nemokosch joined
|
|||
| Nemokosch | m: subset File-Rank of Pair where ((Str) => Int); my File-Rank $foo = 'd' => 4; say $foo; | 10:51 | |
| camelia | d => 4 | ||
| Nemokosch | dang! | ||
| m: subset File-Rank of Pair where ((Str) => Int); my File-Rank $foo = 21 => 4; say $foo; | |||
| camelia | Type check failed in assignment to $foo; expected File-Rank but got Pair (21 => 4) in block <unit> at <tmp> line 1 |
||
| Nemokosch | m: subset File-Rank of Pair where ((Str) => Int); my File-Rank $foo = 4 => 'd'; say $foo; | ||
| camelia | Type check failed in assignment to $foo; expected File-Rank but got Pair (4 => "d") in block <unit> at <tmp> line 1 |
||
| Nemokosch | habere-et-disper: TLDR, ((Str) => Int) works; the key needs to be disambiguated from unquoted strings | 10:52 | |
|
10:52
Nemokosch left
|
|||
| lizmat | m: subset File-Rank of Pair where Pair.new(Str,Int); my File-Rank $foo = 4 => 'd'; say $foo; | 11:05 | |
| camelia | Type check failed in assignment to $foo; expected File-Rank but got Pair (4 => "d") in block <unit> at <tmp> line 1 |
||
| lizmat | m: subset File-Rank of Pair where (Pair.new(Str,Int)); my File-Rank $foo = 4 => 'd'; say $foo; | ||
| camelia | Type check failed in assignment to $foo; expected File-Rank but got Pair (4 => "d") in block <unit> at <tmp> line 1 |
||
| lizmat | weird | ||
| habere-et-disper | LOL. Thanks for all this ! I see the chess board alternatives as : | 11:15 | |
| `subset File-Rank of Pair where ( ('a'..'h') => 1..8 );` | |||
| or better as a tuple and with far less parentheses: | |||
| `subset File-Rank of List where 'a'..'h', 1..8;` | |||
|
13:04
habere-et-disper left
13:29
jgaz joined
|
|||
| Anton Antonov | I have a variable that has a grammar name, say, $grName . I want make a new grammar that inherits from $grName and uses its TOP rule. How do I do that? | 13:40 | |
| I tried grammar New is ::($grammarName) {...} but I am getting the message: "Cannot stringify object of type QAST::Var". | 13:41 | ||
| lizmat | is $grammarName set at compile time? | 13:42 | |
| Anton Antonov | Hm... yes. I have a statement like my $grName = "R322"; . Then I use EVALFILE($*CWD ~ "/resources/$grName.raku");. | 13:44 | |
| Maybe I should use an actual grammar object in the inheritance specification? But, then again, how do I do that? Here is the grammar object: my $gr = EVAL $grCode. | 13:46 | ||
| lizmat | how would you do it if they were ordinary classes ? | 13:47 | |
| Anton Antonov | @lizmat It is a good question -- I do not know. | 13:52 | |
| I can use another call to EVAL to construct the new class or grammar. (Simple.) | 13:59 | ||
| moritz | isn't there like a add_parent_class meta method? | 14:00 | |
| Anton Antonov | @moritz I looked into the meta programming documentation pages. Without finding something relevant, but I did not look that hard... | 14:01 | |
| moritz | there's an `add_parent` method in src/Perl6/Metamodel/MultipleInheritance.nqp | 14:03 | |
| the meta model is sadly very under-documented | |||
| Anton Antonov | Cool! | 14:04 | |
|
14:11
tea3po left
14:12
tea3po joined,
tea3po left
14:13
ab5tract joined,
tea3po joined
|
|||
| Nemokosch | On one hand it is sad, on the other hand, if it's not Raku and its stability is not guaranteed, maybe documenting too much of it would also be pointless | 14:16 | |
|
14:36
Heptite joined
14:52
deoac joined
|
|||
| moritz | you can make it Raku by documenting it and writing tests for it | 15:08 | |
| gfldex | moritz: it's a bit more involved, see: gfldex.wordpress.com/2023/02/15/yes-but-dont/ | 16:16 | |
| Nemokosch | And the title is perfectly fitting | 16:34 | |
| Yes, you can, and please don't. There is already more than enough Rakudo in Raku | 16:35 | ||
|
16:37
jgaz left
16:39
dakkar left
|
|||
| moritz | gfldex: I don't see how the code from your post and documenting metamodel methods relate | 17:00 | |
| ah, you actually meant the part where you you have to compose the class again | 17:01 | ||
|
17:13
ab5tract left
17:58
jgaz joined
18:15
jgaz left
18:30
deoac left
19:27
ab5tract joined
19:54
ab5tract left
21:20
orylesor joined
|
|||
| orylesor | Hi. Call me Teresa. (she/her) | 21:29 | |
| I'm an absolute beginner. Evaluated expressions in different programming languages, I understand basic programming concepts, I'm comfortable setting up programming languages and related tools, comfortable with the command line. | |||
| I'd just like to finally learn programming "proper" just for fun. I always had false starts. I absolutely love x86-64 assembly, I spent a few weeks with it. I could definitely keep going with it, I'm just concerned that I wouldn't learn programming "proper", whatever that means, since it's not even a programming language. I'm also very tempted to | |||
| get back to Raku (tried briefly before), I like the flexibility, I like "0.1 + 0.2 = 0.3", it's super cute. | |||
| I just can't make up my mind on what to do: Analysis paralysis. Sorry if this is totally off-topic, and that it's admittedly irrational. I just thought if I said my thoughts out loud, I might get unstuck. | |||
| Thanks. | |||
| falsifian | Good luck finding your path, orylesor! | 21:31 | |
| orylesor | Thanks. <3 | ||
|
22:38
orylesor left
|
|||
| Anton Antonov | @orylessor Consideb trying out, “just using” Raku packages you like. Scan raku.land… | 23:40 | |
| I.e. raku.land . | |||