> > > >> 2b. You can define brand new flow control constructs *inside* the > language > >> itself. (E.g., in Java, a "for" loop is a built-in language construct. > In > >> Haskell, "for" is a function in Control.Monad. Just a plain ordinary > >> function that anybody could write.) > >> > > > > Psst, heard about Scheme & call/cc? > > But, very importantly, purity allows you to *restrict* the flow > constructs that client code has available. If you have continuations > + mutable state you can do anything, but the more code can *do*, the > less you *know* about it. For example, providing parser combinators > as an applicative functor offers more power than a traditional parser > generator, but not enough that we can no longer parse efficiently. >
Exactly my fear over unsafePerformIO in 3rd party Haskell libraries :-). One can present an interface in Haskell that looks safe, but it can be very unsafe in its implementation. Dave > > Luke > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe