MathGroup Archive 2005

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

Search the Archive

Re: functional programming excercise from Mastering Mathematica

  • To: mathgroup at smc.vnet.net
  • Subject: [mg55270] Re: functional programming excercise from Mastering Mathematica
  • From: dh <dh at metrohm.ch>
  • Date: Fri, 18 Mar 2005 05:33:47 -0500 (EST)
  • References: <d1bflp$lja$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hello Torsten,
Note that ComposeList takes a function with 1 argument however FoldList 
a function with 2 arguments.
To mimic FoldList using ComposeList, we must first reduce the two 
argument function to a one argument function by fixing the second 
argument. This can be done by:
Function /@ Thread[fun,{a,b,c}]

Therefore, we may define:
foldList[fun_,x_,par_List]:=Module[{funs},
    funs= Function /@ Thread[fun[#, par]];
    ComposeList[funs,x]
]

To make it short and cryptic, we can write a one liner:
foldList[fun_,x_,par_]:=ComposeList[Function /@ Thread[fun[#, par]], x]

Daniel

Torsten Coym wrote:
> I'm quite new to Mathematica and its functional programming capabilities 
> so I did some reading in John Gray's "Mastering Mathematica". There is 
> an excercise in chapter 6 as follows
> 
> Write your own function composeList that works just like the built-in 
> operation with the same name, using FoldList. Conversely, write your own 
> function foldList that works just like the built-in operation with the 
> same name, using ComposeList.
> 
> Unfortunately, there is no solution given at the end of the book (or I 
> didn't find it). I could figure out a way to do the first task:
> 
> composeList[funlist_List, var_] := FoldList[(#2[#1]) &, var, funlist]
> 
> but I can't manage the second task...
> 
> I know it's rather academic, but ... any help is welcome!
> 
> Torsten
> 


  • Prev by Date: Re: functional programming excercise from Mastering Mathematica
  • Next by Date: Re: Re: Sum
  • Previous by thread: Re: functional programming excercise from Mastering Mathematica
  • Next by thread: using mathematica over the internet