Charles E Campbell Jr wrote:
> Ben Schmidt wrote:
>   
>> Ben Schmidt wrote:
>>   
>>     
>>>> OTOH, with & there is no ambiguity because the various uses of & are 
>>>> strictly separated:
>>>>       
>>>>         
>>> Actually, there still is ambiguity unless one requires a decimal point or 
>>> exponent. Without that restriction
>>>
>>> &123.456
>>>
>>> could still mean 123 (or 123.0) concatenated with 456. But with the 
>>> restriction
>>>
>>> &123
>>>
>>> is invalid. Not sure whether that's desirable. Probably the lesser of two 
>>> evils. 
>>> Of course, it needs to be enforced that printf and such functions either 
>>> omit the 
>>> ampersand for floats which happen to be integers (probably undesirable) or 
>>> always 
>>> append a '.0' in this case.
>>>
>>> Would wrapping floats in braces be a better syntax? I don't think this 
>>> would clash 
>>> with anything: dictionaries require keys followed by colons which don't 
>>> occur in 
>>> floats, and a float is also an invalid variable or function name due to 
>>> starting 
>>> with a digit or sign (+/-) so couldn't be used as part of curly-brace 
>>> variable or 
>>> function names. E.g.
>>>
>>> :let myfloat={12.52}
>>> :let mybig={1234e56}
>>> :let myintegerfloat={123}
>>>
>>> To me, this is nicer than a leading &, and avoids the nasty restriction of 
>>> needing 
>>> a decimal point all the time/ambiguity of decimal point vs. concatenation.
>>>     
>>>       
>> Actually, to clarify, my proposal is that a set of curly braces is taken to 
>> represent a float if and only if it is (1) not preceded by a valid variable 
>> name 
>> character and (2) contains a valid float.
>>
>> I.e. floats:
>>
>> {+123.456}
>> {-123}
>> {123e-4}
>> {123.456}something_to_concatenate
>>
>> non-floats:
>>
>> {dictionary: 'value'}
>> variable_name_with_number_{123}
>> variable_name_with_number_and_variable_e_concatted_and_included_{123e4}
>> variable_name_with_six_digits_here_{123.456}
>> {variable_name_from_a_variable}
>> {10<x?'variable_1':'variable_2'}
>>
>> combination!:
>>
>> variable_name_with_float_expression_giving_{{0.55}<some_float?'true':'false'}
>> variable_name_with_float_that_prints_as_integer_{{123}}
>>
>> invalid:
>>
>> variable_name_with_punctuation_due_to_float_{{123.456}}
>>
>> I think it works unambiguously and sensibly, though, of course, you can 
>> still do 
>> dumb things if you try hard enough! But I don't think it breaks anything 
>> that 
>> currently works (even if what currently works is dumb)!
>>   
>>     
> let x12=3
> echo x{1.2}
>
> Works quite nicely -- and is ambiguous with respect to floating point 
> overloading.
>   
Sorry -- forgot about the no leading variable-name characters (ie. 
[a-zA-Z:_<>]).

Regards,
Chip Campbell


--~--~---------~--~----~------------~-------~--~----~
You received this message from the "vim_dev" maillist.
For more information, visit http://www.vim.org/maillist.php
-~----------~----~----~----~------~----~------~--~---

Raspunde prin e-mail lui