There are few problems with your Nim version, e.g. returning `string` instead of `seq[string]` (cause this is what the Python version does - it returns a list).
Here is a correct Nim version: proc cross(xs, ys: string): seq[string] = ## Cross product of elements in A and elements in B. for x in xs: for y in ys: result.add x&y Run