People have complex and varying needs. To be as friendly, useful, readable, and intuitive as possible, a language must offer a breadth and depth of functionality that extends its intuitive characteristics into many areas. The ideal language will support at the low end a variety of data types and structures that support common activities. It will also provide many high level operations to support common tasks.
Data structures include lists (arrays), property lists (dictionaries, hash tables), trees (a hybrid of lists and property lists which corresponds to the structure of an XML document), and ranges. Values stored in these data structures can be numbers, text strings, colors, and date/time values. Lists and property lists can contain a mixture of values and be nested to any depth.
SenseTalk includes all of the following capabilities. Most of these capabilities are implemented in a readable, English-like way that embodies the other qualities described earlier.
- List operations (insert, delete, insert nested, push, pop, pull, sort, sublists)
- Property list operations (retain, replace, add, remove)
- Iterators (lists, ranges, chunks, database queries, custom iterators)
- Repeat loops of many types (count, duration, sequence, chunks, iterators)
- Exceptions (try/catch, throw)
- Flow control (next repeat, exit repeat, pass message)
- Modularity through scripts and handlers (command, function, generic)
- Multiple assignment (set multiple variables to one value or to multiple values, gather remaining values)
- References to any container (pass by reference and more, including references to chunks)
- Repeat by reference, etc.
- File access (files as containers, traditional file open/read/write/close)
- Binary data
- String encodings
- URL access
- Socket communications
- HTTP, XMLRPC, JSON support
- XML support
- Merge function
- Database access
- Objects, prototypes, helpers (multiple inheritance)
- Messaging / inheritance / ability to override built-in commands and functions
- Sound / music support
- Predefined variables
- Extensible: xmodules, shell calls