summaryrefslogtreecommitdiff
path: root/acker.icl
blob: dc2b0442329086aca41de5a799c2e4cc7d01cf94 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module acker

//	The Ackermann function.

//import StdInt

(+) infixl 6 :: !Int !Int -> Int
(+) a b = code inline {
	addI
}

(-) infixl 6 :: !Int !Int -> Int
(-) a b = code inline {
	subI
}
    
Acker::Int Int -> Int
Acker 0 j =	j + 1
Acker i 0 = Acker (i - 1) 1
Acker i j = Acker (i - 1) (Acker i (j - 1))

Start::Int
Start = Acker 3 7