RosettaCodeData/Task/Ackermann-function/Agda/ackermann-function-1.agda

26 lines
574 B
Agda
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
module Ackermann where
open import Data.Nat using ( ; zero ; suc ; _+_)
ack :
ack zero n = n + 1
ack (suc m) zero = ack m 1
ack (suc m) (suc n) = ack m (ack (suc m) n)
open import Agda.Builtin.IO using (IO)
open import Agda.Builtin.Unit using ()
open import Agda.Builtin.String using (String)
open import Data.Nat.Show using (show)
postulate putStrLn : String IO
{-# FOREIGN GHC import qualified Data.Text as T #-}
{-# COMPILE GHC putStrLn = putStrLn . T.unpack #-}
main : IO
main = putStrLn (show (ack 3 9))
-- Output:
-- 4093