I'd also highly recommend c2hs for writing new wrapper libraries.
This is actually what the Objective-C compiler does. It translates your Objective-C code to C method calls.
It's not ridiculously hard, but it's somewhat less easy than normal C FFI.
http://stackoverflow.com/a/2573949
http://stackoverflow.com/a/18689338
If you're interested in the nitty-gritty of how objc_msgSend works, bbum from Apple wrote up a great low-level walkthrough a few years back: http://www.friday.com/bbum/2009/12/18/objc_msgsend-part-1-th...
If you really need to construct calls at runtime and you don't know the argument list at compile time, there's a Haskell binding to libffi. However, you generally only need that if you're writing a language interpreter or similar.
How crazy would it be if the Twitter app was over 50M, or Facebook Messenger over 80M?
[0]: https://ghc.haskell.org/trac/ghc/wiki/Building/CrossCompilin...