Quoth Luke Evans l...@eversosoft.com,
I'm planning to start an Objective-C/Cocoa project and would like to
write it in Haskell as much as possible.
Of course, I can contrive to split the project into app logic (Haskell)
and UI (Objective-C) with some sort of minimal interface between them;
possibly just plain old C FFI.
However, I would like an interface that's as 'automatic' as possible -
one that preferably means that I don't have to spend a lot of time
maintaining a somewhat heavy-weight special interface layer as I grow
my code on both sides of the divide.
Preferably the suture line is as far over on the Objective-C side as
possible, so that I can write pretty much everything in Haskell.
Now, I see a couple of references to some options:
- HOC seems very close to what I'm looking for, but the project looks
pretty 'dormant'.
- I see some mention of an Objective-C FFI, but am uncertain if this
is in any current build of GHC.
Are there any other options up anyone's sleeves? Anybody working on
something interesting I could play with?
You've probably seen this already and it didn't qualify as
something interesting, but
http://www.haskell.org/haskellwiki/Using_Haskell_in_an_Xcode_Cocoa_project
still works as of MacOS 10.6 and GHC 7.0.3. No extra libraries or
tools needed - you just wrangle your Haskell .o files and all the
attendant Haskell libraries into the Xcode project, give Interface
Builder Objective C stubs to work with, and call out to Haskell
with C FFI. I have done only one program this way, with a very simple
interface, not enough to have any real idea how painful it's going to be.
(Actually it didn't work with -threaded, and because GHC doesn't do
the linking I couldn't figure out how to exercise the new option to
allow +RTS options, but it seems to be fine without -threaded.)
Until recently, I was concerned about being able to use GC on the
Objective-C side, but with Apple's new ARC memory management model,
that's no longer an issue.
Most Haskell-ObjC bindings that already exist are surely designed
for Retain-Release, which I assume is not disrupted by ARC as this
is just RR at runtime.
I don't know - I'm using standard (C) FFI out of the box, and both
languages must support foreign C libraries that manage their own
memory, so I perhaps erroneously have not been worrying about it.
Donn
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe