[Haskell-cafe] Haskell integration with C/C++ (GSOC)
Donn Cave
donn at avvanta.com
Thu Apr 5 17:08:17 CEST 2012
Quoth Anthony Cowley <acowley at seas.upenn.edu>,
...
> I think this is a consequence of line buffering rather than a bug. If
> you write your own increment function in Haskell, you get the same
> behavior. If you `hSetBuffering stdout NoBuffering` before your `putStr`
> call, you should get the behavior you wanted.
Though if you must do one or the other, I think hFlush makes as much
sense.
I think his perspective may be that the C stdio library appears to
recognize that a TTY read is an occasion to flush stdout. If you
already know better, there are ways to solve this problem - flush,
change buffering, or use stderr instead of stdout. If you weren't
expecting it, though, Haskell might by comparison seem a little
retarded. Maybe it isn't a bug.
> As things stand, it is quite a hassle to use a Haskell library of
> any complexity called from C.
And Haskell is slightly handicapped in this application, if it still
doesn't support any good mechanism for top level mutable state
(Cf. http://www.haskell.org/haskellwiki/Top_level_mutable_state )
I wonder if the fact that we recognize these problems but haven't
been super-motivated to solve them, suggests that there hasn't really
been that much call for stand alone Haskell libraries? (The proposal
seems to say that C++ programmers could jump at this opportunity because
they've been wanting to use Haskell but were afraid of the IO Monad?)
Donn
More information about the Haskell-Cafe
mailing list