I would like to do something like the following:
    
    
    type Encodable = int | string
    type Encoded = object
      ...
    
    proc encode(i: int): Encoded = ...
    proc encode(s: string): Encoded = ...
    proc encode(l: seq[Encodable]): Encoded = ...
    
    
    Run

This seems to compile fine, however I still cannot do something like:
    
    
    let encoded = encode(@[1, "a"])
    
    
    Run

because heterogeneous sequences are not supported. In this scenario, shouldn't 
the common typeclass "unify" the int and string resulting in a homogenous 
sequence?

I know I could use a variant type here, but I would prefer to keep the 
interface as simple as possible.

Is there a suggested workaround for this? Maybe a macro is necessary?

Reply via email to