About FP, good luck doing this in Nim
[playground](https://www.typescriptlang.org/play#code/JYOwLgpgTgZghgYwgAgKomGZBvAUM5RMACgEoAuZANwHtgATXAX11wQBs4BnL5AWThRQKYAFsADuwiiI4Xukw58hBCQrU69HMgQ0QXGlIB07GgHNiAclGDhKyPUulkLFm049kAFTggA1shiktKyYPIYWHgERGSUtAzauvqGECbmVmC+AUQQjs6urElcWACuEVyUCmAA2gC6yAC8yNUgEADu-LatZAA0yK0dPv5ktbgwNFDIxFKlyDQwyGWYXM4lRjGkQA)
interface Unit {
act(): void
}
class Marine implements Unit {
act(): void { console.log('marine acted') }
}
class Tank implements Unit {
act(): void { console.log('tank acted') }
}
const units: Unit[] = [new Marine(), new Tank()]
for (let u of units) u.act()
Run