On Tuesday 10 July 2007, Andrew Coppin wrote: > Stefan O'Rear wrote: > > On Mon, Jul 09, 2007 at 09:57:14PM +0100, Andrew Coppin wrote: > >> (BTW... How in the hell do you get symbols like that in plain ASCII??) > > > > You can't, but the most commonly used replacement for ASCII > > (Unicode-UTF8) supports them just fine. > > Wait... I thought Unicode was still an experimental prototype? Since > when does it work in the real world??
Are you serious? Unicode has been a (more-or-less) working reality on Linux for several years now. . . > > Consider the ST monad, which lets you use update-in-place, but is > > escapable (unlike IO). ST actions have the form: > > > > ST s α > > > > Meaning that they return a value of type α, and execute in "thread" s. > > All reference types are tagged with the thread, so that actions can only > > affect references in their own "thread". > > ...so *that* is what that thing does...! (I thought it did something > quite different.) > > > Now, the type of the function used to escape ST is: > > > > runST :: ∀ α. (∀ s. ST s α) → α > > > > The action you pass must be universal in s, so inside your action you > > don't know what thread, thus you cannot access any other threads, thus > > runST is pure. This is very useful, since it allows you to implement > > externally pure things like in-place quicksort, and present them as pure > > functions ∀ e. Ord e ⇒ Array e → Array e; without using any unsafe > > functions. > > ...so the 's' doesn't really "exist", it's just random hackery of the > type system to implement uniqueness? Exactly. > > But that type of runST is illegal in Haskell-98, because it needs a > > universal quantifier *inside* the function-arrow! In the jargon, that > > type has rank 2; haskell 98 types may have rank at most 1. > > ...kinda wishing I hadn't asked... o_O Jonathan Cast http://sourceforge.net/projects/fid-core http://sourceforge.net/projects/fid-emacs _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe