CS4026 Formal Models of Computation Running Haskell Programs – power
formal models of computation 2 How functional programs work… We have seen simple programs such as Lets now see how they are executed Given the program above, we get the following: But how? power x 0 = 1 power x (n+1) = x * (power x n) power 2 3 8
formal models of computation 3 How functional programs work… Execution: power 2 3 power x 0 = 1 power x (n+1) = x * (power x n)
formal models of computation 4 How functional programs work… Execution: power 2 3 power x 0 = 1 power x (n+1) = x * (power x n) 3 matches (n+1), assigning 2 to n
formal models of computation 5 How functional programs work… Execution: power * (power 2 2) power x 0 = 1 power x (n+1) = x * (power x n)
formal models of computation 6 How functional programs work… Execution: power * (power 2 2) power x 0 = 1 power x (n+1) = x * (power x n)
formal models of computation 7 How functional programs work… Execution: power * (power 2 2) power x 0 = 1 power x (n+1) = x * (power x n) 2 matches (n+1), assigning 1 to n
formal models of computation 8 How functional programs work… Execution: power * (2 * (power 2 1)) power x 0 = 1 power x (n+1) = x * (power x n)
formal models of computation 9 How functional programs work… Execution: power * (2 * (power 2 1)) power x 0 = 1 power x (n+1) = x * (power x n)
formal models of computation 10 How functional programs work… Execution: power * (2 * (power 2 1)) power x 0 = 1 power x (n+1) = x * (power x n) 1 matches (n+1), assigning 0 to n
formal models of computation 11 How functional programs work… Execution: power * (2 * (2 * (power 2 0))) power x 0 = 1 power x (n+1) = x * (power x n)
formal models of computation 12 How functional programs work… Execution: power * (2 * (2 * (power 2 0))) power x 0 = 1 power x (n+1) = x * (power x n)
formal models of computation 13 How functional programs work… Execution: power * (2 * (2 * (power 2 0))) power x 0 = 1 power x (n+1) = x * (power x n)
formal models of computation 14 How functional programs work… Execution: power * (2 * (2 * (1))) power x 0 = 1 power x (n+1) = x * (power x n)
formal models of computation 15 How functional programs work… Execution: power power x 0 = 1 power x (n+1) = x * (power x n)