5 ms·
I've never used Perl6, but it took me about 30 seconds to figure out what 'say' and 'gist' do from the linked docs? 'gist' prints a string representation of an
by _delirium 8y ago
I've never used Perl6, but it took me about 30 seconds to figure out what 'say' and 'gist' do from the linked docs? 'gist' prints a string representation of an object aimed at being human-readable at the expense of not necessarily being a complete representation (e.g. the doc page gives an example that an array has only its first 100 elements printed followed by a '...'). 'say' is a version of 'put' that does this for every object being printed.
- cwyers 8y agoSo, I sort of took that away from it, but there's stuff in the gist page like: > The default gist method in Mu re-dispatches to the perl method for defined invocants, and returns the type name in parenthesis for type object invocants. Many built-in classes override the case of instances to something more specific that may truncate output. And I have no idea how anyone that isn't already fluent in Perl 6 is expected to read that. EDIT: My point is mostly that it just seems... weird. Like, I get the animating idea of Haskell, even if I don't understand all of the concepts. Perl 6 just seems... alien. It's incredibly funky.
- kqr 8y agoI have no problem reading that. Sure, I dont understand it in fine technical detail (what's Mu? An implementation of Perl? A codename for Perl 6?) But I believe I understand enough of it to start using it. This specific example seems similar to the __repr__ vs __str__ thing in Python, and not very alien at all.
- snapdangle 8y agoThanks for pointing out this Python similarity!
- uryga 8y ago`Mu` is perl6's `Object` ("mu" ≈ "nothing" in chinese/japanese). cute, but alien
- cygx 8y agoAlso, "most undefined".
- xisukar 8y agoAs pointed out by others, Mu is the most undefined value there is in Perl 6 and the base root for the immediate child classes (https://docs.perl6.org/images/type-graph-Mu.svg https://docs.perl6.org/images/type-graph-Mu.svg). However, most classes (both built-in and user-defined ones) don't inherit directly from it. Instead, they inherit from Any, which in turns inherits from Mu. More info about it: - https://docs.perl6.org/type/Mu https://docs.perl6.org/type/Mu - https://en.wikipedia.org/wiki/Mu_%28negative%29 https://en.wikipedia.org/wiki/Mu_%28negative%29
- vram22 8y agoRight. Here's a blog post, which, while not directly about Mu (it's about m, a shell script I wrote), has many excerpts about (the original) Mu (from which Perl6's Mu descends, pun intended, ha ha) near the end - some may find them interesting: m, a Unix shell utility to save cleaned-up man pages as text: https://jugad2.blogspot.com/2017/03/m-unix-shell-utility-to-save-cleaned-up.html https://jugad2.blogspot.com/2017/03/m-unix-shell-utility-to-...
- laumars 8y agoMy takeaway from that is it’s basically Go’s Stringer() but with a default method so even objects without String method can still return a string. Quite a few languages have that kind of feature though I believe. PHP has print_r and var_dump, Perl 5 had Data::Dumper, Python has tools too which I forget the name of. I like how Perl 6 has baked it into the language though rather than making it a part of the standard library.
- bmn__ 8y agoYou cannot blame the language reference manual for exposing all the complexity and using precise wording. You are not expected to read that. Other resources exist which are targeted at newcomers and explain things differently.
- cwyers 8y agoThe reference manual is what was linked to to explain terms that a resource aimed at people who know Python but not Perl 6 used.
- xisukar 8y agoIf I went on to learn about "Functors, Applicative Functors and Monoids" (which I'm completely ignorant about) in Haskell without having first learned Haskell's basic building blocks, then I would be disingenuous myself if I blamed the language for my ignorance and unfamiliarity with the language. On top of that, if you're not a Haskell user I don't think you're the target audience as pointed out by bmn__. For this reason, there are several migration guides (Python, Ruby, etc.) which ,although incomplete, they give the languages' respective users a contrast against Perl 6 which hopefully translates into some familiarity with it. If you want to start from the bottom out, there's the ever improving language docs: https://docs.perl6.org/language.html https://docs.perl6.org/language.html
- vram22 8y agoReading the docs a bit more and/or googling for terms like "perl6 mu" might have helped. I too might have not what Mu meant (in the context of Perl6, although I did know the original meaning), unless I had come across it in the docs or elsewhere. But IMO, like others have said, it is not really that difficult to figure out what it means (if you know some OOP) (although some of the rarely-used words (e.g. "invocants") get in the way a bit. Basically when I read your comment, I figured out that the default gist method (even the word "gist" is a clue) was something like a default-valued method (to print the representation of any object) that can be overridden on a case-by-case basis by any other object - something like Python's __str__() and __repr__ special methods, like others have said. However, having read some of it, I'll have to agree with you that the Perl6 docs can do with some improvement (check out Phasers in the Perl 6 manual for an example of what I mean) - whereas, in contrast, the Perl 5 docs are considered by some (me too) to be good-to-excellent. But then Perl6 has been evolving for less time (yes, I know about the long time for the 1st stable release).