safe vs. unsafe (Was: Haskell Platform proposal: Add the vector package)
Henning Thielemann
lemming at henning-thielemann.de
Sat Jul 14 08:16:04 BST 2012
On Fri, 13 Jul 2012, Brandon Allbery wrote:
> And now I'm having a "so what's the point?" moment? All this effort so we can just mark random stuff as
> Trusted anyway?
Today we have 'unsafePerformIO'. So if we praise the merits of Haskell's
strong type system and then mention 'unsafePerformIO' the audience will
ask "so what's the point of type safety then?" Well, the point is that
unsafePerformIO is strongly discouraged and every use of it should be
considered carefully.
I actually check packages that I install for the use of unsafePerformIO.
For this reason I rejected to use for instance the cmdargs package because
in my opinion unsafePerformIO is not necessary for implementing a command
line argument parser. I have learnt that a safer interface was added since
then, but the unsafe one still exists. SafeHaskell could help to make
explicit what parts of the package are "clean" and which ones are "hacks".
So I think SafeHaskell could be a way to locate problems in code faster.
Since a Haskell 98 program without unsafePerformIO and friends cannot
crash, a crash can be only caused by Unsafe code.
More information about the Haskell-platform
mailing list