<= =>
Múltiplas Observações
fact :: Int -> Int
fact 0 = observe "caso paragem" 1
fact (n+1) = observe "caso recursivo"
       (n+1) * fact n
ex5 = runO ( print (fact 6) )
-- caso paragem
  1
-- caso recursivo
  6
-- caso recursivo
  5
-- caso recursivo
  4
-- caso recursivo
  3
-- caso recursivo
  2
-- caso recursivo
  1               
toBin :: Int -> [Int]
toBin = observe "após reverse"
        . reverse
	. observe "após map (`mod` 2)"
	. map (`mod` 2)
	. observe "após takeWhile (/=0)"
	. takeWhile (/=0)
	. observe "após iterate (`div` 2)"
	. iterate (`div` 2)
ex6 = printO (toBin 13)
-- após iterate (`div` 2)
  13 : 6 : 3 : 1 : 0 : _
-- após map (`mod` 2)
  1 : 0 : 1 : 1 : []
-- após reverse
  1 : 1 : 0 : 1 : []
-- após takeWhile (/=0)
  13 : 6 : 3 : 1 : []