fun merge(a, []) = a | merge([], b) = b | merge(x::restx, y::resty) = if x < y then x::merge(restx, y::resty) else y::merge(x::restx, resty); (* NOTE: The following will *not* work *) fun merge(a, []) = a | merge([], b) = b | merge(x::restx, y::resty) = if x < y then x::y::merge(restx, resty) else y::x::merge(restx, resty);