dmd 1.046 and 2.031 releases

Charles Hixson charleshixsn at earthlink.net
Wed Jul 8 19:03:07 PDT 2009


Jérôme M. Berger wrote:
> Andrei Alexandrescu wrote:
>> Jérôme M. Berger wrote:
>>> Andrei Alexandrescu wrote:
>>>> Jérôme M. Berger wrote:
>>>>> Andrei Alexandrescu wrote:
>>>>>> Jérôme M. Berger wrote:
>>>>>>> Andrei Alexandrescu wrote:
>>>>>>>> Derek Parnell wrote:
>>>>>>>>> It seems that D would benefit from having a standard syntax 
>>>>>>>>> format for
>>>>>>>>> expressing various range sets;
>>>>>>>>>  a. Include begin Include end, i.e. []
>>>>>>>>>  b. Include begin Exclude end, i.e. [)
>>>>>>>>>  c. Exclude begin Include end, i.e. (]
>>>>>>>>>  d. Exclude begin Exclude end, i.e. ()
>>>>>>>>
>>>>>>>> I'm afraid this would majorly mess with pairing of parens.
>>>>>>>>
>>>>>>>     I think Derek's point was to have *some* syntax to mean this, 
>>>>>>> not necessarily the one he showed (which he showed because I 
>>>>>>> believe that's the "standard" mathematical way to express it for 
>>>>>>> English speakers). For example, we could say that [] is always 
>>>>>>> inclusive and have another character which makes it exclusive like:
>>>>>>>  a. Include begin Include end, i.e. [  a .. b  ]
>>>>>>>  b. Include begin Exclude end, i.e. [  a .. b ^]
>>>>>>>  c. Exclude begin Include end, i.e. [^ a .. b  ]
>>>>>>>  d. Exclude begin Exclude end, i.e. [^ a .. b ^]
>>>>>>
>>>>>> I think Walter's message really rendered the whole discussion 
>>>>>> moot. Post of the year:
>>>>>>
>>>>>> =========================
>>>>>> I like:
>>>>>>
>>>>>>    a .. b+1
>>>>>>
>>>>>> to mean inclusive range.
>>>>>> =========================
>>>>>>
>>>>>> Consider "+1]" a special symbol that means the range is to be 
>>>>>> closed to the right :o).
>>>>>>
>>>>>     Ah, but:
>>>>>  - This is inconsistent between the left and right limit;
>>>>>  - This only works for integers, not for floating point numbers.
>>>>
>>>> How does it not work for floating point numbers?
>>>>
>>>     Is that a trick question? Depending on the actual value of b, you 
>>> might have b+1 == b (if b is large enough). Conversely, range a .. 
>>> b+1 may contain a lot of extra numbers I may not want to include 
>>> (like b+0.5)...
>>
>> It wasn't a trick question, or it was of sorts. If you iterate with 
>> e.g. foreach through a floating-point range that has b == b + 1, 
>> you're bound to get in a lot of trouble because the running variable 
>> will be incremented.
>>
>     Well:
>  - A floating point range should allow you to specify the iteration 
> step, or else it should allow you to iterate through all numbers that 
> can be represented with the corresponding precision;
>  - The second issue remains: what if I want to include b but not b+ε for 
> any ε>0?
> 
>         Jerome
I'd say that a floating point range requires a lazy interpretation, and 
should only get evaluated on an as-needed basis.  But clearly open, 
half-open, and closed intervals aren't the same kind of thing as ranges. 
  They are more frequently used for making assertions about when 
something is true (or false).  I.e., they're used as an integral part of 
standard mathematics, but not at all in computer science (except in VERY 
peculiar cases).   In math one makes a assertion that, say, a particular 
equation holds for all members of an interval, and open or closed is 
only a statement about whether the end-points are included in the 
interval.  Proof isn't usually be exhaustive calculation, but rather by 
more abstract reasoning.

It would be nice to be able to express mathematical reasoning as parts 
of a computer program, but it's not something that's likely to be 
efficiently implementable, and certainly not executable.  Mathematica 
can do that kind of thing, I believe, but it's a bit distant from a 
normal computer language.


More information about the Digitalmars-d-announce mailing list