Haskell and Maple FFI

Alastair Reid alastair at reid-consulting-uk.ltd.uk
Fri Sep 17 04:54:05 EDT 2004

> I would like to implement a new "calling convention" for Maple
> language, so that programers in Haskell may call for Maple routines.
> Both languages are intereseting for cooperation, due to its symbolic
> expresiveness.

Making it possible to call Maple would be very cool.  Can you give more detail 
about Open Maple?

If I was doing this, I'd start by writing some C code that interfaces to 
Maple.  After that works, I'd translate it into Haskell.  That is, I would 
use the FFI to invoke the Maple FFI functions for pushing arguments, popping 
results, etc. and use the the FFI libraries which have lots of useful 
functions for marshaling arguments from Haskell to other formats.

Start with something simple (e.g., a single argument function like 'sin'), 
prototype in C, translate to Haskell.  At this point, don't worry too much 
about the fact that the simplest function call seems to require 10-20 lines 
of code - we can suggest ways to fix that.  Keep trying new features (2 
arguments, strings, calling both Haskell->Maple and Maple->Haskell, etc.) 
[The Open Maple manual probably has a list of examples used to illustrate the 
interface - start by doing all those.]  If it isn't obvious how to do it or 
it just won't work, step back and write a prototype in C.

Ask us as you run into problems.

Once you can do all that, there's a bunch of tricks you can play with 
typeclasses to reduce the number of lines of code you have to write from 
10-20 lines down to just one or two.  (Ross Paterson has a very nice scheme 
for doing this - but I can't find it in the mail archives at the moment.)

Alastair Reid

More information about the FFI mailing list