Maybe the solution is to make it a syntax error to call a function with a
space between the function name and the argument list...


On Wed, Jun 11, 2014 at 10:47 PM, John Myles White <[email protected]
> wrote:

> Personally, I think the real problem here is the fact that macros take
> optional parentheses. Your example seems like it should work, but it
> effectively was the same as doing:
>
> @printf(("%d,%d\n", 1, 2))
>
> I've started always using parentheses with macros because it helps to
> avoid some of these issues.
>
>  -- John
>
> On Jun 11, 2014, at 7:45 PM, J Luis <[email protected]> wrote:
>
> Hmm, if it has to be, it has to be but the error message is really
> misleading.
>
> ... and BTW the manual example has a space
>
> @name (expr1, expr2, ...)
>
>
> Quinta-feira, 12 de Junho de 2014 3:26:39 UTC+1, Pontus Stenetorp escreveu:
>>
>> On 12 June 2014 11:06, J Luis <[email protected]> wrote:
>> >
>> > Hi, it took me a while and a good dose of swearing to figure this out
>> >
>> > julia> @printf ("%d,%d\n", 1,2)
>> > ERROR: @printf: first or second argument must be a format string
>> >
>> > julia> @printf("%d,%d\n", 1,2)
>> > 1,2
>> >
>> > The difference is only the space between the 'printf' and '('
>> > Does it have to be like that? And can the error message be more
>> correct?
>>
>> The issue is really with the way macros handle their arguments:
>>
>>     http://julia.readthedocs.org/en/latest/manual/metaprogramming/#macros
>>
>> This in combination with the fact that `one(Int)` and `one (Int)` are
>> equivalent, but `@printf("%d", 17)` and `@printf ("%d", 17)` are not.
>> From my own naive stand-point I would vouch for disallowing spaces
>> before the opening parenthesis for function calls a'la `one (Int)`.
>> This, in my opinion, is bad style anyway.  But perhaps I am missing
>> some case where it would be useful.
>>
>> Regards,
>>     Pontus Stenetorp
>>
>
>

Reply via email to