I get where you're coming from. But there is something to be said about being 
pragma-tic (heh). Rust (admittedly, not exactly a model citizen in terms of 
syntactic choices) has suffix types, and attribute and derive macros have been 
a part of the language basically from the beginning. It's just easier to tell 
what's what.

This: 
    
    
    proc tryInsertID*(db: TDbConn, query: TSqlQuery,
                      args: varargs[string, `$`]): int64
    {.tags: [FWriteDb], raises: [].} =
      ## executes the query (typically "INSERT") and returns the
      ## generated ID for the row or -1 in case of an error.
      ...
    
    
    Run

is a far cry from this in readability terms: 
    
    
    +[tags: [FWriteDb], raises: []]
    proc tryInsertID*(db: TDbConn, query: TSqlQuery,
                      args: varargs[string, `$`]): int64 =
      ## executes the query (typically "INSERT") and returns the
      ## generated ID for the row or -1 in case of an error.
      ...
    
    
    Run

Reply via email to