You can have "implicit" currying behaving as you described in a dynamically-typed, strictly evaluated language as well.
But if you eliminate variadicity and macros from a dynamically-typed, strictly evaluated language, you might as well add optional static typing so you can extend that implicit currying into monads, etc.