| Date: Tue, 6 Feb 2001 20:27:37 -0600 (CST) |
| From: Chris Lattner <sabre@nondot.org> |
| To: Vikram S. Adve <vadve@cs.uiuc.edu> |
| Subject: Type notation debate... |
| |
| This is the way that I am currently planning on implementing types: |
| |
| Primitive Types: |
| type ::= void|bool|sbyte|ubyte|short|ushort|int|uint|long|ulong |
| |
| Method: |
| typelist ::= typelisth | /*empty*/ |
| typelisth ::= type | typelisth ',' type |
| type ::= type (typelist) |
| |
| Arrays (without and with size): |
| type ::= '[' type ']' | '[' INT ',' type ']' |
| |
| Pointer: |
| type ::= type '*' |
| |
| Structure: |
| type ::= '{' typelist '}' |
| |
| Packed: |
| type ::= '<' INT ',' type '>' |
| |
| Simple examples: |
| |
| [[ %4, int ]] - array of (array of 4 (int)) |
| [ { int, int } ] - Array of structure |
| [ < %4, int > ] - Array of 128 bit SIMD packets |
| int (int, [[int, %4]]) - Method taking a 2d array and int, returning int |
| |
| |
| Okay before you comment, please look at: |
| |
| http://www.research.att.com/~bs/devXinterview.html |
| |
| Search for "In another interview, you defined the C declarator syntax as |
| an experiment that failed. However, this syntactic construct has been |
| around for 27 years and perhaps more; why do you consider it problematic |
| (except for its cumbersome syntax)?" and read that response for me. :) |
| |
| Now with this syntax, his example would be represented as: |
| |
| [ %10, bool (int, int) * ] * |
| |
| vs |
| |
| bool (*(*)[10])(int, int) |
| |
| in C. |
| |
| Basically, my argument for this type construction system is that it is |
| VERY simple to use and understand (although it IS different than C, it is |
| very simple and straightforward, which C is NOT). In fact, I would assert |
| that most programmers TODAY do not understand pointers to member |
| functions, and have to look up an example when they have to write them. |
| |
| In my opinion, it is critically important to have clear and concise type |
| specifications, because types are going to be all over the programs. |
| |
| Let me know your thoughts on this. :) |
| |
| -Chris |
| |