<div dir="ltr">Hi Ertugrul,<br><div class="gmail_quote"><div dir="ltr"><div><br></div><div>Thank you for the detailed reply. From what you wrote, partial FFI still seems like the way to go.</div><div><br></div><div>Unfortunately Ogre isn't the only large library I'm using, so "difficult" several times over sounds like a good way to handicap the project early on.</div>
<div><br></div><div>I'm perfectly happy to use Haskell for the strengths that will most benefit my project. I can always go back and try to bring the C++ specific parts into the fold once a prototype is up and running.</div>
<div><br></div><div>As it seems there is a great deal of c/c++ to do either way, I would really appreciate so thoughts towards my original question.</div><div><br></div><div>What practices in C++ are preferred by Haskell users, in the know, for the parts of the app that will not be pure Haskell?</div>
<div><br></div><div>Should I be looking to avoid OOP? Dependency Injection? I wont reiterate all the facets of the first post, but it would help me immensely to zero in on a few patterns and strategies that can minimized the damage I inflict in c++ land.</div>
<div><br></div><div>Thanks,</div><div>Casey</div><div><br></div><div>p.s.</div><div><br></div><div>With</div><div><br></div><div>"That used to be true, but the reason has nothing to do with the language. The problem was that the libraries weren't there."</div>
<div><br></div><div>What do you mean? Which packages should I be looking at? I am on iOS like I said, its a stage 1 GHC compiler so I don't have access to GHCI or template haskell.</div><div><br></div><div><br></div>
<div>>Casey Basichis <caseybasichis at <a href="http://gmail.com/" target="_blank">gmail.com</a>> wrote:</div><div>></div><div>>> I'm not entirely sure what you mean.</div><div>>></div><div>>> I'm intending on using Ogre for GUI - for which there is the Hogre</div>
<div>>> bindings, but after emailing the DEV about it, I didn't get the</div><div>>> impression from his advice that I should be using it for production</div><div>>> code. Here is what he suggested:</div>
<div>>></div><div>>> "It depends, really. Hogre is good for running Ogre from within</div><div>>> Haskell, but it has its limitations. The number one thing people have</div><div>>> been struggling with is handling input with hogre - there's Hois</div>
<div>>> (Haskell wrapper for OIS) but it's not perfect (it misses input</div><div>>> events), and the other option is having to write some C++ glue. Hogre</div><div>>> is a solid proof of concept and you can do some demos with it, but if</div>
<div>>> you're e.g. writing a game it might be a bit of a struggle. In the end</div><div>>> it's about how much you value being able to write code in Haskell (or</div><div>>> how allergic to C++ you are)."</div>
<div>>></div><div>>> I'm on iOS so I imagine those difficulties are compounded.</div><div>>></div><div>>> I am using several other C++ libraries for which there are no existing</div><div>>> bindings and no Haskell alternative packages that are even remotely</div>
<div>>> close.</div><div>>></div><div>>> Are you suggesting it would be better to write all my own FFI bindings</div><div>>> for all the needed libraries?</div><div>></div><div>>That's not what I'm suggesting. It was just too little information to</div>
<div>>properly judge the difficulty of doing everything in Haskell.</div><div>></div><div>>Binding to Ogre (or C++ in general) is indeed difficult. If Hogre</div><div>>doesn't work or is too limited, your best option might be to write a C</div>
<div>>wrapper around the Hogre functionality you need. Another option is to</div><div>>use SDL/OpenGL directly, which may be easier or harder depending on your</div><div>>application.</div><div>></div><div>>However, if you can build the bridge between your rendering library and</div>
<div>>Haskell, then Haskell is certainly the better choice.</div><div>></div><div>></div><div>>> Everything I read suggests that Haskells strengths are in</div><div>>> transformation and that interaction is not its strong suit.</div>
<div>>></div><div>>> I am interested in your thoughts and I am open to whatever, but you</div><div>>> are the first to suggest that the mix is a bad idea.</div><div>></div><div>>That used to be true, but the reason has nothing to do with the</div>
<div>>language. The problem was that the libraries weren't there. Nowadays</div><div>>you can write all sorts of interactive applications in Haskell,</div><div>>including GUIs, TUIs, games, simulations and web applications. However,</div>
<div>>I've long been waiting for useful bindings to Ogre or Irrlicht, but I'm</div><div>>afraid that it's not going to happen any time soon.</div><div>></div><div>>Ultimately it's your choice. Let me summarize the possiblities:</div>
<div>></div><div>> * C wrapper around Ogre. Easy integration, but need to write the</div><div>> rendering code in C/C++.</div><div>></div><div>> * Full FFI bindings to Ogre. Difficult integration, but you can write</div>
<div>> your rendering code in Haskell.</div><div>></div><div>> * Partial FFI bindings to Ogre. Integration may be somewhat easy, if</div><div>> you do the initialization in Haskell and the actual rendering in</div>
<div>> C/C++. However, this again requires to write the rendering in</div><div>> C/C++.</div><div>></div><div>> * Using SDL/OpenGL directly: Everything available for Haskell. May</div><div>> be difficult, because you need to write OpenGL code.</div>
<div>></div><div>>I hope, this helps.</div><div>></div><div>></div><div>>Greets,</div><div>>Ertugrul</div></div></div><br><br clear="all"><div><br></div>-- <br>Casey James Basichis<br>Composer - Cartoon Network<br>
<a href="http://www.caseyjamesbasichis.com/" target="_blank">http://www.caseyjamesbasichis.com</a><br><a href="mailto:caseybasichis@gmail.com" target="_blank">caseybasichis@gmail.com</a><br>310.387.7540<br></div>