MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Style Question: The Functional Way

  • To: mathgroup at smc.vnet.net
  • Subject: [mg115812] Re: Style Question: The Functional Way
  • From: Ray Koopman <koopman at sfu.ca>
  • Date: Fri, 21 Jan 2011 04:33:16 -0500 (EST)
  • References: <ih967m$okt$1@smc.vnet.net>

On Jan 20, 3:27 am, Just A Stranger <forpeopleidontk... at gmail.com>
wrote:
> Hello,
>
> So I'm trying to learn how to do things the functional way. As an
> exercise I'm trying to program a simple economics related table
> that gives revenue, marginal revenue, etc given a demand schedule
> (2 lists of numbers representing quantity and price respectively).
> A simple task in a spreadsheet.
>
> The point is that I need a list of the differences in the given lists,
> from which I will be using to get marginal values (derivatives). I'll
> call it, say, DeltaList, and I was wondering if this would be a proper
> "functional" way to go about the task:
>
> In[0]: DeltaList[L_] := Subtract @@@ Reverse /@ Partition[L, 2, 1]
>
> (DelatList: list -> list)
>
> Basically, it partitions the list into ordered pairs, reverses those
> ordered pairs to prep them for the subsequent Subtract application.
>
> Is this the right way to think about this (painfully simple) problem
> in a functional way?
>
> Thank you. All of you have been most helpful in the past.

Instead of Reversing before subracting,
change all the signs after subtracting:

  DeltaList2[L_] := - Subtract @@@ Partition[L, 2, 1]

Instead of partitioning, work with the entire vectors, lagged:

  DeltaList3[L_] := Rest@L - Most@L

Or remember that there is already a built-in routine:

  DeltaList4[L_] := Differences[L]


  • Prev by Date: Re: Style Question: The Functional Way
  • Next by Date: Re: Style Question: The Functional Way
  • Previous by thread: Re: Style Question: The Functional Way
  • Next by thread: Re: Style Question: The Functional Way