>The features I am looking for are
>
>1)enjoyableness
>2)practicalness
>3)alternativeness
>
>with a decent nod to
>
>4)not so long a learning curve (hey, I'm from the TV generation; I need 
>instant kicks).
>  
>
Of the top of my head, these are some of the languages that I've got 
listed to play with at some point in time, or have played with 
previously (note that I've no production level experience):
Lisp - got playing with this on a very boring business trip (there's an 
online interpreter somewhere, google for Lisp tutorial). 
Pros
    - you can do pretty much anything with it (the tutorial leads you 
through writing your own mini-language for an old school adventure game, 
it was an eye-opener how easy it was).
    - lots of other languages take ideas from Lisp, so learning Lisp is 
a good way to expand your knowledge overall (it'll help in many many 
other areas - again based on my limited exposure)
    - I think from your list it covers 1,2 and 3 (but only in my opinion)
Cons
    - notoriously alternative
    - wierd keywords (car?)
    - braces everywhere!
    - not so easy to learn (not 4 in your list)

ML (Ocaml, New Jersey ML, SML, whatever ML) - spent 3 years with one 
version of this at uni, an interesting and wonderful language
Pros
    - it's so easy to do stuff that takes a lot of C
    - functional so completely different from mainstream procedural and 
OO (though I think Ocaml has an object system, the version I learnt on 
didn't)
    - 1 and 3 from your list covered
Cons
    - not very practical (the version I used had no elegant way to do 
IO, I guess that's been fixed now, but I haven't looked at it in a long 
time)
    - learning the language is easy, but the shift to a purely 
functional style of programming is hard to get at first.  I remember 
being asked to do some stuff in C after 1 1/2 years of SML and thinking, 
"It's like 3 lines of SML, why the hell is it so much trouble in C", so 
from my experience, once you get it, it's amazingly powerful and enjoyable

Boo (statically typed, .Net language similar to Python), I've only 
looked at it, I've *never* written a line of Boo code, so these are my 
initial thoughts
Pros
    - like python, but access to .Net libs
    - very practical
    - very alternative
    - looks pretty easy to pick up
    - Pacman ghost as logo!
Cons
    - not much documentation (like most codehaus projects I've got to say)

Erlang (can't remember who makes this, Siemens, Samsung or someone 
involved in telecommunictaions)
Pros
    - looks very powerful for when you need high availability in your code
    - thread management model is very very well thought out
    - extremely alternative
Cons
    - maybe not so practical for all domains
    - I'd imagine a steep learning curve (so far I've not had chance to 
do more than scan the most basic of docs - not even a hello world sample)
    - may not be enjoyable

Eiffel - played with this for the first time about 6 years ago, keep 
meaning to return to it, but never have the time or motivation
Pros
    - practical (there's even a .Net version so you can access the .Net 
libs)
    - alternative (ish)
    - can produce very fast code (compiles to native code)
Cons
    - not the most enjoyable experience I've ever had learning a new 
language
    - quite a bit to learn (different terminology etc)

If you know Java, I'd also suggest looking into the extensions that are 
becoming available.  AspectJ is very cool and as a long-time Java 
developer, AspectJ was a breath of fresh air to play with.  I've got 
quite a bit of experience of it and I think it's a very useful thing to 
learn (at the very least the tutorials show how much cleaner you can 
make your code).  XJ from IBM also looks interesting, it's an embedded 
XML in Java extension, wierd and makes the source code look funky, but I 
think it may have potential too - currently only works on 1.4 (no 
generics etc).

Please note I'm not in any stretch a 'rubyist', I'm still learning how 
ruby works myself, so take all the above with a large pinch of salt.

Kev