Hi!

I found syntax to make me a generic Object variant: 
    
    
    type myType = enum ok, error
    type myVariant[T] = object
      case kind: myType
      of ok: value: T
      of error: msg: string
    
    
    Run

Now when constructing such an object, I need to pass the type `T`, even when it 
could be inferred (or at least, it seems to me that it could). Why is that?

`myVariant(kind: ok, value: 42)` is not accepted by the compiler, though `T` 
has to be an `int` `myVariant[int](kind: ok, value: 42)` is fine. I understand 
that `myVariant(kind: error, msg: "oops")` is ambiguous, as is `myVariant(kind: 
ok)`.

A related question might be why the latter is valid - I'd be happy if the 
compiler enforced a value for the `value` field, because I can always make it 
optional in other ways.

Reply via email to