On Sun, Jun 2, 2013 at 8:01 PM, Thomas Davie <tom.da...@gmail.com> wrote:

> On 2 Jun 2013, at 16:48, Brandon Allbery <allber...@gmail.com> wrote:
>
> (String is a linked list of Char, which is also not a C char; it is a
> constructor and a machine word large enough to hold a Unicode codepoint.
> And because Haskell is non-strict, any part of that linked list can be an
> unevaluated thunk which requires forcing the evaluation of arbitrary
> Haskell code elsewhere to "reify" the value; this obviously cannot be done
> in the middle of random C code, so it must be done during marshalling.)
>
>
> I'm not convinced that that's "obvious" – though it certainly requires
> functions (that go through the FFI) to grab each character at a time.
>

I think you underestimate the complexity of the Haskell runtime and the
interactions between it and the FFI. Admittedly it is probably not
"obvious" in the sense of "anyone can tell without knowing anything about
it that it can't possibly work", but it should be at least somewhat obvious
to someone who sees why there needs to be an FFI in the first place that
the situation is not trivial, and that they probably should not blindly
assume that the only reason one can't just pass Haskell values directly to
C is that some GHC developer was feeling lazy at the time.

-- 
brandon s allbery kf8nh                               sine nomine associates
allber...@gmail.com                                  ballb...@sinenomine.net
unix, openafs, kerberos, infrastructure, xmonad        http://sinenomine.net
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to