Hacker News new | past | comments | ask | show | jobs | submit login

Indeed. I did this with one program: I wrote some number crunching code in Haskell, and exposed some functions to C via the FFI. Then I wrote the user interface in Cocoa/Objective-C. The primary thing that requires some though is how to pass data between C and Haskell. You usually end up marshaling/unmarshaling some structs:

http://www.haskell.org/haskellwiki/FFICookBook#Working_with_...




Sounds quite interesting. Do you have a write up about this anywhere? Is the gain rom Haskell worth the impedance mismatch of cross communication?


Do you have a write up about this anywhere?

I used the following references:

http://www.haskell.org/ghc/docs/7.4.1/html/users_guide/ffi-g...

http://weblog.haskell.cz/pivnik/building-a-shared-library-in...

I have just put up a small-ish example using my approx-rand-test package (which implements approximate randomization tests):

https://github.com/danieldk/haskell-library-example/

Is the gain rom Haskell worth the impedance mismatch of cross communication?

I guess it depends on how much you love Haskell ;), and the usage scenario. I think using Haskell's FFI in this direction is especially attractive if you prefer to write most code in Haskell, but need some functionality that does not map naturally to a pure functional language (such as GUIs in Cocoa). If you want to mix a lot of imperative and functional code seamlessly, F#/C# or Scala/Java are probably better options.


Thanks what's the size like? The last time I built a Haskell application it was quite large. This is more of an issue for mobile apps.

FWIW I've done Scala/Java+Android and WP7+C#/F#, interestingly Wp7 is by far the easiest mobile to get a good functional language running on.


Thanks what's the size like? The last time I built a Haskell application it was quite large.

4969KB with the runtime and package dependencies linked in the dynamic library (Darwin, 64-bit). Since I do not have dynamic libraries of its dependencies installed, I cannot quickly try a completely dynamic version...

interestingly Wp7 is by far the easiest mobile to get a good functional language running on.

I purchased a Windows Phone last week (iOS user here) to see how it works, and I am surprised how good the integration is.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: