Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid

Re:x6 Think for yourself.

by gwadej (Chaplain)
on Nov 04, 2003 at 03:52 UTC ( #304319=note: print w/replies, xml ) Need Help??

in reply to Re: Re: Re: Re: Re: Think for yourself.
in thread is the use of map in a void context deprecated ?

I guess I've just realized that we are agreeing more than arguing.

I had a major realization about the list operations in Perl a (relatively) short time ago, and I've been trying to explain it to others (and myself) ever since. I found that some of the problems I was working on simplified drastically when I used the list operators on lists of homogeneous data.

I think you've helped me to understand that a lot of what I've been trying to say really boils down to another application of the Principle of Least Surprise. The places where I find the list operators to be the most useful are where they can reduce surprise to some extent.

My example that you quoted above is a good use of map because it does what the reader expects because it follows the right visual pattern.

The "bad" example you gave above gives the wrong kind of visual feedback and, therefore, causes more surprise. This is also code that is more likely to be corrected incorrectly, because the one who comes after may think they know what it is doing at a glance and be wrong.

My thanks. You've given me quite a bit to ponder.

G. Wade

Replies are listed 'Best First'.
Re: Re:x6 Think for yourself.
by tilly (Archbishop) on Nov 04, 2003 at 06:24 UTC
    I believe that many people find easier to understand many list-oriented algorithms if you write them backwards. That is, think of:
    @minutes = map { $_/60 } @seconds;
    as meaning something like:
    @seconds ==> map { $_/60 } ==> @minutes # you could do more complex stuff here... ;
    (Syntax chosen because it is valid Perl 6.)

    When you think this way, then many things that are natural to do with list-oriented operators become more intuitive. For instance merlyn has told me that he thought up the Schwartzian transform by writing it mentally as a pipeline and then rewrote it in Perl. It is only confusing when you see it because our eyes normally scan left to right, top to bottom but the flow of the calls actually goes right to left, bottom to top.

    In Perl 5 that is a useful crutch until your eyes learn how to "parse" things properly. In Perl 6 it is such a useful crutch that I plan to do things that way... ;-)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://304319]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2018-05-22 06:53 GMT
Find Nodes?
    Voting Booth?