Smalltalk is not a bad recommendation, except for the fact that you don't have much support around it in terms of compiler/interpreters and tools.
A better one--indeed probably the canonical one--is LISP: it operates on lists and every program is a list and it has oodles of tools to redefine itself. Although there are compilers (Franz Lisp), the notion of compiling a LISP program is a bit of an oxymoron...
Best thing is you've got 40 years worth of LISP stuff out there to build on, since its probably by far the most popular language for AI apps.
LISP programmers know the value of everything and the cost of nothing,

Buffy