fork download
  1. data Tree a = Val a | Ack (Tree a) (Tree a) deriving Show
  2.  
  3. ack_next (Val a) = Val a
  4. ack_next (Ack (Val 0) (Val b)) = Val (b+1)
  5. ack_next (Ack (Val a) (Val 0)) = Ack (Val (a-1)) (Val 1)
  6. ack_next (Ack (Val a) (Val b)) = Ack (Val (a-1)) (Ack (Val a) (Val (b-1)))
  7. ack_next (Ack a b) = Ack a (ack_next b)
  8.  
  9. ack_loop (Val a) = do
  10.  
  11. ack_loop a = do
  12. ack_loop (ack_next a)
  13.  
  14. main = do
  15. ack_loop (Ack (Val 2) (Val 2))
  16.  
Success #stdin #stdout 0s 4656KB
stdin
Standard input is empty
stdout
Ack (Val 2) (Val 2)
Ack (Val 1) (Ack (Val 2) (Val 1))
Ack (Val 1) (Ack (Val 1) (Ack (Val 2) (Val 0)))
Ack (Val 1) (Ack (Val 1) (Ack (Val 1) (Val 1)))
Ack (Val 1) (Ack (Val 1) (Ack (Val 0) (Ack (Val 1) (Val 0))))
Ack (Val 1) (Ack (Val 1) (Ack (Val 0) (Ack (Val 0) (Val 1))))
Ack (Val 1) (Ack (Val 1) (Ack (Val 0) (Val 2)))
Ack (Val 1) (Ack (Val 1) (Val 3))
Ack (Val 1) (Ack (Val 0) (Ack (Val 1) (Val 2)))
Ack (Val 1) (Ack (Val 0) (Ack (Val 0) (Ack (Val 1) (Val 1))))
Ack (Val 1) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 1) (Val 0)))))
Ack (Val 1) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Val 1)))))
Ack (Val 1) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Val 2))))
Ack (Val 1) (Ack (Val 0) (Ack (Val 0) (Val 3)))
Ack (Val 1) (Ack (Val 0) (Val 4))
Ack (Val 1) (Val 5)
Ack (Val 0) (Ack (Val 1) (Val 4))
Ack (Val 0) (Ack (Val 0) (Ack (Val 1) (Val 3)))
Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 1) (Val 2))))
Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 1) (Val 1)))))
Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 1) (Val 0))))))
Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Val 1))))))
Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Val 2)))))
Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Val 3))))
Ack (Val 0) (Ack (Val 0) (Ack (Val 0) (Val 4)))
Ack (Val 0) (Ack (Val 0) (Val 5))
Ack (Val 0) (Val 6)
7