%export k k2 k3 k4
        y i cond
        s2 s3 s4 s5
        cond' cond'' times' times''

|| STANDARD COMBINATORS
|| these would be in machine code in a real implementation.

k    arg1 arg2      = arg1
k2 = k . k
k3 = k . k . k
k4 = k . k . k . k

y    arg1           = arg1 (y arg1)
i    arg1           = arg1
cond arg1 arg2 arg3 = arg2, if arg1
                    = arg3, otherwise
s2    arg1 arg2 arg3 = (arg1 arg3) (arg2 arg3)
s3    arg1 arg2 arg3 arg4 = (arg1 arg4) (arg2 arg4) (arg3 arg4)
s4    arg1 arg2 arg3 arg4 arg5 
     = (arg1 arg5) (arg2 arg5) (arg3 arg5) (arg4 arg5)
s5    arg1 arg2 arg3 arg4 arg5 arg6
     = (arg1 arg6) (arg2 arg6) (arg3 arg6) (arg4 arg6) (arg5 arg6)

cond'   = s4 (k cond)
cond''  = s4 (k cond')

times'  = s3 (k (*))
times'' = s3 (k times')
