REBOL [
    Title:   "Ackermann"
    Author:  "Aldo Calpini"
    Date:    03-Jul-2001
    File:    %ackermann.r
]

Ack: func [M N] [
    return either M > 0  
        [ either N > 0 
            [ Ack M - 1 Ack M N - 1 ]
            [ Ack M - 1 1 ]
        ]
        [ N + 1 ]
]

NUM: to-integer to-string first system/script/args
NUM: either NUM < 1 [ 1 ] [ NUM ]
R: Ack 3 NUM
print rejoin [ "Ack(3," NUM "): " R ]