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
