On Thu, Dec 3, 2020 at 10:20 PM Konrad Bucheli via perl6-users
<perl6-us...@perl.org> wrote:
>
> What is actually the rationale for such a behaviour?

Ergonomically sound null safety.

First, consider what other languages have. Quoting
https://en.wikipedia.org/wiki/Safe_navigation_operator:

> In object-oriented programming, the safe navigation operator
> ... is used to avoid sequential explicit null checks ...
...
> In programming languages where the navigation operator
> (e.g. ".") leads to an error if applied to a null object, the safe
> navigation operator stops the evaluation of a method/field
> chain and returns null as the value of the chain expression.
...
> It is currently supported in languages such as Apex, Groovy,
> Swift, Ruby, C#, Kotlin, CoffeeScript, Scala, Dart and others.
...
> The main advantage of using this operator is that it avoids the
> pyramid of doom. ...

Many aspects of Raku's design are better solutions than are found
in older PLs like those listed above. This is an example. Instead of
devs having unsafe operations by default, and having to write `?.`
to get safety, in Raku one just writes `.` and always gets safety.

> For me it was an unexpected trap

This statement couples deep wisdom (the "for me" qualification,,
deferring it till after you'd first asked about what the rationale was,
and sharing your experience) with a Canby.[1]

It's clear that you were missing some knowledge, and that it
bit you, and are now exploring how best to learn from that.

I accept without reservation the claim it was "unexpected". (That
is the sort of thing that is typically experienced and reported by
request of our right hemispheres, and it is generally reliable.)

I also recognize what I imagine as a negative effect associated
with classifying this experience / situation as a "trap", and the
negative affect associated with applying that classification, which
is to say your right hemisphere's experience of that classification.

With that said, I now wish to engage our respective unreliable
left hemispheres, the ones that drive classification, and wish to
suggest another way to view this situation.

I would argue that you are classifying safe navigation as a trap,
and thus likely experiencing it negatively. Perhaps for you this
can/will instead become a gift (perhaps also unexpected)?

A fundamental part of human experience is interpreting one's
reactions to things in the light of further knowledge and/or
experience. Larry has made it clear to me that this is one of
the keys to his approach to life, and to PL design, in both the
sense of how he approaches a PL's design and how the PL's
designed features reward those who think the same way. (I
have found this endlessly inspiring.)

Applying that to your experience, you could alternately view
what happened as a surprise that arises from Raku's default
of safety, which is about freedom (avoiding both the extensive
boilerplate of the pyramid of doom, and the modern shorter
but still boilerplate additional ?), and not, it could reasonably
be argued, about a trap.

cf my discussion of what Vadim Belman had classified as a WAT in
https://www.nntp.perl.org/group/perl.perl6.users/2018/09/msg5418.html

> It all went fine only the side effect was not there. I then figured
> out after some time that one of methods returned Nil and
> somehow silently it did not do what I expected.

The "somehow" was automatic safe navigation, By definition,
this is silent as far as it goes.

But if you think about it, it wasn't *entirely* silent. You knew
*something* wasn't working right, because somewhere you
expected a value and didn't get one. So you then had to go
chase that down.

This is another pervasive principle in Larry's design approach.
If a PL tries too hard to avoid programming errors, it becomes
a police state. If it ignores the potential for programming errors
it forgets to introduce things like safe navigation by default.

The sweetspot is a balance between trade offs that overall
lets devs reasonably easily "get" working code (in both the
sense of arriving at it when writing, and comprehending it
when reading), and keep making progress in the event of
things not working out as expected.

I see signs that Raku gets that right a lot of the time for me,
and for others I see using and discussing it, and that the
culture is generally agreeably open to figuring out whether
any given negative experiences are best left as something
for individual involved devs to adapt to, or as necessitating
improvements in the doc, or Raku, or Rakudo, or modules etc

And at the foundation of it all, is our open minded but also
mindful right hemispheres, which it's clear we all share.

Which leads me to a concluding question.

Given your own reflections on the rationale I have described,
and perhaps the wisdom that comes when we "sleep on it",
is your conclusion that it would be best if there were some
change in the doc, or Raku, or Rakudo, etc., or does it make
enough sense now that it was, in the final analysis, really
just unexpected rather than also being a trap?

love, raiph

[1] http://quotegeek.com/literature/norton-juster/the-phantom-tollbooth/3184/

Reply via email to