I work primarily in Typescript and after reading through the docs a few times I'm still a bit confused about how to use generic types in Nim, especially for data types with multiple generic type parameters. I'm a big fan of and heavy user of effect-ts https://effect.website/ and thought it would be a fun way to learn nim to try building a toy implementation of the Effect type. The gist of the Effect type is `Effect`, 3 generic type params where `A` is the result type, `E` is the possible error type, and `R` is the requirements/context. This type can model any computation and can be manipulated/combined with a huge library of combinators. Effect was inspired by Zio in scala. How might I model the types for something like the following TS in Nim?