yafib (yet another fib)
code:haskell
fib0 = fst . foldr phi (0,1) . binary
phi k (a,b) = bool (d, c + d) (c, d) (k == 0)
where
c = a * (2 * b - a)
d = a * a + b * b
binary = unfoldr psi
psi = \ case
0 -> Nothing
n -> Just (swap (divMod n 2))
fib = fst . hylo phi (0,1) psi