fun isEven(0) = true | isEven(1) = false | isEven(n) = isEven(n-2); fun isEven(0) = true | isEven(n) = not(isEven(n-1)); fun isEven(n) = n mod 2 = 0; (* 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::turnToBools(rest) | turnToBools(x::rest) = true::turnToBools(rest); datatype bird = Robin | Sparrow | Crow | Cardinal | Eagle | Mockingbird; fun containsRobin([]) = false | containsRobin(Robin::rest) = true | containsRobin(x::rest) = containsRobin(rest);