Today I was external examinator for a programming language course at
the University of Aalborg. Most of the designs are pretty
unimaginative - think reskins of tiny subsets of Java. However, one
group had managed, almost by accident, to construct a dynamically
typed language with records (they called them "objects"), static
scoping, and first class functions. That is, a pretty comfortable
Lisp! (Although without s-expressions.)
I don't think they quite understood what they had done. When I showed
them how to define a fully capable OOP system in their language (using
closures), some of them suggesting that perhaps their language should
be restricted so that this would not be possible.