[Haskell-cafe] Re: [Haskell] Top Level <-

Brandon S. Allbery KF8NH allbery at ece.cmu.edu
Sun Aug 31 11:14:30 EDT 2008


On 2008 Aug 31, at 10:44, Ganesh Sittampalam wrote:
> On Sun, 31 Aug 2008, Brandon S. Allbery KF8NH wrote:
>> On 2008 Aug 31, at 10:34, Ganesh Sittampalam wrote:
>>> I don't follow what you mean. stdin, stdout and stderr are just  
>>> file descriptors 0, 1 and 2, aren't they? You can create them as  
>>> many times as you want with using that information without causing  
>>> any confusion or conflict. Whereas the <- proposal has a "once- 
>>> only" requirement.
>>
>> The convention is to provide buffered versions to improve the  
>> performance of file I/O.  These buffered filehandles must be  
>> created once per runtime instance (and ideally once per process so  
>> multiple runtimes don't find themselves overwriting each others'  
>> output).
>
> In that case it seems that any library that might be used from a  
> runtime that isn't the top-level of a process should avoid doing IO  
> to those handles, for fear of producing output corruption?


You handle it the same way you handle I/O with concurrency:  either  
one of the runtimes is "privileged" to the extent that it owns the  
filehandles and other runtimes must make an inter-runtime call to use  
them, or the filehandle structures include locking and are shared  
across runtimes.  Both of these are used in Haskell (see most GUI  
libraries for the former, and the implementation of Handles for the  
latter).

-- 
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH




More information about the Haskell-Cafe mailing list