Calculation method evaluation
Hope, that somebody will like this code snipped that evaluates Euler algorithm defined in the form of calculation method. The idea was to express original idea as close to mathematical definition as possible.
-- calculation method evaluation following definition by Donald Knuth
data Q = I Int Int |
S Int Int Int Int |
O Int
deriving (Show, Eq)
f (I m n) = S m n 0 1
f (S m n r 1) = S m n (div m n) 2
f (S m n r 2) = if r == 0 then
O n
else
S m n r 3
f (S m n p 3) = S n p p 1
f (O n) = O n
converge p (x:ys@(y:_))
| p x y = y
| otherwise = converge p ys
main = print (converge (==) (iterate f (I 10 2)))
In the case you would like to see evaluation steps just use:
main = print (take 10 (iterate f (I 10 2)))
Written by Alexander Loschilov
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Haskell
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#