I have now come to realize how great Common Lisp is for small UI-less tasks like solving Sudoku puzzles or cheating on Facebook’s Word Challenge.
So after scoring high in my language power and crunching power tests I had to put Common Lisp thru the next challenge: C/C++ interoperability. The good news is that Lisp has a Python-ctypes-like mechanism for calling into native code, the bad news is that the syntax for it seems as alien to me as the syntax for everything else in Lisp. Once I began to get the hang of it, wrapping native C libraries with the Common Foreign Function Interface was in fact almost as easy as in Python. However CFFI lacks the automatic parameter inference that ctypes has so you need to define all functions and specify all their arguments explicitly (so it’s more like C#’s Interop than ctypes). But still I’m grateful I don’t have to fiddle with a C compiler like in the Java native method brain damage.
The great thing is that SWIG has a CFFI target so automatic binding generation is possible for C code. (Swig claims it supports C++ too but I haven’t played with that yet. It says C++ support is ‘experimental’)
My attempt to generate gtk+ bindings with SWIG, however, was a failure. It took forever to fix the generated .lisp wrapper so that it compiles. I did manage to create a window with a button in it but I couldn’t figure out how to make the GTK signal mechanisms to work. Fortunately, clbuild can install clg which worked great ;-D
The SWIG-generated bindings for SDL, however, worked great (unlike the cl-sdl bindings on sourceforge)! I have now my own bindings for SDL, SDL_ttf and SDL_image (I’m sure SDL_mixer would work too if I ever get around to it). I have developed my own 2D and even OpenGL programs (using SDL to provide an OpenGL surface and the cl-opengl from clbuild to do the actual OpenGL calls). Here’s a screenshot:

Now if only I could come up with an inspiring idea for a 2D or 3D graphics-intensive application!
Anyways, my final verdict is that Common Lisp has good interoperability with C, and so it remains without any major flaws in my book for now. (The syntax doesn’t count here as I haven’t decided if it’s a flaw or a great feature yet.)
I’m still very doubtful that Lisp will become my preferred language for my own personal programming needs – I can’t see it displacing Python any time soon. But for now it definitely seems worth the time and effort and I’ve been having too much serious fun with it to even consider giving up on it.