|
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:02
frost joined
01:30
m_athias left
01:31
m_athias joined
01:36
frost left
03:22
reol left,
reol joined,
reol left
03:24
frost joined
03:33
frost left
|
|||
| elcaro | `{S:g/./$/$//}` is a little shorter | 03:56 | |
|
04:01
Heptite left
|
|||
| South | see here | 04:29 | |
| elcaro | oh, I missed that | 04:33 | |
|
04:36
discord-raku-bot left,
discord-raku-bot joined
|
|||
| yabobay | if you have "if" at the end of a statement, is there no way to have an else? | 05:19 | |
| South | nope you cannot | 05:20 | |
| its the same case in ruby | |||
| you can read more about that here <docs.raku.org/syntax/if#else/elsif> | 05:21 | ||
| there are ternaries that do this but depending on how you like your code some things might better be served with an actual if/else block, like modifying variables | 05:23 | ||
|
05:25
discord-raku-bot left
05:26
discord-raku-bot joined
|
|||
| elcaro | Yeah, you want a ternary | 05:29 | |
| `my $y = $x > 3 ?? 'big' !! 'smol';` | |||
| Or you know... maybe not | |||
| `my $y = (if $x > 3 { 'big' } else { 'smol' });` | |||
| yabobay | ooo | ||
| actually yes | |||
| South | for that particular case i would definitely go with the ternary | 05:31 | |
| elcaro | yeah... but if you feel like you wanna nest ternarys... it's usually a recipe for poor readability, and an `if/else` block is probably better | 05:35 | |
| South | this is very trye | ||
| this is very true | |||
| and i have been known to do such things in the name of wickedness | |||
| yabobay | ```perl | ||
| $c < $_.chars ?? $_.substr($c, 1).uc !! ' ' | |||
| ``` | |||
| this is fine then? | |||
| elcaro | haha yes! I've sometimes started with a ternary, then expanded it with another condition or two before I realise what a monstrosity it is | ||
| Even trying to format it logically, this is ugly | 05:36 | ||
| ``` | |||
| say $x > 5 | |||
| ?? $x %% 2 | |||
| ?? $x == 10 | |||
| ?? 'big-ten' | |||
| !! 'big-even' | |||
| !! 'big-odd' | |||
| !! 'smol' | |||
| ``` | |||
| South | yeah definitely lmfao | 05:37 | |
| elcaro | yeah this is fine. Ternarys are good for short if/else with simple expressions. | ||
| yabobay | im trynna figure out why ?? and !! | 05:39 | |
| is it?? then do this thing | |||
| its not!! well then do something else | |||
| South | `cond ?? if_true !! if_false` | ||
| yabobay | i know this is not from raku or from perl but it just looks funny to me | ||
| South | tho usually youll see `cond ? if_true : if_false` in other languages like ruby/java/c++(iirc) | 05:40 | |
| elcaro | As <@768182477449592832> said, ternary in C, Perl (and other C-like langues) is written `cond ? if_true : if_false`... but since ternary is not really used much, it was decided that the `:` was too valuable to waste on it. | 06:37 | |
| If anything `??` and `!!` make a little more sense in Raku, since `?` prefix boolifies something, and `!` does negative-boolification | 06:38 | ||
| ``` | |||
| [0] > ?'yes' | |||
| True | |||
| [1] > !'no' | |||
| False | |||
| [2] > ?0 | |||
| False | |||
| [3] > !0 | |||
| ``` | |||
| If anything `??` and `!!` make a little more sense in Raku, since `?` prefix boolifies something, and `!` does negative-boolification | |||
| ``` | |||
| [0] > ?'yes' | |||
| True | |||
| [1] > !'no' | |||
| False | |||
| [2] > ?0 | |||
| False | |||
| [3] > !0 | |||
| True | |||
| ``` | |||
|
07:43
frost joined
08:30
archenoth left
|
|||
| One final footnote... For a brief period of time, raku ternary syntax supported the use of `⁇` and `‼` (eg. `$x > 5 ⁇ 'big' ‼ 'smol'`, but it was reverted for various reasons (poor font support/displaying as emoji‼, and weird error messages) | 09:06 | ||
| One final footnote... For a brief period of time, raku ternary syntax supported the use of Unicode characters `⁇` and `‼` (eg. `$x > 5 ⁇ 'big' ‼ 'smol'`, but it was reverted for various reasons (poor font support/displaying as emoji‼️, and weird error messages) | 09:17 | ||
|
10:29
archenoth joined
11:13
reol joined
12:06
frost left
12:57
Kaiepi left
|
|||
| yabobay | but if it was optional, why did it matter | 13:52 | |
| if you could still do it the ascii way | |||
|
13:58
reol left
|
|||
| elcaro | You could probably dig up the commit... but from what I recall, there wasn't really much enthusiasm for them in the first place... but they were added "just because" | 14:00 | |
| I think the ternary is a special case in the parser (I may be wrong on this) which might explain why there was confusing error messages when you had a syntax error in the ternary. | |||
| Plus the font/rendering issues...the main takeaway was "maybe we shouldn't add unicode ops "just because" | |||
| You could probably dig up the commit... but from what I recall, there wasn't really much enthusiasm for them in the first place... but they were added "just because" | |||
| I think the ternary is a special case in the parser (I may be wrong on this) which might explain why there was confusing error messages when you had a syntax error in the ternary. Plus the font/rendering issues. | |||
| The main takeaway was "maybe we shouldn't add unicode ops "just because" | |||
| You could probably dig up the commit... but from what I recall, there wasn't really much enthusiasm for them in the first place... but they were added "just because" | |||
| I think the ternary is a special case in the parser (I may be wrong on this) which might explain why there was confusing error messages when you had a syntax error in the ternary... Plus the font/rendering issues. | |||
| The main takeaway was "maybe we shouldn't add unicode ops "just because" | |||
| yabobay | but there's enthusiasm for digits in random languages? | 14:02 | |
| like tibetan or what was it? | |||
| elcaro | Well, I don't think it requires much effort to support them. Anything in the `Nd` block (Number, Decimal digit) gets parsed as a number. | 14:12 | |
| Also, what you call a "random language" could be someone's native language. Those _numbers_ are valid digits, just as valid as Arabic numerals. | |||
| yabobay | yeah, but raku itself is in english | 14:14 | |
| and why support some languages but not others? | |||
| i tried chinese digits, they didn't work | |||
| elcaro | Probably because they do not have the Unicode property (Nd) that defines them as a digit? | 14:21 | |
| ``` | |||
| [4] > '六'.uniprops | |||
| (Lo) | |||
| [5] > '८'.uniprops | |||
| (Nd) | |||
| ``` | |||
|
14:32
Heptite joined
|
|||
| logs.liz.nl/perl6/2017-03-14.html#14:26-0003 | 15:54 | ||
| glancing at some of those messages, I seems to me that it represented an additional maintenance burden for comparatively little benefit. | 16:00 | ||
| glancing at some of those messages, it seems to me that it represented an additional maintenance burden for comparatively little benefit. | |||
| If you really must have them... font ligatures may satiate you. | |||
|
16:03
Kaiepi joined
|
|||
| stevied | anyone know where an updated version of this page is? docs.raku.org/perl6.html | 16:27 | |
| yabobay | i don't really want them at all, i think having unicode characters *anywhere* outside of a string literal is weird | 16:35 | |
|
16:36
razetime joined
|
|||
| elcaro | All the characters you just typed are Unicode 😀 | 16:43 | |
| But I know what you mean... you mean you only want ASCII... but that is a very Anglo-centric view of language. ASCII is also very limiting in terms of operators. Raku is implicitly trying to push against these restrictions and limitations. | |||
| yabobay | what kinda operator would you want that's not doable with ascii? | 16:44 | |
| and also, the planet is anglo-centric too | 16:48 | ||
| elcaro | You can use ASCII, for all your operators, but you either need to overload your operators, or make digraphs like J (where, eg. sort is `/:~`). | 16:54 | |
| Raku also borrows an idea from Perl. In Perl, it is often said "they types are in the operators". That's why in Perl `1 + '2'` is not as insane as it seems, because `+` means numeric addition. In Python, `+` might be numeric addtion, or it might be string concat. | |||
| Having unique operators means you can do automatic coercion. You run out of unique operators with just ASCII. Everyone agrees operator overloading is perilous... but what's the solution? Raku provides a alternative to operator overloading (in the traditional sense) | |||
| yabobay | i think that typing 3 characters on the keyboard is faster than googling the character and copying and pasting it | ||
| it's also more readable than a white rectangle, cause i don't have the fontset for some random unicode character | 16:56 | ||
| elcaro | You don't need to copy/paste. You've got options. | 17:00 | |
| There's various methods on how to imput Unicode characters, I think there's a page about it in the docs. | |||
| I use the vim digraphs feature, so I hit a key and then `-:` gives me `÷`, or `>>` gives me `»`. Most the symbols I like to use have easy to remember digraphs. | |||
| Or... don't use any of these symbols... just use the ASCII variants. | |||
| docs.raku.org/language/unicode_entry | 17:02 | ||
| yabobay | ive got compose key | ||
| it's the thing you said but it's everywhere in x11 | |||
| so how do i type the equivalent of (elem) | |||
| elcaro | in Vim, the digraph is `(-` (which gives `∈`) | 17:06 | |
| I've also customised/created some of my own digraphs to make them easier to remember, eg `(!` does `∉` | 17:07 | ||
| Kaiepi | digraphs... i use the vim-raku mappings but they're kind of a PITA | ||
| yabobay | { | ||
| this is what i got when i typed that | |||
| elcaro | yeah, i've turned on that feature twice in my life... both times I turned it off within a few mins | 17:08 | |
| Sorry, replied to the wrong message | |||
| Meant to reply to Kaiepi | |||
| yabobay | yeah | ||
| elcaro | Meant to reply to <@210313526928080896> | ||
| so yeah, the vim digraphs don't map exactly to compose-key combos | |||
| yabobay | and i can't really find a list of compose keys | 17:10 | |
| gfldex | I ended up to define my own digraphs. A list of characters useful for Raku can be found at: github.com/gfldex/digraphs/blob/ma...igraphs.pl | 17:25 | |
| yabobay | and this just becomes one more thing for text editors to have to implement | 17:27 | |
| making them more complicated to develop and more complicated to learn | |||
| if raku for example were to have mass adoption | |||
| gfldex | Actually, that is not true in my case. I use screen and vim. vim never sees the digraphs. | 17:28 | |
| yabobay | what do you mean? | 17:29 | |
| gfldex | I use GNU Screen and start the digraphs from there. As such I can use them in any terminal application. I use them in bash, irrsi and vim. So I'm well covered for my typing needs. :) | ||
| yabobay | yes, but what if someone is using a GUI editor like a normal person? | ||
| gfldex | Then you can convert digraph tables to xinput config files. And yes, there is xinput for Windows. | 17:31 | |
| yabobay | what's xinput? | 17:33 | |
| gfldex | The window manager input layer in X11. | ||
| yabobay | got it | ||
| what's that? | 17:34 | ||
| gfldex | en.wikipedia.org/wiki/X_Window_System | ||
| yabobay | what's this supposed to tell | 17:35 | |
| *me | |||
| do you want me to read the whole thing? | |||
| gfldex | The frist 2 lined should do. | ||
| The frist 2 lines should do. | 17:36 | ||
| yabobay | i know what xorg is | ||
| elcaro | If you want to input non-ASCII characters reliably, and it's not something you're familiar with... you will need to do some light learning. | 17:37 | |
| For some people around the world, entering non-ASCII/non-Latin1 characters is an everyday occurence | |||
| yabobay | yah, like myself | ||
| βλέπεις; | |||
| elcaro | And I would assume that people who use a particular setup are "normal" and people who don't are "other". Pretty sure gfldex and myself are normal people. Well, fairly normal. | ||
| And I wouldn't assume that people who use a particular setup are "normal" and people who don't are "other". Pretty sure gfldex and myself are normal people. Well, fairly normal. | |||
| yabobay | i'm just saying that vim is not most usecases | 17:38 | |
| gfldex | Given that I know Raku and Raku gives one super powers, I consider myself supernormal. :-> | 17:39 | |
| I didn't like unicode chars in Perl 6 at the beginning either. Then I made them easy to type and now I would badly miss them. | 17:40 | ||
| m: say „Look mom, no "quote escape"!“; | 17:41 | ||
| yabobay | why not just use single quotes | 17:42 | |
| gfldex | Finding a good terminal font was the tricky part, actually. But that way 10 years ago (or so). | ||
| yabobay | instead of googling both of those characters | ||
| gfldex | m: But what if you got both 'single quote' and "quote" in your HEREDOC? | 17:43 | |
| yabobay | just escape one of them? | 17:44 | |
| gfldex | m: say ‘But what if you got both 'single quote' and "quote" in your HEREDOC?’; | ||
| I _can_ do that, but I like it this way better. | 17:45 | ||
| You are free to quote as you like, ofc. | |||
| yabobay | what is a heredoc anyway | 17:50 | |
| gfldex | m:``` | 17:52 | |
| my $data = q:to/EOH/; | |||
| 2022-08-01, 20 | |||
| 2022-08-09, 10 | |||
| 2022-08-03, 19 | |||
| 2022-08-06, 24 | |||
| 2022-08-05, 22 | |||
| 2022-08-10, 28 | |||
| 2022-08-07, 20 | |||
| 2022-08-04, 18 | |||
| 2022-08-08, 21 | |||
| 2022-08-02, 25 | |||
| EOH | |||
| say $data; | |||
| ```` | |||
| m:``` | |||
| my $data = q:to/EOH/; | |||
| 2022-08-01, 20 | |||
| 2022-08-09, 10 | |||
| 2022-08-03, 19 | |||
| 2022-08-06, 24 | |||
| 2022-08-05, 22 | |||
| 2022-08-10, 28 | |||
| 2022-08-07, 20 | |||
| 2022-08-04, 18 | |||
| 2022-08-08, 21 | |||
| 2022-08-02, 25 | |||
| EOH | |||
|
17:52
discord-raku-bot left
17:53
discord-raku-bot joined
|
|||
| yabobay | very cool feature | 17:53 | |
| the power of raku at display here | |||
| super powers!!! | |||
| gfldex | In contrast to other languages that support HEREDOCs, Raku does the right thing when you indent them. In other languages they have to be left-aligned. | 17:55 | |
| yabobay | that didnt even compile | ||
| gfldex | m:``` | ||
| my $data = q:to/EOH/; | |||
| 2022-08-01, 20 | |||
| 2022-08-09, 10 | |||
| 2022-08-03, 19 | |||
| 2022-08-06, 24 | |||
| 2022-08-05, 22 | |||
| 2022-08-10, 28 | |||
| 2022-08-07, 20 | |||
| 2022-08-04, 18 | |||
| 2022-08-08, 21 | |||
| 2022-08-02, 25 | |||
| EOH | |||
| say $data; # | |||
| ``` | |||
| Not our invention tho. Larry stole that with Perl 5 from some unix shell. | 17:57 | ||
| yabobay | i thought i'd learn raku because it looked like fun | ||
| in retrospect that was very extremely stupid | 17:59 | ||
| programming skill isnt memorising all of the features in a language | |||
| its actually knowing how to write instructions that do what you want | |||
| whats the point of raku existing anyway | |||
| gfldex | m:``` | ||
| my $text = qq:to/WORD/; | |||
| Sometimes you got more text then { ‘edoc’.flip }, here HEREDOCs shine. | |||
| WORD | |||
| say $text; | |||
| ``` | |||
| lizmat | yabobay: how many programming languages do you know? | 18:00 | |
| gfldex | Why invent C then? Macro assemblers worked just fine! | 18:01 | |
| yabobay | its fine if the number of features isn't literally infinite | 18:02 | |
| lizmat | then I suggest you learn C, there's not a lot of syntax there to learn, and the number of features is limited | 18:03 | |
| yabobay | lizmat: none really | ||
| lizmat | learning the standard lib is another matter though :-) | ||
| gfldex | The list of features of any programming language is infinite. Most of them just hide them in external libraries. | ||
| yabobay | ive heard multiple say that nobodys gonna know everything about raku | ||
| the thing about C is that there isn't even any real support for strings | |||
| just syntactic sugar | 18:04 | ||
| lizmat | yabobay: I've been able to tell people some feature of Perl that they didn't know about, while having worked with Perl daily for 25+ years | ||
| so I think just about any programming language has corners that you'd not know about for a loooong time | 18:05 | ||
| yabobay | thats what im saying | ||
| thats not a good thing | |||
| is it? | |||
| lizmat | just as natural languages for that matter | ||
| yabobay | well we dont have control over natural languages | 18:06 | |
| learning a natural language is famously a difficult and long process | 18:07 | ||
| elcaro | You can use ASCII, for all your operators, but you either need to overload your operators, or make digraphs like J (where, eg. sort is `/:~`). | 18:08 | |
| Raku also borrows an idea from Perl. In Perl, it is often said "the types are in the operators". That's why in Perl `1 + '2'` is not as insane as it seems, because `+` means numeric addition. In Python, `+` might be numeric addtion, or it might be string concat. | |||
| Having unique operators means you can do automatic coercion. You run out of unique operators with just ASCII. Everyone agrees operator overloading is perilous... but what's the solution? Raku provides a alternative to operator overloading (in the traditional sense) | |||
| yabobay | anyway, im sorry for being a massive idiot with everything i've said today up to now | 18:09 | |
|
18:11
razetime left
|
|||
| gfldex | I had the same feelings when I started to learn the language. Nowadays I love to compose a _nice_ Raku program, even if a simple one would have done the job too. | 18:11 | |
| lizmat | .oO( ah you youngsters, in my time there was hardly any documentation :-) |
18:13 | |
|
18:14
discord-raku-bot left,
discord-raku-bot joined
|
|||
| yabobay | as a programming beginner , it feels bad not to be able to feel good about implementing some simple functionality because theres already a function for that | 18:14 | |
| lizmat | but but: you *should* feel good if your learned something from it | 18:22 | |
| independent of whether the functionality existed already or not | 18:23 | ||
| yabobay | but i dont need to do those things because they already exist | 18:24 | |
| gfldex | Don't worry, you will quickly hit the limits of the buildins and then you will have to compose with primitives. | 18:26 | |
| yabobay | i hope so | 18:29 | |
| maybe i should try really using raku for something | 18:30 | ||
| i had a python script that i think would be quite good to re-make in raku | |||
|
21:41
lizmat left,
lizmat joined
|
|||
| Rog | Doesn’t look like it | 21:50 | |
| There’s gotta be something equally nice though surely… | |||
|
21:53
RakuIRCLogger left
|
|||
| South | the phasers seem much more powerful | 21:57 | |
| less noise too | |||
| yabobay | out of context, youre talking bout a space ship | ||
| South | lol | 21:59 | |
|
23:51
kjp left,
kjp joined
|
|||