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:32
Manifest0 left
00:59
rf_ left,
rf joined
01:53
MasterDuke joined
03:05
deadmarshal_ left
03:55
deadmarshal_ joined
05:20
Heptite left
08:33
stevied_test left
08:34
stevied_test joined
09:04
Manifest0 joined
09:08
ab5tract joined
09:10
dakkar joined
|
|||
el gatito (** advocate) | how do i create a docstring | 12:15 | |
Nemokosch | what is a docstring? | 12:16 | |
el gatito (** advocate) | sub my-func is export(:my-func) { """documentation here...""" } | 12:19 | |
or #`(documentation here...) | 12:20 | ||
Nemokosch | you'd use POD, I think | ||
also known as "plain old documentation" | |||
I think the discord library is a good example | 12:21 | ||
github.com/shuppet/raku-api-discor...el.rakumod | 12:23 | ||
el gatito (** advocate) | sub my-func is export(:my-func) { =begin pod documentation here... =end pod } like this? | 12:28 | |
Nemokosch | That can also work | 12:30 | |
docs.raku.org/language/pod#Declarator_blocks idk I like this | 12:31 | ||
for me, the semantics is a bigger question | |||
p6steve | just to circle back on this - I have now had the time to review the implementation of role DataSlice in the Dan module and to check whether there is a simple fix to my code to get .<C> or $_<C> working .... without going into the details, the status is (i) I agree that the current, working example for sort is a (bit of a) hack, (ii) DataSlice employs delegation and overloads so that it can mix Positional and | ||
Associative as "cascading accessors", this has about 80% coverage of the use cases, (iii) the issue arises because sort seems to coerce a DataSlice to an Array [which I guess is necessary to Iterate it] and this Array will not take <C>, (iv) it is beyond my skill to identify a quick fix to dehack sort, (v) as the use cases for Dan (and it's brethren) solidifies, I would like to circle back and refactor this area | |||
(likely employing something like Hash::Agnostic / Array::Agnostic) to get the non-hacky sort syntax working, (vi) but since the hack will continue to work alongside a future "non-hackified" example I think that it's good enough for now because (vii) I am focusing my time to get Dan::Polars to MLP per the TODO lists(s) over there --- I have made an issue for this over at GH Dan and, as ever, will be happy to adapt my | |||
priorities according to comments/issues from users of Dan over on GH ... | |||
😎 | 12:33 | ||
lizmat | p6steve++ | 12:34 | |
el gatito (** advocate) | also f.__doc__ is &f.WHY in raku | 12:35 | |
Nemokosch | I didn't know the former and haven't used the latter (yet) 😅 | 12:36 | |
el gatito (** advocate) | the WHY and HOW names... | 12:37 | |
lizmat | m: say 'Life, the Universe and Everything'.WHY | ||
camelia | 42 | ||
lizmat | :-) | ||
Nemokosch | xddddd | 12:39 | |
el gatito (** advocate) | it is very obvious that python __doc__ is something related to documentation but when i looked at WHY i don't know what it is supposed to mean | ||
lmao | |||
p6steve | did anyone try Jupyter::Kernel with MathJax? | 12:43 | |
Nemokosch | @Anton Antonov ping | 12:44 | |
I didn't use it either way 🙊 | |||
p6steve | just a wild idea... | 12:46 | |
Nemokosch | it's okay, need to tighten the userbase, I'd say | 12:48 | |
el gatito (** advocate) | the naming makes the language feels like its designed to be a meme lol | 12:51 | |
p6steve | ... I really like that we can do Jupyter D3 (thanks to @anton) ... just occurred to me that MathJax (and no doubt other JS plugins) would be cool too (yes for different user needs --- such as authoring an interactive scientific paper) | 12:52 | |
Anton Antonov | Incidentally, I am currently working on an article titled “Literate programming with Raku and D3.js”. I am trying to show how LT documents can be created using CLI scripts and not using Jupyter. I find Jupyter too heavy and hard to install. (Raku-Jupyter especially, and Jupyter in general.) | 13:05 | |
p6steve | I'm all for a raku native replacement for Jupyter - for me the key would be alternating code / md cells with a web frontend | 13:07 | |
but that could be just a thin layer on a cli basis | 13:08 | ||
Anton Antonov | A nice thing about Brian Duggan’s Jupyter implementation, though, is that it is relatively easy to add new functionalities for the code cells. That is how I made my first D3.js demos. (Brian productized that hack later.) For example, for a client I am making a Jupyter-based prototype with special DSL cells that evaluate natural language specs into data results. (I did that with Mathematica 2 years | 13:10 | |
ago.) | |||
lizmat | argh... someone teach the discord bot to *not* just break up lines without mentioning the nick again!! | 13:12 | |
like ^^ | |||
it's unambiguous in this case, but something else *could* get inbetween | |||
Nemokosch | I think the discord bot is used as a product, for all intents and purposes. Either it can be configured that way - or well, someone will have to fork and modify it, I guess. | 13:15 | |
lizmat | I thought gfldex was running it? | 13:16 | |
p6steve | Well I think we will need to live with / support Jupyter for a long time (but noticing that it is becoming less Python centric) like EVCXR depth-first.com/articles/2020/09/2...ith-evcxr/ | ||
Anton Antonov | Yeah, sure the investment in Jupyter by some “serious players” is huge. For example, Jupyter + Raku + VS Code is cool, and would say, it is a nicer combination than the typical Jupyter-in-the-web-browser. | 13:22 | |
But again, Jupyter + Raku + VSCode is hard to get consistently work (and look the same) on the few different machines I have tried it… | |||
Nemokosch | lizmat: seems like you've been missing out on these news, perhaps it could be a good moment for a DM... | ||
Anton Antonov | Not that interested in Rust, but I was looking into notebook solutions for Swift. | 13:23 | |
@p6steve In general — to paraphrase Rowan Atkinson — I find your Python and Rust obssessions disturbing. | 13:25 | ||
13:25
Nemokosch joined
|
|||
Nemokosch | you have a tendency of talking about "obsession" pretty easily, good sir | 13:26 | |
I, as somebody you also "accused" of Python obsession, can tell you for one: if automation scripts were that convenient in Python, I would have never thought about learning Raku in the first place | 13:27 | ||
and if my betting on Raku had turned out to be wrong, I would have come back a long time ago | 13:28 | ||
Anton Antonov | I do not think anyone working seriously with Raku is possessed. Only obsessed ones… | 13:29 | |
p6steve | haha | 13:30 | |
Anton Antonov | @Nemokosch I like the packages of the “docopt” family (for making CLI scripts.) Both R and Python have an implementation, of “docopt”, so I can transfer CLI designs and/or showcase comparisons. | 13:35 | |
p6steve | I have made a rod for my own back with Dan::Polars which forces me to code 50% in Rust (which, after Raku, is like being made to work down a mine) | ||
Nemokosch | oh, the one with the ugly site... not gonna lie, I don't like it a lot 😄 | 13:36 | |
"the description of a help message but formalized" quite a bruh moment. How would that compete with CLI generated straight from declarative code? | 13:37 | ||
Anton Antonov | I think you are using a certain British idiom. Speaking of “Dan::Polars” why are making a rod for your back and not a pole? | 13:38 | |
Nemokosch | help-message-as-a-DSL | ||
Anton Antonov | Well, it is a “remedy” solution, so it is good and workable, but not great. | 13:39 | |
p6steve | English has many words that mean almost the same - my favourite example is %(swine => 'pork', cow => 'beef', lamb => 'mutton') where the key is stolen from German and means the animal in the field and the value is stolen from French and means the meat on the plate | 13:41 | |
for me, Raku is like English and Rust is like German | 13:45 | ||
13:49
Nemokosch left,
Nemokosch joined
|
|||
Nemokosch | For me, Javascript is English | 13:50 | |
except I like Javascript more actually, lol | |||
"a language popular for historical reasons, known for its simple fundamental structure, where everything is allowed" | 13:51 | ||
I'm not sure Hungarian is complex enough to be compared to Raku. Maybe some conlang. I liked the idea of Kotava, maybe that could be compared. | 13:52 | ||
Also regarding popularity, alas. Frankly, Kotava is insanely niche even compared to Raku | |||
German might be Pascal | 13:54 | ||
Created by a German native, too | |||
and the biggest living community of comtemporary Pascal is also tied to Germany in and out | |||
"a rigorous, yet reasonably clean language with many-many incompatible dialects - but there is a standard everybody should understand" | 13:55 | ||
14:00
Heptite joined
14:13
Nemokosch left
|
|||
Anton Antonov | @Nemokosch Interesting remarks on Pascal. I was taught programming rigorously with Pascal in high school... | 14:20 | |
p6steve | Raku & Javascript are quite similar capability-wise | 14:21 | |
Nemokosch | I'd say for completely different reasons, though | 14:33 | |
In Javascript, this is because of the ridiculously simple model that is essentially its own metamodel | 14:34 | ||
even simpler than Python' | |||
in Raku, another route is taken: "there is one for each (...)" | 14:35 | ||
even though you may reach a point where the model is it's own metamodel - but that language is not Raku anymore | 14:38 | ||
or phrased the other way around: Raku is much more than a self-hosted system | 14:39 | ||
it's extended in all crazy ways that JS isn't | |||
el gatito (** advocate) | is that python (minus the popular for historical reasons part)? | 15:17 | |
lua's is probably even simpler | 15:18 | ||
Nemokosch | Python has what you would call rules | 15:19 | |
English not really | |||
Javascript also not really - anything you can syntactically form, will probably do something | 15:20 | ||
15:20
jgaz joined
|
|||
in Python, half of the things you can form are invalid and will throw immediately | 15:20 | ||
el gatito (** advocate) | i thought you mean in terms of semantics in that respect python allows you to do any kind of crazy shit you can imagine | 15:30 | |
Nemokosch | that's exactly what I wouldn't say when the reference is Javascript | 15:33 | |
Python clearly doesn't allow you "to be wrong" | |||
while Javascript embraces faults, even its own faults. That's much more like English 😛 | 15:34 | ||
el gatito (** advocate) | true | 15:39 | |
exactly why it is one of the worst languages on earth | 15:40 | ||
15:41
zashi joined
|
|||
Nemokosch | I don't know, I empathize with it, kinda | 15:41 | |
the positives overweigh the negatives for me | |||
el gatito (** advocate) | when i am talking abt how python allows anything i mean its amazing introspection features lol turns out thats not what you mean | 15:42 | |
then what would php be? | 15:43 | ||
a fractal of bad design | |||
rf | PHP isn't necesarrily bad, I think its far more usable than JavaScript | ||
Nemokosch | Call me a charlatan but I think neither of these languages are bad, lol | 15:45 | |
el gatito (** advocate) | rf: really? most people would agree that js is the better language | ||
Nemokosch | I still say: no language is bad, unless it's Shell. If it's Shell, then it's not only bad but also evil. | ||
el gatito (** advocate) | how about cobol | ||
Nemokosch | I've never used Cobol, or even looked at it for a remotely longer period of time | 15:46 | |
so I have no opinion about that | |||
rf | JS is trying to be PHP nowadays anyways, look at NextJS and TSX | ||
Nemokosch | I think programming languages are generally much better than programmers anyway | ||
these "hate trends" are more about people being stupid and easy to buy with superficial stuff | 15:47 | ||
rf | Lisp is by far the most sound language design, but it isn't necesarrily sound for developers | ||
I don't know how to spell necessarily apparently lol | 15:48 | ||
el gatito (** advocate) | this is a fibonacci sequence calculator in cobol rosettacode.org/wiki/Fibonacci_sequence#COBOL | ||
rf | I think a good language is a language that gets stuff done, and doesn't get in the way of the developer. OCaml, Raku and Perl are my gotos for those reasons | 15:49 | |
Nemokosch | rf: see, English is forgiving xD | ||
nobody even noticed probably | |||
el gatito (** advocate) | now rewrite that in any other language | 15:50 | |
Nemokosch | what are the numbers for? 😄 | 15:53 | |
I mean... okay, it is verbose. Verbose like hell, even. But there have been trends to return to "literate programming", right? | 15:54 | ||
el gatito (** advocate) | the authors of this language take "literate programming" a little too far | 15:55 | |
Nemokosch | I get the intention at least - same as Java | 15:58 | |
bit of a "code monkey" mentality | |||
write more - but it should really be self-explanatory and rigid | |||
something that might work for 50 years without ever modifying | 15:59 | ||
you wouldn't feel like modifying it anyway 😆 | |||
el gatito (** advocate) | it is also designed by a literal commitee | 16:01 | |
m: my \hi there = 1; say(hi there); | 16:23 | ||
Raku eval | Exit code: 1 ===SORRY!=== Error while compiling /home/glot/main.raku Term definition requires an initializer at /home/glot/main.raku:1 ------> my \hi⏏ there = 1; | ||
el gatito (** advocate) | m: my \hi there = 1; say(hi there); | ||
Raku eval | Exit code: 1 ===SORRY!=== Error while compiling /home/glot/main.raku Term definition requires an initializer at /home/glot/main.raku:1 ------> my \hi⏏ there = 1; | ||
Nemokosch | why would this work, though | 16:24 | |
el gatito (** advocate) | im trying to put a no break space | ||
in between | |||
turns out they convert it to normal space | 16:25 | ||
Nemokosch | ohhhh | 16:26 | |
come to think of it: related issue | |||
github.com/Raku/problem-solving/issues/357 | |||
that is, indeed it isn't clear, in strings at least, how that would be interpreted | 16:27 | ||
el gatito (** advocate) | m: my \𝚋𝚛𝚞𝚑 = 1; say bruh; | ||
Raku eval | Exit code: 1 ===SORRY!=== Error while compiling /home/glot/main.raku Undeclared routine: bruh used at line 3 | ||
el gatito (** advocate) | real | ||
nbsp are converted to normal space but mathematical monospace aren't converted into their respective ascii forms | 16:28 | ||
Nemokosch | I'm fairly certain this falls into the "nobody thought of it" territory... | 16:29 | |
the disadvantages of designing an arbitrarily complex language | |||
everything is allowed, unless explicitly forbidden | |||
el gatito (** advocate) | meanwhile python...python 𝚋𝚛𝚞𝚑 = 1 print(bruh) # 1 | 16:32 | |
16:34
camelia left,
m_athias left
16:35
m_athias joined
|
|||
Nemokosch | the funny thing is | 16:35 | |
it breaks the REPL in both | |||
although both say it has a length of 4 | |||
by the way, not gonna lie, Raku's version seems saner again 😆 | 16:37 | ||
if you're gonna allow Unicode weirdness like that, why on earth would you map that to something completely different under the hood? | 16:38 | ||
16:38
m_athias left,
m_athias_ joined
|
|||
m: my \𝚋𝚛𝚞𝚑 = 1; say 𝚋𝚛𝚞𝚑 | 16:38 | ||
Raku eval | 1 | ||
16:40
camelia joined,
zashi left
|
|||
el gatito (** advocate) | its called nfkc normalization | 16:43 | |
16:43
m_athias_ is now known as m_athias
|
|||
the point is that 𝚋𝚛𝚞𝚑 and bruh represent the same abstract characters just in different fonts | 16:46 | ||
Nemokosch | from this spaghetti abbreviation, I can't say for sure but Raku strings undergo a certain normalization | 16:49 | |
and it's certainly not this one because these strings are not equal | 16:50 | ||
found this unicode.org/reports/tr15/#Canon_Co...quivalence | 16:53 | ||
so for example | 16:58 | ||
m: "LATIN SMALL LETTER A WITH ACUTE".uniparse eq "LATIN SMALL LETTER A, COMBINING ACUTE ACCENT".uniparse andthen .say; | 16:59 | ||
Raku eval | True | ||
Nemokosch | I think this is a difference between NFKC and NFC (that MoarVM uses) | 17:01 | |
17:38
dakkar left
18:09
m_athias left
18:28
Monalika9 joined
18:29
jgaz left
19:27
jgaz joined
|
|||
thanks to thundergnat, I noticed this snippet of mine was incorrect | 19:59 | ||
so I made it even crazier | |||
20:01
NemokoschKiwi joined
|
|||
lizmat | you've just shown the power of NFG :-) | 20:02 | |
NemokoschKiwi | m: what is that? | 20:03 | |
camelia | ===SORRY!=== Error while compiling <tmp> Bogus postfix at <tmp>:1 ------> what is that⏏? expecting any of: infix infix stopper postfix statement end statement modifier … |
||
NemokoschKiwi | oops | ||
lizmat: what is that? ^^ | |||
m: gist.github.com/2colours/d4d247d98...7aaad4844a | |||
camelia | ((abcd) (a bcd) (ab cd) (abc d) (a b cd) (a bc d) (ab c d) (a b c d)) | ||
lizmat | docs.raku.org/language/unicode#Normalization | 20:04 | |
andrewshitov.com/2018/10/31/unicode-in-perl-6/ | 20:05 | ||
NemokoschKiwi | after today, I was ready for "no fucks given", to be honest 😅 | 20:06 | |
lizmat | m: dd "\r\n".chars # most common form of NFG | 20:08 | |
camelia | 1 | ||
NemokoschKiwi | so C in NFC stands for codepoints | 20:11 | |
substitute that for G and graphemes | |||
lizmat | no, I think Composed ? | ||
NemokoschKiwi | oof | ||
"Characters are decomposed and then re-composed by canonical equivalence " | 20:12 | ||
this is the working of NFC apparently | |||
6guts.wordpress.com/2015/04/20/thi...-and-more/ | 20:16 | ||
This article is good | 20:20 | ||
I'd add it to the glossary entry of NFG | 20:21 | ||
20:37
Monalika9 left
21:05
NemokoschKiwi left
21:16
deoac joined
|
|||
deoac | Is it possible to use Perl source filtering in a Raku program? I've tried ```use Filter::Simple:from<Perl5>;``` without success. | 21:19 | |
22:14
deoac left
|
|||
p6steve | hi deoac - my reply is over on #raku-irc | 22:19 | |
23:35
ab5tract left
23:46
nachtvlinder joined
23:48
nachtvlinder left
|