On Tue, Apr 14, 2009 at 9:24 AM, Cristiano Paris <fr...@theshire.org> wrote:
> On Tue, Apr 14, 2009 at 5:09 PM, Luke Palmer <lrpal...@gmail.com> wrote: > > ... > > Please don't say that. He's a beginner. > > You realize that the path of least resistance will be to use it, right? > > You see why that's not a good thing? > > Even experts don't use this function. > > (To the O.P.: don't use it) > > Mmmh, sorry Luke but I don't understand this ostracism. > > unsafePerformIO is not "evil" by itself, it's there for a purpose and, > as for anything else in the language, it's better to understand when > to use it and when not rather than just knowing that is something that > MUST not be used, without any further explanation. You have a point. I would like to avoid introducing unfounded authoritarian stigmas whenever possible. However, the way I see it is that unsafePerformIO *is* evil by itself, and it is only by the addition of Holy Water that it is benign to use. Ryan Ingram described it as a way to achieve "RTS extensions", which I think is a fine way to put it I consider Debug.Trace to be an instance of this: we are extending the RTS to provide execution traces. I guess it's a teaching style thing. Mostly, if someone sees "I have an IO [XmlTree] and I need an [XmlTree]", I want the "I'm asking the wrong question" synapse path to fire, rather than the "just use unsafePerformIO" one. Luke > > More, from my personal experience, knowing unsafePerformIO helped me > understand better what Monads are and how they should be used. > > I wounder what so-called "experts" have to say about this. > > Cristiano >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe