leaving aside the question of whether its a good idea, here's how to get it to 
compile:

with devel and new-style concepts: 
    
    
    type
      Concept0* = concept
        proc copy_C0(x:Self):Self
        proc init_C0(x:var Self)
      
      Concept1* = concept
        proc copy_C1(s:Self,x:Concept0):Self
        proc init_C1(s:var Self,x:Concept0)
      
      Concept2* = concept
        proc copy_C2(s:Self,x:Concept1):Self
        proc init_C2(s:var Self,x:Concept1)
    
    
    Run

with old-style concepts: 
    
    
    type
      Concept0* = concept c,var v,type t
        copy_C0(c) is t
        init_C0(v)
      
      Concept1*[T:Concept0] = concept c, var v, type t
        copy_C1(c,T) is t
        init_C1(v,T)
      
      Concept2*[T:Concept1] = concept c,var v, type t
        copy_C2(c,T) is t
        init_C2(v,T)
    
    
    Run

Reply via email to