What Nim calls the Table Constructor as dom96 has correctly pointed out, the lisp world has long called "association lists", often abbreviated "alist".
Since it is a macro you are writing, you could check that the kind of the NimNode is `nnkTableConstr` and if not emit a useful compile-time message for client code, as in something approximately like: import macros macro `@@@`(x: untyped): untyped = if x.kind != nnkTableConstr: error "triple-@ expects a {(,),(,)..} table constructor" var a = @@@{"fromStruct": "blah", "sub": {"joe": 10}} #var b = @@@[1,2,3] #Errors out with above message. Run