I stated before that I was thinking about using Python for AI coding. However, several years ago I dabbled with RapidEuphoria, a very flexible dynamic language. It had a very impressive internal data representation called ‘sequences’, a little bit like LISP:
Arrays in many languages are constrained to have a xed number of elements, and those elements must all be of the same type. Euphoria eliminates both of those restrictions by dening all arrays (sequences) as a list of zero or more Euphoria objects whose element count can be changed at any time. You can easily add a new structure to the employee sequence above, or store an unusually long name in the NAME eld and Euphoria will take care of it for you. If you wish, you can store a variety of dierent employee “structures”, with dierent sizes, all in one sequence. However, when you retrieve a sequence element, it is not guaranteed to be of any type. You, as a programmer, need to check that the retrieved data is of the type you’d expect, Euphoria will not. The only thing it will check is whether an assignment is
legal. For example, if you try to assign a sequence to an integer variable, Euphoria will complain at the time your code does the assignment.Not only can a Euphoria program represent all conventional data structures but you can create very useful, flexible structures that would be hard to declare in many other languages.
It seems to have more similarities to Lisp/Scheme. Because of this it seems like a great language for building AI-systems.
Back in the days it was a commercial package (albeit cheap) and I bought a license for it. A few years back they went Open Source (and changed the name from RapidEuphoria to OpenEuphoria) and the latest version has just been released a few months ago: http://openeuphoria.org/news/16.wc