[Haskell-cafe] One-shot? (was: Global variables and stuff)
Simon Marlow
simonmar at microsoft.com
Wed Nov 10 08:56:04 EST 2004
On 09 November 2004 11:54, Graham Klyne wrote:
> I've not been following the Global variables debate too closely, it
> seeming to have something of a religious wars flavour, but I noticed
> that an example being proposed was how to achieve a "one shot"
> execution. Here's something I did when working on modifications to
> the HaXML parser:
>
> [[
> -- Memoization of withSocketsDo to prevent multiple calls.
> -- (cf. http://tangentsoft.net/wskfaq/articles/lame-list.html)
> socketsInitialized :: Bool
> socketsInitialized = unsafePerformIO ( withSocketsDo ( return True ) )
> ]]
>
> Does it work as I think it does? ARe there any problems I'm
> overlooking?
You should add {-# NOINLINE socketsInitialized #-} to be on the safe
side, but in practice GHC won't inline it anyway. The pragma would be
good documentation though.
Cheers,
Simon
More information about the Haskell-Cafe
mailing list