Food for thought: Numeric.Special
Alastair Reid
alastair@reid-consulting-uk.ltd.uk
Fri, 6 Jun 2003 12:11:11 +0100
On Friday 06 June 2003 11:38 am, Keith Wansbrough wrote:
> That wouldn't be too hard, and if there really are zillions of
> functions, it would save a lot of work for the straightforward cases.
My experience is that there are an annoying number of non-straightforward
cases where you need a programmer to read documentation and make sensible
decisions.
There's a tool for ML which directly translates header files into the obvious
ML type. There's also swig which does much the same but for a wide range of
languages (I think it started with python). The problem is that you end up
with an idiomatic C interface like:
getMousePos :: Ptr CInt -> Ptr CInt -> IO CInt
instead of an idiomatic Haskell interface like:
getMousePos :: IO (CInt,CInt)
-- raises an exception if device not present
Before anyone can use this function, they will have to read the documentation
and figure it out and, since this is the hard part of creating the interface,
it is best to have a human do it just once instead of having everyone who
uses the library have to repeat the work.
--
Alastair Reid