Ben Rudiak-Gould wrote:
Lennart Augustsson wrote:

 > What do you mean when you say the interface is pure?
 >
 > If your module is really pure then there should be an implemenation
 > of it (which could have really bad complexity) with the same observable
 > behaviour that uses only pure Haskell.  Is this possible?

Really? I agree with the converse of that statement, but I don't think it goes both ways. To me a function or module is pure when you can use it without compromising the equational properties of the language. I don't think Data.Dynamic or Control.Monad.ST satisfy your criterion for purity, but I would call them pure (after discarding the functions marked unsafe in the latter).

Agreed, there can pure functions that cannot be written with the pure primitives, but then you have a proof obligation. An "easy" way to prove it is to provide an equivalent implementation that uses only pure functions. As far as I remember Control.Monad.ST can be written purely. And I think the same is true for Data.Dynamic.

        -- Lennart
_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to