Re: Homogeneous sequence

new topic     » goto parent     » topic index » view thread      » older message » newer message

CChris wrote:
> You are painfully aware that type checking has a O(N) complexity, where N is
> not the legth, but the number of all atoms in all your subsequences. Reguar
> type checking is probably very inefficient here.

This reminds me of a proposed extension to the type system
that various people, including myself, have thought about before.
It would be intuitively clear, and somewhat useful, to allow
type declarations such as:
sequence of integer x
  sequence of object x
  sequence of sequence x
  sequence of sequence of atom x
  sequence of my_user_defined_type x
  etc.


In many cases this would reduce the type-checking cost from
O(n) to O(1), since the type-check could be limited to a
single value, e.g.

  x[5] = expression

would only have to test x[5], not all of x, as you would need
today if you made your own user-defined type that loops over
all of x to enforce that it only contain elements of say
integer, or some other type.

Stricter types would help to catch bugs earlier in the code, 
and document variables more precisely.

Type information, such as this, could also in many cases 
help the Translator to produce slightly faster C code.

I spent a lot of time thinking about this a few years ago.
I didn't proceed with it because:
  
  * I was worried that since the existing user-defined type
    system is not used all that much, perhaps this enhancement
    to the type system would not be used much either. People 
    might be content to just say:
         sequence x
    rather than the much wordier:
         sequence of integer x
    On the other hand, this enhancement might encourage much more
    use of user-defined types.

  * Newbies might be confused, and put off by all this, 
    thinking it was somehow necessary to provide full and proper
    types for everything.

  * It seemed at the time to be a fair bit of work, and extra 
    baggage added to the language, for just a small gain.

  * In many cases, the Translator deduces this information by
    examining all uses of a variable across the whole program.

But perhaps we should reconsider this idea.

Regards,
   Rob Craig
   Rapid Deployment Software
   http://www.RapidEuphoria.com

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu