[chuck-users] Guile C++ wrap
Hans Aberg
haberg-1 at telia.com
Mon Mar 22 05:31:36 EDT 2010
I started to write a bit on a Guile C++ wrap*), and it strike me it
may give some inputs on the discussion on giving ChucK functional
language capabilities.
First, Guile has a conservative GC (meaning that it just tries to
collect some pointers, not necessarily all). It makes C++
implementation very simple: you don't have to write operator=() and
copy constructors, because normally, when an object is mutated, it is
being done using *this = f(*this) where f is a function of the
functional language (so normal object referencing just needs to hand
over the pointer). But the question is if such a GC can be made
without causing timing problems.
Then I use templates to do some Haskell style static typing, though C+
+ is a bit too limited. But it is fully possible see what kind of
syntax might be possible. For example, one can define an increment
function using
function1<integer, integer> inc = x >>= x + 1
(though I must use a more complicated syntax in the actual code due C+
+ and Guile limitations). Here, ">>=" is the lambda, and in math it is
the symbol ↦, in ASCII looking like |->.
The Haskell-like define-function-by-cases syntax would be something
like:
function1<integer, integer> inc;
inc(x) = x + 1;
though it is hard to get it to instantiate properly using C++
templates. But if built into a ChucK parser, that should be no problem.
But it seems that the current ChucK syntax might be enhanced with
functional language features.
Hans
*) http://math.su.se/~haberg/guile/
More information about the chuck-users
mailing list