package net.ciklum.icfpc11.domain.greenspoon10 /** * blabla * @author vic */ @Typed final class CardBuilder { static final Function zero = ConstantFunction.ZERO static final Function I = Identity.IDENTITY static final Function succ = new Succ() static final Function dbl = new Dbl() static final Function get = new Get() static final Function put = new Put() static final Function S = new SCombinator() static Function S(Function arg) { S.apply(arg) } static Function S(Function x, Function y) { S.apply(x).apply(y) } static Function S(Function x, Function y, Function z) { S.apply(x).apply(y).apply(z) } static final Function K = new KCombinator() static Function K(Function x) { K.apply(x) } static Function K(Function x, Function y) { K.apply(x).apply(y) } static final Function inc = new Inc() static final Function dec = new Dec() static final Function attack = new Attack() static Function attack(Function x) { attack.apply(x) } static Function attack(Function x, Function y) { attack.apply(x).apply(y) } static Function attack(Function x, Function y, Function z) { attack.apply(x).apply(y).apply(z) } static final Function help = new Help() static Function help(Function x) { help.apply(x) } static Function help(Function x, Function y) { help.apply(x).apply(y) } static Function help(Function x, Function y, Function z) { help.apply(x).apply(y).apply(z) } static final Function copy = new Copy() static Function copy(Function x) { copy.apply(x) } static final Function revive = new Revive() static Function revive(Function i) { revive.apply(i) } static final Function zombie = new Zombie() static Function zombie(Function x) { zombie.apply(x) } static Function zombie(Function x, Function y) { zombie.apply(x).apply(y) } static Function n(int n) { ConstantFunction.valueOf(n)} }