fixed point

Harris, Andrew Andrew.Harris at jhuapl.edu
Sun Oct 26 19:24:26 EST 2003


Hi -

	I am trying to do Exercise 9.9 in HSOE; and I've come up with an
answer that works but I'm not sure if it answers the question properly.  The
problem is:

The Question:
-------------

Suppose we define a function "fix" as:

fix f = f (fix f)

Suppose further we have a recursive function:

remainder :: Integer -> Integer -> Integer
remainder a b = if a < b then a
                else remainder (a - b) b

Rewrite this function using "fix" so that it's not recursive.

My Answer:
----------

wierdFunc x y z = if y - z > z then ((\a b c -> a b c) x (y-z) z)
                  else ((\a b c -> a b c) (\d e -> d) (y-z) z)

myRemainder = fix wierdFunc

My Question:
------------

Does the ((\a b c -> a b c) x (y-z) z) mean that I've not removed the
recursion?  I was assuming that I was returning a function that is to be
evaluated and not actually doing any recursion.  That's why I thought I
answered the question.  However, I have a headache now and would like
another opinion.

thanks,
-andrew


More information about the Haskell-Cafe mailing list