The exercise is short.

First, he defines a "fix" function:
        fix f = f (fix f)
Which has the type (a -> a) -> a

Then the function "remainder":
        remainder :: Integer -> Integer -> Integer
        remainder a b = if a < b then a else remainder (a - b) b

The function fix, has far as i understand the matter, has no base case.
So if someone wants to evaluate it, it will indefinitely apply the function f
to itself, leading the hugs interpreter to its end.

That's ok. But next he asks the reader to rewrite the function remainder
using fix and i cannot find out how.

I tried something like:
        remainder2 a b = fix (\x -> x - b)
but there is no base case too.

As soon as the lambda expression wants to evaluate its argument, the interpreter
crashes.

Can someone help me to solve the problem ?

TIA

Ludovic Kuty


_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to