[Haskell] Why is newChan in the IO Monad?
sylvan at dtek.chalmers.se
Fri Apr 23 21:31:14 EDT 2004
S. Alexander Jacobson wrote:
> Nothing actually happens when newChan is called
> except construction of a new datastructure. It
> would be nice to have non IO monad code be able to
> create a new Chan that gets passed to IO code that
> uses it somewhere else.
> Alternatively, is there a way to create a Chan
> outside the IO monad?
I'm sure I'll get death threats for posting this but here it goes:
__ __ __ __ ____ ___ _________________________________________
|| || || || || || ||__ Hugs 98: Based on the Haskell 98 standard
||___|| ||__|| ||__|| __|| Copyright (c) 1994-2003
||---|| ___|| World Wide Web: http://haskell.org/hugs
|| || Report bugs to: hugs-bugs at haskell.org
|| || Version: Nov 2003 _________________________________________
Haskell 98 mode: Restart with command line option -98 to enable extensions
Type :? for help
Prelude> :l IOExts
IOExts> :t unsafePerformIO
unsafePerformIO :: IO a -> a
Personally I think the usage of unsafePerformIO is fine (but don't
overuse it!). It's akin to the unsafe keyword in C#. All you're really
doing is saying "Look, GHC, I know you don't like this stuff but I
_promise_ that this code won't screw anything up for you", and as the
programmer you should be allowed to say that every now and then.
Clothes make the man. Naked people have little or no influence on society.
- Mark Twain
More information about the Haskell