[Kde-bindings] Lisp + Smoke

Jonathan Gardner jgardner at jonathangardner.net
Wed Apr 2 15:13:04 UTC 2008

Richard Dale wrote:
> On Wednesday 02 April 2008 04:50:44 Jonathan Gardner wrote:
>> I am interested in seeing KDE/Qt in Lisp. I think Smoke is the ideal
>> candidate for this.
>> Questions: How does smoke work?
>> I am playing with PerlQt right now. Even though I am an extremely
>> experienced perl hacker (I get paid to do it) I still have a hard time
>> reading perl code, especially XS. Any pointers would be appreciated.
> The QtRuby bindings are based on the PerlQt code, but they are much easier to 
> read.
Thanks for that tip. I didn't think about that. I've actually had to 
implement a Python C module using the Ruby C module as a prototype and 
it was a wonderful experience. Ruby has a clean C interface that is 
pretty easy to pick up.
> The heart of the smoke approach for dynamic languages is to trap methods calls 
> for methods which aren't there. In perl that is via autoload, in ruby it is 
> method_missing(), or in smalltalk it would be #doesNotUnderstand:. Then once 
> the call has been trapped, the C++ method is looked up in the smoke library 
> based on the name of the method and the types of the arguments. The arguments 
> are marshalled from the bindings language and the C++ method is called. So 
> you would need to find a way of doing that in lisp for the object model it is 
> using.
> There are also callbacks for overriding C++ virtual methods, and for when the 
> C++ instance is destructed.
I'm still new at Lisp, but this is a good opportunity for me to learn 
CLOS thoroughly.

More information about the Kde-bindings mailing list