calls and constructs should accept empty argument lists, but also not fail on any other argument passing styles. <<< greet() make{} greet(1) greet(1, 2) greet(x = 5) make{x = 1, y = 2} greet(1, x = 5) >>> (expr (call (expr (name greet)))) (expr (construct (expr (name make)))) (expr (call (expr (name greet)) (arg (expr 1)))) (expr (call (expr (name greet)) (arg (expr 1)) (arg (expr 2)))) (expr (call (expr (name greet)) (named arg 'x' (expr 5)))) (expr (construct (expr (name make)) (named arg 'x' (expr 1)) (named arg 'y' (expr 2)))) (expr (call (expr (name greet)) (arg (expr 1)) (named arg 'x' (expr 5))))