@LeuGim It seems to me you made a type factory, actually. That's not something 
I would like to see, actually. Especially considering the fact I can't add 
concepts to types already in existence which is, by far, the greatest advantage 
of concepts over inheritance/interfaces.

I tried something like this:
    
    
    import sequtils
    import macros
    
    
    type
      MyCon = concept type T
        # line 7:
        MyCon_reprs.anyIt(it.sameType(T.getType))
    
    var MyCon_reprs {.compileTime.} = newSeq[NimNode]()
    # there is no reliable comparator for NimSym, so use NimNode
    
    proc shout(i: MyCon) =
      echo "I am here!"
    
    static:
      MyCon_reprs.add(int.getType)
      MyCon_reprs.add(float.getType)
      
      echo int.getType in MyCon_Reprs  # false
      for el in MyCon_Reprs:
        echo el, " == ", int.getType, "  is  ", el.sameType(int.getType)
      
      # prints at compile-time:
      #  int == int  is  true
      #  float == int  is  false
    
    
    shout(5)  # XYZ.nim(7, 16) MyCon: cannot evaluate at compile time: 
result112414
    

Which suggests me concepts aren't really integrated into the whole compile-time 
environment all that well...

Reply via email to