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 : []
|