datatype cs52int = Pos of int list | Zero | Neg of int list; fun isPositive (Pos _) = true | isPositive _ = false; fun isNonzero Zero = false | isNonzero x = true; fun numDigits Zero = 1 | numDigits (Pos x) = length x | numDigits (Neg x) = length x; fun numDigitsOther Zero = 1 | numDigitsOther (Pos []) = 0 | numDigitsOther (Pos (x::xs)) = 1 + numDigitsOther (Pos xs) | numDigitsOther (Neg lst) = numDigitsOther (Pos lst);