1. [POLL] Typing elements within a Type

Hello all

The next poll is presented below.

There is no strict time limit on the poll. You can argue as long as you want,
but please do so in a different thread from this POLL thread. If you want to make
sure I allow enough time, just say clearly in this thread what you want (and post
your arguments elsewhere).

Votes in the poll are limited to the specific questions asked.

1. Do you support the introduction of syntax in one of the following forms to
allow a programmer to declare the types of elements within a user-defined type
based on a sequence?
[ANSWER YES OR NO]

Variation A1:

type customer( sequence x )
   fields
      integer x[1]
      sequence x[2]
      sequence x[3]
   end fields
   -- insert other code here
end type


Variation B1:

type customer( sequence x )
   fields
      integer  -- x[1] is assumed
      sequence -- x[2] is assumed
      sequence -- x[3] is assumed
   end fields
   -- insert other code here
end type

2. Regardless of your answer to the previous question:-

   (a)   which variation do you prefer? {ANSWER A1 or B1]

   (b)   would you support the introduction of both together?
         [ANSWER YES OR NO]

3. Regardless of your previous answers, do you support the introduction of
syntax of the same kind but with naming of elements, like this:
[ANSWER YES or NO]

Variation A2:

type customer( sequence x )
   fields
      integer  x[1] id
      sequence x[2] name
      sequence x[3] address
   end fields
   -- other code here
end type


Variation B2:

type customer( sequence x )
   fields
      integer  id       -- x[1] is assumed
      sequence name     -- x[2] is assumed
      sequence address  -- x[3] is assumed
   end fields
   -- other code here
end type

4. Regardless of your answer to the previous question:-

   (a)   which variation do you prefer? {ANSWER A2 or B2]

   (b)   would you support the introduction of both together?
         [ANSWER YES OR NO]

5. Regardless of your previous answers, if syntax with naming were introduced,
would you prefer the elements in an object declarded with this type to be
accessible by:- [ANSWER a or b]

   (a)   dot access e.g. customer_x.name; or

   (b)   subscript/indexes e.g. customer_x[name]

6. Regardless of your previous answers, if such syntax were introduced (with or
without naming), would you prefer it to imply: [ANSWER a or b]
   
   (a)   length(x) = 3 -- the interpreter would enforce this

         -- or merely

   (b)   length(x) >= 3?

COMMENTS:

The questions have been derived from a thread started by Salix on 19/8/07
entitled "Type - Start Again". Since that thread, a poll has supported the
introduction of syntax like the following (though not yet implemented):

   sequence of integer
   sequence of sequence of integer

If introduced, such syntax could be available in the examples either in the
parameter of the type or in the field block. E.g.

   type customer( sequence of sequence x ) -- etc

   -- OR

   type customer( sequence x )
      fields:
         sequence of integer x[1] -- or equivalent for variation B.
          -- etc

This may be relevant to your consideration of the questions.

Regards
Peter Robinson

new topic     » topic index » view message » categorize

2. Re: [POLL] Typing elements within a Type

Peter Robinson wrote:
 
1. NO 
2(a). B1
2(b). NO
3. YES
4(a). B2
4(b). NO
5. a
6. a


In summary, I would support only Named fields whose index was implied by its
lexical ordering in the declaration, and access to those fields would be via
'dot' notation. Structures that are declared using fields should be limited to
containing only those fields and not extra elements.

Because Names rather than numbers, make it easier to document and write with
less errors. The 'dot' notation helps keep the scope of the field names linked to
the structure's declaration - it is less ambiguous for the interpreter to workout
how to reference the field you are after.

However, normal index notation should also be allowed to access the fields in
the structure.

  Thus
     cust.name = "Derek"
  and 
     cust[1] = "Derek" 

should be equivalent.

-- 
Derek Parnell
Melbourne, Australia
Skype name: derek.j.parnell

new topic     » goto parent     » topic index » view message » categorize

3. Re: [POLL] Typing elements within a Type

1.    YES
2a.   B1
2b.   NO
3.    YES
4a.   B2
4b.   NO
5.    (a) 
6.    see below

With regard to item 5, I agree with Derek: the field name should take a dot, but
[] could also be used with a numeric index.


I strongly believe that the programmer should have the option to enforce whether
variable length is allowed or not. What I have in mind would be the analog of
Ruby's * prefix for the last argument in an argument list.

A possibility would be

type foo (sequence x)
   fields 
      integer q
      string  r
      *sequence s
   end fields
end type

to indicate that s is to be assigned x[3..$].

Other notations are possible and a word, perhaps "collect", would be more
Euphoric than * or any other symbol:

2a.   B1
2b.   NO
3.    YES
4a.   B2
4b.   NO
5.    (a) 
6.    see below

With regard to item 5, I agree with Derek: the field name should take a dot, but
[] could also be used with a numeric index.


I strongly believe that the programmer should have the option to enforce whether
variable length is allowed or not. What I have in mind would be the analog of
Ruby's * prefix for the last argument in an argument list.

A possibility would be

type foo (sequence x)
   fields 
      integer q
      string  r
      collect s
   end fields
end type

new topic     » goto parent     » topic index » view message » categorize

4. Re: [POLL] Typing elements within a Type

1. Yes
2(a). A1
2(b). No
3(a2) Yes
3(b2) No
4(a) A2
4(b) No
5 B
6 A

new topic     » goto parent     » topic index » view message » categorize

5. Re: [POLL] Typing elements within a Type

Peter Robinson wrote:

> 1. Do you support the introduction of syntax in one of the following forms to
> allow a programmer to declare the types of elements within a user-defined type
> based on a sequence?
> [ANSWER YES OR NO]
> 
> Variation A1:
> 
> type customer( sequence x )
>    fields
>       integer x[1]
>       sequence x[2]
>       sequence x[3]
>    end fields
>    -- insert other code here
> end type
> 
> 
> Variation B1:
> 
> type customer( sequence x )
>    fields
>       integer  -- x[1] is assumed
>       sequence -- x[2] is assumed
>       sequence -- x[3] is assumed
>    end fields
>    -- insert other code here
> end type
> 

NO

> 2. Regardless of your answer to the previous question:-
> 
>    (a)   which variation do you prefer? {ANSWER A1 or B1]
> 

B1

>    (b)   would you support the introduction of both together?
>          [ANSWER YES OR NO]

YES

> 
> 3. Regardless of your previous answers, do you support the introduction of
> syntax
> of the same kind but with naming of elements, like this:
> [ANSWER YES or NO]
> 
> Variation A2:
> 
> type customer( sequence x )
>    fields
>       integer  x[1] id
>       sequence x[2] name
>       sequence x[3] address
>    end fields
>    -- other code here
> end type
> 
> 
> Variation B2:
> 
> type customer( sequence x )
>    fields
>       integer  id       -- x[1] is assumed
>       sequence name     -- x[2] is assumed
>       sequence address  -- x[3] is assumed
>    end fields
>    -- other code here
> end type
> 

YES

> 4. Regardless of your answer to the previous question:-
> 
>    (a)   which variation do you prefer? {ANSWER A2 or B2]
> 

B2

>    (b)   would you support the introduction of both together?
>          [ANSWER YES OR NO]
> 

YES

> 5. Regardless of your previous answers, if syntax with naming were introduced,
> would you prefer the elements in an object declarded with this type to be
> accessible
> by:- [ANSWER a or b]
> 
>    (a)   dot access e.g. customer_x.name; or
> 
>    (b)   subscript/indexes e.g. customer_x[name]
> 

a

> 6. Regardless of your previous answers, if such syntax were introduced (with
> or without naming), would you prefer it to imply: [ANSWER a or b]
>    
>    (a)   length(x) = 3 -- the interpreter would enforce this
> 
>          -- or merely
> 
>    (b)   length(x) >= 3?
> 

b

> Regards
> Peter Robinson

CChris

new topic     » goto parent     » topic index » view message » categorize

6. Re: [POLL] Typing elements within a Type

1  yes
2a A1
2b no
3  yes
4a A2
4b no
5  b
6  b

Rgds,

Salix

new topic     » goto parent     » topic index » view message » categorize

7. Re: [POLL] Typing elements within a Type

Hi all

Not many voters so far. No problem if you want to leave it to others, but I'll
keep it open for a while, just in case. In the past, quite a few have been
interested in this kind of proposal.

Cheers
Peter Robinson

new topic     » goto parent     » topic index » view message » categorize

8. Re: [POLL] Typing elements within a Type

Peter Robinson wrote:
> 
> 1. Do you support the introduction of syntax in one of the following forms to
> allow a programmer to declare the types of elements within a user-defined type
> based on a sequence?
> [YES]
> 
> 2. Regardless of your answer to the previous question:-
> 
>    (a)   which variation do you prefer? [B1]
> 
>    (b)   would you support the introduction of both together?
>          [NO]
> 
> 3. Regardless of your previous answers, do you support the introduction of
> syntax
> of the same kind but with naming of elements, like this:
> [YES]
> 
> 4. Regardless of your answer to the previous question:-
> 
>    (a)   which variation do you prefer? [B2]
> 
>    (b)   would you support the introduction of both together?
>          [NO]
> 
> 5. Regardless of your previous answers, if syntax with naming were introduced,
> would you prefer the elements in an object declared with this type to be
> accessible
> by:- [a]
> 
> 6. Regardless of your previous answers, if such syntax were introduced (with
> or without naming), would you prefer it to imply: [a]

Make it so. ;)

new topic     » goto parent     » topic index » view message » categorize

9. Re: [POLL] Typing elements within a Type

Peter Robinson wrote:
> Not many voters so far. No problem if you want to leave it to others, but I'll
> keep it open for a while, just in case. In the past, quite a few have been
> interested
> in this kind of proposal.

I'll vote within a few days.
I just haven't had time to think about it yet.

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

new topic     » goto parent     » topic index » view message » categorize

10. Re: [POLL] Typing elements within a Type

Thanks Rob. I'll certainly keep it open at least until then,

Cheers
PR

new topic     » goto parent     » topic index » view message » categorize

11. Re: [POLL] Typing elements within a Type

Hello Peter,

I've already voted but there a few things I'm not sure I understood correctly. 

== 2nd question ==

I voted for A1 but do I understand right that A1 would allow me to define 
things also this way? 

Variation A1 (modified)
type customer( sequence x )
   fields
      integer x[1]
      sequence x[2]
      sequence x[3]
      atom x[3][1]
      integer x[3][2]
      atom x[3][3]
   end fields
   -- insert other code here
end type


What do you mean by "other code"? Wouldn't you (we smile ) want to allow 
this syntax?

Variation A1 (modified)
type customer( sequence x )
   fields
      integer x[1]
      sequence x[2]
      sequence x[3]
      x[1]>0
      x[1]<100
   end fields
   -- insert other code here
end type


I don't think that the clarification would influence my answer given earlier 
but might be useful information for others. It might also help me to understand 
what to expect. (What about B1?)

== 3rd question ==

I voted for A2 but does it also meant that you can use it like this?

Variation A2 (modified)
type customer( sequence x )
   fields
      integer x[1]    id
      sequence x[2]   name
      sequence x[3]   address
      atom x[3][1]    ZIP -- smile
      integer x[3][2] nr -- house nr
      atom x[3][3]    floor 
   end fields
   -- other code here
end type

customer x
x={0,"",{0,0,0}}
x[id]=1
x[name]="Szabó András"
x[address][ZIP]=2475
x[address][nr]=18
x[address][floor]=1

 
Again, I don't think your explanation will change my vote, it's just that 
I want to have a clear picture what we're taliking about and possibly help
the future voters. (What about B2?)

Thanks in advance!

Salix

new topic     » goto parent     » topic index » view message » categorize

12. Re: [POLL] Typing elements within a Type

Hi Salix

I deliberately limited these questions to typing and aliasing the first
dimension i.e. x[1..$] and did not include the variations for typing deeper
dimensions or the one along the lines that boolean expressions could be expressed
in short-hand assertions something like this -

length(x) > 10
length(x) < 100

So the questions are as limited as they look. You can assume that in any poll I
run, the question goes only as far as it states - no hidden agenda. I restrict
the issues as much as possible because multiple issues can make the poll
indecisive, so if I wanted to add these extra ideas I would have framed them as
separate questions.

Of course, if the "of" construct were available generally, it would provide
deeper typing within the type block, which would solve part of the issues you
raise, but it would not allow naming of deeper elements.

I didn't include these suggestions of mine because I didn't think they received
enough support in the discussion thread to warrant going to a vote, although I
haven't abandoned them in my mind as ideas worth considering. I don't want the
polls to simply be a vehicle to push ideas that don't have general support. If
you think the ideas should be discussed more by all means raise a new thread. The
poll results are as limited as the questions, and the more you read the threads,
the more you wonder whether they would say something else entirely if they
happened on a different day with different personnel.

Cheers
Peter Robinson

new topic     » goto parent     » topic index » view message » categorize

13. Re: [POLL] Typing elements within a Type

1. No. Matt has convinced me the problems this is attempting to address would be
better done a whole new way.
2a. A1
2b. No
3. No
4a. A2
4b. No
5 b
6 a

Regards,
Pete

new topic     » goto parent     » topic index » view message » categorize

14. Re: [POLL] Typing elements within a Type

1 No 
2a b1
2b No
3 Yes
4a b2
4b No
5 a
6 a


Yours, OtterDad

Don't sweat it -- it's not real life. It's only ones and zeroes. Gene Spafford

new topic     » goto parent     » topic index » view message » categorize

15. Re: [POLL] Typing elements within a Type

1. No
2.a. B1
2.b. No
3. Yes
4.a. B2
4.b. No
5. (a) and (b)
6. b

Matt

new topic     » goto parent     » topic index » view message » categorize

16. Re: [POLL] Typing elements within a Type

Peter Robinson wrote:
> 1. Do you support the introduction of syntax in one of the following forms to
> allow a programmer to declare the types of elements within a user-defined type
> based on a sequence?
> [ANSWER YES OR NO]
> 
> Variation A1:
> 
> type customer( sequence x )
>    fields
>       integer x[1]
>       sequence x[2]
>       sequence x[3]
>    end fields
>    -- insert other code here
> end type
> 
> 
> Variation B1:
> 
> type customer( sequence x )
>    fields
>       integer  -- x[1] is assumed
>       sequence -- x[2] is assumed
>       sequence -- x[3] is assumed
>    end fields
>    -- insert other code here
> end type

NO
 
> 2. Regardless of your answer to the previous question:-
> 
>    (a)   which variation do you prefer? {ANSWER A1 or B1]

B1
 
>    (b)   would you support the introduction of both together?
>          [ANSWER YES OR NO]

NO
 
> 3. Regardless of your previous answers, do you support the introduction of
> syntax
> of the same kind but with naming of elements, like this:
> [ANSWER YES or NO]
> 
> Variation A2:
> 
> type customer( sequence x )
>    fields
>       integer  x[1] id
>       sequence x[2] name
>       sequence x[3] address
>    end fields
>    -- other code here
> end type
> 
> 
> Variation B2:
> 
> type customer( sequence x )
>    fields
>       integer  id       -- x[1] is assumed
>       sequence name     -- x[2] is assumed
>       sequence address  -- x[3] is assumed
>    end fields
>    -- other code here
> end type

MAYBE 
 
> 4. Regardless of your answer to the previous question:-
> 
>    (a)   which variation do you prefer? {ANSWER A2 or B2]

B2
 
>    (b)   would you support the introduction of both together?
>          [ANSWER YES OR NO]

NO
 
> 5. Regardless of your previous answers, if syntax with naming were introduced,
> would you prefer the elements in an object declarded with this type to be
> accessible
> by:- [ANSWER a or b]
> 
>    (a)   dot access e.g. customer_x.name; or
> 
>    (b)   subscript/indexes e.g. customer_x[name]

NOT SURE
 
> 6. Regardless of your previous answers, if such syntax were introduced (with
> or without naming), would you prefer it to imply: [ANSWER a or b]
>    
>    (a)   length(x) = 3 -- the interpreter would enforce this
> 
>          -- or merely
> 
>    (b)   length(x) >= 3?
> 

NOT SURE

> COMMENTS:

Adding a new run-time type to the backend for "structures",
along with integers, doubles, and sequences, 
would be prohibitively expensive, as I've stated
many times before, however it might be a good thing to
allow some syntactic way to declare structure types 
in the front end, with names and types of members specified, 
and optional type-checking by the interpreter, as long as a 
structure is just an ordinary sequence as far as the 
backend is concerned.

However, I think we should probably implement the 
"sequence of integer", etc. enhancement, and try it out 
for a while, before we try to firmly decide on the 
syntax for structure types with naming of fields, scope rules etc. 

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

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu