[Haskell-cafe] Re: Functional version of this OO snippet

Duncan Coutts duncan.coutts at worc.ox.ac.uk
Fri Dec 5 11:46:32 EST 2008


On Fri, 2008-12-05 at 17:06 +0100, Thomas Davie wrote:
> On 5 Dec 2008, at 17:00, Duncan Coutts wrote:
> 
> > On Fri, 2008-12-05 at 16:50 +0100, Thomas Davie wrote:
> >
> >> Sure, and he could then use a fold instead of a map.  Reading files  
> >> is
> >> problematic, but as long as you're only doing it once (the most  
> >> common
> >> situation) is entirely fine wrapped up in an unsafePerformIO.
> >
> > Nooooo!
> >
> > Please don't go telling people it's entirely fine to use  
> > unsafePerformIO
> > like that (or at all really).
> 
> Exactly what isn't fine about it?

It's the antithesis of pure functional programming. It's so unsafe that
we don't even have a semantics for it.

One needs pretty special justification for using unsafePerformIO and
such cases should be hidden in libraries presenting pure interfaces, not
used willy-nilly in general application code.

Note that I'm not claiming that it's necessarily going to do bad things
in the specific case you're imagining using it in. However just because
it happens not to do bad things in this case does not mean that it's ok
to use it here or in general.

Duncan



More information about the Haskell-Cafe mailing list