<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br>Hi John,<br><br>Take two examples I gave up getting to work: a Haskell wrapper for a popular GUI library; and a Haskell wrapper for a database. I understand the former has a new team of developers, so perhaps it's time to revisit the library. Then again, writing 5000 line GUIs in an imperative style in a Haskell program just doesn't seem very appealing to me. And that's one of the problem with FFI-based libraries: it exposes the functionality (when it works), but in a strictly imperative way.<br><br>Selection bias applies to us both. To quote myself, "Which means your statements come from your experience, and my statements come from my experience, and the truth is probably somewhere in between."<br><br>Regards,<br><br>John<br><br>On Jan 9, 2009, at 1:42 PM, John Goerzen wrote:<br><br><blockquote type="cite">John A. De Goes wrote:<br></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">Hi Austin,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">How do you know it's not your experience with FFI code that isn't<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">biased? As far as I know, there has been no systematic attempt to<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">document whether pure Haskell or FFI-based libraries are better designed<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">and better maintained. Which means your statements come from your<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">experience, and my statements come from my experience, and the truth is<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">probably somewhere in between.<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite"><br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">In my experience, FFI code is often based on bulk translation of C<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">header files into the IO monad. It requires an exact version of a<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">library to work (usually much older than the current), it does not<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">compile out of the box, there's scant documentation, and very little<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">high-level design has been imposed on the low-level C interface (may as<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">well use C!). Exceptions to this rule, there are, but as I said before,<br></blockquote></blockquote><blockquote type="cite"><blockquote type="cite">my experience leads me to believe they *are* exceptions to a *general* rule.<br></blockquote></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Which libraries are you talking about? &nbsp;I haven't ever used *any* like<br></blockquote><blockquote type="cite">that, as far as I know.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Current libraries almost always do build right out of the box with<br></blockquote><blockquote type="cite">standard cabal commands.<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">Maybe part of what you state was accurate a few years ago, but right now?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">As far as selection bias is concerned, that would apply equally well to<br></blockquote><blockquote type="cite">both of us, would it not?<br></blockquote><blockquote type="cite"><br></blockquote><blockquote type="cite">-- John<br></blockquote><div><font class="Apple-style-span" color="#144FAE"><br></font></div></body></html>