
David Leimbach schrieb:
Haskell's great and all but it does have a few warts when it comes to how much real trust one should put into the type system.
Some compromises still exist like unsafePerformIO that you can't detect simply by looking at the types of functions.
In order to live up to the hype and the marketing around Haskell, really things like unsafePerformIO should not be allowed at all.
I also do not like the ubiquitous use of unsafePerformIO. However I acknowledge that it allows us to implement things in Haskell that would otherwise need a language and compiler extension, e.g. ByteStrings or ST monad. In the Modula-3 Language Report the section about unsafe features is introduced with the quote: "There are some cases that no law can be framed to cover." (Aristotle) http://www.cs.purdue.edu/homes/hosking/m3/reference/unsafe.html