fun isEven(0) = true | isEven(1) = false | isEven(n) = isEven(n-2); fun isEven(0) = true | isEven(n) = not(isEven(n-1)); (* Ex 3.3.4, turnToInts *) fun turnToInts([]) = [] | turnToInts(true::rest) = 1::turnToInts(rest) | turnToInts(false::rest) = 0::turnToInts(rest); (* turnToBools *) fun turnToBools([]) = [] | turnToBools(0::rest) = false::turnToInts(rest) | turnToBools(x::rest) = true::turnToInts(rest); datatype bird = Robin | Sparrow | Crow | Cardinal; fun containsRobin([]) = false | containsRobin(Robin::rest) = true | containsRobin(x::rest) = containsRobin(rest);