set is tailored for high performance hence it's only work with ordinal type.
Are you perhaps thinking like this package? [https://nimble.directory/search?query=functional](https://nimble.directory/search?query=functional) Range in Nim usually is array and seq (cmiiw), and to support argument whether it's array or seq is using openArray[Type] Table should work differently with range so I'm not sure what usage that work either on table or range. About copies or sharing memory, it's been discussed in many threads, like using immutable variable which ensure of sharing, etc.
